|
2 | 2 | import os.path |
3 | 3 | import sys |
4 | 4 |
|
5 | | -import pkg_resources |
| 5 | +from packaging.requirements import Requirement |
| 6 | +from packaging.markers import Marker |
| 7 | +try: |
| 8 | + from importlib import metadata |
| 9 | +except ImportError: |
| 10 | + import importlib_metadata as metadata |
6 | 11 | import pytest |
7 | 12 |
|
8 | 13 | from .tree_construction import TreeConstructionFile |
@@ -63,17 +68,16 @@ def pytest_configure(config): |
63 | 68 | spec, marker = line.strip().split(";", 1) |
64 | 69 | else: |
65 | 70 | spec, marker = line.strip(), None |
66 | | - req = pkg_resources.Requirement.parse(spec) |
67 | | - if marker and not pkg_resources.evaluate_marker(marker): |
| 71 | + req = Requirement(spec) |
| 72 | + if marker and not Marker(marker).evaluate(): |
68 | 73 | msgs.append("%s not available in this environment" % spec) |
69 | 74 | else: |
70 | 75 | try: |
71 | | - installed = pkg_resources.working_set.find(req) |
72 | | - except pkg_resources.VersionConflict: |
73 | | - msgs.append("Outdated version of %s installed, need %s" % (req.name, spec)) |
74 | | - else: |
75 | | - if not installed: |
76 | | - msgs.append("Need %s" % spec) |
| 76 | + installed = metadata.version(req.name) |
| 77 | + if not req.specifier.contains(installed, prereleases=True): |
| 78 | + msgs.append("Outdated version of %s installed, need %s" % (req.name, spec)) |
| 79 | + except metadata.PackageNotFoundError: |
| 80 | + msgs.append("Need %s" % spec) |
77 | 81 |
|
78 | 82 | # Check cElementTree |
79 | 83 | import xml.etree.ElementTree as ElementTree |
|
0 commit comments