reflectapi-runtime
Runtime support library for Python clients generated by
reflectapi. Generated code
imports from reflectapi_runtime; you don't normally call this library
directly.
What it provides
ClientBase/AsyncClientBase— base classes used by the generatedClient/AsyncClient. They wraphttpxand handle request build-up, Pydantic-based response validation, and middleware.ApiResponse[T, E, H]— typed wrapper around the response value, transport metadata, the optional typed error, and the API's declared response headers (.headers).ApiStream[T, H]/AsyncApiStream[T, H]— iterators returned by streaming methods, exposing the response'smetadataand declaredheadersonce iteration starts.ApplicationError,NetworkError,TimeoutError,ValidationError— exceptions raised by the generated methods on non-2xx, transport, and validation failures respectively.ReflectapiPartialModel— base class for generated models with omittable fields. Unset fields stay absent during direct serialization; explicit null and values remain set, tracked via Pydantic'smodel_fields_set.- Authentication helpers (
BearerTokenAuth,APIKeyAuth,BasicAuth,OAuth2ClientCredentialsAuth,OAuth2AuthorizationCodeAuth). - Middleware, batching, and testing utilities (
MockClient,CassetteMiddleware).
Request field presence
Requests serialize Pydantic models with wire aliases and exclude_unset=True,
recursively. A field omitted during construction is absent from JSON; a field
explicitly set to None is sent as null. This also applies to nested models
and models inside list or dictionary bodies. Unset non-null defaults are
omitted too: pass the default value explicitly if the server should receive it.
Streaming endpoints
Endpoints declared with Builder::stream_route on the server are exposed on
the generated client as ordinary methods that return an iterator:
async with AsyncClient("http://localhost:3000") as client:
async for event in client.pets.cdc_events(headers=headers):
... # process each event
The sync client returns a regular Iterator; both validate each event
against the declared item model. The wire format is Server-Sent Events
(data: <json>\n\n); init failures (4xx/5xx) raise ApplicationError and
do not enter the iterator. Breaking out of the loop or calling
stream.aclose() releases the underlying HTTP connection.
Events are validated against the generated model. Closed response enums reject
unfamiliar variants; enums declared with #[reflectapi(open)] retain them as
an unknown case with the tag and parsed JSON, and #[serde(other)] uses the
declared fallback. A malformed known variant raises ValidationError
mid-stream and terminates the iterator. Earlier items remain delivered.
Compatibility
Python 3.12+. SDKs generated with ReflectAPI 0.21 require the 0.21 runtime. Pydantic 2.10 or newer supports the generated generic models; Python 3.14 requires Pydantic 2.12 or newer. Installing the runtime resolves these requirements and the supported HTTP dependencies automatically.
Metadata
Release files for reflectapi-runtime 0.21.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| reflectapi_runtime-0.21.1.tar.gz | 75.2 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| reflectapi_runtime-0.21.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 117.2 kB
Release files / reflectapi_runtime-0.21.1.tar.gz
| Download URL | reflectapi_runtime-0.21.1.tar.gz |
|---|---|
| Size | 75.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
dc3ba474749ba517b2737f398f274b050ff538cb0dcf9adbe9f553dbbac6e5b4
|
|
BLAKE2b-256 checksum How to use checksums |
400615de9b95c47bcf90b57f2ae210c0ba9865da01b86b54a10898f4f0297f65
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / reflectapi_runtime-0.21.1-py3-none-any.whl
| Download URL | reflectapi_runtime-0.21.1-py3-none-any.whl |
|---|---|
| Size | 42.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
324ff8c6e9ebb27f0efafb74199a333ffbeaae206eb3705ddeecd5b08d9ca061
|
|
BLAKE2b-256 checksum How to use checksums |
4048b7e49e0f3fb9357ef322a77cf9bb12bc08a574b17a4f8daf87ab86dc6fd6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logSecurity for reflectapi-runtime 0.21.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for reflectapi_runtime-0.21.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.