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 Common errors
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.
Warnings
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'.
Imports
- bencode wrong
import bencodecorrectimport bencode2 as bencode - decode wrong
from bencode import decodecorrectfrom bencode2 import decode - BencodeDecodeError wrong
from bencode2 import DecodeErrorcorrectfrom bencode2 import BencodeDecodeError
Quickstart
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}')