Skip to main content

No project description provided

Project description

Fast cnum converter

This a faster version of original cnum-converter that uses rust internally.

Benchmarks

Here's some benchmarks that prove: rust usage leads to a higher performance.
We are testing:

  • convert_cnum_to_alpha with str passed in
  • convert_cnum_to_alpha with int passed in
  • convert_cnum_to_numeric with str passed in

Benchmarking time usage per 1_000_000 operations in seconds, so, lower bar value - better.

benchmark image

As you can see - rust beats python on every test.
You can find all benchmarks in benchmarks directory and test it yourself.

Installation

This package can be installed using poetry or through PIP.

Poetry

poetry add fast-cnum-converter

PIP

pip3 install fast-cnum-converter

Usage

Before using converter you need to know that:

  • CNUMA is alphanumeric with base 36 by default(it can be changed via constant BASE_OF_CNUMA_NOTATION if needed)
  • some of symbols is banned from using in CNUMA(see constant BANNED_SYMBOLS)
  • length of CNUMA is always = 6 symbols
  • CNUMA is case-insensitive and by default using in uppercase
  • CNUM should be positive number

To CNUMA

Convert to alphanumeric CNUM:

from fast_cnum_converter import convert_cnum_to_alpha

convert_cnum_to_alpha(10020044)
# 'A36UH8'

convert_cnum_to_alpha(711566042)
# 'LOVEU2'

And as been said earlier some symbols for CNUMA is banned. By default we don't do anything when see that CNUM is converting to CNUMA with this symbols. But you can enable strict mode with option check_banned_symbols that will enable raising error on banned symbols in resulting CNUMA.

from fast_cnum_converter import convert_cnum_to_alpha

convert_cnum_to_alpha(10020044, check_banned_symbols=True)
# 'A36UH8'

convert_cnum_to_alpha(711566042, check_banned_symbols=True)
# BannedSymbolsInAlphaNumericCNUMError

To CNUM

Convert to numeric CNUM:

from fast_cnum_converter import convert_cnum_to_numeric

convert_cnum_to_numeric("ABC123")
# 23698779

convert_cnum_to_numeric("LOVEU2")
# 711566042

As been said earlier some symbols for CNUMA is banned. By default we don't do anything when see that passed CNUMA contains banned symbols. And you can enable strict mode with option check_banned_symbols that will enable raising error on such CNUMA.

from fast_cnum_converter import convert_cnum_to_alpha

convert_cnum_to_numeric("ABC123", check_banned_symbols=True)
# '23698779'

convert_cnum_to_numeric("LOVEU2", check_banned_symbols=True)
# BannedSymbolsInAlphaNumericCNUMError

Errors

All errors of cnum_converter is based on ValueError. Base error is CnumConverterError and others errors for concrete problems derived from it.

Bonus

Heavy tests coverage, overflow cases, good cases, bad cases.

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

fast_cnum_converter-1.0.4.tar.gz (474.2 kB view hashes)

Uploaded Source

Built Distributions

fast_cnum_converter-1.0.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl (1.0 MB view hashes)

Uploaded PyPy manylinux: glibc 2.5+ i686

fast_cnum_converter-1.0.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl (1.0 MB view hashes)

Uploaded PyPy manylinux: glibc 2.5+ i686

fast_cnum_converter-1.0.4-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl (1.0 MB view hashes)

Uploaded PyPy manylinux: glibc 2.5+ i686

fast_cnum_converter-1.0.4-cp312-none-win_amd64.whl (124.6 kB view hashes)

Uploaded CPython 3.12 Windows x86-64

fast_cnum_converter-1.0.4-cp312-none-win32.whl (120.7 kB view hashes)

Uploaded CPython 3.12 Windows x86

fast_cnum_converter-1.0.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

fast_cnum_converter-1.0.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.1 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ s390x

fast_cnum_converter-1.0.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.1 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ppc64le

fast_cnum_converter-1.0.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.0 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARMv7l

