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))
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) )