Skip to content

hashberg-io/bases

Folders and files

NameName
Last commit message
Last commit date

Latest commit

0099569 · Dec 18, 2023

History

29 Commits
Dec 18, 2023
Dec 18, 2023
Dec 18, 2023
Dec 18, 2023
Oct 20, 2021
Oct 20, 2021
Dec 30, 2021
Oct 20, 2021
Dec 18, 2023
Oct 20, 2021
Dec 30, 2021
Oct 15, 2021
Dec 30, 2021
Oct 20, 2021
Dec 18, 2023
Oct 20, 2021
Dec 12, 2021
Dec 12, 2021
Oct 20, 2021
Dec 30, 2021
Dec 18, 2023
Dec 18, 2023

Repository files navigation

bases: A Python library for Base-N encodings

Python versions PyPI version PyPI status Checked with Mypy Documentation Status Python package status standard-readme compliant

Bases provides a customisable, parametric implementation of several common styles of Base-N encoding, covering all cases appearing in the multibase specification (except for proquints).

You can install the latest release from PyPI as follows:

$ pip install --upgrade bases

We suggest you import bases as follows:

>>> import bases

Below are some basic usage examples, to get you started: for detailed documentation, see https://bases.readthedocs.io/

>>> from bases import base32
>>> base32
FixcharBaseEncoding(
    StringAlphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',
                   case_sensitive=False),
    pad_char='=', padding='include')
>>> b = bytes([70, 98, 190, 187, 66, 224, 178])
>>> base32.encode(b)
'IZRL5O2C4CZA===='
>>> s = 'IZRL5O2C4CZA===='
>>> base32.decode(s)
b'Fb\xbe\xbbB\xe0\xb2'
>>> list(base32.decode(s))
[70, 98, 190, 187, 66, 224, 178]
>>> b = bytes([70, 98, 190, 187, 66, 224, 178])
>>> base32.encode(b)
'IZRL5O2C4CZA===='
>>> base32lower = base32.lower()
>>> base32lower
FixcharBaseEncoding(
    StringAlphabet('abcdefghijklmnopqrstuvwxyz234567',
                   case_sensitive=False),
    pad_char='=', padding='include')
>>> base32lower.encode(b)
'izrl5o2c4cza===='
>>> base32nopad = base32.nopad()
>>> base32nopad.encode(b)
'IZRL5O2C4CZA'
>>> s = 'IZRL5O2C4CZA===='
>>> base32lower.decode(s)
b'Fb\xbe\xbbB\xe0\xb2'
>>> base32lower_casesensitive = base32lower.with_case_sensitivity(True)
>>> base32lower_casesensitive.decode(s)
bases.encoding.errors.NonAlphabeticCharError: Invalid character 'I'
encountered for alphabet StringAlphabet('abcdefghijklmnopqrstuvwxyz234567').
>>> base4 = bases.make("0123", kind="zeropad-enc", block_nchars=4)
>>> base4
ZeropadBaseEncoding(StringAlphabet('0123'), block_nchars=4)

For the full API documentation, see https://bases.readthedocs.io/

Please see CONTRIBUTING.md.

MIT © Hashberg Ltd.