Stubsabot: mark stubs as obsolete, even if the py.typed file was added in a micro version (#10368)

This commit is contained in:
Alex Waygood
2023-06-27 20:17:17 +01:00
committed by GitHub
parent d2c87ac97d
commit d32754c336

View File

@@ -180,6 +180,10 @@ async def release_contains_py_typed(release_to_download: PypiReleaseDownload, *,
async def find_first_release_with_py_typed(pypi_info: PypiInfo, *, session: aiohttp.ClientSession) -> PypiReleaseDownload | None:
"""If the latest release is py.typed, return the first release that included a py.typed file.
If the latest release is not py.typed, return None.
"""
release_iter = (release for release in pypi_info.releases_in_descending_order() if not release.version.is_prerelease)
latest_release = next(release_iter)
# If the latest release is not py.typed, assume none are.
@@ -429,10 +433,10 @@ async def determine_action(stub_path: Path, session: aiohttp.ClientSession) -> U
latest_release = pypi_info.get_latest_release()
latest_version = latest_release.version
spec = packaging.specifiers.SpecifierSet(f"=={stub_info.version_spec}")
if latest_version in spec:
obsolete_since = await find_first_release_with_py_typed(pypi_info, session=session)
if obsolete_since is None and latest_version in spec:
return NoUpdate(stub_info.distribution, "up to date")
obsolete_since = await find_first_release_with_py_typed(pypi_info, session=session)
relevant_version = obsolete_since.version if obsolete_since else latest_version
project_urls = pypi_info.info["project_urls"] or {}