Skip to main content

Super-fast and clean conversions to numbers.

Reason this release was yanked:

Build error resulted in incomplete deployment.

Project description

https://img.shields.io/pypi/v/fastnumbers.svg https://img.shields.io/pypi/pyversions/fastnumbers.svg https://img.shields.io/pypi/l/fastnumbers.svg https://github.com/SethMMorton/fastnumbers/workflows/Tests/badge.svg https://codecov.io/gh/SethMMorton/fastnumbers/branch/master/graph/badge.svg

Super-fast and clean conversions to numbers.

fastnumbers is a module with the following three objectives (in order of decreasing importance as to why the module was created):

  1. Provide a set of convenience functions that wrap the above int and float replacements and provides easy, concise, powerful, fast and flexible error handling.

  2. Provide a set of functions that can be used to rapidly identify if an input could be converted to int or float.

  3. Provide drop-in replacements for the Python built-in int and float that on average are up to 2x faster. These functions should behave identically to the Python built-ins except for a few specific corner-cases as mentioned in the API documentation for those functions.

    • PLEASE read the quick start for these functions to fully understand the caveats before using them.

NOTICE: As of fastnumbers version 3.0.0, only Python >= 3.5 is supported.

Quick Start

There are three broad categories of functions exposed by fastnumbers. The below quick start will demonstrate each of these categories. The quick start is “by example”, and will show a sample interactive session using the fastnumbers API.

Error-Handling Functions

fast_float will be used to demonstrate the functionality of the fast_* functions.

>>> from fastnumbers import fast_float
>>> # Convert string to a float
>>> fast_float('56.07')
56.07
>>> # Integers are converted to floats
>>> fast_float(54)
54.0
>>>
>>> # Unconvertable string returned as-is by default
>>> fast_float('bad input')
'bad input'
>>> # Unconvertable strings can trigger a default value
>>> fast_float('bad input', default=0)
0
>>> # 'default' is also the first optional positional arg
>>> fast_float('bad input', 0)
0
>>>
>>> # One can ask inf or nan to be substituted with another value
>>> fast_float('nan')
nan
>>> fast_float('nan', nan=0.0)
0.0
>>> fast_float(float('nan'), nan=0.0)
0.0
>>> fast_float('56.07', nan=0.0)
56.07
>>>
>>> # The default built-in float behavior can be triggered with
>>> # "raise_on_invalid" set to True.
>>> fast_float('bad input', raise_on_invalid=True) #doctest: +IGNORE_EXCEPTION_DETAIL
Traceback (most recent call last):
  ...
ValueError: invalid literal for float(): bad input
>>>
>>> # A function can be used to return an alternate value for invalid input
>>> fast_float('bad input', on_fail=len)
9
>>> fast_float(54, on_fail=len)
54.0
>>>
>>> # Single unicode characters can be converted.
>>> fast_float('\u2164')  # Roman numeral 5 (V)
5.0
>>> fast_float('\u2466')  # 7 enclosed in a circle
7.0

fast_int behaves the same as fast_float, but for integers.

>>> from fastnumbers import fast_int
>>> fast_int('1234')
1234
>>> fast_int('\u2466')
7

fast_real is like fast_float or fast_int depending on if there is any fractional component of thi return value.

>>> from fastnumbers import fast_real
>>> fast_real('56')
56
>>> fast_real('56.0')
56
>>> fast_real('56.0', coerce=False)
56.0
>>> fast_real('56.07')
56.07
>>> fast_real(56.07)
56.07
>>> fast_real(56.0)
56
>>> fast_real(56.0, coerce=False)
56.0
>>>
>>>

fast_forceint always returns an integer.

>>> from fastnumbers import fast_forceint
>>> fast_forceint('56')
56
>>> fast_forceint('56.0')
56
>>> fast_forceint('56.07')
56
>>> fast_forceint(56.07)
56

About the on_fail option

The on_fail option is a way for you to do anything in the event that the given input cannot be converted to a number. Here are a couple of ideas to get you thinking.

