High-performance, versatile implementation of the universal 'sign' function for Python
Project description
csignum-fast
High-performance, versatile implementation of the universal 'sign' function for Python
Released on February 24, 2026 ⊙ Gold Edition+
Version 1.2.5: Fixed dead link in docs for v1.2.3.
Version 1.2.3: Preview of two new options from the upcoming version v1.3.1.
codeshiftas the second positional argument;- the simplified
fastsignthat is up to 1.5 times faster thansignbut has no additional options.
Important Note on API Changes
Starting from v1.2.3, the codeshift parameter is preferred as a second positional argument. Using codeshift= as a keyword will trigger a DeprecationWarning and is scheduled for removal in August 2026. This change improves performance and aligns with the upcoming v1.3.1 architecture.
Notes on fastsign
Since v1.2.3, the fastsign(x) function is provided for scenarios where performance is critical.
-
Performance:
fastsign(x)provides up to 50% performance boost by simplifying type checks and focusing on core numeric types. -
Implementation: It is a straightforward C++ port of the
fastsign.pyprototype. While the Python version uses 4 lines of logic and 17 lines of exception handling, the C++ version is optimized for even tighter execution loops. -
Implicit Conversion: To process unusual cases,
fastsignrelies on implicitfloat(x)conversion. If an incompatible type is passed (likeNoneor a list), you may see a genericTypeError: must be real number. This is expected behavior. -
Strict vs Fast:
-
sign(x)is a strict analyzer. It performs thorough type checking and is recommended for “wild” data where objects might have incomplete numeric implementations. -
fastsign(x)is an optimized calculator. It is ideal for large arrays of standard numbers. -
Validation: The reliability of
fastsignis verified by 53 equivalence tests, ensuring it matchessign(x)results in 52 cases. The equivalence is checked for all standard Python numeric types, includingint,float,Fraction,Decimal, andsympynumbers. The single exclusion is a specific edge case: a custom type that lacks comparisons but supports conversion tofloat.
-
Key Features
- Uniform Results: Always returns only
-1,0, or1as anintfor valid numeric comparisons. - Correct Edge Case Handling:
sign(+0.0)andsign(-0.0)return0.sign(inf)returns1,sign(-inf)returns-1.- For any NaN (float NaN, Decimal NaN, etc.), it returns
math.nan(float).
- Comprehensive Duck Typing: Delegates comparisons to the argument's class. Works seamlessly with:
- Built-in
int(including arbitrary-precision),bool, andfloat. fractions.Fractionanddecimal.Decimal.- Any existing and future objects that support rich comparisons with numbers.
- Built-in
- Informative Error Handling for Easy Debugging: Provides clear, descriptive
TypeErrormessages when passed non-numeric, non-scalar, or incomparable arguments. - ⚡ High Performance: Branch-optimized
C++20core;METH_FASTCALLargument scan; static module-level constants. The speed is near maximum for aC++extension for Python: since v1.0.0 all possibilities to increase performance have been systematically searched and applied. - ✅ Thoroughly Tested: Tested on 263 cases including different types, edge cases, new custom class, keyword and inappropriate arguments. Also tested: memory leaks, and benchmarking against older versions.
- ✨ Pre-processing Engine: Use the
preprocesskeyword argument to transform input before calculation or trigger an Early Exit (recursion permitted). - 🛡️ Exception safety: The
if_exckeyword argument allows to define a fallback value (likeNone,math.nan, or-2) instead of crashing on invalid types. - ✨ 5-way uniform result: Use the
codeshiftargument to encode all 5 possiblesignexits (TypeError, -1, 0, 1,NaN) by subsequent integers for switching or indexing.
Installation
pip install csignum-fast
Standard Usage
sign
from signum import sign # Obligatory for all examples
print(sign(-10**100)) # -1
print(sign(3.14)) # 1
print(sign(float('-nan'))) # math.nan
from decimal import Decimal
print(sign(Decimal("0.0"))) # 0
fastsign
from signum import fastsign
print(fastsign(-10**100)) # -1
print(fastsign(3.14)) # 1
print(fastsign(float('-nan'))) # math.nan
from decimal import Decimal
print(sign(Decimal("0.0"))) # 0
The following advanced features are not available in fastsign.
Advanced Usage (New features since v1.1.0)
☢️ Attention: Contract Programming!
For Performance reasons, keyword argument values are not checked by the sign function. Your responsibility is:
- To pass a
callableforpreprocess(accepts one argument, returnsNoneor atuple). - To pass a
tupleforif_exc. - To pass an
intfor positional or keywordcodeshift. - To guarantee that all calculations implied by these arguments do not result in additional exceptions or crashes.
Passing incorrect values to these parameters may result in unpredictable behavior or segmentation faults.
⚡ Custom Pre-processing with preprocess
With preprocess keyword argument, you can pass a callable to transform the input. (Default: preprocess=None without preprocessing).
The callable will be called with the positional argument of sign. It must support a special return protocol:
- Return
None:signproceed with usual calculation. - Return
(value,):signproceed with calculation usingvalueas an argument. Why atuple? Use(None,)to returnNoneas avalue(usually raisesTypeError). - Return
(any, result): Early Exit. Immediately returnresultas the final answer ofsign;anyis ignored.
from signum import sign # Obligatory for all examples
# Convert str to float; uses lambda as callable
sign('5.0', preprocess=lambda a: (float(a),)) # Returns 1 instead of `TypeError` exception
# Treat small number as zero through argument replacement only
EPS = 1e-9
sign(-.187e-17, preprocess=lambda a: (0 if abs(a) < EPS else a,)) # Returns 0 (instead of -1)
# Treat small number as zero through argument or result replacement; uses variable as callable
ppf1 = lambda x: (x, 0) if abs(x) < EPS else (x,)
sign(-.187e-17, preprocess=ppf1) # Returns 0 (instead of -1)
# Extract the first number from string, replacing only string argument; supplies function as callable
import re
numeric_finder = re.compile(r"[-+]?(?:\d+\.\d*|\.\d+|\d+)(?:[eE][-+]?\d+)?")
def n_extract(s):
if isinstance(s, str):
match = numeric_finder.search(s)
return (float(match.group()),) if match else None
return None
sign("☠️15 men on the dead man's chest☠️", preprocess=n_extract) # Returns sign(15) == 1
# Do you want sign(complex) instead of `TypeError` exception?
def c_prep(z):
if z == 0 or not isinstance(z, complex): return None
# complex z != 0
return (0, z/abs(z))
sign(-1+1j, preprocess=c_prep) # Returns (-0.7071067811865475+0.7071067811865475j)
# numpy flavor: float result for float or Decimal argument; uses recursive call of sign
from decimal import Decimal
ppf2 = lambda a: (a, float(sign(a))) if isinstance(a, (float, Decimal)) else None
sign(-5.0, preprocess=ppf2) # Returns -1.0 instead of -1
🛡️ Exception Safety with if_exc
With this keyword, you can avoid try-except blocks. If sign() encounters an incompatible type, it will return your fallback value instead of raising a TypeError. if_exc should be a tuple that permits you to pass None as the fallback value through if_exc=(None,). (Default if_exc=None is totally different).
from signum import sign # Obligatory for all examples
sign("not a number", if_exc=(-2,)) # Returns -2 instead of `TypeError` exception
You can use two keyword arguments at once
With preprocess, you replace arguments (or even results) in specific cases, while if_exc prevents exceptions for all that remains.
Comfortable 5-way processing with codeshift argument
When innocent people lived in the heavenly world of pure mathematics, the sign function was ternary. The results were -1, 0, +1.
In the meantime, people entered the real world and started programming. In the real world, there is the IEEE 754 standard, which describes the tricky number NaN, that is, ‘Not a Number’. Any function of NaN, according to the rules of good taste, should return NaN.
In the real world, programmers make mistakes. Worse, completely inappropriate data can be caught in endless streams of those. Then the function — alas — stops calculating with an error message.
In the real world of confusing standards and distorted data, our divine ternary sign function has become quinary (5-way).
You cannot process the five possible results of sign uniformly.
To catch an error, you need to write an indecently multi-layered construction try: ... sign(...) ... except TypeError as e: ....
To catch NaN, you need to write if isnan(sign(...)):.
Only the usual results -1, 0, 1 do not cause any trouble: a cascade of if ... elif ... else with checks for ==, or match ... case ... solve the problem.
The second positional argument codeshift converts sign into a uniform 5-way switch. All 5 possible sign results are encoded as integers: TypeError and any other exception becomes -2; -1, 0, 1 remain unchanged; NaN is encoded by 2. The value of the codeshift argument, which must be an integer, is added to this code, and the resulting number is returned as the result. (Default is None: usual processing).
In previous version, codeshift was a keyword argument. This is deprecated and will be removed in August 2026.
The easiest way to continue is to use the match ... case ... operator. You can also use the result as an index.
Everything aforementioned is summarized in the table:
Quinary way of signum.sign() through codeshift
| Argument | Std result | sign(x, 0) |
sign(x, 2) |
|---|---|---|---|
| Invalid | TypeError |
-2 | 0 |
| Negative | -1 | -1 | 1 |
| Zero | 0 | 0 | 2 |
| Positive | 1 | 1 | 3 |
| NaN | math.nan | 2 | 4 |
Code Patterns: One Ring Switch to Rule Them All
# The golden match
from signum import sign # Obligatory for all examples
match sign((d := data_input), 2):
case 0: handle_error(d)
case 1: handle_negative(d)
case 2: handle_zero(d)
case 3: handle_positive(d)
case 4: handle_nan(d)
# Indexing pattern
function_list = [handle_error, handle_negative, handle_zero, handle_positive, handle_nan]
function_list[sign((d := data_input), 2)](d)
Interaction with other arguments
If there is the if_exc argument, it takes precedence over codeshift: instead of an exception, the if_exc value is returned unchanged. codeshift is applied in the remaining four cases (the results -1, 0, 1, and NaN).
The interaction between preprocess and codeshift is similar. If preprocess returns None or a tuple with one element (x,), then everything goes as usual: codeshift is not about the argument, but about the result. If preprocess returns a tuple with two elements (x, y), it takes precedence over codeshift, and unchanged y is returned as the result.
The general principle is “an explicitly specified special case overrides a more general option”. if_exc is only applicable to exceptions, while codeshift is applicable to all results in general, so codeshift has a lower priority. The same applies to preprocess returning a tuple of length 2: it defines a single specific outcome, which takes precedence over what intercepts and shifts all results and even “no-results”.
Why Gold Edition? (v1.2.2)
The Quinary Revolution
- New
codeshiftArgument: The headliner of v1.2.0+. It enables effortless 5-way logic (TypeError, -1, 0, 1,NaN) without extra Python-level overhead.
Evolution of Speed (15.9% faster than v1.1.5, 7.1% faster than v1.0.2)
- New in v1.2.2: CPython FastCall. Migration to
METH_FASTCALL. This eliminated the overhead of using temporary tuple and dictionary for argument parsing. - New in v1.2.2: Static Object Caching. The comparison base (Python
int(0)) and all keyword names are now static C-objects, pre-allocated at module load time. - Since v1.1.0: Branchless Logic Remastered. The optimized cascade of ternary switches replaced the bulky 27-way switch.
- Since v1.0.0: Branchless Logic. Our state index allows the CPU to execute core logic in a linear pipeline without conditional branching even when handling edge cases and type errors.
📊 Performance & Quality Assurance
Benchmark Results
Gold Edition v1.2.2 delivers a 15.9% performance boost over v1.1.5 and is 7.1% faster than the original v1.0.2, despite the significantly expanded feature set. Detailed metrics are available in the “Benchmarking” section in README for tests.
Note: Benchmarking scripts require psutil (for priority management) and sympy (for sympy numeric types and NaN validation).
Reliability
- Memory Safety: Verified with rigorous stress test (0 bytes leaked over 9M iterations).
- Expanded Test Coverage: 210 validation cases (vs 57 for v1.0.2 and 94 for v1.1.0+), plus 53 cases testing equivalence of
signandfastsign(total 263 cases). - Strong design principles: See the PRINCIPLES file for details.
License
This project is licensed under the MIT License. See the LICENSE file for details.
Author
Alexandru Colesnicov: GitHub Profile
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file csignum_fast-1.2.5.tar.gz.
File metadata
- Download URL: csignum_fast-1.2.5.tar.gz
- Upload date:
- Size: 32.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
854c2149921f2be133c134e4a5e0e9318f5f1644ba782c27a6efa325c7b6b344
|
|
| MD5 |
4aff0699975bd4c9bf29fdc192759a20
|
|
| BLAKE2b-256 |
059950401dd4cfdbc3da728ad9b1c5fdaea1f90c1d9e74e2d1e3b19ca5a00405
|
File details
Details for the file csignum_fast-1.2.5-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: csignum_fast-1.2.5-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 18.4 kB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1beb6cb8dd062e01f32050f430a429c52cd03870cb17f57e12131427a9fde368
|
|
| MD5 |
74abaacbd48c61735f41e7c1c8a37c2f
|
|
| BLAKE2b-256 |
187a5fd2b1412be70c3393c03ad14c374f0d6b2eb6e5d306096ee8d4745050d6
|
File details
Details for the file csignum_fast-1.2.5-cp313-cp313-win32.whl.
File metadata
- Download URL: csignum_fast-1.2.5-cp313-cp313-win32.whl
- Upload date:
- Size: 17.5 kB
- Tags: CPython 3.13, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3ffc626f18bea4aa4ab3dc956709451b42d76f4f2b276365511a87a1756fd820
|
|
| MD5 |
c0d0951ce3fcf8ba425c0bc2c97b8ba8
|
|
| BLAKE2b-256 |
091b305f50f8ac29b850f6b8a3e5df7b05bc89e88ef4aef1de15a3463e81f7bc
|
File details
Details for the file csignum_fast-1.2.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: csignum_fast-1.2.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 102.7 kB
- Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e4a92e223ea1afea44768fd855a9664f11bc96512dae82f28e8b72b175a96196
|
|
| MD5 |
44a9f899eb3bba61c35992c789528ef9
|
|
| BLAKE2b-256 |
0a8badfebfa40916d12c91b9cfdcfd30355d0d26d29de7a55696623a649e0567
|
File details
Details for the file csignum_fast-1.2.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.
File metadata
- Download URL: csignum_fast-1.2.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
- Upload date:
- Size: 109.8 kB
- Tags: CPython 3.13, manylinux: glibc 2.17+ i686, manylinux: glibc 2.5+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7955cb0880645f3a1aa5af70d24434307dedaea36f1b5ba11c4aa4aab1e87541
|
|
| MD5 |
5a74219590d9e7724fc62bdf7db47d2e
|
|
| BLAKE2b-256 |
142ac58e7604bfad6971c4bd2fb1328375b49ac4cefdbc1f4e1a3ae331c3e94c
|
File details
Details for the file csignum_fast-1.2.5-cp313-cp313-macosx_11_0_arm64.whl.
File metadata
- Download URL: csignum_fast-1.2.5-cp313-cp313-macosx_11_0_arm64.whl
- Upload date:
- Size: 15.1 kB
- Tags: CPython 3.13, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5a0088de6b95efe20d272f16a9db4cd24b712d0fd848e23834415607880b9e24
|
|
| MD5 |
4ccaa4635b747b87c2e63d70e20c105d
|
|
| BLAKE2b-256 |
66f424ec1a8234676ed3849d08d6b28b7a46ffe4b5c03a72c852579ec893ffbe
|
File details
Details for the file csignum_fast-1.2.5-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: csignum_fast-1.2.5-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 18.4 kB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0eb3f2765dc8d25414934c20fd1b0eec2e1180c2223acd20998913b349c00273
|
|
| MD5 |
0f4eeb545c5b23380565eabadcb0c82c
|
|
| BLAKE2b-256 |
2399140cb26c134898fb217a9321de7d9c8b62a9b7bba27efaa8c6a923ac2cfe
|
File details
Details for the file csignum_fast-1.2.5-cp312-cp312-win32.whl.
File metadata
- Download URL: csignum_fast-1.2.5-cp312-cp312-win32.whl
- Upload date:
- Size: 17.5 kB
- Tags: CPython 3.12, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
514892d1faf5ddf460a3c4887763acd29cb3d5fce4b77973bca5e949a3032380
|
|
| MD5 |
763135b7ab7ab3b23528e499c810e197
|
|
| BLAKE2b-256 |
08af6f7c404c70412fb59ac80a106b9955e9c1166b7dc4be4d2e6ec7f3799533
|
File details
Details for the file csignum_fast-1.2.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: csignum_fast-1.2.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 102.6 kB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a37b681dd81ae4309cb7197e6cacca3896aff12f2e0b67f6bf31c4d44aa7cc6b
|
|
| MD5 |
b34477b16f261adfd64fefcf95bea469
|
|
| BLAKE2b-256 |
35435e63a574e7b8627e03778236b2111df47daa70279fe044641233c4b29fdc
|
File details
Details for the file csignum_fast-1.2.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.
File metadata
- Download URL: csignum_fast-1.2.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
- Upload date:
- Size: 109.8 kB
- Tags: CPython 3.12, manylinux: glibc 2.17+ i686, manylinux: glibc 2.5+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
29b8bc0894b549d572bc7dc4dc1f86396a34f1d4cffda8ef161d360ef2e0d77f
|
|
| MD5 |
ef00cde3e5bfa272eaf9e11571df5bdf
|
|
| BLAKE2b-256 |
0d28e68e338e7e56b6411eca8648279ac1d6872d3c3ac49357228d3a60624b9a
|
File details
Details for the file csignum_fast-1.2.5-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: csignum_fast-1.2.5-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 15.1 kB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
916859d6d1d2803f6e7df5523790f1f6dd05f9d3394b5ec288a62699581b4052
|
|
| MD5 |
8f4cb4891dc30b32beb602a930a81e0c
|
|
| BLAKE2b-256 |
a8ceda6e459dc4693cc3d07fe75e6f7b2f0a336acee355580d4af726fceea26f
|
File details
Details for the file csignum_fast-1.2.5-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: csignum_fast-1.2.5-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 18.4 kB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fe189c78532332de02dd3f3cc587754a41a22f700f1348f7eb1f680c9112c845
|
|
| MD5 |
e64c229cbf9f03ab59c5e9ac0ffa2607
|
|
| BLAKE2b-256 |
a95edeb2b4af2779ec1d0a25c97e3728493bc803e807d0d775592ff6c0e04046
|
File details
Details for the file csignum_fast-1.2.5-cp311-cp311-win32.whl.
File metadata
- Download URL: csignum_fast-1.2.5-cp311-cp311-win32.whl
- Upload date:
- Size: 17.4 kB
- Tags: CPython 3.11, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
090c1c326f8029ecbb055a0fda360ef47323d713bcd0345e33a0063b1ed22cd2
|
|
| MD5 |
74356ff32367d29d137d449b576790d8
|
|
| BLAKE2b-256 |
8af55386a0d15c575cce949608f7da7ece8f6ee44f20d32275d09c0c6361b510
|
File details
Details for the file csignum_fast-1.2.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: csignum_fast-1.2.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 102.5 kB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f99369f02838767b1bb9cfc3ef0fd6faee4ab55cbc3ff779a7ff89e6e4a1f2b4
|
|
| MD5 |
178c7939537656ca660a774ec957957b
|
|
| BLAKE2b-256 |
3d3c791c5a9f6ecc9ce312b3939ebe27fcb83cb5fbf431e3a3d0755361646fe7
|
File details
Details for the file csignum_fast-1.2.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.
File metadata
- Download URL: csignum_fast-1.2.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
- Upload date:
- Size: 109.4 kB
- Tags: CPython 3.11, manylinux: glibc 2.17+ i686, manylinux: glibc 2.5+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aaf30127b50925bc30597cdce472d9c92ac3d8f9ad0651fe5a5db15530bc3e71
|
|
| MD5 |
4e7b3727c46c076af802e78cd970fba7
|
|
| BLAKE2b-256 |
1dbc8b203ff7944a2a08018d31e42486aae59178d08d08dbbeaf6d5d27aaa90f
|
File details
Details for the file csignum_fast-1.2.5-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: csignum_fast-1.2.5-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 15.0 kB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c134279af98336cfcaeca58fa26318dc10a1b888d12f1ce6920b469dbc3b96ad
|
|
| MD5 |
3f600b5b57ba94b7bdac3e84c806449a
|
|
| BLAKE2b-256 |
7d1d1d856ece69a1d995bddb6d92ca25e630c114e14579e8319d9754a66f90b6
|
File details
Details for the file csignum_fast-1.2.5-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: csignum_fast-1.2.5-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 18.4 kB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b06d217a2db8e43ec42d24e2651b26a93faa10bc85579056cc72273d20ce1e11
|
|
| MD5 |
8998b361b0b136cd18a9a039252130fe
|
|
| BLAKE2b-256 |
6935079d3a2aa6e07b8115e5f38b841948bee788e99760dd6e7c61dc170ede23
|
File details
Details for the file csignum_fast-1.2.5-cp310-cp310-win32.whl.
File metadata
- Download URL: csignum_fast-1.2.5-cp310-cp310-win32.whl
- Upload date:
- Size: 17.4 kB
- Tags: CPython 3.10, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5442adf56427f217dfffb306a7d670232b9c1aada382874699088e36a79953d3
|
|
| MD5 |
1dbb3dbac1e88633906725800e63b2cb
|
|
| BLAKE2b-256 |
636578db0c9b2b73cb632e9c573d82f09a36cea2adf36d8012925ac6bdfa7925
|
File details
Details for the file csignum_fast-1.2.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: csignum_fast-1.2.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 102.4 kB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7f768938d96230b0fcf7b766f5bd23e325b46774611eec0cf6336dad608c79a4
|
|
| MD5 |
2a719f4904e2bdbf0e94c7202b2bc790
|
|
| BLAKE2b-256 |
3115fbb38614902f35d307913bf2e8bede0387771569d915b83d041e83b98592
|
File details
Details for the file csignum_fast-1.2.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.
File metadata
- Download URL: csignum_fast-1.2.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
- Upload date:
- Size: 109.4 kB
- Tags: CPython 3.10, manylinux: glibc 2.17+ i686, manylinux: glibc 2.5+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
853ef2f3dba5afe101db4a590704d883c1c699dd7cc14f4e258fc837cd8148a4
|
|
| MD5 |
398413bfd0ae8eb9e5fb03aa3607431d
|
|
| BLAKE2b-256 |
e4229843e3008590842cbfad9158fa7fdf1f773627cfd97fadf7f108aae5bb7c
|
File details
Details for the file csignum_fast-1.2.5-cp310-cp310-macosx_11_0_arm64.whl.
File metadata
- Download URL: csignum_fast-1.2.5-cp310-cp310-macosx_11_0_arm64.whl
- Upload date:
- Size: 15.0 kB
- Tags: CPython 3.10, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
639a31c119893f13c1557c0c834e7bc8d539a8b124854281cb02e3c40e8fc54e
|
|
| MD5 |
6fce845dfe211eaf9b3133cae0282175
|
|
| BLAKE2b-256 |
6b65c27be8023a953dfbffb4ba2eb6b92252746e0c09d527c1a74d978cde7c2d
|
File details
Details for the file csignum_fast-1.2.5-cp39-cp39-win_amd64.whl.
File metadata
- Download URL: csignum_fast-1.2.5-cp39-cp39-win_amd64.whl
- Upload date:
- Size: 18.4 kB
- Tags: CPython 3.9, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
962def53d8bd5ebf587d71001ca59a4c2af39e5e7f6afe6ee66a07e69b34189f
|
|
| MD5 |
cdb61e14aa387890f07844c2a1a17fa1
|
|
| BLAKE2b-256 |
46a66341b1de9340360c02e6854345754251905263c2aa9670d23f7eebe7ea04
|
File details
Details for the file csignum_fast-1.2.5-cp39-cp39-win32.whl.
File metadata
- Download URL: csignum_fast-1.2.5-cp39-cp39-win32.whl
- Upload date:
- Size: 17.4 kB
- Tags: CPython 3.9, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
19a9d8cfd628890ca0fd6e1936a0fafdf48b77ad308e3ece0b1c5b30612e5af3
|
|
| MD5 |
2a4fbb69972db65f1c8dd514f30c17bb
|
|
| BLAKE2b-256 |
9f0cb8c428fbf3dfd848f30f52bedb6390484dd075e031d92168c860ae2a2544
|
File details
Details for the file csignum_fast-1.2.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: csignum_fast-1.2.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 102.4 kB
- Tags: CPython 3.9, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6bef1921941ef7dc24a137b0a7806150b28dc70640f203c4b71d78c9b85f8bc1
|
|
| MD5 |
4df27491b95805ebd45d7d50f959bc83
|
|
| BLAKE2b-256 |
e9bd98387a5d4eb911c195ffe6dc1ccafc225b4c4d5f0d86185af9d861e51085
|
File details
Details for the file csignum_fast-1.2.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.
File metadata
- Download URL: csignum_fast-1.2.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
- Upload date:
- Size: 109.4 kB
- Tags: CPython 3.9, manylinux: glibc 2.17+ i686, manylinux: glibc 2.5+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
06a1a3a34291da17559be425ad9298ada3b50b7840c55687ef3b75bef20b2b77
|
|
| MD5 |
5a1bb12c7e5682448deda40229f2e7d9
|
|
| BLAKE2b-256 |
ea317693dbd75954698428d802c301bf1a992274bf10034b365ffc65163f2acc
|
File details
Details for the file csignum_fast-1.2.5-cp39-cp39-macosx_11_0_arm64.whl.
File metadata
- Download URL: csignum_fast-1.2.5-cp39-cp39-macosx_11_0_arm64.whl
- Upload date:
- Size: 15.0 kB
- Tags: CPython 3.9, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8d0a5bfe55a7dca1f76a84cdb9f91607ebfc3f03fbb0eb78e5197a3ab0490e93
|
|
| MD5 |
0dc787d9a485d0b0a2b4db270697a033
|
|
| BLAKE2b-256 |
0f45f35ac374a81b7168d08a73a3947b4c8939ec2c1651f1307186ccb7010180
|
File details
Details for the file csignum_fast-1.2.5-cp38-cp38-win_amd64.whl.
File metadata
- Download URL: csignum_fast-1.2.5-cp38-cp38-win_amd64.whl
- Upload date:
- Size: 18.3 kB
- Tags: CPython 3.8, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
34a5eab850f4f48ceab684c4f30acb5c66bb31998b5e8d61d585612424571827
|
|
| MD5 |
ccf9d9c7871e13fd70bea4a72509f6a2
|
|
| BLAKE2b-256 |
fe46b484cbcb1e71e6118cedb801a740092b0d4d3e3fc09d354096c866b74edb
|
File details
Details for the file csignum_fast-1.2.5-cp38-cp38-win32.whl.
File metadata
- Download URL: csignum_fast-1.2.5-cp38-cp38-win32.whl
- Upload date:
- Size: 17.4 kB
- Tags: CPython 3.8, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
26b3f4df347b987e023b904613719ff125462ced326d027832b52562dcc54001
|
|
| MD5 |
9a09e8a57f9a4f516ed8d35075f87e6c
|
|
| BLAKE2b-256 |
ce9b245f35b6ae442a47ad3607b508fee65d5e422d787a25ce803e9acfe66467
|
File details
Details for the file csignum_fast-1.2.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: csignum_fast-1.2.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 102.2 kB
- Tags: CPython 3.8, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e25744e3de8e1a9d2f95125470ef115ac5a16afc6699ff5d789631b2d8f53795
|
|
| MD5 |
93a5e33c380a06948abbcdff6a31a91f
|
|
| BLAKE2b-256 |
f2a6ae9687e5e4c9035d8a7ae7fa4015f22971e2f9d69ea962e69f8a2b762af2
|
File details
Details for the file csignum_fast-1.2.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.
File metadata
- Download URL: csignum_fast-1.2.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
- Upload date:
- Size: 109.2 kB
- Tags: CPython 3.8, manylinux: glibc 2.17+ i686, manylinux: glibc 2.5+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3098d8606a6fa5c9e08f453400f2e4c7913c289949742531516e50e4e076b0ce
|
|
| MD5 |
9159ea7e36e40d5d6f66b0d8e7f880b8
|
|
| BLAKE2b-256 |
48efac15717dccb2574a872bb913b391b94e9ee6bf6d396b43c2b54a0b535d9d
|
File details
Details for the file csignum_fast-1.2.5-cp38-cp38-macosx_11_0_arm64.whl.
File metadata
- Download URL: csignum_fast-1.2.5-cp38-cp38-macosx_11_0_arm64.whl
- Upload date:
- Size: 14.8 kB
- Tags: CPython 3.8, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3156ec1c95a90945f2a4fd3c3a86869bb21dafb5f559e6ab536f22656b325407
|
|
| MD5 |
a8b58978c71f6a3ef25dc101b418f14c
|
|
| BLAKE2b-256 |
8b9072d3e71eca381eac29633975835b2f5c1728fb3202c028b5521807449f47
|