Forked from the original author until they incorporate latest fixes; Python library for general Base-N encodings.
Project description
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).
This is a temporary fork of the original project to be used until the original project incorporates a bug fix to work with newer versions of the ‘typing_extensions’ dependency.
Bug: https://github.com/hashberg-io/typing-validation/issues/1
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file makkus.bases-0.2.4.tar.gz
.
File metadata
- Download URL: makkus.bases-0.2.4.tar.gz
- Upload date:
- Size: 55.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 46c9b1c5a104f6bd94183f9a9d4f28466657970479fb3194bf5d9c298100e6a8 |
|
MD5 | f68aac4649c06f4f93cb4157eba04d8a |
|
BLAKE2b-256 | 5ac89f50bf8011966dda46d00ab97a14a868756265cd691c3b524f3702af3ef8 |
File details
Details for the file makkus.bases-0.2.4-py3-none-any.whl
.
File metadata
- Download URL: makkus.bases-0.2.4-py3-none-any.whl
- Upload date:
- Size: 35.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4e2b519ce3c0bd7fef587f1474b735487388378cc511954236b4343aeb98f059 |
|
MD5 | 06fbbc237b92382c958b1e4d61acc1f3 |
|
BLAKE2b-256 | 1c2a916b36830a472621bfaa8729bfea975de1471e306a4743a503e1bcc6c94d |