Skip to main content

Simple bencode parser (for Python 2, Python 3 and PyPy)

Project description

https://img.shields.io/pypi/v/bencode.py.svg?style=flat-square https://img.shields.io/travis/fuzeman/bencode.py.svg?style=flat-square https://img.shields.io/coveralls/fuzeman/bencode.py/master.svg?style=flat-square

Simple bencode parser (for Python 2, Python 3 and PyPy), forked from the bencode package by Thomas Rampelberg.

Usage

Encode:

>>> import bencodepy

>>> bencodepy.encode({'title': 'Example'})
b'd5:title7:Examplee'

>>> bencodepy.encode(12)
b'i12e'

Decode:

>>> import bencodepy

>>> bencodepy.decode('d5:title7:Examplee')
{b'title': b'Example'}

>>> bencodepy.decode('i12e')
12

Decode to UTF-8:

>>> import bencodepy

>>> bc = bencodepy.Bencode(
    encoding='utf-8'
)

>>> bc.decode('d5:title7:Examplee')
{'title': 'Example'}

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:

Bencode(
    encoding='utf-8',
    encoding_fallback='value',
    dict_ordered=True,
    dict_ordered_sort=True
)

Encode:

>>> import bencode

>>> bencode.encode({'title': 'Example'})
'd5:title7:Examplee'

>>> bencode.encode(12)
'i12e'

Decode:

>>> 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, max_depth=DEFAULT_MAX_DEPTH)

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

  • max_depth

    Maximum structure depth before raising a BencodeDecodeError.

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, max_depth=DEFAULT_MAX_DEPTH)

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

  • max_depth

    Maximum structure depth before raising a BencodeDecodeError.

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.

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.

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

bencode_py-4.1.0.tar.gz (15.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bencode_py-4.1.0-py3-none-any.whl (18.7 kB view details)

Uploaded Python 3

File details

Details for the file bencode_py-4.1.0.tar.gz.

File metadata

  • Download URL: bencode_py-4.1.0.tar.gz
  • Upload date:
  • Size: 15.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for bencode_py-4.1.0.tar.gz
Algorithm Hash digest
SHA256 f93372b45dc370fe4024f9230128f1f9fbc0fe30c3d41f1c3a7d02fe6c899813
MD5 562fa754eac9f2df4cee0396abff95e8
BLAKE2b-256 c5e997a84f30337c38f1572baa299eaeacc3ca090c6d383da9839edad166fef4

See more details on using hashes here.

File details

Details for the file bencode_py-4.1.0-py3-none-any.whl.

File metadata

  • Download URL: bencode_py-4.1.0-py3-none-any.whl
  • Upload date:
  • Size: 18.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for bencode_py-4.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 eec5d11eda36f008351cafa5d8ee51e2e14c9f2aa34df8e31f40e73ae78235a4
MD5 f3758a2c179aeec88775283f025c7f65
BLAKE2b-256 5efa34e8fc47e05801820f3f2ef13c8c9b873e6268c9b69ca7f69335f3300ef6

See more details on using hashes here.

Supported by

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