Skip to content

arcmira 0.2.0: the Python SDK - #1

Closed
zealous1 wants to merge 7 commits into
masterfrom
sdk-0.2.0
Closed

zealous1 wants to merge 7 commits into
masterfrom
sdk-0.2.0

Conversation

@zealous1

Copy link
Copy Markdown
Member

What

This branch turns the arcmira PyPI name from a pointer package into the SDK.

  • src/arcmira/: generated from the Arcmira OpenAPI document by Fern (fern-python-sdk 5.31.0). Arcmira and AsyncArcmira clients on httpx with pydantic models, py.typed, auto-paging lists, and one exception per status carrying the parsed API body. api_key from the option or ARCMIRA_API_KEY. User-Agent arcmira/0.2.0. Python 3.9+.
  • pyproject.toml: hatchling, static version 0.2.0, runtime dependencies as the generator requires (httpx, pydantic, pydantic-core, typing_extensions), dev group pytest and mypy. publish.yml now runs the tests before uv build and reads the version from pyproject.toml.
  • tests/: against a local fake of /v1 (tests/fake_v1.py; bodies in tests/fixtures/v1.json, derived from the spec).
  • README, llms.txt, reference.md, Apache-2.0 LICENSE.

Verification

  • pytest: 8 passing: bearer key and SDK user agent, ARCMIRA_API_KEY fallback (in a fresh interpreter, since the default is read at import), search, a paged list walking next_cursor, a JSON write, a typed 402 gate with unlock.url, a typed 404, the entity page list envelope.
  • mypy src/arcmira: no issues in 590 files.
  • Production: me.get and channels.videos.list answered with a real key; transcripts.search answered 503 search_unavailable at the time and surfaced as a typed ApiError.
  • Dependencies: every lower bound and dev pin older than 7 days.

Do not merge or tag before the release is approved; the v* tag runs publish.yml, which replaces the pointer package on PyPI and cannot be taken back.

src/arcmira/ is generated from the Arcmira OpenAPI document by Fern (fern-python-sdk 5.31.0): sync and async clients on httpx with pydantic models, auto-paging lists and one exception per status carrying the parsed API body, py.typed. Tests run against a local fake of /v1 whose bodies derive from the spec. Apache-2.0. The pointer package this name held until 0.1.1 is gone.
Part 2 of 5 of the same change; see the first commit on this branch.
Part 3 of 5 of the same change; see the first commit on this branch.
Part 4 of 5 of the same change; see the first commit on this branch.
Part 5 of 5 of the same change; see the first commit on this branch.
The API now declares Idempotency-Key on its 12 write operations, the
error code list and the response headers, and GET /v1/me returns
key_id, key_label, credential_kind, email_masked and period_resets_at.
Regenerated with scripts/sdk/regenerate.mjs from
api.arcmira.com/v1/openapi.json; the test fixtures come from the same
document. pytest 8 pass, mypy clean.
…scriptions resource

The transcript request operations move onto client.transcripts: request
(POST /v1/transcriptions), status (GET /v1/transcriptions/{id}) and
list_requests (GET /v1/transcriptions). The types are TranscriptRequest,
TranscriptRequestSubmitResponse and TranscriptRequestListResponse. README
shows an order and a poll; the fake answers the POST and a test pins the
surface.
@zealous1

zealous1 commented Oct 8, 2026

Copy link
Copy Markdown
Member Author

Superseded by #2 (0.3), which shipped the generated SDK. The current release is 0.5.1.

@zealous1 zealous1 closed this Oct 8, 2026
@zealous1
zealous1 deleted the sdk-0.2.0 branch October 8, 2026 21:34
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