fast_cnum_converter-1.0.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (996.0 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

fast_cnum_converter-1.0.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl (1.0 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.5+ i686

fast_cnum_converter-1.0.4-cp312-cp312-macosx_11_0_arm64.whl (237.0 kB view hashes)

Uploaded CPython 3.12 macOS 11.0+ ARM64

fast_cnum_converter-1.0.4-cp312-cp312-macosx_10_12_x86_64.whl (240.2 kB view hashes)

Uploaded CPython 3.12 macOS 10.12+ x86-64

fast_cnum_converter-1.0.4-cp311-none-win_amd64.whl (124.1 kB view hashes)

Uploaded CPython 3.11 Windows x86-64

fast_cnum_converter-1.0.4-cp311-none-win32.whl (120.9 kB view hashes)

Uploaded CPython 3.11 Windows x86

fast_cnum_converter-1.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

fast_cnum_converter-1.0.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.1 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ s390x

fast_cnum_converter-1.0.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.1 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ppc64le

fast_cnum_converter-1.0.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.0 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARMv7l

fast_cnum_converter-1.0.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (996.0 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

fast_cnum_converter-1.0.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl (1.0 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.5+ i686

fast_cnum_converter-1.0.4-cp311-cp311-macosx_11_0_arm64.whl (237.3 kB view hashes)

Uploaded CPython 3.11 macOS 11.0+ ARM64

fast_cnum_converter-1.0.4-cp311-cp311-macosx_10_12_x86_64.whl (240.3 kB view hashes)

Uploaded CPython 3.11 macOS 10.12+ x86-64

fast_cnum_converter-1.0.4-cp310-none-win_amd64.whl (124.1 kB view hashes)

Uploaded CPython 3.10 Windows x86-64

fast_cnum_converter-1.0.4-cp310-none-win32.whl (120.9 kB view hashes)

Uploaded CPython 3.10 Windows x86

fast_cnum_converter-1.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

fast_cnum_converter-1.0.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.1 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ s390x

fast_cnum_converter-1.0.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.1 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ppc64le

fast_cnum_converter-1.0.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.0 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARMv7l

fast_cnum_converter-1.0.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (996.0 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

fast_cnum_converter-1.0.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl (1.0 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.5+ i686

fast_cnum_converter-1.0.4-cp310-cp310-macosx_11_0_arm64.whl (237.3 kB view hashes)

Uploaded CPython 3.10 macOS 11.0+ ARM64

fast_cnum_converter-1.0.4-cp310-cp310-macosx_10_12_x86_64.whl (240.3 kB view hashes)

Uploaded CPython 3.10 macOS 10.12+ x86-64

fast_cnum_converter-1.0.4-cp39-none-win_amd64.whl (124.1 kB view hashes)

Uploaded CPython 3.9 Windows x86-64

fast_cnum_converter-1.0.4-cp39-none-win32.whl (120.8 kB view hashes)

Uploaded CPython 3.9 Windows x86

fast_cnum_converter-1.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

fast_cnum_converter-1.0.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.1 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ s390x

fast_cnum_converter-1.0.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.1 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ppc64le

fast_cnum_converter-1.0.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.0 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARMv7l

fast_cnum_converter-1.0.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (995.7 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

fast_cnum_converter-1.0.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl (1.0 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.5+ i686

fast_cnum_converter-1.0.4-cp38-none-win_amd64.whl (123.9 kB view hashes)

Uploaded CPython 3.8 Windows x86-64

fast_cnum_converter-1.0.4-cp38-none-win32.whl (120.6 kB view hashes)

Uploaded CPython 3.8 Windows x86

fast_cnum_converter-1.0.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

fast_cnum_converter-1.0.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.1 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ s390x

fast_cnum_converter-1.0.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.1 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ppc64le

fast_cnum_converter-1.0.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.0 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARMv7l

fast_cnum_converter-1.0.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (995.7 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

fast_cnum_converter-1.0.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl (1.0 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.5+ i686

Supported by

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