Skip to content
/ pyben Public

bencode library and python implementation, with identical API as the python's json module.

License

Notifications You must be signed in to change notification settings

alexpdev/pyben

Folders and files

NameName
Last commit message
Last commit date

Latest commit

3c7b10e · Oct 8, 2022

History

80 Commits
Dec 31, 2021
Mar 17, 2022
Oct 8, 2022
Oct 8, 2022
Oct 8, 2022
Jun 5, 2022
Dec 31, 2021
Mar 17, 2022
Apr 24, 2022
Oct 8, 2022
Oct 8, 2022
Oct 8, 2022
Oct 8, 2022
Oct 8, 2022
Oct 8, 2022
Oct 8, 2022

Repository files navigation

Pyben v0.3.3

Small library for encoding/decoding bencode data. Supports Unicode pathnames as of PyBen 3.0. Pyben Enables fast and easy encoding and decoding of bencoded data.

PyBen


GitHub repo size GitHub contributors PyPI - Downloads Codacy Badge Codacy Badge codecov

Prerequisites

Python v3.6+

Installing PyBen

To install PyBen, follow these steps:

Using pip:

pip install pyben

Using git:

git clone https://github.com/alexpdev/pyben.git

Using PyBen

The API is intentionally designed to mimic Python's json and pickle modules.

>>> import os
>>> import pyben
>>> file_path = "path/to/encoded.file"
>>> data = {"item1": ["item2", 3, [4], {5: "item6"}]}
>>> encoded = pyben.dumps(data)
>>> encoded
... b'd5:item1l5:item2i3eli4eedi5e5:item6eee'
>>> decoded = pyben.loads(encoded)
>>> decoded
... {'item1': ['item2', 3, [4], {5: 'item6'}]}
>>> decoded == data
... True

One key difference is that the 'load' and 'dump' methods accept as arguments, string paths or path-like objects as well as an open BytesIO object.

For Example this:

>>> with open(file_path, "wb") as fd:
>>>    pyben.dump(decoded, fd)
>>> os.path.exists(file_path)
... True
>>> with open(file_path, "rb") as fd:
>>>    decoded_file = pyben.load(fd)
>>> decoded_file == decoded == data
... True

is the same as doing following.

>>> pyben.dump(data, file_path)
>>> os.path.exists(file_path)
... True
>>> decoded_file = pyben.load(file_path)
>>> decoded_file == decoded == data
... True

The full API includes many other functions and classes as well. See docs for more full API.

License

This project uses the following license: Apache 2.0

Documentation

Github Pages: https://alexpdev.github.io/pyben