Beispiel #1
0
def cross_check(pkg_resources_vers_and_locs, imported_vers_and_locs_list):
    """This function returns a list of errors due to any failed cross-checks."""

    from _auto_deps import not_import_versionable, ignorable

    errors = []
    not_pkg_resourceable = ['python', 'platform', __appname__.lower()]

    for name, (imp_ver, imp_loc, imp_comment) in imported_vers_and_locs_list:
        name = name.lower()
        if name not in not_pkg_resourceable:
            if name not in pkg_resources_vers_and_locs:
                if name == "setuptools" and "distribute" in pkg_resources_vers_and_locs:
                    pr_ver, pr_loc = pkg_resources_vers_and_locs["distribute"]
                    if not (os.path.normpath(os.path.realpath(pr_loc)) == os.path.normpath(os.path.realpath(imp_loc))
                            and imp_comment == "distribute"):
                        errors.append("Warning: dependency 'setuptools' found to be version %r of 'distribute' from %r "
                                      "by pkg_resources, but 'import setuptools' gave version %r [%s] from %r. "
                                      "A version mismatch is expected, but a location mismatch is not."
                                      % (pr_ver, pr_loc, imp_ver, imp_comment or 'probably *not* distribute', imp_loc))
                else:
                    errors.append("Warning: dependency %r (version %r imported from %r) was not found by pkg_resources."
                                  % (name, imp_ver, imp_loc))
                continue

            pr_ver, pr_loc = pkg_resources_vers_and_locs[name]
            if imp_ver is None and imp_loc is None:
                errors.append("Warning: dependency %r could not be imported. pkg_resources thought it should be possible "
                              "to import version %r from %r.\nThe exception trace was %r."
                              % (name, pr_ver, pr_loc, imp_comment))
                continue

            try:
                pr_normver = normalized_version(pr_ver)
            except Exception, e:
                errors.append("Warning: version number %r found for dependency %r by pkg_resources could not be parsed. "
                              "The version found by import was %r from %r. "
                              "pkg_resources thought it should be found at %r. "
                              "The exception was %s: %s"
                              % (pr_ver, name, imp_ver, imp_loc, pr_loc, e.__class__.__name__, e))
            else:
                if imp_ver == 'unknown':
                    if name not in not_import_versionable:
                        errors.append("Warning: unexpectedly could not find a version number for dependency %r imported from %r. "
                                      "pkg_resources thought it should be version %r at %r."
                                      % (name, imp_loc, pr_ver, pr_loc))
                else:
                    try:
                        imp_normver = normalized_version(imp_ver)
                    except Exception, e:
                        errors.append("Warning: version number %r found for dependency %r (imported from %r) could not be parsed. "
                                      "pkg_resources thought it should be version %r at %r. "
                                      "The exception was %s: %s"
                                      % (imp_ver, name, imp_loc, pr_ver, pr_loc, e.__class__.__name__, e))
                    else:
                        if pr_ver == 'unknown' or (pr_normver != imp_normver):
                            if not os.path.normpath(os.path.realpath(pr_loc)) == os.path.normpath(os.path.realpath(imp_loc)):
                                errors.append("Warning: dependency %r found to have version number %r (normalized to %r, from %r) "
                                              "by pkg_resources, but version %r (normalized to %r, from %r) by import."
                                              % (name, pr_ver, str(pr_normver), pr_loc, imp_ver, str(imp_normver), imp_loc))
Beispiel #2
0
def cross_check(pkg_resources_vers_and_locs, imported_vers_and_locs_list):
    """This function returns a list of errors due to any failed cross-checks."""

    errors = []
    not_pkg_resourceable = set(["sqlite3", "python", "platform", __appname__.lower()])
    not_import_versionable = set(["zope.interface", "mock", "pyasn1"])
    ignorable = set(["argparse", "pyutil", "zbase32", "distribute"])

    for name, (imp_ver, imp_loc, imp_comment) in imported_vers_and_locs_list:
        name = name.lower()
        if name not in not_pkg_resourceable:
            if name not in pkg_resources_vers_and_locs:
                if name == "setuptools" and "distribute" in pkg_resources_vers_and_locs:
                    pr_ver, pr_loc = pkg_resources_vers_and_locs["distribute"]
                    if not (
                        os.path.normpath(os.path.realpath(pr_loc)) == os.path.normpath(os.path.realpath(imp_loc))
                        and imp_comment == "distribute"
                    ):
                        errors.append(
                            "Warning: dependency 'setuptools' found to be version %r of 'distribute' from %r "
                            "by pkg_resources, but 'import setuptools' gave version %r [%s] from %r. "
                            "A version mismatch is expected, but a location mismatch is not."
                            % (pr_ver, pr_loc, imp_ver, imp_comment or "probably *not* distribute", imp_loc)
                        )
                else:
                    errors.append(
                        "Warning: dependency %r (version %r imported from %r) was not found by pkg_resources."
                        % (name, imp_ver, imp_loc)
                    )
                continue

            pr_ver, pr_loc = pkg_resources_vers_and_locs[name]
            try:
                pr_normver = normalized_version(pr_ver)
            except Exception, e:
                errors.append(
                    "Warning: version number %r found for dependency %r by pkg_resources could not be parsed. "
                    "The version found by import was %r from %r. "
                    "pkg_resources thought it should be found at %r. "
                    "The exception was %s: %s" % (pr_ver, name, imp_ver, imp_loc, pr_loc, e.__class__.__name__, e)
                )
            else:
                if imp_ver == "unknown":
                    if name not in not_import_versionable:
                        errors.append(
                            "Warning: unexpectedly could not find a version number for dependency %r imported from %r. "
                            "pkg_resources thought it should be version %r at %r." % (name, imp_loc, pr_ver, pr_loc)
                        )
                else:
                    try:
                        imp_normver = normalized_version(imp_ver)
                    except Exception, e:
                        errors.append(
                            "Warning: version number %r found for dependency %r (imported from %r) could not be parsed. "
                            "pkg_resources thought it should be version %r at %r. "
                            "The exception was %s: %s"
                            % (imp_ver, name, imp_loc, pr_ver, pr_loc, e.__class__.__name__, e)
                        )
                    else:
                        if pr_ver == "unknown" or (pr_normver != imp_normver):
                            if not os.path.normpath(os.path.realpath(pr_loc)) == os.path.normpath(
                                os.path.realpath(imp_loc)
                            ):
                                errors.append(
                                    "Warning: dependency %r found to have version number %r (normalized to %r, from %r) "
                                    "by pkg_resources, but version %r (normalized to %r, from %r) by import."
                                    % (name, pr_ver, str(pr_normver), pr_loc, imp_ver, str(imp_normver), imp_loc)
                                )