diff options
author | Jason R. Coombs <jaraco@jaraco.com> | 2019-10-27 18:41:13 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-10-27 18:41:13 -0400 |
commit | 2d89c5d7d06ce07864e6e28c70853066966cf89f (patch) | |
tree | 1b1bed55dea7e7ee23d21f6154d648421a9fe64f | |
parent | 85069ea5aea84e6a6d2e56a1327c0d17635421cd (diff) | |
parent | b03652f642a8ea04644eb7d5b38223148dea5611 (diff) | |
download | external_python_setuptools-2d89c5d7d06ce07864e6e28c70853066966cf89f.tar.gz external_python_setuptools-2d89c5d7d06ce07864e6e28c70853066966cf89f.tar.bz2 external_python_setuptools-2d89c5d7d06ce07864e6e28c70853066966cf89f.zip |
Merge pull request #1814 from benoit-pierre/fix_requirement_hash/equality
pkg_resources: fix ``Requirement`` hash/equality implementation
-rw-r--r-- | changelog.d/1814.change.rst | 1 | ||||
-rw-r--r-- | pkg_resources/__init__.py | 1 | ||||
-rw-r--r-- | pkg_resources/tests/test_resources.py | 17 |
3 files changed, 19 insertions, 0 deletions
diff --git a/changelog.d/1814.change.rst b/changelog.d/1814.change.rst new file mode 100644 index 00000000..c936699d --- /dev/null +++ b/changelog.d/1814.change.rst @@ -0,0 +1 @@ +Fix ``pkg_resources.Requirement`` hash/equality implementation: take PEP 508 direct URL into account. diff --git a/pkg_resources/__init__.py b/pkg_resources/__init__.py index fb68813e..51fb1192 100644 --- a/pkg_resources/__init__.py +++ b/pkg_resources/__init__.py @@ -3109,6 +3109,7 @@ class Requirement(packaging.requirements.Requirement): self.extras = tuple(map(safe_extra, self.extras)) self.hashCmp = ( self.key, + self.url, self.specifier, frozenset(self.extras), str(self.marker) if self.marker else None, diff --git a/pkg_resources/tests/test_resources.py b/pkg_resources/tests/test_resources.py index 7063ed3d..93fa7114 100644 --- a/pkg_resources/tests/test_resources.py +++ b/pkg_resources/tests/test_resources.py @@ -520,6 +520,11 @@ class TestRequirements: assert r1 == r2 assert str(r1) == str(r2) assert str(r2) == "Twisted==1.2c1,>=1.2" + assert ( + Requirement("Twisted") + != + Requirement("Twisted @ https://localhost/twisted.zip") + ) def testBasicContains(self): r = Requirement("Twisted>=1.2") @@ -546,11 +551,23 @@ class TestRequirements: == hash(( "twisted", + None, packaging.specifiers.SpecifierSet(">=1.2"), frozenset(["foo", "bar"]), None )) ) + assert ( + hash(Requirement.parse("Twisted @ https://localhost/twisted.zip")) + == + hash(( + "twisted", + "https://localhost/twisted.zip", + packaging.specifiers.SpecifierSet(), + frozenset(), + None + )) + ) def testVersionEquality(self): r1 = Requirement.parse("foo==0.3a2") |