Skip to content

anafpy 0.13.4 — the extension's dependencies cleared of known advisories

Latest

Choose a tag to compare

@github-actions github-actions released this 02 Nov 20:37

A maintenance release with no change in what anafpy does. Every dependency in
the lock moves to its current version, and the reason is the Claude Desktop
extension.

Why now

The .mcpb bundles carry their own interpreter and their own copy of every
dependency, frozen at the versions the lock named on the day they were built.
That is what makes them work on a machine with no Python — and it also means an
extension user gets no fix that the lock has not picked up. Since 0.13.3, four
packages in that closure have had advisories published against the versions it
shipped:

  • Pillow (via fpdf2, the UIT card renderer) — a batch of decoder fixes,
    one rated high: the openjpeg library bundled in its wheels carries a heap
    overflow reachable from opening an image. 12.3 → 13.0.
  • aiohttp (via pyhanko, declaration signing) — server-side fixes. 3.14.3
    → 3.14.5.
  • certifi (via pyhanko's certificate validator) — removes CA roots whose
    intermediate keys were compromised.
  • opentelemetry-api (via the MCP SDK) — bounded header parsing.

anafpy reaches none of the vulnerable paths in practice: the card renderer never
decodes an image, nothing here runs an aiohttp server, and the certificate
bundle is consulted only when pyHanko fetches a chain. But an extension is
judged by what it ships, and the fixes cost nothing to take. pip-audit over
the new lock finds no known vulnerabilities.

PyPI installs were never held back — anafpy's declared minimums are floors, so
a fresh pip install already resolves current versions. What this release adds
for them is that those versions are now the ones the test suite runs.

Dependencies

Notable moves in the lock, all exercised by the suite:

  • mcp 2.2 → 2.3
  • httpx2 2.13 → 2.16 — its cookie jar is now reused rather than copied per
    request; the SPV cookie session is unaffected
  • pydantic 2.13 → 2.14, pydantic-settings 2.15 → 2.16
  • pyhanko 0.37 → 0.38 — adds a default budget on PDF stream decoding
  • fpdf2 2.8.8 → 2.9.0 — the card and detail PDFs render the same, though
    their bytes differ: fpdf2 now writes numbers without trailing zeros
  • cryptography 50.0.2, cyclopts 5.3, tenacity 9.2, async-lru 2.4

One declared minimum moves: tenacity>=9.2. Its 9.2 line renamed the
initial argument of the exponential-jitter wait to multiplier, and the poll
loop behind upload_and_wait and wait_for_report now uses the new name — the
same waits, without a deprecation warning on every poll.

Live-confirmed

The upgraded lock was run against ANAF and BNR before tagging: the OAuth token
and both listings, an e-Factura and an e-Transport filing round-trip on TEST,
ANAF's validare and transformare (including the firewall retry), the public
lookups, BNR's rate feed, and DUKIntegrator's install, validation and rendering.

Not yet verified

  • The certificate logins — SPV and the declaration portal. Both fire the
    certificate 2FA and were not re-run; the SPV listing could not be checked
    because the stored session had expired.
  • Signing on a real token with pyhanko 0.38. The mocked sign-and-validate
    round-trip passes.
  • StareD112. ANAF reset every connection to the page during the run, for
    plain curl and for 0.13.3's dependencies alike, so it says nothing about this
    release either way.

Full changelog: v0.13.3...v0.13.4