Metadata-Version: 2.4
Name: flatbencode
Version: 0.2.1
Summary: Fast, safe and non-recursive implementation of Bittorrent bencoding for Python 3
Home-page: http://github.com/acatton/flatbencode
Author: Antoine Catton
License: MIT
Keywords: bencoding bencode bittorrent fast non-recursive stack maximum recursion
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Communications :: File Sharing
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Dynamic: author
Dynamic: classifier
Dynamic: description
Dynamic: home-page
Dynamic: keywords
Dynamic: license
Dynamic: summary

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