>>> from fastnumbers import fast_float
>>> # Simple case, send the input through some function to generate a number.
>>> fast_float('invalid input', on_fail=lambda x: float(x.count('i')))  # count the 'i's
3.0
>>>
>>>
>>>
>>> # Suppose we know that our input could either be a number, or if not
>>> # then we know we just have to strip off parens to get to the number
>>> # e.g. the input could be '45' or '(45)'. Also, suppose that if it
>>> # still cannot be converted to a number we want to raise an exception.
>>> def strip_parens_and_try_again(x):
...     return fast_float(x.strip('()'), raise_on_invalid=True)
...
>>> fast_float('45', on_fail=strip_parens_and_try_again)
45.0
>>> fast_float('(45)', on_fail=strip_parens_and_try_again)
45.0
>>> fast_float('invalid input', on_fail=strip_parens_and_try_again) #doctest: +IGNORE_EXCEPTION_DETAIL
Traceback (most recent call last):
  ...
ValueError: invalid literal for float(): invalid input
>>>
>>>
>>>
>>> # Suppose that whenever an invalid input is given, it needs to be
>>> # logged and then a default value is returned.
>>> def log_and_default(x, log_method=print, default=0.0):
...     log_method("The input {!r} is not valid!".format(x))
...     return default
...
>>> fast_float('45', on_fail=log_and_default)
45.0
>>> fast_float('invalid input', on_fail=log_and_default)
The input 'invalid input' is not valid!
0.0
>>> fast_float('invalid input', on_fail=lambda x: log_and_default(x, default=float('nan')))
The input 'invalid input' is not valid!
nan

Checking Functions

isfloat will be used to demonstrate the functionality of the is* functions, as well as the query_type function.

>>> from fastnumbers import isfloat
>>> # Check that a string can be converted to a float
>>> isfloat('56')
True
>>> isfloat('56.07')
True
>>> isfloat('56.07 lb')
False
>>>
>>> # Check if a given number is a float
>>> isfloat(56.07)
True
>>> isfloat(56)
False
>>>
>>> # Specify if only strings or only numbers are allowed
>>> isfloat(56.07, str_only=True)
False
>>> isfloat('56.07', num_only=True)
False
>>>
>>> # Customize handling for nan or inf
>>> isfloat('nan')
False
>>> isfloat('nan', allow_nan=True)
True

isint works the same as isfloat, but for integers.

>>> from fastnumbers import isint
>>> isint('56')
True
>>> isint(56)
True
>>> isint('56.0')
False
>>> isint(56.0)
False

isreal is very permissive - any float or integer is accepted.

>>> from fastnumbers import isreal
>>> isreal('56.0')
True
>>> isreal('56')
True
>>> isreal(56.0)
True
>>> isreal(56)
True

isintlike checks if a number is “int-like”, if it has no fractional component.

>>> from fastnumbers import isintlike
>>> isintlike('56.0')
True
>>> isintlike('56.7')
False
>>> isintlike(56.0)
True
>>> isintlike(56.7)
False

The query_type function can be used if you need to determine if a value is one of many types, rather than whether or not it is one specific type.

>>> from fastnumbers import query_type
>>> query_type('56.0')
<class 'float'>
>>> query_type('56')
<class 'int'>
>>> query_type(56.0)
<class 'float'>
>>> query_type(56)
<class 'int'>
>>> query_type(56.0, coerce=True)
<class 'int'>
>>> query_type('56.0', allowed_types=(float, int))
<class 'float'>
>>> query_type('hey')
<class 'str'>
>>> query_type('hey', allowed_types=(float, int))  # returns None

Drop-in Replacement Functions

PLEASE do not take it for granted that these functions will provide you with a speedup - they may not. Every platform, compiler, and data-set is different, and you should perform a timing test on your system with your data to evaluate if you will see a benefit. As you can see from the data linked in the Timing section, the amount of speedup you will get is particularly data-dependent.

NOTE: in the below examples, we use from fastnumbers import int instead of import fastnumbers. This is because calling fastnumbers.int() is a bit slower than just int() because Python has to first find fastnumbers in your namespace, then find int in the fastnumbers namespace, instead of just finding int in your namespace - this will slow down the function call and defeat the purpose of using fastnumbers. If you do not want to actually shadow the built-in int function, you can do from fastnumbers import int as fn_int or something like that.

>>> # Use is identical to the built-in functions
>>> from fastnumbers import float, int
>>> float('10')
10.0
>>> int('10')
10
>>> float('bad input') #doctest: +IGNORE_EXCEPTION_DETAIL
Traceback (most recent call last):
  ...
ValueError: invalid literal for float(): bad input

