utils/dep_freshness/registries/pub.py
2026-09-12 20:21:34 +02:00

24 lines
800 B
Python

"""pub.dev: latest stable of a Dart/Flutter package."""
from __future__ import annotations
from dep_freshness._tables import PUB_API
from dep_freshness.registries.http import get_json
from dep_freshness.versions import newest_stable, reference
def latest(name: str) -> str | None:
"""Latest stable on pub.dev.
`latest.version` is already stable-only, but the full version list is the
safety net for packages whose only releases are pre-releases.
"""
payload = get_json(PUB_API.format(name=name))
if not payload:
return None
candidate = (payload.get("latest") or {}).get("version")
if candidate and newest_stable([candidate]):
return candidate
versions = [v.get("version") for v in payload.get("versions") or []]
return reference(versions)