Skip to main content

This is a data serialization library. It’s a lot like JSON but it uses a new syntax called “typed netstrings” that Zed has proposed for use in the Mongrel2 webserver. It’s designed to be simpler and easier to implement than JSON, with a happy consequence of also being faster in many cases.

An ordinary netstring is a blob of data prefixed with its length and postfixed with a sanity-checking comma. The string “hello world” encodes like this:

11:hello world,

Typed netstrings add other datatypes by replacing the comma with a type tag. Here’s the integer 12345 encoded as a tnetstring:

5:12345#

And here’s the list [12345,True,0] which mixes integers and bools:

19:5:12345#4:true!1:0#]

Simple enough? This module gives you the following functions:

dump:

dump an object as a tnetstring to a file

dumps:

dump an object as a tnetstring to a string

load:

load a tnetstring-encoded object from a file

loads:

load a tnetstring-encoded object from a string

pop:

pop a tnetstring-encoded object from the front of a string

Note that since parsing a tnetstring requires reading all the data into memory at once, there’s no efficiency gain from using the file-based versions of these functions. They’re only here so you can use load() to read precisely one item from a file or socket without consuming any extra data.

The tnetstrings specification explicitly states that strings are binary blobs and forbids the use of unicode at the protocol level. As a convenience to python programmers, this library lets you specify an application-level encoding to translate python’s unicode strings to and from binary blobs:

>>> print repr(tnetstring.loads("2:\xce\xb1,"))
'\xce\xb1'
>>>
>>> print repr(tnetstring.loads("2:\xce\xb1,", "utf8"))
u'\u03b1'

Release files for tnetstring 0.2.1

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

Source distribution (sdist)

Source distribution for tnetstring 0.2.1
File Size Uploaded
tnetstring-0.2.1.tar.gz 17.0 kB Details

Release files / tnetstring-0.2.1.tar.gz

Download URL tnetstring-0.2.1.tar.gz
Size 17.0 kB
Tags Source
SHA-256 checksum
How to use checksums
55715a5d758214034db179005def47ed842da36c4c48e9e7ae59bcaffed7ca9b
BLAKE2b-256 checksum
How to use checksums
75194b82ac8ff96d99e41f0e7b5544e7128c9c0c661c2f46c1d987f59c10bb19
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.2.1 This release

1 release file

0.2.0

1 release file

0.1.0

1 release file

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