Fast, safe and non-recursive implementation of Bittorrent bencoding for Python 3
Project description
Fast, safe and thoroughly tested implementation of bencode in pure Python 3, without any C extension.
This is called flatbencode because the algorithm for decoding a bencode structure is non-recursive, thus preventing RuntimeException.
Usage
>>> from flatbencode import encode, decode
>>> encode({b'foo': [b'bar', 1]})
b'd3:fool3:bari1eee'
>>> decode(b'ldei0e0:e')
[OrderedDict(), 0, b'']
Run tests
$ pip install pytest hypothesis
$ py.test -v
Changelog
v0.2.1 (2016-10-22)
Do not accept strings as dictionary keys [Antoine Catton]
v0.2.0 (2016-10-22)
Raise an exception when there’s still data left. [Tim Ruffing, #2]
Use bytes as python dictionary keys (instead of strings) [Tim Ruffing, #2]
Sort dictionary keys when serializing (follows the BEP-0003) [Antoine Catton]
v0.1.0 (2016-06-12)
Initial release.
Can decode bencoding into a python datastructure.
Can encode a python datastructure into bencoding serialization format.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.