File tree Expand file tree Collapse file tree 2 files changed +35
-3
lines changed Expand file tree Collapse file tree 2 files changed +35
-3
lines changed Original file line number Diff line number Diff line change @@ -233,7 +233,9 @@ def get_preference(
233233 def is_satisfied_by (self , requirement : Requirement , candidate : Candidate ) -> bool :
234234 if canonicalize_name (requirement .name ) != candidate .name :
235235 return False
236- allow_prerelease = self .constraints .allow_prerelease (requirement .name )
236+ allow_prerelease = self .constraints .allow_prerelease (requirement .name ) or bool (
237+ requirement .specifier .prereleases
238+ )
237239 return requirement .specifier .contains (
238240 candidate .version , prereleases = allow_prerelease
239241 ) and self .constraints .is_satisfied_by (requirement .name , candidate .version )
@@ -291,7 +293,10 @@ def find_matches(
291293 continue
292294 # Skip versions that do not match the requirement. Allow prereleases only if constraints allow prereleases
293295 if not all (
294- r .specifier .contains (candidate .version , prereleases = allow_prerelease )
296+ r .specifier .contains (
297+ candidate .version ,
298+ prereleases = (allow_prerelease or bool (r .specifier .prereleases )),
299+ )
295300 for r in identifier_reqs
296301 ):
297302 if DEBUG_RESOLVER :
@@ -372,7 +377,10 @@ def find_matches(
372377 continue
373378 # Skip versions that do not match the requirement
374379 if not all (
375- r .specifier .contains (version , prereleases = allow_prerelease )
380+ r .specifier .contains (
381+ version ,
382+ prereleases = (allow_prerelease or bool (r .specifier .prereleases )),
383+ )
376384 for r in identifier_reqs
377385 ):
378386 if DEBUG_RESOLVER :
Original file line number Diff line number Diff line change 2323<a href="https://files.pythonhosted.org/packages/c6/50/e0edd38dcd63fb26a8547f13d28f7a008bc4a3fd4eb4ff030673f22ad41a/hydra_core-1.3.2-1-py3-none-any.whl#sha256=fa0238a9e31df3373b35b0bfb672c34cc92718d21f81311d8996a16de1141d8b" data-dist-info-metadata="sha256=399046cbf9ae7ebab8dfd009e2b4f748212c710a0e75ca501a72bbb2d456e2e7" data-core-metadata="sha256=399046cbf9ae7ebab8dfd009e2b4f748212c710a0e75ca501a72bbb2d456e2e7">hydra_core-1.3.2-1-py3-none-any.whl</a>
2424<br/>
2525<a href="https://files.pythonhosted.org/packages/c6/50/e0edd38dcd63fb26a8547f13d28f7a008bc4a3fd4eb4ff030673f22ad41a/hydra_core-1.3.2-2-py3-none-any.whl#sha256=fa0238a9e31df3373b35b0bfb672c34cc92718d21f81311d8996a16de1141d8b" data-dist-info-metadata="sha256=399046cbf9ae7ebab8dfd009e2b4f748212c710a0e75ca501a72bbb2d456e2e7" data-core-metadata="sha256=399046cbf9ae7ebab8dfd009e2b4f748212c710a0e75ca501a72bbb2d456e2e7">hydra_core-1.3.2-2-py3-none-any.whl</a>
26+ <br />
27+ <a href="https://files.pythonhosted.org/packages/c6/50/e0edd38dcd63fb26a8547f13d28f7a008bc4a3fd4eb4ff030673f22ad41a/hydra_core-2.0.0a1-py3-none-any.whl" >hydra_core-2.0.0a1-py3-none-any.whl</a>
2628</body>
2729</html>
2830<!--SERIAL 22812307-->
@@ -51,6 +53,28 @@ def test_provider_choose_wheel():
5153 assert str (candidate .version ) == "1.3.2"
5254
5355
56+ def test_provider_choose_wheel_prereleases ():
57+ with requests_mock .Mocker () as r :
58+ r .get (
59+ "https://pypi.org/simple/hydra-core/" ,
60+ text = _hydra_core_simple_response ,
61+ )
62+
63+ provider = resolver .PyPIProvider (include_sdists = False )
64+ reporter = resolvelib .BaseReporter ()
65+ rslvr = resolvelib .Resolver (provider , reporter )
66+
67+ result = rslvr .resolve ([Requirement ("hydra-core==2.0.0a1" )])
68+ assert "hydra-core" in result .mapping
69+
70+ candidate = result .mapping ["hydra-core" ]
71+ assert (
72+ candidate .url
73+ == "https://files.pythonhosted.org/packages/c6/50/e0edd38dcd63fb26a8547f13d28f7a008bc4a3fd4eb4ff030673f22ad41a/hydra_core-2.0.0a1-py3-none-any.whl"
74+ )
75+ assert str (candidate .version ) == "2.0.0a1"
76+
77+
5478def test_provider_choose_sdist ():
5579 with requests_mock .Mocker () as r :
5680 r .get (
You can’t perform that action at this time.
0 commit comments