real is is provided to give a float or int depending on the fractional component of the input.

>>> from fastnumbers import real
>>> real('56.0')
56
>>> real('56.7')
56.7
>>> real('56.0', coerce=False)
56.0

Timing

Just how much faster is fastnumbers than a pure python implementation? Please see the following Jupyter notebooks for timing information on various Python versions.

High-Level Algorithm

CPython goes to great lengths to ensure that your string input is converted to a number correctly (you can prove this to yourself by examining the source code for integer conversions and for float conversions), but this extra effort is only needed for very large integers or for floats with many digits or large exponents. For integers, if the result could fit into a C long then a naive algorithm of < 10 lines of C code is sufficient. For floats, if the number does not require high precision or does not have a large exponent (such as “-123.45e6”) then a short naive algorithm is also possible.

These naive algorithms are quite fast, but the performance improvement comes at the expense of being unsafe (no protection against overflow or round-off errors). fastnumbers uses a heuristic to determine if the input can be safely converted with the much faster naive algorithm. These heuristics are extremely conservative - if there is any chance that the naive result would not give exactly the same result as the built-in functions then it will fall back on CPython’s conversion function. For this reason, fastnumbers is aways at least as fast as CPython’s built-in float and int functions, and oftentimes is significantly faster because most real-world numbers pass the heuristic.

Installation

Use pip!

$ pip install fastnumbers

How to Run Tests

Please note that fastnumbers is NOT set-up to support python setup.py test.

The recommended way to run tests is with tox. Suppose you want to run tests for Python 3.6 - you can run tests by simply executing the following:

$ tox -e py36

tox will create virtual a virtual environment for your tests and install all the needed testing requirements for you.

If you want to run testing on all of Python 3.5, 3.6, 3.7, and 3.8 you can simply execute

$ tox

If you do not wish to use tox, you can install the testing dependencies with the dev-requirements.txt file and then run the tests manually using pytest.

$ pip install -r dev/requirements.txt
$ pytest

Author

Seth M. Morton

History

Please visit the changelog on GitHub or in the documentation.

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

fastnumbers-3.2.0.tar.gz (100.0 kB view details)

Uploaded Source

Built Distributions

fastnumbers-3.2.0-cp310-cp310-musllinux_1_1_x86_64.whl (82.5 kB view details)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

fastnumbers-3.2.0-cp310-cp310-musllinux_1_1_i686.whl (78.4 kB view details)

Uploaded CPython 3.10 musllinux: musl 1.1+ i686

