A fast bencode implementation in Cython for Python 3.
Install
Usage
from bencoder import bencode, bdecode, bdecode2 assert bencode("WWWWWW") == b'6:WWWWWW' assert bencode(233) == b'i233e' with open("debian-8.3.0-amd64-netinst.iso.torrent", "rb") as f: torrent = bdecode(f.read()) print(torrent['announce']) decoded, length = bdecode2(b'6:WWWWWWi233e') assert decoded == b'WWWWWW' assert length == 8
ChangeLog
Version 3.0.2
- Drop support for Python 3.6–3.9, require Python >= 3.10
- Add support for Python 3.12 & 3.13
- Fix Cython 3 build
Version 3.0.1
- Add support for Python 3.11
Version 3.0.0
- Add support for Python 3.9 & 3.10
- Drop support for Python 2
- Build wheels for musl & aarch64
Version 2.0.1
- Add support for Python 3.8
- Drop support for Python 3.4
Version 2.0.0
- Use built-in dict instead of OrderedDict on Python >= 3.7
- Drop support for Python 3.3
- Fix bytes parsing when used with python-future #41
Version 1.2.1
- Drop support for Python 2.6
- Performance boost for bencode method. #7
Version 1.2.0
- Add bdecode2 method. #6
Version 1.1.3
- Performance Improvement
- Fix package metainfo #3
Version 1.1.2
- Support encode large int
Version 1.1.0
- Use OrderedDict instaed of dict
- Support encoding subclasses of dict