Skip to main content

fasttransport

Install

pip install fasttransport

Why

Every small API wrapper needs the same plumbing: headers merged into each request, responses decoded by content type, errors that carry the response body, and SSE parsing for streams. Most wrappers also repeat the same mistake. They create one httpx client at startup and keep it, which pins its pooled connections to the event loop that created them. Code that later runs under a different loop, common in tests and background tasks, then fails with confusing connection errors.

fasttransport is that plumbing written once, on httpx2. Each request gets a fresh client and nothing is tied to a loop. Pass client= to manage a persistent client yourself. fastspec builds its spec-driven clients on these transports, ghapi its GitHub client, and solveit its gateway clients.

Get started

SyncTransport.request executes a call and returns the decoded body: JSON arrives as a dict, text as text, and anything else as bytes. HTTP errors raise with the response body included in the message.

from fasttransport.core import *
SyncTransport().request('GET', 'https://jsonplaceholder.typicode.com/todos/1')

AsyncTransport is the same, awaited. It also has stream, an async generator that parses SSE events into JSON dicts. The core page streams a chat completion with it.

await AsyncTransport().request('GET', 'https://jsonplaceholder.typicode.com/users/1')

A small REST client is a base URL plus verbs. HttpCli verbs take a path relative to the base, kwargs become the payload (query params on get and delete, the JSON body otherwise), and decoded bodies come back:

cli = HttpCli('https://jsonplaceholder.typicode.com')
cli.get('todos/1')
cli.post('posts', title='hi')

AsyncHttpCli is the async twin. Its verbs return awaitables:

acli = AsyncHttpCli('https://jsonplaceholder.typicode.com')
await acli.get('todos/1')

Errors

A client fails in three ways: an HTTP error status, a transport failure such as a timeout, and an error event arriving mid-stream. fasttransport.errors turns all three into one APIError, carrying the parsed message, provider code, request id, and whether the failure is worth retrying. fastspec, ghapi, and fastllm all raise that one type, so calling code catches it once whatever the provider. The errors page shows each provider’s error shape parsed into it.

The core page documents the rest with runnable examples: SSE streaming, error enrichment, multipart uploads, and managing your own client.

Metadata

Release files for fasttransport 0.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fasttransport 0.0.3
File Size Uploaded
fasttransport-0.0.3.tar.gz 13.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fasttransport 0.0.3
File Interpreter ABI Platform
fasttransport-0.0.3-py3-none-any.whl Python 3 none any Details

Total release size: 27.0 kB

Release files / fasttransport-0.0.3.tar.gz

Download URL fasttransport-0.0.3.tar.gz
Size 13.7 kB
Tags Source
SHA-256 checksum
How to use checksums
56706c793425cd750cbad54df7091eee6357e226e1bd2a64587cc767b286b5cb
BLAKE2b-256 checksum
How to use checksums
5a2b91f3462c1348896d5860f97ff65b916ec5657dbeac0d11e2a0443905b0f8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.15

Release files / fasttransport-0.0.3-py3-none-any.whl

Download URL fasttransport-0.0.3-py3-none-any.whl
Size 13.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6726dfaf33f2c9f7e9650259abb8e30598f55e04cc779372ea76e2061caef15b
BLAKE2b-256 checksum
How to use checksums
a34cf2a85d763a1570b62bc235efb81cdb459d197832b71b755b41b11205238b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.15

Release history Release notifications | RSS feed

0.0.4

2 release files

This release

0.0.3 This release

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page