fastnumbers-3.2.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (87.6 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.12+ x86-64 manylinux: glibc 2.5+ x86-64

fastnumbers-3.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl (84.9 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.12+ i686 manylinux: glibc 2.5+ i686

fastnumbers-3.2.0-cp39-cp39-musllinux_1_1_x86_64.whl (81.1 kB view details)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

fastnumbers-3.2.0-cp39-cp39-musllinux_1_1_i686.whl (77.1 kB view details)

Uploaded CPython 3.9 musllinux: musl 1.1+ i686

fastnumbers-3.2.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (86.2 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.12+ x86-64 manylinux: glibc 2.5+ x86-64

fastnumbers-3.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl (83.1 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.12+ i686 manylinux: glibc 2.5+ i686

fastnumbers-3.2.0-cp38-cp38-musllinux_1_1_x86_64.whl (78.5 kB view details)

Uploaded CPython 3.8 musllinux: musl 1.1+ x86-64

fastnumbers-3.2.0-cp38-cp38-musllinux_1_1_i686.whl (74.4 kB view details)

Uploaded CPython 3.8 musllinux: musl 1.1+ i686

fastnumbers-3.2.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (84.9 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.12+ x86-64 manylinux: glibc 2.5+ x86-64

fastnumbers-3.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl (82.5 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.12+ i686 manylinux: glibc 2.5+ i686

fastnumbers-3.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl (77.5 kB view details)

Uploaded CPython 3.7m musllinux: musl 1.1+ x86-64

fastnumbers-3.2.0-cp37-cp37m-musllinux_1_1_i686.whl (74.8 kB view details)

Uploaded CPython 3.7m musllinux: musl 1.1+ i686

fastnumbers-3.2.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (82.3 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.12+ x86-64 manylinux: glibc 2.5+ x86-64

fastnumbers-3.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl (81.0 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.12+ i686 manylinux: glibc 2.5+ i686

fastnumbers-3.2.0-cp36-cp36m-musllinux_1_1_x86_64.whl (77.1 kB view details)

Uploaded CPython 3.6m musllinux: musl 1.1+ x86-64

fastnumbers-3.2.0-cp36-cp36m-musllinux_1_1_i686.whl (73.2 kB view details)

Uploaded CPython 3.6m musllinux: musl 1.1+ i686

fastnumbers-3.2.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (84.1 kB view details)

Uploaded CPython 3.6m manylinux: glibc 2.12+ x86-64 manylinux: glibc 2.5+ x86-64

fastnumbers-3.2.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl (81.6 kB view details)

Uploaded CPython 3.6m manylinux: glibc 2.12+ i686 manylinux: glibc 2.5+ i686

File details

Details for the file fastnumbers-3.2.0.tar.gz.

File metadata

  • Download URL: fastnumbers-3.2.0.tar.gz
  • Upload date:
  • Size: 100.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for fastnumbers-3.2.0.tar.gz
Algorithm Hash digest
SHA256 7ef6cf621608e17407b82cad71683a608f0af05f092b165589074b837f7ddc1e
MD5 07da131b8c70b587b308f10ebc49030e
BLAKE2b-256 ec32f7b8570b2016f9813fdfe2e0f69374241008b96f51dcd0b74de075a3ae6f

See more details on using hashes here.

File details

Details for the file fastnumbers-3.2.0-cp310-cp310-musllinux_1_1_x86_64.whl.

File metadata

  • Download URL: fastnumbers-3.2.0-cp310-cp310-musllinux_1_1_x86_64.whl
  • Upload date:
  • Size: 82.5 kB
  • Tags: CPython 3.10, musllinux: musl 1.1+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for fastnumbers-3.2.0-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 cdb567b9cc3cd4525110e9c9fa7c357762c2967e797738760b967f5e4af86e57
MD5 ac325a6e7576956912ac237047f48d02
BLAKE2b-256 5906213c545a9ffb2dd4839ca07a50aeba69364620471b268910065549367e2f

See more details on using hashes here.

File details

Details for the file fastnumbers-3.2.0-cp310-cp310-musllinux_1_1_i686.whl.

File metadata

  • Download URL: fastnumbers-3.2.0-cp310-cp310-musllinux_1_1_i686.whl
  • Upload date:
  • Size: 78.4 kB
  • Tags: CPython 3.10, musllinux: musl 1.1+ i686
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for fastnumbers-3.2.0-cp310-cp310-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 879968ccee3116ad1b0f73cfe2bee38732cab0e7750e2e7a05e12b652e0b0c8a
MD5 f30aadc1751ca5f15a6ed1f096cbc1ce
BLAKE2b-256 0ea07ddc1cdc69e78e15f8dc7fa8f2d95c8c0351f585e38d3f036ebd88cb193d

See more details on using hashes here.

File details

Details for the file fastnumbers-3.2.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for fastnumbers-3.2.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 fbffa74d91192d1a24660463f62211f07983b2a0e2ad329f9c6aab5989da7e23
MD5 858275ebd8f5ce3b1781c1b6d4447e49
BLAKE2b-256 6c270e657395dcd46a3e058b81ae3053645db7d94e75bf00084dae093e5be339

See more details on using hashes here.

File details

Details for the file fastnumbers-3.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for fastnumbers-3.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 c9d34f99d6471a74ef413345d89215b7f123eb2a64be995f743dd555ef7610a8
MD5 e205ead22d567aeda7a3effd26445145
BLAKE2b-256 c94fea90968620f9c0299750fa52f7ec68a49fc798baceb94c972b39fad182ab

See more details on using hashes here.

File details

Details for the file fastnumbers-3.2.0-cp39-cp39-musllinux_1_1_x86_64.whl.

File metadata

  • Download URL: fastnumbers-3.2.0-cp39-cp39-musllinux_1_1_x86_64.whl
  • Upload date:
  • Size: 81.1 kB
  • Tags: CPython 3.9, musllinux: musl 1.1+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for fastnumbers-3.2.0-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 71332274a34f3f147cb19e45c92f5772253c1397dee62fd4996cd732225efc4b
MD5 ef081ed844b364fc72c7f2aba8adc005
BLAKE2b-256 cb158631555300d0e21dd02a2bb607954ac092ad81422c83729c9dd574a51431

See more details on using hashes here.

File details

Details for the file fastnumbers-3.2.0-cp39-cp39-musllinux_1_1_i686.whl.

File metadata

  • Download URL: fastnumbers-3.2.0-cp39-cp39-musllinux_1_1_i686.whl
  • Upload date:
  • Size: 77.1 kB
  • Tags: CPython 3.9, musllinux: musl 1.1+ i686
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for fastnumbers-3.2.0-cp39-cp39-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 03495fcb914806f24c4af9b71d2b7759e096c1c88c41e3d249d83c004f8b6716
MD5 d8c3c281eea271e910bb1db26b49dc4d
BLAKE2b-256 311146cc5af59ff8b5a81ecf9d07f3c2aa6099fe70953f089fc84daeb095a654

See more details on using hashes here.

File details

Details for the file fastnumbers-3.2.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for fastnumbers-3.2.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 fce69e21ea03f7404da58cd4ca9632fda278b1554973631e5f145ebd83174762
MD5 6d4ed5e1efada89468e18c6d93f6976c
BLAKE2b-256 082574ef704247eeca0027e134d9241e49579cf3388c257eef072c7a290c75bd

See more details on using hashes here.

File details

Details for the file fastnumbers-3.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for fastnumbers-3.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 38dac6150019d97a2de864f7a407aed1e1eecfc74eada9c8fde2f8d665f1eb6b
MD5 273a28755906d19e6926cebe4ff1af57
BLAKE2b-256 1953bccdec0a9af25c15869a08e243223916846f6f51a53208a1e59c435720af

See more details on using hashes here.

File details

Details for the file fastnumbers-3.2.0-cp38-cp38-musllinux_1_1_x86_64.whl.

File metadata

  • Download URL: fastnumbers-3.2.0-cp38-cp38-musllinux_1_1_x86_64.whl
  • Upload date:
  • Size: 78.5 kB
  • Tags: CPython 3.8, musllinux: musl 1.1+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for fastnumbers-3.2.0-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 b53085f0a32da4ca9e4ab3d3cc54ca6b779571c5927356a8e12fba69455fc26d
MD5 3d9bd3135310000b00db46aeeff08211
BLAKE2b-256 b6f916f4f7b0e896ebbf28321bf027383c858c2ad1775a9560f78e91c832e465

See more details on using hashes here.

File details

Details for the file fastnumbers-3.2.0-cp38-cp38-musllinux_1_1_i686.whl.

File metadata

  • Download URL: fastnumbers-3.2.0-cp38-cp38-musllinux_1_1_i686.whl
  • Upload date:
  • Size: 74.4 kB
  • Tags: CPython 3.8, musllinux: musl 1.1+ i686
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for fastnumbers-3.2.0-cp38-cp38-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 036f2c3180ad1f1b100a13b85c21d4755d250f8b682b47e985e5210ace05848c
MD5 83c41d3400c32d9fe5e17db320cfb4e1
BLAKE2b-256 71018e622301fec09e70fc3dfacbb3ec61b9787be7a93b88612c48715c589761

See more details on using hashes here.

File details

Details for the file fastnumbers-3.2.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for fastnumbers-3.2.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 4cccd2c07fc00e7a1b4e1f0c7c4213e56dba300ac1bf764abf3bab9601bf60d7
MD5 a1dcfa7dfbf12130edccc9becc5452f9
BLAKE2b-256 ba3d7bfa357c77e5308ea0bf4a9a340eaadad2f3c65e73068f398c155c963637

See more details on using hashes here.

File details

Details for the file fastnumbers-3.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for fastnumbers-3.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 f891ce5eb1cd26850e3523216b6e6a2d162b1c40166521dee1adc20dc55b9908
MD5 3a720c86470ca9a5a8003f5a8976d9f7
BLAKE2b-256 df250aadca48ee8e4a4298807680955e85d513d15f79ffdfc14317da0227b984

See more details on using hashes here.

File details

Details for the file fastnumbers-3.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl.

File metadata

  • Download URL: fastnumbers-3.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl
  • Upload date:
  • Size: 77.5 kB
  • Tags: CPython 3.7m, musllinux: musl 1.1+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for fastnumbers-3.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 394accc7e0e15a0fd0950a180b43f2b9969e1247bf7b4953f49119584f34a433
MD5 b06307b03b0ecf1b7a6e654f7b79a5e2
BLAKE2b-256 86834c08b95d3e7069de4c635f3830a623081edff0226cd17f18ac52cc4bd8fd

See more details on using hashes here.

File details

Details for the file fastnumbers-3.2.0-cp37-cp37m-musllinux_1_1_i686.whl.

File metadata

  • Download URL: fastnumbers-3.2.0-cp37-cp37m-musllinux_1_1_i686.whl
  • Upload date:
  • Size: 74.8 kB
  • Tags: CPython 3.7m, musllinux: musl 1.1+ i686
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for fastnumbers-3.2.0-cp37-cp37m-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 6356502a56e55ddddf848ae7acb847c972fa5ad5940640aa3884563a0e45b1da
MD5 f52ef79b08574ef22b74a4be495e880b
BLAKE2b-256 2bf3b9e2fffa90d3f314bc16558cb2394704327d516648e95dfcb28a4ed107df

See more details on using hashes here.

File details

Details for the file fastnumbers-3.2.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for fastnumbers-3.2.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 1754f5e8d27ca13543397b1226980d7240fff2d20067bd07d42f90c9fd36095d
MD5 75440ec3a1955842c60ab31217f2d498
BLAKE2b-256 391cd522c30347956b89c17c3312ba3cac3ecaa1c2fe5ff99e4636055a1c4c0b

See more details on using hashes here.

File details

Details for the file fastnumbers-3.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for fastnumbers-3.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 9c845128ab2415a898062951d4639be53481ab0e5f25852d62d55b4ca0fa6976
MD5 5db83da8bfaec00118a3475f2978db80
BLAKE2b-256 e3290b0403d3d194ef109471c9e964db768ebea73ba8895c6fd0d90f4e113412

See more details on using hashes here.

File details

Details for the file fastnumbers-3.2.0-cp36-cp36m-musllinux_1_1_x86_64.whl.

File metadata

  • Download URL: fastnumbers-3.2.0-cp36-cp36m-musllinux_1_1_x86_64.whl
  • Upload date:
  • Size: 77.1 kB
  • Tags: CPython 3.6m, musllinux: musl 1.1+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for fastnumbers-3.2.0-cp36-cp36m-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 0433cd3c925dbd17da075484e43cb9d014c6837a3ae2302fdafb3bdde2aa57c6
MD5 8987002b85c07e6bca37621af25c8e84
BLAKE2b-256 9bc9520feeddc4b0e29cdf7d89f8a04b97f1543f285149140ed003f42dfdff62

See more details on using hashes here.

File details

Details for the file fastnumbers-3.2.0-cp36-cp36m-musllinux_1_1_i686.whl.

File metadata

  • Download URL: fastnumbers-3.2.0-cp36-cp36m-musllinux_1_1_i686.whl
  • Upload date:
  • Size: 73.2 kB
  • Tags: CPython 3.6m, musllinux: musl 1.1+ i686
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for fastnumbers-3.2.0-cp36-cp36m-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 db24b18162c34c87f4cc429ac1df1364c27b53160b9c6ec642e19a61e31620ad
MD5 ec0a906f7d259b208877c780c7a1b9ac
BLAKE2b-256 0897a5e899c26497c1f994c4ee0ea02ecc49d65d7e3d03ac30340060ea980c67

See more details on using hashes here.

File details

Details for the file fastnumbers-3.2.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for fastnumbers-3.2.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 84adf85d4048a2a25f4d5b5f7fadbe0f48f1901f60562f2fedb0278cf1328a89
MD5 ee55c1fdde500436d7969d9ef729c857
BLAKE2b-256 86ba4e27e84b6ad74f34eb4c31d721983e1ca37356a6f6b3ebbf7413e69d24a7

See more details on using hashes here.

File details

Details for the file fastnumbers-3.2.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for fastnumbers-3.2.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 7bd351f25bf665647cb8c8d3a119c86488fa4c0d2b7985fc266c7ee86cbbc983
MD5 5c757e81d86a0758046041afba2c63db
BLAKE2b-256 32f3a1b240f2e23511638e7b2e2c8c85e8946d4498443f52f2041c9cb2975fde

See more details on using hashes here.

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