Skip to main content

High-performance, versatile implementation of the universal 'sign' function for Python

Project description

csignum-fast

Python Version License Status Tests PyPI Version

High-performance, versatile implementation of the universal 'sign' function for Python

Released on January 5, 2026Gold Edition

Version 1.2.1: Maximum speed (+7.1% vs v.1.0.2 and 15.9% vs 1.1.5), and the third keyword argument.

Key Features

  1. Uniform Results: Always returns only -1, 0, or 1 as an int for valid numeric comparisons.
  2. Correct Edge Case Handling:
    • sign(+0.0) and sign(-0.0) return 0.
    • sign(inf) returns 1, sign(-inf) returns -1.
    • For any NaN (float NaN, Decimal NaN, etc.), it returns math.nan (float).
  3. Comprehensive Duck Typing: Delegates comparisons to the argument's class. Works seamlessly with:
    • Built-in int (including arbitrary-precision), bool, and float.
    • fractions.Fraction and decimal.Decimal.
    • Any existing and future objects that support rich comparisons with numbers.
  4. Informative Error Handling for Easy Debugging: Provides clear, descriptive TypeError messages when passed non-numeric, non-scalar, or incomparable arguments.
  5. ⚡ High Performance: Branch-optimized C++20 core; METH_FASTCALL argument scan; static module-level constants. The speed is near maximum as for C++ extension for Python: since v1.0.0 all possibilities to increase productivity were sistematically searched and applied.
  6. ✅ Thoroughly Tested: Tested on 121 cases including different types, edge cases, new custom class, keyword and inappropriate arguments. Also tested: memory leaks, and benchmarking against older versions.
  7. ✨ Pre-processing Engine: Use the preprocess keyword argument to transform input before calculation or trigger an "Early Exit" (recursion permitted).
  8. 🛡️ Exception safety: The if_exc keyword argument allows to define a fallback value (like None, math.nan, or -2) instead of crashing on invalid types.
  9. ✨ 5-way uniform result: Use the codeshift keyword argument to encode all 5 possible sign exits (TypeError, -1, 0, 1, NaN) by subsequent integers for switching or indexing.

Installation

pip install csignum-fast

Standard Usage

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

Advanced Usage (New features since v1.1.0)

☢️ Attention: Contract Programming!

For productivity reasons, keyword argument values are not checked by the sign function. Your responsibility is:

  • To pass a callable with one argument for preprocess (must return None or a tuple).
  • To pass a tuple for if_exc.
  • To pass an int for codeshift.
  • To guarantee that all calculations implied by these arguments do not result in additional exceptions or faults.

Passing incorrect values to these parameters may result in unpredictable behavior or 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 should support a special return protocol:

  • Return None: sign proceed with usual calculation.
  • Return (value,): sign proceed with calculation using value as an argument. Why a tuple? Use (None,) to return None as a value (usually raises TypeError).
  • Return (any, result): Early Exit. Immediately return result as the final answer of sign; any is 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 both 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 keyword 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 keyword argument codeshift converts sign into a uniform 5-way switch. All 5 possible sign results are encoded as integers: TypeError 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 codeshift=None: usual processing).

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 codeshift=0 codeshift=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), codeshift=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), codeshift=2)](d)

Interaction with other keyword 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.1)

The Quinary Revolution

  • New codeshift Argument: 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.1: CPython FastCall. Migration to METH_FASTCALL. This eliminated the overhead of using temporary tuple and dictionary for argument parsing.
  • New in v1.2.1: 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.1 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 "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 7M iterations).
  • Expanded Test Coverage: 121 validation cases (vs 57 for v1.0.2 and 94 for v1.1.0+).

License

This project is licensed under the MIT License. See the LICENSE file for details.

Author

Alexandru Colesnicov: GitHub Profile

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

