https://github.com/b58uuid/b58uuid-py
Base58-encoded UUID library for Python
https://github.com/b58uuid/b58uuid-py
b58 b58uuid base58 base58-uuid encoding lib library py python short-uuid uid url-safe uuid uuid-alternative
Last synced: 6 months ago
JSON representation
Base58-encoded UUID library for Python
- Host: GitHub
- URL: https://github.com/b58uuid/b58uuid-py
- Owner: b58uuid
- License: mit
- Created: 2026-01-12T08:20:35.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2026-01-12T09:32:24.000Z (6 months ago)
- Last Synced: 2026-01-12T18:25:16.491Z (6 months ago)
- Topics: b58, b58uuid, base58, base58-uuid, encoding, lib, library, py, python, short-uuid, uid, url-safe, uuid, uuid-alternative
- Language: Python
- Homepage: https://b58uuid.io
- Size: 17.6 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE
- Security: .github/SECURITY.md
Awesome Lists containing this project
README
# B58UUID for Python
[](https://pypi.org/project/b58uuid/)
[](https://pypi.org/project/b58uuid/)
[](https://opensource.org/licenses/MIT)
[](https://github.com/b58uuid/b58uuid-py/actions/workflows/test.yml)
Base58-encoded UUID library for Python with zero dependencies.
## Why This Library?
- **Compact**: 22 characters instead of 36
- **URL-safe**: No special characters that need escaping
- **Unambiguous**: Uses Bitcoin's Base58 alphabet (excludes 0, O, I, l)
- **Fast**: Optimized encoding/decoding algorithms
- **Safe**: Comprehensive error handling with overflow protection
- **Zero dependencies**: Uses only Python standard library
- **Type hints**: Full type annotation support
- **Python 3.8+**: Compatible with Python 3.8 and higher
## Installation
```bash
pip install b58uuid
```
## Usage
```python
import b58uuid
# Generate a new UUID
b58 = b58uuid.generate()
print(b58) # Output: 3FfGK34vwMvVFDedyb2nkf
# Encode existing UUID
encoded = b58uuid.encode('550e8400-e29b-41d4-a716-446655440000')
print(encoded) # Output: BWBeN28Vb7cMEx7Ym8AUzs
# Decode back to UUID
uuid_str = b58uuid.decode('BWBeN28Vb7cMEx7Ym8AUzs')
print(uuid_str) # Output: 550e8400-e29b-41d4-a716-446655440000
```
## API
### Functions
- `generate() -> str` - Generate a new random UUID and return Base58 encoding
- `encode(uuid_str: str) -> str` - Encode UUID string to Base58
- `decode(b58_str: str) -> str` - Decode Base58 string to UUID
### Exceptions
- `ValueError` - Raised for invalid input or overflow
## Features
- Zero dependencies (uses only Python standard library)
- Always produces exactly 22 characters
- Uses Bitcoin Base58 alphabet (no 0, O, I, l)
- Thread-safe operations
- Type hints support
- Full error handling with overflow protection
## Testing
```bash
# Run tests
python -m pytest tests/ -v
# Run tests with coverage
python -m pytest tests/ --cov=b58uuid --cov-report=html
```
## Development
### Requirements
- Python 3.8 or higher
- pytest (for testing)
### Building from Source
```bash
# Clone the repository
git clone https://github.com/b58uuid/b58uuid-py.git
cd b58uuid-py
# Install in development mode
pip install -e ".[dev]"
# Run tests
python -m pytest tests/ -v
# Build package
python -m build
```
For detailed contribution guidelines, see [CONTRIBUTING.md](.github/CONTRIBUTING.md).
## License
MIT License - see LICENSE file for details.