mirror of
https://github.com/davidhalter/typeshed.git
synced 2025-12-07 12:44:28 +08:00
stubsabot: minor refactoring (#9754)
This commit is contained in:
@@ -170,8 +170,13 @@ async def release_contains_py_typed(release_to_download: PypiReleaseDownload, *,
|
||||
raise AssertionError(f"Unknown package type: {packagetype!r}")
|
||||
|
||||
|
||||
async def find_first_release_with_py_typed(pypi_info: PypiInfo, *, session: aiohttp.ClientSession) -> PypiReleaseDownload:
|
||||
async def find_first_release_with_py_typed(pypi_info: PypiInfo, *, session: aiohttp.ClientSession) -> PypiReleaseDownload | None:
|
||||
release_iter = pypi_info.releases_in_descending_order()
|
||||
# If the latest release is not py.typed, assume none are.
|
||||
if not (await release_contains_py_typed(release := next(release_iter), session=session)):
|
||||
return None
|
||||
|
||||
first_release_with_py_typed: PypiReleaseDownload | None = None
|
||||
while await release_contains_py_typed(release := next(release_iter), session=session):
|
||||
if not release.version.is_prerelease:
|
||||
first_release_with_py_typed = release
|
||||
@@ -418,12 +423,8 @@ async def determine_action(stub_path: Path, session: aiohttp.ClientSession) -> U
|
||||
if latest_version in spec:
|
||||
return NoUpdate(stub_info.distribution, "up to date")
|
||||
|
||||
is_obsolete = await release_contains_py_typed(latest_release, session=session)
|
||||
if is_obsolete:
|
||||
first_release_with_py_typed = await find_first_release_with_py_typed(pypi_info, session=session)
|
||||
relevant_version = version_obsolete_since = first_release_with_py_typed.version
|
||||
else:
|
||||
relevant_version = latest_version
|
||||
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 {}
|
||||
maybe_links: dict[str, str | None] = {
|
||||
@@ -435,15 +436,14 @@ async def determine_action(stub_path: Path, session: aiohttp.ClientSession) -> U
|
||||
|
||||
diff_info = await get_diff_info(session, stub_info, pypi_info, relevant_version)
|
||||
if diff_info is not None:
|
||||
github_repo_path, old_tag, new_tag, diff_url = diff_info
|
||||
links["Diff"] = diff_url
|
||||
links["Diff"] = diff_info.diff_url
|
||||
|
||||
if is_obsolete:
|
||||
if obsolete_since:
|
||||
return Obsolete(
|
||||
stub_info.distribution,
|
||||
stub_path,
|
||||
obsolete_since_version=str(version_obsolete_since),
|
||||
obsolete_since_date=first_release_with_py_typed.upload_date,
|
||||
obsolete_since_version=str(obsolete_since.version),
|
||||
obsolete_since_date=obsolete_since.upload_date,
|
||||
links=links,
|
||||
)
|
||||
|
||||
@@ -451,7 +451,11 @@ async def determine_action(stub_path: Path, session: aiohttp.ClientSession) -> U
|
||||
diff_analysis: DiffAnalysis | None = None
|
||||
else:
|
||||
diff_analysis = await analyze_diff(
|
||||
github_repo_path=github_repo_path, stub_path=stub_path, old_tag=old_tag, new_tag=new_tag, session=session
|
||||
github_repo_path=diff_info.repo_path,
|
||||
stub_path=stub_path,
|
||||
old_tag=diff_info.old_tag,
|
||||
new_tag=diff_info.new_tag,
|
||||
session=session,
|
||||
)
|
||||
|
||||
return Update(
|
||||
|
||||
Reference in New Issue
Block a user