Skip to content

whtsky/bencoder.pyx

Folders and files

NameName
Last commit message
Last commit date
Dec 6, 2023
Feb 11, 2018
Aug 1, 2016
Dec 16, 2021
Jul 31, 2016
Nov 2, 2019
Jan 24, 2016
Aug 23, 2016
Dec 11, 2022
Dec 16, 2021
Dec 7, 2022
Feb 11, 2018
Dec 11, 2022
Dec 8, 2022

Repository files navigation

Bencoder.pyx

A fast bencode implementation in Cython supports both Python2 & Python3 .

PyPI License Codecov Coverage

Install

pip install bencoder.pyx

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.1

  • Add support for Python 3.11

Versoin 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