@@ -192,10 +192,11 @@ def is_valid_version(
192192 """
193193 Return True if the parsed_version is valid for the given identifier.
194194 """
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
199200 return False
200201 return True
201202
@@ -453,16 +454,20 @@ def get_candidates(
453454 """
454455 Generate candidates for the given identifier. Overridden.
455456 """
457+ valid_versions = []
456458 for version in all_versions :
457459 parsed_version = parse_version (version )
458- if not is_valid_version (
460+ if is_valid_version (
459461 parsed_version = parsed_version ,
460462 requirements = requirements ,
461463 identifier = identifier ,
462464 bad_versions = bad_versions ,
463465 ):
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 )
466471
467472 def _iter_matches (
468473 self ,
@@ -504,7 +509,11 @@ def find_matches(
504509
505510 def is_satisfied_by (self , requirement : Requirement , candidate : Candidate ) -> bool :
506511 """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
508517
509518 def _iter_dependencies (self , candidate : Candidate ) -> Generator [Requirement , None , None ]:
510519 """
0 commit comments