csignum_fast-1.2.1.tar.gz (22.6 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

csignum_fast-1.2.1-cp313-cp313-win_amd64.whl (13.9 kB view details)

Uploaded CPython 3.13Windows x86-64

csignum_fast-1.2.1-cp313-cp313-win32.whl (13.6 kB view details)

Uploaded CPython 3.13Windows x86

csignum_fast-1.2.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.5+ x86-64

csignum_fast-1.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (13.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

csignum_fast-1.2.1-cp313-cp313-macosx_11_0_arm64.whl (11.3 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

csignum_fast-1.2.1-cp312-cp312-win_amd64.whl (13.9 kB view details)

Uploaded CPython 3.12Windows x86-64

csignum_fast-1.2.1-cp312-cp312-win32.whl (13.6 kB view details)

Uploaded CPython 3.12Windows x86

csignum_fast-1.2.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.5+ x86-64

csignum_fast-1.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (13.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

csignum_fast-1.2.1-cp312-cp312-macosx_11_0_arm64.whl (11.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

csignum_fast-1.2.1-cp311-cp311-win_amd64.whl (13.9 kB view details)

Uploaded CPython 3.11Windows x86-64

csignum_fast-1.2.1-cp311-cp311-win32.whl (13.5 kB view details)

Uploaded CPython 3.11Windows x86

csignum_fast-1.2.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.5+ x86-64

csignum_fast-1.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (12.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

csignum_fast-1.2.1-cp311-cp311-macosx_11_0_arm64.whl (11.2 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

csignum_fast-1.2.1-cp310-cp310-win_amd64.whl (13.9 kB view details)

Uploaded CPython 3.10Windows x86-64

csignum_fast-1.2.1-cp310-cp310-win32.whl (13.5 kB view details)

Uploaded CPython 3.10Windows x86

csignum_fast-1.2.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.5 kB view details)

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

csignum_fast-1.2.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (12.7 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

csignum_fast-1.2.1-cp310-cp310-macosx_11_0_arm64.whl (11.2 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

csignum_fast-1.2.1-cp39-cp39-win_amd64.whl (13.9 kB view details)

Uploaded CPython 3.9Windows x86-64

csignum_fast-1.2.1-cp39-cp39-win32.whl (13.5 kB view details)

Uploaded CPython 3.9Windows x86

csignum_fast-1.2.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.5 kB view details)

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

csignum_fast-1.2.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (12.7 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

csignum_fast-1.2.1-cp39-cp39-macosx_11_0_arm64.whl (11.2 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

csignum_fast-1.2.1-cp38-cp38-win_amd64.whl (13.8 kB view details)

Uploaded CPython 3.8Windows x86-64

csignum_fast-1.2.1-cp38-cp38-win32.whl (13.5 kB view details)

Uploaded CPython 3.8Windows x86

csignum_fast-1.2.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.3 kB view details)

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

csignum_fast-1.2.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (12.5 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

csignum_fast-1.2.1-cp38-cp38-macosx_11_0_arm64.whl (11.0 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

File details

Details for the file csignum_fast-1.2.1.tar.gz.

File metadata

  • Download URL: csignum_fast-1.2.1.tar.gz
  • Upload date:
  • Size: 22.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for csignum_fast-1.2.1.tar.gz
Algorithm Hash digest
SHA256 5d9dd7f48717818e0f094aa6530705f94fe6272c34d94dea60e2a365fe2dc372
MD5 edc87a00ab6d14c5476b5538e1ca548f
BLAKE2b-256 8d60344431bd9a44b707670e3486b787ff90fb850480d99693675a91d1b22e16

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.1-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for csignum_fast-1.2.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 b536b3c43aad3deed180098b7f90828236c423e1b7bafb3aa204888d53c45c32
MD5 88cb7ba7f3a8083cb59bdd6fb8ebdeb9
BLAKE2b-256 9a4b200705cf0699d62be73ab0f6ad4af96e1660cbce054a0ae27d3d000724b2

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.1-cp313-cp313-win32.whl.

File metadata

  • Download URL: csignum_fast-1.2.1-cp313-cp313-win32.whl
  • Upload date:
  • Size: 13.6 kB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for csignum_fast-1.2.1-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 32b13525eba907a747ab4911d4bbb98907977d48ae9ea1d3bc4a3747e02c7179
MD5 b9ecb4902b7ee26f5f401f418feef954
BLAKE2b-256 1d0adfabdc77f47a287853f81f0eebddb23b8b7e38499b9d70bf75b9af6ea887

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for csignum_fast-1.2.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0e5929e524e3ff4ea27455d61b648cf73f4121398f78d1deb79e612f1e4edab1
MD5 bfa06df08f97f7ab3aa48a44dc7a7e7b
BLAKE2b-256 be3b3b0b30a877cdb607797142617c5eadef9b175ce5d21bc4ba802e50b51063

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for csignum_fast-1.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 897b57a6c79ab2d035f99d5900a0f26f1bac38c46810fcfd7bff2c2e26ecf405
MD5 99a128811ad3dc2c83835cc3bac1f3fc
BLAKE2b-256 9ef92d68cfd7a12eb7427e006f7e733041d12f89a7187746d298de43f55e3f8b

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for csignum_fast-1.2.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2fafdd4952153801f67cdcf5c997264bb370eddd15f2834aaec702fb841a6168
MD5 13a964a1b573e887b9d807bdb008ba8b
BLAKE2b-256 9881cc08e1a24247a3900b7e6019a5966b804cf76a57afa22559859051695ba6

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.1-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for csignum_fast-1.2.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 ffc0eca73ad0081e0f8ae01a269939274ae0fb7cdda420ac0ef8eca917878b38
MD5 36f9cf9fbc0bc923110c7e46228973c1
BLAKE2b-256 85da0b691b520276db75a53bfea949be5e6ab269e958d66e66a8d3eef9b4c440

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.1-cp312-cp312-win32.whl.

File metadata

  • Download URL: csignum_fast-1.2.1-cp312-cp312-win32.whl
  • Upload date:
  • Size: 13.6 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for csignum_fast-1.2.1-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 680fdb9f67d2679afad8573dd04bfbabf1cbf27572a19ffc9d1df1c59d450a15
MD5 eda8a76318f4a4a89a48963c26287971
BLAKE2b-256 c0f8b67adf239c04b03cf83ce1236546297ccc1903c4850a462ffbf239baf5c7

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for csignum_fast-1.2.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 832a1adc8bb0bf2e717bc9adb9cbd9b0d756e92904a5f834fa5f0523ee4def08
MD5 c02cbe16bfa4c4e8a29d70d3066ce9c1
BLAKE2b-256 844ff8d37364f3292a4c1f83d1581f413beb481abd87dee8aa954fe5cec09f9d

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for csignum_fast-1.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 9501c958d04c298625cbdb32948af46ffc42a5f91144d86e7e287853b548eee0
MD5 484f3859c84c37aed741ea05e5b5e93b
BLAKE2b-256 cae2c7d4bf0f6efca06b23bd9cd7a714cb67e7ce022fbec02fde63e42511d7e0

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for csignum_fast-1.2.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5537ee3e763618724e9f460ce0c79f9a34f61e965053a0b20b96bdbce80cda51
MD5 836c9191aa821bd29129375ff4424a46
BLAKE2b-256 6f60025be0e558314ee2cc95d32ab9c6cd091a2319fc4b7d42572f3fb1ddef53

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.1-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for csignum_fast-1.2.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 5a3111dc6cb80eb850d8142d122688ebd28299d7ed2d090fcafe3eb80749308f
MD5 e4dc33556a2c2215d6c07c4e9d831b1d
BLAKE2b-256 6d47d45744e63c62838d6280c20bc8de501d72cf26b6e835b91b6e58dad5942d

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.1-cp311-cp311-win32.whl.

File metadata

  • Download URL: csignum_fast-1.2.1-cp311-cp311-win32.whl
  • Upload date:
  • Size: 13.5 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for csignum_fast-1.2.1-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 688d6c4b95a97835ab292d34d29d40a4ceff312b4bfc2e73a3bb755ea3d94728
MD5 a3dc7ba0d341bd0b477798482eb2e185
BLAKE2b-256 7c6544f37c62b6f574452a150cf6362fd02de1cbd0036185baf0b269f3aa96a8

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for csignum_fast-1.2.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6e9b5652558459e98dbd3020efd6e57c64b8d9637e2115eaa27e75ba712cb38d
MD5 9db65dc14a5c37238746c17078e2b6b0
BLAKE2b-256 8df86e843fdd0d00574a65574f5acb1b7dd0e4318c7aba866408ab4e012e935b

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for csignum_fast-1.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 10f93bf1515bf84d217bae66f08f18c6d484385ba830276e727e04aac1592b9c
MD5 3291ca104414a9574296d7c3047a7c14
BLAKE2b-256 08e329ea1f954345928acabf2c1344125c7f57e5ea3e295a0ed98584325f9e5c

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for csignum_fast-1.2.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4fd10c139bbf84f9401bad2dcb80bbea949002112a058a8fbe84d3d8a3aab7a8
MD5 25741ccca716121192003b06564a04b9
BLAKE2b-256 093614b20636df923b7c3d4eff21561954aba9d4c8d6c8fae801f572c06ca67c

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.1-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for csignum_fast-1.2.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 3f139a0a3ed9a81a1b0695d18d72def2301d356f2fb900f989790b7de1d7a54b
MD5 14c15b64c998ca701ece0e80cc2ffffa
BLAKE2b-256 094b439f657edb7717970364989ea0ddf65e33d06d0350abf17f46eac25cd80c

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.1-cp310-cp310-win32.whl.

File metadata

  • Download URL: csignum_fast-1.2.1-cp310-cp310-win32.whl
  • Upload date:
  • Size: 13.5 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for csignum_fast-1.2.1-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 b950e0e81d760762dd5b5b82baafc993b6e0b4c17e6c4469a9ae19b468b71e32
MD5 a4e49a53eb1368065d4534d3ca0dda66
BLAKE2b-256 9677da63a6fc70f0cbca0ac178c92a61836c64480d6700f1224c3b04ce874cda

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for csignum_fast-1.2.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4d7e376d6bbf47040153f213b2f0058e9a1ec7ca50aac00c9b7f0b509c4d3aa2
MD5 13352cbb96518879aa716aa004736b19
BLAKE2b-256 61649b4a0f8bb3346f5896d3d7ac01aa121592ae6aad4e1f6f13fc10a5280d00

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for csignum_fast-1.2.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 d6797f7e89feae58bf9f2bbd92bee516d7ff12b9cf14ceed6a7685d22d37986c
MD5 56c87383ad6557963637758ac8f137cc
BLAKE2b-256 64c903ad6c9766bd6b5030e2b35a3f57adc13fc47d94e4ee32fc19e81fa81d5b

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for csignum_fast-1.2.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3f8929a158cf6a028979444fd2eb3b9777369b3af11db2c4b94c47ba55562f22
MD5 a4e3b73f360d951d2183aacc9c5b74e6
BLAKE2b-256 2952549497f45823b54a43a653582ed0b27d77bcca1c742f22c04e9b5f3686cf

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.1-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: csignum_fast-1.2.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 13.9 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

Hashes for csignum_fast-1.2.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 ab866ad195a658403c839452844ac554a2a2e378af28a6e9a9a3480c1c4cdf34
MD5 a40ff51f36b1becc9b187635b56e0388
BLAKE2b-256 57f5bbe1866a5f0899342e01856f0f1982b4fad34625c02f0910c44953fd29a0

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.1-cp39-cp39-win32.whl.

File metadata

  • Download URL: csignum_fast-1.2.1-cp39-cp39-win32.whl
  • Upload date:
  • Size: 13.5 kB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for csignum_fast-1.2.1-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 017641d78bf538b8ee78eab900d4ff08ded1c8dde7f4725ccfec509205822fbc
MD5 d4bff42d37d10c9b5ef4468eecb13e16
BLAKE2b-256 9f8b59bc051a3efa591a11e9ffafeb5e663ee9e89ec9bde4f1a9ad6aeea8ae61

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for csignum_fast-1.2.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4408eeb67072cea4e8693eb5d112eb7f7779ef8b3a983188ba987f3ac07b35c7
MD5 81a0131870e031d59917c717ce6c32cc
BLAKE2b-256 6799fe57d654e9afaf0fdc3d5f25f23585654c3aa5ef204dbcb3093bfdccf12c

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for csignum_fast-1.2.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 99c19c10b580a35f445f6b1c21a7a1ccb25b0d5d47eb863a65274db21f8c717a
MD5 11342a99c9847b8c12be164a2e81d319
BLAKE2b-256 c0232d035f9d5055f2a8b1c66fcbfbf09e60ffd41652068dbd6fbe93aaf0a801

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.1-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for csignum_fast-1.2.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3e68040a753ae7367335801eae987642f4d424b27b7ad951598d06cc3e124d85
MD5 c79d9ab700f89443331ad38a8e18c488
BLAKE2b-256 4628ebb4ffd471a5c288076872a681c70d037228314c171f04c2508727f89abe

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.1-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: csignum_fast-1.2.1-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 13.8 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

Hashes for csignum_fast-1.2.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 c26a748bcad90f6bb6469d2a217a434ca76be196ea0cbe9f0d139d71c2096090
MD5 8e7946558aed9de40a34f99d1bc9fc8c
BLAKE2b-256 a65479a61a4542ea5707c8e579b00981ffa91fd2f0f7370a73077f321982ef7b

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.1-cp38-cp38-win32.whl.

File metadata

  • Download URL: csignum_fast-1.2.1-cp38-cp38-win32.whl
  • Upload date:
  • Size: 13.5 kB
  • Tags: CPython 3.8, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for csignum_fast-1.2.1-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 f578d943eb804ad32a2eebb07c53472b80f75f1caef5d1de31da3df0dfd79fa1
MD5 1f110d8363d8b2a4f19bb87fcf8b190b
BLAKE2b-256 67367bc3ae9e24d25b644d8b9984ca1dd89bff9e5e038a14f201bea25af0ad98

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for csignum_fast-1.2.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cacf50986fe7cfe399521d466382d8551117d6f7739955e37bc4a247143d2f5a
MD5 e52158a798edae096efe64c7f6b6ad40
BLAKE2b-256 3621a2f2d9aa2d94a8162e99702ddf29cee86123f95e1c6bbbac0e67dba4839e

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for csignum_fast-1.2.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 e38aba746defbd6831e271c31d8405a615fc143e80eeed0b4806dc448a2ee86d
MD5 864cc801995783f6a364128d00ffcb16
BLAKE2b-256 60313a4e7b371ec8d5b106034f45b2626fd836f0cdf607802fe39eab94886828

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.1-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for csignum_fast-1.2.1-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 68959dd5cb5803eeca1dddf5bb7f23af2cfcf4c2382a932e798b3ef15318c903
MD5 ed48e84ad9717d46cff75bcd79e165d8
BLAKE2b-256 664aa64cfd6c7b8cb0ab6a0f560e2610cc4976c053601af459d837784ebafb76

See more details on using hashes here.

Supported by

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