Skip to main content

Python module for base62 encoding

Project description

base62

Build Status Coveralls PyPI

A Python module for base62 encoding. Ported from PHP code that I wrote in mid-2000, which can be found here.

Rationale

When writing a web application, often times we would like to keep the URLs short.

http://localhost/posts/V1Biicwt

This certainly gives a more concise look than the following.

http://localhost/posts/109237591284123

This was the original motivation to write this module, but there shall be much more broader potential use cases of this module. The main advantage of base62 is that it is URL-safe (as opposed to base64) due to the lack of special characters such as ‘/’ or ‘=’. Another key aspect is that the alphabetical orders of the original (unencoded) data is preserved when encoded. In other words, encoded data can be sorted without being decoded at all.

Installation

base62 can be installed via pypi. Unfortunately, the package name base62 on pypi had already been occupied by someone else, so we had to go by pybase62.

pip install pybase62

Alternatively, you may clone the code to manually install it.

git clone https://github.com/suminb/base62
cd base62 && python setup.py install

Usage

The following section describes a basic usage of base62.

>>> import base62

>>> base62.encode(34441886726)
'base62'

>>> base62.decode('base62')
34441886726

From version 0.2.0, base62 supports bytes array encoding as well.

>>> base62.encodebytes(b'\0')
0

>>> base62.encodebytes(b'\xff\xff')
H31

>>> base62.decodebytes('0')
b''

>>> base62.decodebytes('1')
b'\x01'

Some may be inclined to assume that they both take bytes types as input due to their namings. However, encodebytes() takes bytes types whereas decodebytes() takes str types as an input. They are intended to be commutative, so that a roundtrip between both functions yields the original value.

Formally speaking, we say function f and g commute if f∘g = g∘f where f(g(x)) = (f∘g)(x).

Therefore, we may expect the following relationships:

  • value == encodebytes(decodebytes(value))

  • value == decodebytes(encodebytes(value))

Tests

You may run some test cases to ensure all functionalities are operational.

pytest -v

If pytest is not installed, you may want to run the following command:

pip install -r tests/requirements.txt

Deployment

Deploy a source package (to pypi) as follows:

python setup.py sdist upload

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

pybase62-0.6.0.tar.gz (4.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pybase62-0.6.0-py3-none-any.whl (4.7 kB view details)

Uploaded Python 3

File details

Details for the file pybase62-0.6.0.tar.gz.

File metadata

  • Download URL: pybase62-0.6.0.tar.gz
  • Upload date:
  • Size: 4.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.9

File hashes

Hashes for pybase62-0.6.0.tar.gz
Algorithm Hash digest
SHA256 b5dfa56480855d159e1be64543535b24d2c35cdd18d617f107bef7e2f7413722
MD5 2e18f8c261d7779df94cfb141777013c
BLAKE2b-256 2eb010dcdfb152a36478dba5d4275c2790c8afb170c906f1fc2f214e47307b94

See more details on using hashes here.

File details

Details for the file pybase62-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: pybase62-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 4.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.9

File hashes

Hashes for pybase62-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1b69a8aa1380c16c4c516c60b131042245b6dfb21549e8dd22204d31ed525594
MD5 e702f5dcb8a98b8e15a0904478c36346
BLAKE2b-256 e4bc8ff89e1b171075b09a774e792efed08b383de92a2051ae6315a03e2afe6b

See more details on using hashes here.

Supported by

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