Skip to main content

Fast, safe and non-recursive implementation of Bittorrent bencoding for Python 3

Project description

https://travis-ci.org/acatton/flatbencode.svg?branch=master

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.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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flatbencode-0.2.0.tar.gz (3.2 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page