bencode2

raw JSON →
0.3.30 verified Fri May 01 auth: no python

A fast and correct bencode serialize/deserialize library for Python. Version 0.3.30, requires Python >=3.10. Active development on GitHub.

pip install bencode2
error ModuleNotFoundError: No module named 'bencode'
cause Installed old 'bencode' package or missing 'bencode2'.
fix
Run 'pip install bencode2' and use 'import bencode2 as bencode'.
error AttributeError: module 'bencode' has no attribute 'decode'
cause Using old 'bencode' library which has different API.
fix
Install bencode2: 'pip install bencode2' and import as 'import bencode2 as bencode'.
error bencode2.exceptions.DecodeError: ...
cause Catching 'DecodeError' but correct exception is 'BencodeDecodeError'.
fix
Use 'from bencode2 import BencodeDecodeError' and catch that.
breaking Module renamed from 'bencode' to 'bencode2' in v0.3.0. Import as 'bencode2' (or alias).
fix Use 'import bencode2 as bencode' or replace 'bencode' with 'bencode2' in imports.
deprecated The old 'bencode' library (not bencode2) is unmaintained and has bugs. bencode2 is the replacement.
fix Uninstall 'bencode' and install 'bencode2'. Update imports.
gotcha Error class is 'BencodeDecodeError', not 'DecodeError' or 'BencodeError'.
fix Catch 'bencode2.BencodeDecodeError'.

Encode and decode bencode data.

import bencode2 as bencode

data = bencode.encode({'key': 'value', 'list': [1, 2, 3]})
print(data)  # b'd4:key5:value4:listli1ei2ei3eee'

decoded = bencode.decode(data)
print(decoded)  # {'key': 'value', 'list': [1, 2, 3]}

try:
    bencode.decode(b'invalid')
except bencode.BencodeDecodeError as e:
    print(f'Decode error: {e}')