Super-fast and clean conversions to numbers.
Reason this release was yanked:
Build error resulted in incomplete deployment.
Project description
Super-fast and clean conversions to numbers.
Source Code: https://github.com/SethMMorton/fastnumbers
Downloads: https://pypi.org/project/fastnumbers/
Documentation: https://fastnumbers.readthedocs.io/
fastnumbers is a module with the following three objectives (in order of decreasing importance as to why the module was created):
Provide a set of convenience functions that wrap the above int and float replacements and provides easy, concise, powerful, fast and flexible error handling.
Provide a set of functions that can be used to rapidly identify if an input could be converted to int or float.
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
History
Please visit the changelog on GitHub or in the documentation.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7ef6cf621608e17407b82cad71683a608f0af05f092b165589074b837f7ddc1e |
|
MD5 | 07da131b8c70b587b308f10ebc49030e |
|
BLAKE2b-256 | ec32f7b8570b2016f9813fdfe2e0f69374241008b96f51dcd0b74de075a3ae6f |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | cdb567b9cc3cd4525110e9c9fa7c357762c2967e797738760b967f5e4af86e57 |
|
MD5 | ac325a6e7576956912ac237047f48d02 |
|
BLAKE2b-256 | 5906213c545a9ffb2dd4839ca07a50aeba69364620471b268910065549367e2f |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 879968ccee3116ad1b0f73cfe2bee38732cab0e7750e2e7a05e12b652e0b0c8a |
|
MD5 | f30aadc1751ca5f15a6ed1f096cbc1ce |
|
BLAKE2b-256 | 0ea07ddc1cdc69e78e15f8dc7fa8f2d95c8c0351f585e38d3f036ebd88cb193d |
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
- Download URL: fastnumbers-3.2.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
- Upload date:
- Size: 87.6 kB
- Tags: CPython 3.10, manylinux: glibc 2.12+ x86-64, manylinux: glibc 2.5+ 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
Algorithm | Hash digest | |
---|---|---|
SHA256 | fbffa74d91192d1a24660463f62211f07983b2a0e2ad329f9c6aab5989da7e23 |
|
MD5 | 858275ebd8f5ce3b1781c1b6d4447e49 |
|
BLAKE2b-256 | 6c270e657395dcd46a3e058b81ae3053645db7d94e75bf00084dae093e5be339 |
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
- Download URL: fastnumbers-3.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl
- Upload date:
- Size: 84.9 kB
- Tags: CPython 3.10, manylinux: glibc 2.12+ i686, manylinux: glibc 2.5+ 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
Algorithm | Hash digest | |
---|---|---|
SHA256 | c9d34f99d6471a74ef413345d89215b7f123eb2a64be995f743dd555ef7610a8 |
|
MD5 | e205ead22d567aeda7a3effd26445145 |
|
BLAKE2b-256 | c94fea90968620f9c0299750fa52f7ec68a49fc798baceb94c972b39fad182ab |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 71332274a34f3f147cb19e45c92f5772253c1397dee62fd4996cd732225efc4b |
|
MD5 | ef081ed844b364fc72c7f2aba8adc005 |
|
BLAKE2b-256 | cb158631555300d0e21dd02a2bb607954ac092ad81422c83729c9dd574a51431 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 03495fcb914806f24c4af9b71d2b7759e096c1c88c41e3d249d83c004f8b6716 |
|
MD5 | d8c3c281eea271e910bb1db26b49dc4d |
|
BLAKE2b-256 | 311146cc5af59ff8b5a81ecf9d07f3c2aa6099fe70953f089fc84daeb095a654 |
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
- Download URL: fastnumbers-3.2.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
- Upload date:
- Size: 86.2 kB
- Tags: CPython 3.9, manylinux: glibc 2.12+ x86-64, manylinux: glibc 2.5+ 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
Algorithm | Hash digest | |
---|---|---|
SHA256 | fce69e21ea03f7404da58cd4ca9632fda278b1554973631e5f145ebd83174762 |
|
MD5 | 6d4ed5e1efada89468e18c6d93f6976c |
|
BLAKE2b-256 | 082574ef704247eeca0027e134d9241e49579cf3388c257eef072c7a290c75bd |
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
- Download URL: fastnumbers-3.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl
- Upload date:
- Size: 83.1 kB
- Tags: CPython 3.9, manylinux: glibc 2.12+ i686, manylinux: glibc 2.5+ 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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 38dac6150019d97a2de864f7a407aed1e1eecfc74eada9c8fde2f8d665f1eb6b |
|
MD5 | 273a28755906d19e6926cebe4ff1af57 |
|
BLAKE2b-256 | 1953bccdec0a9af25c15869a08e243223916846f6f51a53208a1e59c435720af |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | b53085f0a32da4ca9e4ab3d3cc54ca6b779571c5927356a8e12fba69455fc26d |
|
MD5 | 3d9bd3135310000b00db46aeeff08211 |
|
BLAKE2b-256 | b6f916f4f7b0e896ebbf28321bf027383c858c2ad1775a9560f78e91c832e465 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 036f2c3180ad1f1b100a13b85c21d4755d250f8b682b47e985e5210ace05848c |
|
MD5 | 83c41d3400c32d9fe5e17db320cfb4e1 |
|
BLAKE2b-256 | 71018e622301fec09e70fc3dfacbb3ec61b9787be7a93b88612c48715c589761 |
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
- Download URL: fastnumbers-3.2.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
- Upload date:
- Size: 84.9 kB
- Tags: CPython 3.8, manylinux: glibc 2.12+ x86-64, manylinux: glibc 2.5+ 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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4cccd2c07fc00e7a1b4e1f0c7c4213e56dba300ac1bf764abf3bab9601bf60d7 |
|
MD5 | a1dcfa7dfbf12130edccc9becc5452f9 |
|
BLAKE2b-256 | ba3d7bfa357c77e5308ea0bf4a9a340eaadad2f3c65e73068f398c155c963637 |
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
- Download URL: fastnumbers-3.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl
- Upload date:
- Size: 82.5 kB
- Tags: CPython 3.8, manylinux: glibc 2.12+ i686, manylinux: glibc 2.5+ 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
Algorithm | Hash digest | |
---|---|---|
SHA256 | f891ce5eb1cd26850e3523216b6e6a2d162b1c40166521dee1adc20dc55b9908 |
|
MD5 | 3a720c86470ca9a5a8003f5a8976d9f7 |
|
BLAKE2b-256 | df250aadca48ee8e4a4298807680955e85d513d15f79ffdfc14317da0227b984 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 394accc7e0e15a0fd0950a180b43f2b9969e1247bf7b4953f49119584f34a433 |
|
MD5 | b06307b03b0ecf1b7a6e654f7b79a5e2 |
|
BLAKE2b-256 | 86834c08b95d3e7069de4c635f3830a623081edff0226cd17f18ac52cc4bd8fd |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6356502a56e55ddddf848ae7acb847c972fa5ad5940640aa3884563a0e45b1da |
|
MD5 | f52ef79b08574ef22b74a4be495e880b |
|
BLAKE2b-256 | 2bf3b9e2fffa90d3f314bc16558cb2394704327d516648e95dfcb28a4ed107df |
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
- Download URL: fastnumbers-3.2.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
- Upload date:
- Size: 82.3 kB
- Tags: CPython 3.7m, manylinux: glibc 2.12+ x86-64, manylinux: glibc 2.5+ 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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1754f5e8d27ca13543397b1226980d7240fff2d20067bd07d42f90c9fd36095d |
|
MD5 | 75440ec3a1955842c60ab31217f2d498 |
|
BLAKE2b-256 | 391cd522c30347956b89c17c3312ba3cac3ecaa1c2fe5ff99e4636055a1c4c0b |
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
- Download URL: fastnumbers-3.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl
- Upload date:
- Size: 81.0 kB
- Tags: CPython 3.7m, manylinux: glibc 2.12+ i686, manylinux: glibc 2.5+ 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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9c845128ab2415a898062951d4639be53481ab0e5f25852d62d55b4ca0fa6976 |
|
MD5 | 5db83da8bfaec00118a3475f2978db80 |
|
BLAKE2b-256 | e3290b0403d3d194ef109471c9e964db768ebea73ba8895c6fd0d90f4e113412 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0433cd3c925dbd17da075484e43cb9d014c6837a3ae2302fdafb3bdde2aa57c6 |
|
MD5 | 8987002b85c07e6bca37621af25c8e84 |
|
BLAKE2b-256 | 9bc9520feeddc4b0e29cdf7d89f8a04b97f1543f285149140ed003f42dfdff62 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | db24b18162c34c87f4cc429ac1df1364c27b53160b9c6ec642e19a61e31620ad |
|
MD5 | ec0a906f7d259b208877c780c7a1b9ac |
|
BLAKE2b-256 | 0897a5e899c26497c1f994c4ee0ea02ecc49d65d7e3d03ac30340060ea980c67 |
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
- Download URL: fastnumbers-3.2.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
- Upload date:
- Size: 84.1 kB
- Tags: CPython 3.6m, manylinux: glibc 2.12+ x86-64, manylinux: glibc 2.5+ 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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 84adf85d4048a2a25f4d5b5f7fadbe0f48f1901f60562f2fedb0278cf1328a89 |
|
MD5 | ee55c1fdde500436d7969d9ef729c857 |
|
BLAKE2b-256 | 86ba4e27e84b6ad74f34eb4c31d721983e1ca37356a6f6b3ebbf7413e69d24a7 |
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
- Download URL: fastnumbers-3.2.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl
- Upload date:
- Size: 81.6 kB
- Tags: CPython 3.6m, manylinux: glibc 2.12+ i686, manylinux: glibc 2.5+ 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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7bd351f25bf665647cb8c8d3a119c86488fa4c0d2b7985fc266c7ee86cbbc983 |
|
MD5 | 5c757e81d86a0758046041afba2c63db |
|
BLAKE2b-256 | 32f3a1b240f2e23511638e7b2e2c8c85e8946d4498443f52f2041c9cb2975fde |