An open API service indexing awesome lists of open source software.

https://github.com/acatton/flatbencode

Fast, safe and non-recursive implementation of Bittorrent bencoding for Python 3
https://github.com/acatton/flatbencode

bencode bittorrent bittorrent-protocol deserialization flat python3 serialization torrent

Last synced: 11 months ago
JSON representation

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

Awesome Lists containing this project

README

          

flatbencode
============

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

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

.. code:: python

>>> from flatbencode import encode, decode
>>> encode({b'foo': [b'bar', 1]})
b'd3:fool3:bari1eee'
>>> decode(b'ldei0e0:e')
[OrderedDict(), 0, b'']

Run tests
---------

.. code::

$ pip install pytest hypothesis
$ py.test -v

Changelog
---------

v0.3.0 (not released yet)
^^^^^^^^^^^^^^^^^^^^^^^^^

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.