flatwire (Python)
Streaming JSON serialization that keeps memory flat and time linear — stream large collections element-by-element instead of materializing the whole payload.
pip install flatwire
import flatwire
# Whole-value convenience (byte-compatible with the standard library).
data = flatwire.encode({"hello": "world"})
value = flatwire.decode(data)
# Stream a large collection to a binary writer, one element at a time.
with open("out.json", "wb") as fp:
flatwire.encode_array((row for row in huge_iterator), fp)
# Read it back lazily — peak memory is one element, not the whole array.
with open("out.json", "rb") as fp:
for row in flatwire.decode_array(fp):
handle(row)
Wire format is plain JSON, so nothing downstream changes.
Streaming XML (v0.3)
The same API streams a typed, fully round-trippable XML representation — for which the standard DOM parsers would otherwise build the whole tree in memory:
# Stream a large collection as XML.
with open("out.xml", "wb") as fp:
flatwire.encode_array(rows, fp, format="xml") # optional: root="items"
# Parse it back lazily, one element at a time (iterparse under the hood).
with open("out.xml", "rb") as fp:
for row in flatwire.decode_array(fp, format="xml"):
handle(row)
Measured (bench/xml_bench.py): parsing a 12 MB document with
ElementTree.fromstring peaks at ~125 MB, while flatwire's streaming parse holds
~4 MB (~97% lower); streaming encode is flat at ~900 bytes.
See the monorepo README for the cross-language story and benchmarks.
Apache-2.0.
Metadata
Release files for flatwire 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| flatwire-0.3.0.tar.gz | 8.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| flatwire-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 15.5 kB
Release files / flatwire-0.3.0.tar.gz
| Download URL | flatwire-0.3.0.tar.gz |
|---|---|
| Size | 8.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
90b7d7b1cdfb32202ed104fa2698cf4b82b4d95d40f2d952f752a75273ae37e8
|
|
BLAKE2b-256 checksum How to use checksums |
a73ccd5af421e66f9c73ac7785ef394b9dcf7fe9f48f23ca16839690070b94b1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / flatwire-0.3.0-py3-none-any.whl
| Download URL | flatwire-0.3.0-py3-none-any.whl |
|---|---|
| Size | 7.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
01ef9f8f542a97eb8f65fc114604db51c6835afe7596d9e0d915aa146241bc86
|
|
BLAKE2b-256 checksum How to use checksums |
d87b8e8f2e8c073c4333c01bbbba566ddb4d09fa4132051e804172b36a97e613
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|