diff options
Diffstat (limited to 'nixpkgs/pkgs/development/interpreters/python/catch_conflicts/catch_conflicts.py')
-rw-r--r-- | nixpkgs/pkgs/development/interpreters/python/catch_conflicts/catch_conflicts.py | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/nixpkgs/pkgs/development/interpreters/python/catch_conflicts/catch_conflicts.py b/nixpkgs/pkgs/development/interpreters/python/catch_conflicts/catch_conflicts.py index bb82900c65a9..d5c99e64751c 100644 --- a/nixpkgs/pkgs/development/interpreters/python/catch_conflicts/catch_conflicts.py +++ b/nixpkgs/pkgs/development/interpreters/python/catch_conflicts/catch_conflicts.py @@ -1,30 +1,34 @@ -import pkg_resources +from importlib.metadata import PathDistribution +from pathlib import Path import collections import sys + do_abort = False packages = collections.defaultdict(list) -for f in sys.path: - for req in pkg_resources.find_distributions(f): - if req not in packages[req.project_name]: - # some exceptions inside buildPythonPackage - if req.project_name in ['setuptools', 'pip', 'wheel']: - continue - packages[req.project_name].append(req) + +for path in sys.path: + for dist_info in Path(path).glob("*.dist-info"): + dist = PathDistribution(dist_info) + + packages[dist._normalized_name].append( + f"{dist._normalized_name} {dist.version} ({dist._path})" + ) for name, duplicates in packages.items(): if len(duplicates) > 1: do_abort = True print("Found duplicated packages in closure for dependency '{}': ".format(name)) - for dup in duplicates: - print(" " + repr(dup)) + for duplicate in duplicates: + print(f"\t{duplicate}") if do_abort: print("") print( - 'Package duplicates found in closure, see above. Usually this ' - 'happens if two packages depend on different version ' - 'of the same dependency.') + "Package duplicates found in closure, see above. Usually this " + "happens if two packages depend on different version " + "of the same dependency." + ) sys.exit(1) |