mirror of
https://github.com/clearml/clearml-agent
synced 2025-02-26 05:59:24 +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())
|
||||
# make sure we run the handlers
|
||||
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}
|
||||
package_api.load_requirements(cached_requirements)
|
||||
# make sure we call the correct freeze
|
||||
@ -2861,11 +2863,13 @@ class Worker(ServiceCommandSection):
|
||||
requirement_substitutions=[CachedPackageRequirement, OnlyExternalRequirements]
|
||||
)
|
||||
# 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())
|
||||
# make sure we run the handlers
|
||||
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}
|
||||
if str(cached_requirements.get('pip', '')).strip() \
|
||||
or str(cached_requirements.get('conda', '')).strip():
|
||||
|
@ -22,7 +22,7 @@ from .._vendor import furl
|
||||
from .._vendor import six
|
||||
from .._vendor.attr import fields_dict
|
||||
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 clearml_agent.errors import CommandFailedError
|
||||
@ -372,15 +372,15 @@ def construct_mapping(loader, node):
|
||||
return OrderedDict(loader.construct_pairs(node))
|
||||
|
||||
|
||||
yaml.SafeDumper.add_representer(OrderedDict, represent_ordered_dict)
|
||||
yaml.SafeLoader.add_constructor(yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG, construct_mapping)
|
||||
# yaml.SafeDumper.add_representer(OrderedDict, represent_ordered_dict)
|
||||
# yaml.SafeLoader.add_constructor(yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG, construct_mapping)
|
||||
|
||||
|
||||
class AllDumper(yaml.SafeDumper):
|
||||
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):
|
||||
|
@ -787,6 +787,13 @@ class RequirementsManager(object):
|
||||
for h in self.handlers:
|
||||
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):
|
||||
for p in (self._installed_parsed_packages or []):
|
||||
if p.name != req.name:
|
||||
|
Loading…
Reference in New Issue
Block a user