transports moves typed models across any wire as incremental patches.
A model is defined once as a pydantic model, stdlib dataclass, or
msgspec struct. A Python process hosts it and mutates it
normally, and transports sends only the patch needed to update a remote mirror. The same Rust core
drives Python (PyO3) and JavaScript (wasm), so both sides share the same Value type, diff, patch
application, and codecs.
import transports
from pydantic import BaseModel
class Device(BaseModel):
name: str
on: bool = False
session = transports.Session()
lamp = Device(name="lamp")
model_id = session.host(lamp)
lamp.on = True
print(session.drain())
# [(1, {'rev': 1, 'ops': [{'Set': {'path': [{'Key': 'on'}], 'value': {'Bool': True}}}]})]
Install
pip install transports
pip install "transports[connections]" # WebSocket server/client adapters
pip install "transports[sse]" # Server-Sent Events adapter
pip install "transports[jupyter]" # Jupyter comm adapter
Documentation
Tutorial
Quickstart builds one hosted model and mirrors it with the in-process server/client protocol.
How-to guides
Model bridges covers pydantic, dataclasses, msgspec, schemas, and plain JavaScript objects. Connections covers WebSocket, SSE, Jupyter comm, and anywidget adapters. Codecs covers JSON, MessagePack, and custom codecs. Multi-tenancy and sharing covers tenant isolation, shared models, and merge strategies. Pyodide covers building and loading transports in a browser.
Reference
API reference lists the Python API. Wire protocol reference
describes Value, patch operations, protocol messages, codecs, and model ids. Benchmark results
reports recorded server fan-out latency, completion time, and resource use.
Explanation
Concepts explains why transports uses incremental patches, server-owned revisions, a shared Rust core, and transport-agnostic adapters.
Metadata
Release files for transports 0.8.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| transports-0.8.5.tar.gz | 941.7 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| transports-0.8.5-cp314-cp314-pyemscripten_2026_0_wasm32.whl | CPython 3.14 | CPython 3.14 | PyEmscripten 2026.0+ WebAssembly | Details |
| transports-0.8.5-cp311-abi3-win_amd64.whl | CPython 3.11 | abi3 | Windows x86-64 | Details |
| transports-0.8.5-cp311-abi3-manylinux_2_28_x86_64.whl | CPython 3.11 | abi3 | Linux glibc 2.28+ x86-64 | Details |
| transports-0.8.5-cp311-abi3-manylinux_2_28_aarch64.whl | CPython 3.11 | abi3 | Linux glibc 2.28+ ARM64 | Details |
| transports-0.8.5-cp311-abi3-macosx_11_0_arm64.whl | CPython 3.11 | abi3 | macOS 11.0+ ARM64 | Details |
Total release size: 7.5 MB
Release files / transports-0.8.5.tar.gz
| Download URL | transports-0.8.5.tar.gz |
|---|---|
| Size | 941.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
498229fd54bbae76f0ec5e05a33cc0ad483b8a491d35b490bae5e1739e4ec650
|
|
BLAKE2b-256 checksum How to use checksums |
11b0af6c2800161b6b03bdda108daeeec33390ff20ea72b19a69929471c7c92b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / transports-0.8.5-cp314-cp314-pyemscripten_2026_0_wasm32.whl
| Download URL | transports-0.8.5-cp314-cp314-pyemscripten_2026_0_wasm32.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.14 PyEmscripten 2026.0+ WebAssembly |
|
SHA-256 checksum How to use checksums |
92a632df25e04807c9adad5aca96646d87222796a035b5e703e24501db324b30
|
|
BLAKE2b-256 checksum How to use checksums |
0791f50516a7286183eba30352aecf4514f202089ac7c5618d9fd5ecb6350abb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / transports-0.8.5-cp311-abi3-win_amd64.whl
| Download URL | transports-0.8.5-cp311-abi3-win_amd64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.11 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
29f3e9a3a5e6ae341b013110a3d28f2a0df55ba9fde24ae9b224e7a712bfef4c
|
|
BLAKE2b-256 checksum How to use checksums |
76ffd09ecc9c163885ae79dd9fabdc75507a065cdd402d8384b462f30f923eaa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / transports-0.8.5-cp311-abi3-manylinux_2_28_x86_64.whl
| Download URL | transports-0.8.5-cp311-abi3-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.11 Linux glibc 2.28+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
6d2354bd261a5a60a914073de520d886321d32c379aba0cd3865ca9f2683233d
|
|
BLAKE2b-256 checksum How to use checksums |
36def98cc5805dc8d2a98e2aa96b1243bc792301ce5d90c005fd93c811be8cd9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / transports-0.8.5-cp311-abi3-manylinux_2_28_aarch64.whl
| Download URL | transports-0.8.5-cp311-abi3-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.11 Linux glibc 2.28+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
0e7be5d41620be07b0ef2f3af65ed6439408335ee9c9b6a36a16a8870671002d
|
|
BLAKE2b-256 checksum How to use checksums |
45c635c4df34af76445fde7dea92325229d5dd758435270167d024a416d92aec
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / transports-0.8.5-cp311-abi3-macosx_11_0_arm64.whl
| Download URL | transports-0.8.5-cp311-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.11 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
1894b100237cc4d9496c13566752909aea8e118041b328eb14ff2fb4d6e8c06d
|
|
BLAKE2b-256 checksum How to use checksums |
c6500881e03e3c0d9330d683dc16dfa2baa28842a8fb6e97e4b17f0ebe2eb95f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|