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


Download files

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

Filename, size & hash SHA256 hash help File type Python version Upload date
flatbencode-0.2.1.tar.gz (3.2 kB) Copy SHA256 hash SHA256 Source None Oct 22, 2016

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page