Skip to main content

Numeral System Converter and Expression Evaluator

A Python module for converting numbers between numeral systems (2-36) and evaluating cross-base mathematical expressions.
Key Features:

  • Integer/fractional conversions
  • Mixed-base calculations (+, -, *, /, ^, parentheses)
  • Minimum base detection
  • Custom error handling

Quick Start

1. Convert Numbers

from BaseKit import rebase

# Integer conversions
print(rebase("1011_2", to_base=10))  # "11_10" (binary -> decimal)
print(rebase("FF_16", to_base=2))  # "11111111_2" (hex -> binary)

# Fractional conversions
print(rebase("3.14_10", to_base=16))  # "3.23D7_16" (rounded to 4 digits)
print(rebase("A.8_16", to_base=10))  # "10.5_10" (hex -> decimal)

# Custom precision
print(rebase("0.1_2", to_base=10, rounding=6))  # "0.5_10"

2. Evaluate Cross-Base Expressions

from BaseKit import eval2dec, rebase

# Mixed-base arithmetic
print(eval2dec("10_2 + A_16"))  # "12_10" (2 + 10 = 12)
print(eval2dec("FF_16 - 10_10"))  # "245_10" (255 - 10 = 245)

# Advanced operations
print(eval2dec("(10_8 + 20_16) / 2_10"))  # "20.0_10" (8 + 32 = 40; 40 / 2 = 20)
print(eval2dec("2_10 ^ 4_10"))  # "16_10" (2вЃґ = 16)

print(rebase("f_30*10010_2", to_base=5))  # "2040_5" 30 + 33 = 270

3. Find Minimum Valid Base

from BaseKit import minBase

print(minBase("Z"))  # 36 (max symbol in base-36)
print(minBase("1A"))  # 11 (symbol 'A' requires base ≥11)

Error Handling

Common Errors and Exceptions

Error Class (Custom) Standard Exception Trigger Example Error Message
Error.DigitInvalidForBase ValueError rebase("G_16") "Invalid digit 'G' for base 16"
Error.BelongingAlphabet ValueError rebase("?@_16") "The symbol ? is not supported..."
Error.BelongingFromBase/ToBase ValueError rebase("3.14_10", to_base=37) "to_base must be in (2:36). to_base=37"
Error.NoBaseGiven SyntaxError rebase("1011") "Missing base specification"
Error.BaseIntError ValueError rebase("10_2", from_base="hex") "Invalid from_base: hex"

Example Tests from tests.py:

# tests.py
from BaseKit import rebase


def test_error_handling(self):
    with self.assertRaises(ValueError):  # Error.DigitInvalidForBase
        rebase("G_16")
    with self.assertRaises(SyntaxError):  # Error.NoBaseGiven
        rebase("1011")
    with self.assertRaises(ValueError):  # Error.BelongingToBase
        rebase("3.14_10", to_base=37)

Testing

Run unit tests to verify functionality:

python -m unittest tests.py -v

Test Coverage:

  • Conversions: Integers, fractions, edge cases (e.g., 0_10 -> 0_2).
  • Expressions: Mixed-base operations, parentheses, error propagation.
  • Errors: Invalid digits, missing bases, out-of-range bases.

Notes

  • Precision: Fractional results are truncated to 10 decimal places.
  • Security: Uses eval() internally. Avoid untrusted input.
  • Alphabet: Default: 0-9, A-Z (case-insensitive). Extend via abc parameter.

Author: Fedor Tyulpin
Version: 1.0

Metadata

Release files for BaseKit 1.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for BaseKit 1.0.2
File Size Uploaded
basekit-1.0.2.tar.gz 6.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for BaseKit 1.0.2
File Interpreter ABI Platform
basekit-1.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 12.6 kB

Release files / basekit-1.0.2.tar.gz

Download URL basekit-1.0.2.tar.gz
Size 6.0 kB
Tags Source
SHA-256 checksum
How to use checksums
bf7fd766a93ecdce97baf938d168716aecb787741f5e71336252a44b95251585
BLAKE2b-256 checksum
How to use checksums
9ef24090aaebb14010f5bb5ab5e0322e5bdff257444fb3f256af98e7d8cb6ab1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.2

Release files / basekit-1.0.2-py3-none-any.whl

Download URL basekit-1.0.2-py3-none-any.whl
Size 6.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
287c2479396f3e5164bdffef787a7f9d52bc9272f9a641eefb93c2c187733ca7
BLAKE2b-256 checksum
How to use checksums
2254232b1ced60899d40f03fbe939f27b2e491f0235a2e833ec5088b1d535911
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.2

Release history Release notifications | RSS feed

This release

1.0.2 This release

2 release files

1.0.1

2 release files

1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page