@@ -192,10 +192,11 @@ def is_valid_version(
192
192
"""
193
193
Return True if the parsed_version is valid for the given identifier.
194
194
"""
195
- if (
196
- any (parsed_version not in r .specifier for r in requirements [identifier ])
197
- or parsed_version in bad_versions
198
- ):
195
+ if parsed_version in bad_versions :
196
+ return False
197
+ if any (parsed_version not in r .specifier for r in requirements [identifier ]):
198
+ if all (not r .specifier for r in requirements [identifier ]):
199
+ return True
199
200
return False
200
201
return True
201
202
@@ -453,16 +454,20 @@ def get_candidates(
453
454
"""
454
455
Generate candidates for the given identifier. Overridden.
455
456
"""
457
+ valid_versions = []
456
458
for version in all_versions :
457
459
parsed_version = parse_version (version )
458
- if not is_valid_version (
460
+ if is_valid_version (
459
461
parsed_version = parsed_version ,
460
462
requirements = requirements ,
461
463
identifier = identifier ,
462
464
bad_versions = bad_versions ,
463
465
):
464
- continue
465
- yield Candidate (name = name , version = parsed_version , extras = extras )
466
+ valid_versions .append (parsed_version )
467
+ if not all (version .is_prerelease for version in valid_versions ):
468
+ valid_versions = [version for version in valid_versions if not version .is_prerelease ]
469
+ for version in valid_versions :
470
+ yield Candidate (name = name , version = version , extras = extras )
466
471
467
472
def _iter_matches (
468
473
self ,
@@ -504,7 +509,11 @@ def find_matches(
504
509
505
510
def is_satisfied_by (self , requirement : Requirement , candidate : Candidate ) -> bool :
506
511
"""Whether the given requirement can be satisfied by a candidate. Overridden."""
507
- return candidate .version in requirement .specifier
512
+ if candidate .version in requirement .specifier :
513
+ return True
514
+ elif not requirement .specifier :
515
+ return True
516
+ return False
508
517
509
518
def _iter_dependencies (self , candidate : Candidate ) -> Generator [Requirement , None , None ]:
510
519
"""
0 commit comments