Skip to content

Commit 44a7076

Browse files
committed
(joe) address requirement creation from other paths
1 parent dba95e8 commit 44a7076

File tree

3 files changed

+9
-4
lines changed

3 files changed

+9
-4
lines changed

news/10550.feature.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Improve performance of dependency resolution.

src/pip/_internal/resolution/resolvelib/factory.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,10 @@
1818
cast,
1919
)
2020

21-
from pip._vendor.packaging.requirements import InvalidRequirement
22-
from pip._vendor.packaging.requirements import Requirement as PackagingRequirement
21+
from pip._vendor.packaging.requirements import (
22+
InvalidRequirement,
23+
get_or_create_requirement,
24+
)
2325
from pip._vendor.packaging.specifiers import SpecifierSet
2426
from pip._vendor.packaging.utils import NormalizedName, canonicalize_name
2527
from pip._vendor.resolvelib import ResolutionImpossible
@@ -365,7 +367,7 @@ def find_candidates(
365367
# If the current identifier contains extras, add explicit candidates
366368
# from entries from extra-less identifier.
367369
with contextlib.suppress(InvalidRequirement):
368-
parsed_requirement = PackagingRequirement(identifier)
370+
parsed_requirement = get_or_create_requirement(identifier)
369371
explicit_candidates.update(
370372
self._iter_explicit_candidates_from_base(
371373
requirements.get(parsed_requirement.name, ()),

tests/unit/test_req.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -657,13 +657,15 @@ def test_parse_editable_local_extras(
657657
{"bar", "baz"},
658658
)
659659

660+
660661
def test_get_or_create_caching() -> None:
661662
"""test caching of get_or_create requirement"""
662663
teststr = "affinegap==1.10"
663664
assert get_or_create_requirement(teststr) == Requirement(teststr)
664-
assert not(get_or_create_requirement(teststr) is Requirement(teststr))
665+
assert not (get_or_create_requirement(teststr) is Requirement(teststr))
665666
assert get_or_create_requirement(teststr) is get_or_create_requirement(teststr)
666667

668+
667669
def test_exclusive_environment_markers() -> None:
668670
"""Make sure RequirementSet accepts several excluding env markers"""
669671
eq36 = install_req_from_line("Django>=1.6.10,<1.7 ; python_version == '3.6'")

0 commit comments

Comments
 (0)