Skip to content

arcmira 0.4.0: Python SDK from the cleaned-up v1 document - #3

Merged
zealous1 merged 4 commits into
masterfrom
sdk-0.4.0
Oct 3, 2026
Merged

zealous1 merged 4 commits into
masterfrom
sdk-0.4.0

Conversation

@zealous1

@zealous1 zealous1 commented Oct 3, 2026

Copy link
Copy Markdown
Member

Regenerates the Python SDK as 0.4.0 from the cleaned-up v1 OpenAPI (36 operations, down from 88). Python users lose the methods whose operations left the document and get ids-only reads, one date pair, named list collections and Premium as one read. CHANGELOG.md (new) lists every breaking change with a 0.3 to 0.4 replacement table.

SDK

  • Removed with their operations: entities.search|lookup|cards, entities.mentions.list, entities.recommendations.list, people.*, topics.*, organizations.*, products.*, channels.get, channels.guests.list, channels.related.*, corrections.*, transcripts.captions|request|status, transcripts.edits|speakers|merges.*, team.* (routes deleted upstream), and the hand-written transcripts.prepare_and_wait with its four error classes.
  • Added: monitors.entities.add, integrations.slack.list.
  • transcripts.search keeps its name and now calls GET /v1/search. recommendations.list(entity_id=..., class_=...) replaces entities.recommendations.list; the generator spells the class parameter class_ because class is a Python keyword.
  • Premium: transcripts.get(video_id, quality="premium") answers ready (200) or pending (202) with the job; read again after Retry-After. A refusal raises PaymentRequiredError or ForbiddenError with error.details.quote.

Pipeline

fern/method-names.json is keyed by operationId (matching the monorepo overlay), and scripts/prepare-openapi.py is byte-identical to the TypeScript repo's. It fails on an unnamed operation or a stale name, keeps ResolveSuggestion nullable (without that, entities.resolve raised a parse error whenever suggested was null beside best), and builds TranscriptResult from ready and pending. One Error envelope everywhere. Regeneration is deterministic: a second bash scripts/generate.sh leaves the tree clean.

Checks

  • uv sync --python 3.12 && uv run python -m unittest discover -s tests -v: 24 tests, OK (12 generation, 12 client against a local fake, sync and async).
  • uv build: built arcmira-0.4.0.tar.gz and arcmira-0.4.0-py3-none-any.whl.
  • bash scripts/check-commit-identity.sh: every commit zealous1 and signed.
  • Every Python block in README.md and llms.txt ran against the fake server.

Public contract SHA256: 4ffa7594be86490605a5edada66e7a54ef10de308694c6e50e0985558fc914d3.

Release hold: keep this PR in draft. Do not merge, tag, or publish to PyPI until the v1 backend deploy (monorepo PR 678) is live and the MCP release that follows it ships. It releases with the TypeScript SDK and CLI 0.4.0 in arcmira/arcmira PR 8.

The SDK is regenerated from the v1 OpenAPI of 2026-10-02 (36 operations,
down from 88). Methods whose operations left the document are gone,
including the /v1/team routes deleted upstream, the slug families,
corrections, transcripts.request and transcripts.status.
transcripts.search keeps its name and now calls GET /v1/search.

fern/method-names.json is keyed by operationId, and prepare-openapi.py
is shared byte for byte with the TypeScript repo: it fails on an
operation without a name and on a name for an operation the document
lacks, keeps ResolveSuggestion nullable (resolve answers suggested: null
beside best), and builds the TranscriptResult union from ready (200)
and pending (202).

Premium is one read, so prepare_and_wait and its errors are deleted.
Reads take ids, dates are after and before, bodies are snake_case and
lists name their collection; CHANGELOG.md lists every change with its
replacement.
…ames[], org

A Premium read whose last purchase failed answers state failed with last_attempt and buys nothing; retry=True buys again. monitors.entities.add takes names, trackers accept org, and priced refusals share one RefusedQuote type. The README loop stops on failed.
@zealous1
zealous1 marked this pull request as ready for review October 3, 2026 04:57
@zealous1
zealous1 merged commit 3a92385 into master Oct 3, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant