Skip to main content

Python library for general Base-N encodings.

Project description

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

Install

You can install the latest release from PyPI as follows:

$ pip install --upgrade bases

Usage

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/

Base encoding objects

>>> from bases import base32
>>> base32
FixcharBaseEncoding(
    StringAlphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',
                   case_sensitive=False),
    pad_char='=', padding='include')

Encoding

>>> b = bytes([70, 98, 190, 187, 66, 224, 178])
>>> base32.encode(b)
'IZRL5O2C4CZA===='

Decoding

>>> s = 'IZRL5O2C4CZA===='
>>> base32.decode(s)
b'Fb\xbe\xbbB\xe0\xb2'
>>> list(base32.decode(s))
[70, 98, 190, 187, 66, 224, 178]

Case/padding variations

>>> 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'

Case sensitivity variations

>>> 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').

Custom base encodings

>>> base4 = bases.make("0123", kind="zeropad-enc", block_nchars=4)
>>> base4
ZeropadBaseEncoding(StringAlphabet('0123'), block_nchars=4)

API

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

Contributing

Please see CONTRIBUTING.md.

License

MIT © Hashberg Ltd.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bases-0.3.0.tar.gz (790.0 kB view details)

Uploaded Source

Built Distribution

bases-0.3.0-py3-none-any.whl (36.1 kB view details)

Uploaded Python 3

File details

Details for the file bases-0.3.0.tar.gz.

File metadata

  • Download URL: bases-0.3.0.tar.gz
  • Upload date:
  • Size: 790.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.0

File hashes

Hashes for bases-0.3.0.tar.gz
Algorithm Hash digest
SHA256 70f04a4a45d63245787f9e89095ca11042685b6b64b542ad916575ba3ccd1570
MD5 86b873d2ba179967319a82e6ff73dac8
BLAKE2b-256 de8d105bca352e2fc5f1ee07f425ec296aa680525aac7f197ef135ea057902ac

See more details on using hashes here.

File details

Details for the file bases-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: bases-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 36.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.0

File hashes

Hashes for bases-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a2fef3366f3e522ff473d2e95c21523fe8e44251038d5c6150c01481585ebf5b
MD5 26acb6ee92882380b2f2c4dbea745b6a
BLAKE2b-256 b4157bcf28a3f971e1b0523fab46ae3ca935a589249544187558e5a8e70af393

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page