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))
Exemple #3
0
 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)