Skip to main content

A lightning-fast, zero-dependency Base62 encoder/decoder for Python

Project description

b62

PyPI version Python Version Total downloads License Build Status

Because the world desperately needed another Base62 library.

What 🤔

Converts integers to strings and back. Revolutionary stuff.

  • Uses Rust 🦀 (because Python is apparently too slow for basic arithmetic)
  • Zero dependencies (we're very proud of this achievement)
  • Type hints (for people who forgot what integers look like)

Install

pip install b62

Shocking, we know.

Usage

import b62

# Turn number into string
encoded = b62.encode(123456789)  # "8M0kX"

# Turn string back into number  
decoded = b62.decode("8M0kX")    # 123456789

# It throws errors when you give it garbage
try:
    b62.decode("not_base62!")
except ValueError:
    print("Surprise! Invalid input breaks things.")

Batch Operations

For when you have many numbers to convert:

# Encode multiple integers (in parallel, because waiting is hard)
encoded = b62.encode_batch([1, 62, 123456789])  # ['1', '10', '8M0kX']

# Decode multiple strings (also in parallel)
decoded = b62.decode_batch(['1', '10', '8M0kX'])  # [1, 62, 123456789]

Performance ⚡

It's fast. Here are some numbers to make you feel better about your life choices:

  • Decode: ~52ns per operation (congratulations, you saved nanoseconds)
  • Encode: ~90ns per operation (your URL shortener will thank you)
  • Batch operations: Uses all your CPU cores (because why not)

Benchmarks run on a machine that probably costs more than your car. 💸

API

encode(num: int) -> str

Converts integer to Base62 string. Rocket science.

decode(string: str) -> int

Converts Base62 string back to integer. PhD not required.

encode_batch(nums: list[int]) -> list[str]

Like encode() but for people with lists.

decode_batch(strings: list[str]) -> list[int]

Like decode() but for people with more lists.

Character Set

0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

Yes, we counted. There are 62 of them.

Use Cases

  • URL shortening (because long URLs hurt feelings)
  • Database ID obfuscation (security through obscurity, naturally)
  • Compact serialization (for when JSON is "too verbose")
  • Impressing coworkers with Rust integration

Development

make test    # Run tests (they probably pass)
make ci      # Pretend you care about CI
make build   # Build the thing

License

MIT - Because we're not monsters. 😇


Now go forth and encode responsibly.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

b62-1.1.5-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (328.5 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

b62-1.1.5-cp314-cp314-macosx_11_0_arm64.whl (281.7 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

b62-1.1.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (328.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

b62-1.1.5-cp313-cp313-macosx_11_0_arm64.whl (281.7 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

b62-1.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (328.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

b62-1.1.5-cp312-cp312-macosx_11_0_arm64.whl (281.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

File details

Details for the file b62-1.1.5-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for b62-1.1.5-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d12e39193e7a95abda39e66c77c346fed79d368bee09f0fbba638c3aa6a4723b
MD5 e66af10462bcf2d6d40f3628e094740f
BLAKE2b-256 eca50117a1f0aef6cfc276e38041eec747f652ef5aa1fb358bdcb86d638562c6

See more details on using hashes here.

File details

Details for the file b62-1.1.5-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

  • Download URL: b62-1.1.5-cp314-cp314-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 281.7 kB
  • Tags: CPython 3.14, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for b62-1.1.5-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6bee4374dce5f9cb642cadfec7229135b52710e62baa7b68d8afb87ca52525de
MD5 ba023fe3167b47354b0a29ce800753b2
BLAKE2b-256 a1c87b9d386d32bd2166207cf582ac71685434c3fa68f2e4e3294f32816e4768

See more details on using hashes here.

File details

Details for the file b62-1.1.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for b62-1.1.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a6eb96b7057c18a327984e0ea5a621896cd03d122512a58553fed3a9021591d2
MD5 1391a8eb19881e8b3198ddd7e3306bbd
BLAKE2b-256 465aca2898a46dc71ce559e89f0592416a1cdd6b8e5eca9c5889f3c97a86ac96

See more details on using hashes here.

File details

Details for the file b62-1.1.5-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

  • Download URL: b62-1.1.5-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 281.7 kB
  • Tags: CPython 3.13, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for b62-1.1.5-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d79778719f214d402e49d802545e0bdbaaae6ff4c2f02c6cb188e18f705926fc
MD5 71d722bd679288e59e55f15ca897adae
BLAKE2b-256 a2a5fc759227593029ea48e069c305be934b78a2d17228629b6440cae14a72bb

See more details on using hashes here.

File details

Details for the file b62-1.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for b62-1.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4851db882a9436308bcec81ab22be27b340f8a63b4f2f40f6feb70ea4fe1eb3d
MD5 4852e40541b8fae9a0c8c9881a4b27b0
BLAKE2b-256 3c59f9714c778a9ee1e18494f21891418700e4957b8e38453cc5f9a2c9af2b88

See more details on using hashes here.

File details

Details for the file b62-1.1.5-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

  • Download URL: b62-1.1.5-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 281.7 kB
  • Tags: CPython 3.12, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for b62-1.1.5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d1fca63b1c8ee3a5a2d2831e1b48aa32430949789db4e69faf28c2a9cab4bc56
MD5 3fc50e8480c8ad84b1f53c3bf26abd6a
BLAKE2b-256 7cd2a9652abaa124483722ac076c55b6f9161cc475a94f2f112fd979c2e1654d

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