mirror of
				https://github.com/clearml/clearml-agent
				synced 2025-06-26 18:16:15 +00:00 
			
		
		
		
	Fix cached venv tried to reinstall priority packages even through they are preinstalled
This commit is contained in:
		
							parent
							
								
									a6ae6b2095
								
							
						
					
					
						commit
						546ffff95d
					
				| @ -2446,7 +2446,9 @@ class Worker(ServiceCommandSection): | |||||||
|             package_api.requirements_manager.update_installed_packages_state(package_api.freeze()) |             package_api.requirements_manager.update_installed_packages_state(package_api.freeze()) | ||||||
|             # make sure we run the handlers |             # make sure we run the handlers | ||||||
|             cached_requirements = \ |             cached_requirements = \ | ||||||
|                 {k: package_api.requirements_manager.replace(requirements[k] or '') |                 {k: package_api.requirements_manager.replace( | ||||||
|  |                     requirements=requirements[k] or '', | ||||||
|  |                     existing_packages=package_api.requirements_manager.get_installed_packages_state()) | ||||||
|                  for k in requirements} |                  for k in requirements} | ||||||
|             package_api.load_requirements(cached_requirements) |             package_api.load_requirements(cached_requirements) | ||||||
|             # make sure we call the correct freeze |             # make sure we call the correct freeze | ||||||
| @ -2861,11 +2863,13 @@ class Worker(ServiceCommandSection): | |||||||
|                         requirement_substitutions=[CachedPackageRequirement, OnlyExternalRequirements] |                         requirement_substitutions=[CachedPackageRequirement, OnlyExternalRequirements] | ||||||
|                     ) |                     ) | ||||||
|                     # manually update the current state, |                     # manually update the current state, | ||||||
|                     # for the external git reference chance (in the replace callback) |                     # for the external git reference chance (in the replaced callback) | ||||||
|                     package_api.requirements_manager.update_installed_packages_state(package_api.freeze()) |                     package_api.requirements_manager.update_installed_packages_state(package_api.freeze()) | ||||||
|                     # make sure we run the handlers |                     # make sure we run the handlers | ||||||
|                     cached_requirements = \ |                     cached_requirements = \ | ||||||
|                         {k: package_api.requirements_manager.replace(requirements[k] or '') |                         {k: package_api.requirements_manager.replace( | ||||||
|  |                             requirements=requirements[k] or '', | ||||||
|  |                             existing_packages=package_api.requirements_manager.get_installed_packages_state()) | ||||||
|                          for k in requirements} |                          for k in requirements} | ||||||
|                     if str(cached_requirements.get('pip', '')).strip() \ |                     if str(cached_requirements.get('pip', '')).strip() \ | ||||||
|                             or str(cached_requirements.get('conda', '')).strip(): |                             or str(cached_requirements.get('conda', '')).strip(): | ||||||
|  | |||||||
| @ -22,7 +22,7 @@ from .._vendor import furl | |||||||
| from .._vendor import six | from .._vendor import six | ||||||
| from .._vendor.attr import fields_dict | from .._vendor.attr import fields_dict | ||||||
| from .._vendor.pathlib2 import Path | from .._vendor.pathlib2 import Path | ||||||
| from .._vendor.six.moves import reduce  # noqa | from .._vendor.six.moves import reduce | ||||||
| from .._vendor import pyyaml as yaml | from .._vendor import pyyaml as yaml | ||||||
| 
 | 
 | ||||||
| from clearml_agent.errors import CommandFailedError | from clearml_agent.errors import CommandFailedError | ||||||
| @ -372,15 +372,15 @@ def construct_mapping(loader, node): | |||||||
|     return OrderedDict(loader.construct_pairs(node)) |     return OrderedDict(loader.construct_pairs(node)) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| yaml.SafeDumper.add_representer(OrderedDict, represent_ordered_dict) | # yaml.SafeDumper.add_representer(OrderedDict, represent_ordered_dict) | ||||||
| yaml.SafeLoader.add_constructor(yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG, construct_mapping) | # yaml.SafeLoader.add_constructor(yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG, construct_mapping) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class AllDumper(yaml.SafeDumper): | class AllDumper(yaml.SafeDumper): | ||||||
|     pass |     pass | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| AllDumper.add_multi_representer(object, lambda dumper, data: dumper.represent_str(str(data))) | # AllDumper.add_multi_representer(object, lambda dumper, data: dumper.represent_str(str(data))) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def error(message): | def error(message): | ||||||
|  | |||||||
| @ -787,6 +787,13 @@ class RequirementsManager(object): | |||||||
|         for h in self.handlers: |         for h in self.handlers: | ||||||
|             h.set_is_already_installed_cb(self._callback_is_already_installed) |             h.set_is_already_installed_cb(self._callback_is_already_installed) | ||||||
| 
 | 
 | ||||||
|  |     def get_installed_packages_state(self): | ||||||
|  |         """ | ||||||
|  |         Return the internal Installed Packages objects, the one used internally so that later we can detect | ||||||
|  |         :return requirements: is the list of requirements objects updated via self.update_installed_packages_state | ||||||
|  |         """ | ||||||
|  |         return self._installed_parsed_packages | ||||||
|  | 
 | ||||||
|     def _callback_is_already_installed(self, req): |     def _callback_is_already_installed(self, req): | ||||||
|         for p in (self._installed_parsed_packages or []): |         for p in (self._installed_parsed_packages or []): | ||||||
|             if p.name != req.name: |             if p.name != req.name: | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 clearml
						clearml