Skip to main content

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

Project description

csignum-fast

Python Version License Status Performance Tests PyPI Version

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

Released on January 5, 2026Gold Edition

Version 1.2.2: 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 for a C++ extension for Python: since v1.0.0 all possibilities to increase performance have been systematically 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 Performance reasons, keyword argument values are not checked by the sign function. Your responsibility is:

  • To pass a callable for preprocess (accepts one argument, returns 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 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: 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 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 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.2)

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.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 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.2.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.2-cp313-cp313-win_amd64.whl (13.9 kB view details)

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13Windows x86

csignum_fast-1.2.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.9 kB view details)

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

csignum_fast-1.2.2-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.2-cp313-cp313-macosx_11_0_arm64.whl (11.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12Windows x86

csignum_fast-1.2.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.9 kB view details)

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

csignum_fast-1.2.2-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.2-cp312-cp312-macosx_11_0_arm64.whl (11.4 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11Windows x86

csignum_fast-1.2.2-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.2-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.2-cp311-cp311-macosx_11_0_arm64.whl (11.3 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

csignum_fast-1.2.2-cp310-cp310-win32.whl (13.6 kB view details)

Uploaded CPython 3.10Windows x86

csignum_fast-1.2.2-cp310-cp310-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.10manylinux: glibc 2.17+ x86-64manylinux: glibc 2.5+ x86-64

csignum_fast-1.2.2-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.2-cp310-cp310-macosx_11_0_arm64.whl (11.3 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

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

Uploaded CPython 3.9Windows x86-64

csignum_fast-1.2.2-cp39-cp39-win32.whl (13.6 kB view details)

Uploaded CPython 3.9Windows x86

csignum_fast-1.2.2-cp39-cp39-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.9manylinux: glibc 2.17+ x86-64manylinux: glibc 2.5+ x86-64

csignum_fast-1.2.2-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.2-cp39-cp39-macosx_11_0_arm64.whl (11.3 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

csignum_fast-1.2.2-cp38-cp38-win_amd64.whl (13.9 kB view details)

Uploaded CPython 3.8Windows x86-64

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

Uploaded CPython 3.8Windows x86

csignum_fast-1.2.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.4 kB view details)

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

csignum_fast-1.2.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (12.6 kB view details)

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

csignum_fast-1.2.2-cp38-cp38-macosx_11_0_arm64.whl (11.1 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: csignum_fast-1.2.2.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.2.tar.gz
Algorithm Hash digest
SHA256 678ca7d84ae002db84cb6ece2a146d98e564be5aadfafe8034021fd84067a711
MD5 d465be90e4b3b4e8fd9777a05b9955d4
BLAKE2b-256 8f3060c99ae44acd51743ace01acacc7edd63bdb48687fb881e058f191944aaa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csignum_fast-1.2.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 cb3e4a2eced3c69d0d74169cbfd07faff5e6479c82039935288bf3f08c680129
MD5 e5a2f1cd25a18865920a1a8722a97458
BLAKE2b-256 2f0cc36e7633582fcdb0f265d525f2ab9e159861063c09f723f05cf3e00228e0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: csignum_fast-1.2.2-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.2-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 8ce359758f3f2ca0dc0558cbb2ec6eb2f9312477b8b5e6ede7a9723ba4d5ee80
MD5 1b68990b1e86ff40bed08d38a6c99d27
BLAKE2b-256 c6c87ae51d5d2904b439168974caaade47df42cf6f7e905ef6c29ff837cf120a

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.2-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.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f7f85d5e754d750dc4d4f1e478fd845bac0164bf44039baad76b25b8aab6203e
MD5 749859674a8f3da4ca90f06e8fce9396
BLAKE2b-256 ce4625777041a04ec2fb9f3d550ba165eb7c2379138997e7230732c55869dc79

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.2-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.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 799dc9390ebc94c190c055e74d22a1c09eb2d3a8d305e4df60feeec7d22465ce
MD5 e8bc4106e88245f0a73ead4a3ce2bdde
BLAKE2b-256 83ac46ba543dd485c6236421bcc79126c5d89d53d7932c4bba32d816204f2c47

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csignum_fast-1.2.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 206a9e18cbba7f4504c2dc7503cf1855baac0ea436193724bcd4caa524d7b576
MD5 e2cb36c77a0f059296c2ff3a5283b581
BLAKE2b-256 9124bee144f381b48daee424d9fa06fecb19599775888ec674ae251d86d43211

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csignum_fast-1.2.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 412b1c8ed30600dae448ea0eba0063707b16a68cc8bf10802dfe68eba21e094c
MD5 0452af1546ea766df2db852f86ab0c69
BLAKE2b-256 b16996e884c8c609a7e146ac98c0313f98bb4c24982d9dccb2f28e607228da54

See more details on using hashes here.

File details

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

File metadata

  • Download URL: csignum_fast-1.2.2-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.2-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 4ccb5ab4c21e61aa57da0cfb4f4851f998a97adf5cfab097d08ccbd5b692c202
MD5 b1c76922aaff9b523262cc447b202ec9
BLAKE2b-256 1ad80e2a5fa87cafa52a8b25ab15e77cd42dd17c5ebb87b10c973182d3cdf00a

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.2-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.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6b870b2b9f35c73bd68542963f8732fb9b7714a65c659a7d8cbe8b675ec4951b
MD5 0679dcbe3c0b934b413f31746c6a39c7
BLAKE2b-256 a37c236863a91480cbbc8eb20b562c27fddc2a4d97d7be6c93e6507d3bbc8071

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.2-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.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 36dcb55eca357cc591d65299e2b67af54f2059d5b9eeef46dcedf89ae098ecb4
MD5 ca9db36e9078188b0ad80059ab65790b
BLAKE2b-256 76ac72c6cf7ee6fde89d850d3b0df0390ee585f6f06e25372e10ecb144d46ade

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csignum_fast-1.2.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dfb2601fb94cb8452575088d19056c6ecbc6fcfc34fc77ac16fb9393c9d4c99d
MD5 0c2cd556c96e40c39afcc14509e20b5a
BLAKE2b-256 b0ae9f56d50cbbcc0f99ae3da99f163dd60b23e087ee9213123a4ea949e62893

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csignum_fast-1.2.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 79b8573b5f6b17badb9fd42fe1c89fc6f490dfde4d285de149503743720e90bb
MD5 d54b57db4aede8e14b3c90b39c74ed46
BLAKE2b-256 aebba3d0e4b73e1148be64eaf48aab451cd314a022feb11c5c7354584f77c00b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: csignum_fast-1.2.2-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.2-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 931a444d240d1dfc5f3800add027b72907d49c10808d6114b861a50a93d6e0d0
MD5 f580028930842cffeb7ae6b7eaa57c67
BLAKE2b-256 6105a5fa388125abba9bdb796d8b7b85272c017458b9caaf31c817f1501a3d3a

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.2-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.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 282e8d77b4f5e36edf600a0ba876bd2d83b43d294e61f3b7a8b88bfbef766a3c
MD5 5a18e171a82861a09872155fbee6e66d
BLAKE2b-256 4d336fcbc21c2fb1509233d1b5348a495a66c8e11ed3768e34260290a90c85b8

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.2-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.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 20bcc689b2aae07692161a9965c8469475a7371fd424e99c53eca74b83e7e871
MD5 a2343fc7e10a9ef392378da3d523b195
BLAKE2b-256 506ef3b49029ebb1783837fdde558566ad93d2e277ef18e2532a5560ff799e27

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csignum_fast-1.2.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8f5d935fb6b0e76e543306bee0ad218e243e63e95ed2154d16593ba938468412
MD5 03994119531accf1f82dd2c53a632397
BLAKE2b-256 f1ffe97740915aeda95cf1d256f1ac419d6ca8d8eb02a3395c584617bce3a69a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csignum_fast-1.2.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 97546524390c5924296056ca93c6fa2ce35642860e081182b69f39307dccdd24
MD5 bf385d935a8b08798bb1661e97ed1250
BLAKE2b-256 093727fa34c9aa7c42e6d9dc1ded45804eae35930f630afc106748f9c067f110

See more details on using hashes here.

File details

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

File metadata

  • Download URL: csignum_fast-1.2.2-cp310-cp310-win32.whl
  • Upload date:
  • Size: 13.6 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.2-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 223a8683c87d9865cec3ee96ee789bb51ed5d23ce14e7b2cc990128326f820be
MD5 926e47a6ba1879fff379170419a67b46
BLAKE2b-256 75c44fc60953daa75b51ff1e5c2a25f25baa035bdb17ed4700d75f69c95709a2

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.2-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.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 56246ddb08238a59b96f39ecc4fc98a33201e2bb62e06c6511847040b4e50299
MD5 ff545831badaaca3c8447a4d0b16a32d
BLAKE2b-256 6ae33c1434873ba0f5a97980bfceb0365dab0b3f796786717faa9279d7823e0f

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.2-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.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 7c6db401767d0e037c180d4684faef0a8920f6242a5bdb1e4fab95687d4634fa
MD5 c3ac214e6e30e78dbd5ec55a1ed7a9ac
BLAKE2b-256 856f0e9d4e309699b485637eaaaf49687505a23ae5760ae9f5d8bb0e5704baff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csignum_fast-1.2.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7e5734680b0d9cc43d794a3eb8b00b4fcb61307d0551d097cc36b2caf1b526ac
MD5 a4d2d2d0ed2882c2596e1faffec1c24d
BLAKE2b-256 884ce62108b62f0a37517cbe3ca8ef140abefefecb4ccc951d9a82fa4a70a0b3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: csignum_fast-1.2.2-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.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 a6026cc069aa8f14621350cf4f4b50a6ce8e0232dd28a6c477ff296f9baaa94a
MD5 4c51d3844568dd208faf996d611efd7f
BLAKE2b-256 91ff7ff273c7360d7232e43a70f24b4510a8533c1357e257a25164a990d8aa0d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: csignum_fast-1.2.2-cp39-cp39-win32.whl
  • Upload date:
  • Size: 13.6 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.2-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 cdbcd33ca664d579e77d2badff4e5fdce49f876eaf1ef33282d7e9ceafef741a
MD5 f00730ceff60f42d85363ebafd3c6a6d
BLAKE2b-256 8285f6071a0188b4d8d3d845847e8b55523c0d55f7b1a96015d7fa28336c8927

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.2-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.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 281e6654b98f31952483e65f8107da23a0f12ae833054e4ccdcd91ee40ba6517
MD5 f6d0801d286c4d9dfdebe21fdf4e52d1
BLAKE2b-256 c705d5197649ca0a8d4ee16f0354d7513389bd6d6fbe626202091164ef4b3cec

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.2-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.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 6d5a071741b69adb9aac125d2df56dd2550babc141373c906c12eb5c9d8bce63
MD5 b645f33a87b856fa065e2e8448d8f722
BLAKE2b-256 38d577f1ae0c73782965f3bbd6ec2cc70ea94e31bc93fed9bc75f91639b7711e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csignum_fast-1.2.2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ce628f4c49ed3d27339ad53b5c2e4b49eb88df303541a40d418cfa955ab4752d
MD5 da8f06e382b15ad7e1a766148bb3a9a5
BLAKE2b-256 0fc9fed4ee16032cd5787fce12487ce90e4bb399d3b57885313a4addf05cf7b8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: csignum_fast-1.2.2-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 13.9 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.2-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 77f680b28cb96bb8fcd5107499a32165f3383462e022ba20d7877de752747c8d
MD5 5eef712720a67f7690c6c06f2a3016cb
BLAKE2b-256 016db254d4f2eeacce7d67262248a8479869e38f6e069d66a673cd556295afea

See more details on using hashes here.

File details

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

File metadata

  • Download URL: csignum_fast-1.2.2-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.2-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 1aeefac31b59365f80820e827a286c40837739335acdc05e2c3d6cb2216b9928
MD5 d832a1fccfbee4f503c94f540ab04f80
BLAKE2b-256 2901002aa602259c6e1a638b29f6b3815837528f539e7c2f28c9ba3584d1f2fa

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.2-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.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7383d5525a6db589f481e01a2921cbfe69833dd30497fbbeb18e070471548d94
MD5 c60aec4cce61c0848ef63355882f0582
BLAKE2b-256 faf97b0f2dd17c0514dfbe01057f4dc0f76b4931cf1297e168985dcf45584139

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.2-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.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 10b6fededb12bd54c493c5c365d453bb28a85b461ad80f869d1475f397f711e8
MD5 b42a964484c70a4f53404f2eca4012db
BLAKE2b-256 29751193feedd68fdb597bdbfc4ac2fda5556ae30e54a5ef59693c70259e7fbd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csignum_fast-1.2.2-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 136fce69c1add2befd411c929b1a9dd8350c8ab7c73b78e5026f3a18d7686199
MD5 0357d6610842b208207e4ae4ecd9d278
BLAKE2b-256 a930f6b760dfefb1df216c2474d7c84f195ed99a0252f1a8c50c57980d011549

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