bencode.py
==========
.. image:: https://img.shields.io/pypi/v/bencode.py.svg?style=flat-square
:target: https://pypi.python.org/pypi/bencode.py
.. image:: https://img.shields.io/travis/fuzeman/bencode.py.svg?style=flat-square
:target: https://travis-ci.org/fuzeman/bencode.py
.. image:: https://img.shields.io/coveralls/fuzeman/bencode.py/master.svg?style=flat-square
:target: https://coveralls.io/github/fuzeman/bencode.py
Simple bencode parser (for Python 2, Python 3 and PyPy), forked from the bencode__ package by Thomas Rampelberg.
__ https://pypi.python.org/pypi/bencode
Usage
-----
**Encode:**
.. code-block:: python
>>> import bencodepy
>>> bencodepy.encode({'title': 'Example'})
b'd5:title7:Examplee'
>>> bencodepy.encode(12)
b'i12e'
**Decode:**
.. code-block:: python
>>> import bencodepy
>>> bencodepy.decode('d5:title7:Examplee')
{b'title': b'Example'}
>>> bencodepy.decode('i12e')
12
**Decode to UTF-8:**
.. code-block:: python
>>> import bencodepy
>>> bc = bencodepy.Bencode(
encoding='utf-8'
)
>>> bc.decode('d5:title7:Examplee')
{'title': 'Example'}
:code:`bencode`
************************************************
*(legacy, backwards-compatible package)*
This package will continue to be provided for backwards-compatibility, but upgrading to ``bencodepy`` is recommended for more reliable decoding results.
Under-the-hood this just provides proxies to a ``Bencode`` instance created with:
.. code-block:: python
Bencode(
encoding='utf-8',
encoding_fallback='value',
dict_ordered=True,
dict_ordered_sort=True
)
**Encode:**
.. code-block:: python
>>> import bencode
>>> bencode.encode({'title': 'Example'})
'd5:title7:Examplee'
>>> bencode.encode(12)
'i12e'
**Decode:**
.. code-block:: python
>>> import bencode
>>> bencode.decode('d5:title7:Examplee')
OrderedDict([(u'title', u'Example')])
>>> bencode.decode('i12e')
12
API
---
``bencodepy.Bencode(encoding=None, encoding_fallback=None, dict_ordered=False, dict_ordered_sort=False)``
Create instance
- encoding
Encoding to decode strings with (or ``None`` for binary)
- encoding_fallback
Fallback to binary when decoding fails on the specified string types.
- ``key`` - dictionary keys
- ``value`` - values
- ``all`` - always fallback to binary
- ``None`` - always raise decoding errors
- dict_ordered
Use ``OrderedDict``
- dict_ordered_sort
Ensure ``OrderedDict`` is sorted
Methods:
- ``decode(value)``
Decode bencode string ``value``.
- ``encode(value)``
Encode ``value`` into a bencode string.
- ``read(fd)``
Decode bencode from file or path ``fd``.
- ``write(data, fd)``
Encode ``data`` to file or path ``fd``.
``bencodepy.BencodeDecoder(encoding=None, encoding_fallback=None, dict_ordered=False, dict_ordered_sort=False)``
Create decoder
- encoding
Encoding to decode strings with (or ``None`` for binary)
- encoding_fallback
Fallback to binary when decoding fails on the specified string types.
- ``key`` - dictionary keys
- ``value`` - values
- ``all`` - always fallback to binary
- ``None`` - always raise decoding errors
- dict_ordered
Use ``OrderedDict``
- dict_ordered_sort
Ensure ``OrderedDict`` is sorted
Methods:
- ``decode(value)``
Decode bencode string ``value``.
``bencodepy.BencodeEncoder()``
Create encoder
Methods:
- ``encode(value)``
Encode ``value`` into a bencode string.
``bencodepy.bencode(value)``
``bencodepy.encode(value)``
Encode ``value`` into a bencode string with the default encoder.
``bencodepy.bdecode(value)``
``bencodepy.decode(value)``
Decode bencode string ``value`` with the default decoder.
``bencodepy.bread(fd)``
Decode bencode from file or path ``fd`` with the default decoder.
``bencodepy.bwrite(data, fd)``
Encode ``data`` to file or path ``fd`` with the default encoder.
:code:`bencode`
************************************************
``bencode.bencode(value)``
``bencode.encode(value)``
Encode ``value`` into the bencode format.
``bencode.bdecode(value)``
``bencode.decode(value)``
Decode bencode formatted string ``value``.
``bencode.bread(fd)``
Read bencode formatted string from file or path ``fd``.
``bencode.bwrite(data, fd)``
Write ``data`` as a bencode formatted string to file or path ``fd``.