def find_environment_deviations(self, prefix, spec): if not os.path.isdir(os.path.join(prefix, 'conda-meta')): return CondaEnvironmentDeviations( summary="'%s' doesn't look like it contains a Conda environment yet." % (prefix), missing_packages=tuple(spec.conda_package_names_set), wrong_version_packages=(), missing_pip_packages=tuple(spec.pip_package_names_set), wrong_version_pip_packages=(), broken=True) if self._timestamp_file_up_to_date(prefix, spec): conda_missing = [] pip_missing = [] timestamp_ok = True else: conda_missing = self._find_conda_missing(prefix, spec) pip_missing = self._find_pip_missing(prefix, spec) timestamp_ok = False if len(conda_missing) > 0 or len(pip_missing) > 0: summary = "Conda environment is missing packages: %s" % (", ".join(conda_missing + pip_missing)) elif not timestamp_ok: summary = "Conda environment needs to be marked as up-to-date" else: summary = "OK" return CondaEnvironmentDeviations(summary=summary, missing_packages=conda_missing, wrong_version_packages=(), missing_pip_packages=pip_missing, wrong_version_pip_packages=(), broken=(not timestamp_ok))
def find_environment_deviations(self, prefix, spec): broken_lock_set = self._broken_lock_set_error(spec) if broken_lock_set is not None: return CondaEnvironmentDeviations(summary=broken_lock_set, missing_packages=(), wrong_version_packages=(), missing_pip_packages=(), wrong_version_pip_packages=(), broken=True, unfixable=True) if not os.path.isdir(os.path.join(prefix, 'conda-meta')): return CondaEnvironmentDeviations( summary= "'%s' doesn't look like it contains a Conda environment yet." % (prefix), missing_packages=tuple( spec.conda_package_names_for_create_set), wrong_version_packages=(), missing_pip_packages=tuple(spec.pip_package_names_set), wrong_version_pip_packages=(), broken=True) if self._timestamp_file_up_to_date(prefix, spec): conda_missing = [] conda_wrong_version = [] pip_missing = [] timestamp_ok = True else: (conda_missing, conda_wrong_version) = self._find_conda_deviations(prefix, spec) pip_missing = self._find_pip_missing(prefix, spec) timestamp_ok = False all_missing_string = ", ".join(conda_missing + pip_missing) all_wrong_version_string = ", ".join(conda_wrong_version) if all_missing_string != "" and all_wrong_version_string != "": summary = "Conda environment is missing packages: %s and has wrong versions of: %s" % ( all_missing_string, all_wrong_version_string) elif all_missing_string != "": summary = "Conda environment is missing packages: %s" % all_missing_string elif all_wrong_version_string != "": summary = "Conda environment has wrong versions of: %s" % all_wrong_version_string elif not timestamp_ok: summary = "Conda environment needs to be marked as up-to-date" else: summary = "OK" return CondaEnvironmentDeviations( summary=summary, missing_packages=conda_missing, wrong_version_packages=conda_wrong_version, missing_pip_packages=pip_missing, wrong_version_pip_packages=(), broken=(not timestamp_ok))
def find_environment_deviations(self, prefix, spec): return CondaEnvironmentDeviations( summary="all good", missing_packages=(), wrong_version_packages=(), missing_pip_packages=(), wrong_version_pip_packages=())
def find_environment_deviations(self, prefix, spec): broken_lock_set = self._broken_lock_set_error(spec) if broken_lock_set is not None: return CondaEnvironmentDeviations(summary=broken_lock_set, missing_packages=(), wrong_version_packages=(), missing_pip_packages=(), wrong_version_pip_packages=(), broken=True, unfixable=True) if not os.path.isdir(os.path.join(prefix, 'conda-meta')): return CondaEnvironmentDeviations( summary= "'%s' doesn't look like it contains a Conda environment yet." % (prefix), missing_packages=tuple( spec.conda_package_names_for_create_set), wrong_version_packages=(), missing_pip_packages=tuple( spec.pip_package_names_for_create_set), wrong_version_pip_packages=(), broken=True) broken = unfixable = False if self._timestamp_file_up_to_date(prefix, spec): conda_missing = [] conda_wrong_version = [] pip_missing = [] else: (conda_missing, conda_wrong_version) = self._find_conda_deviations(prefix, spec) pip_missing = self._find_pip_missing(prefix, spec) broken = self._is_environment_writable(prefix) # For readonly environments, do not enforce the writing of the timestamp. # But mark other deviations as unfixable unfixable = not broken and (conda_missing or conda_wrong_version or pip_missing) all_missing_string = ", ".join(conda_missing + pip_missing) all_wrong_version_string = ", ".join(conda_wrong_version) if all_missing_string != "" and all_wrong_version_string != "": summary = "Conda environment is missing packages: %s and has wrong versions of: %s" % ( all_missing_string, all_wrong_version_string) elif all_missing_string != "": summary = "Conda environment is missing packages: %s" % all_missing_string elif all_wrong_version_string != "": summary = "Conda environment has wrong versions of: %s" % all_wrong_version_string elif broken: summary = "Conda environment needs to be marked as up-to-date" else: summary = "OK" if unfixable: summary += " and the environment is read-only" return CondaEnvironmentDeviations( summary=summary, missing_packages=conda_missing, wrong_version_packages=conda_wrong_version, missing_pip_packages=pip_missing, wrong_version_pip_packages=(), broken=broken, unfixable=unfixable)