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 February 23, 2026Gold Edition+

Version 1.2.4: Fixed documentation typos..

Version 1.2.3: Preview of two new options from the upcoming version v1.3.1.

  • codeshift as the second positional argument;
  • the simplified fastsign that is up to 1.5 times faster than sign but 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.py prototype. 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, fastsign relies on implicit float(x) conversion. If an incompatible type is passed (like None or a list), you may see a generic TypeError: 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 fastsign is verified by 53 equivalence tests, ensuring it matches sign(x) results in 52 cases. The equivalence is checked for all standard Python numeric types, including int, float, Fraction, Decimal, and sympy numbers. The single exclusion is a specific edge case: a custom type that lacks comparisons but supports conversion to float.

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 263 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 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

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 callable for preprocess (accepts one argument, returns None or a tuple).
  • To pass a tuple for if_exc.
  • To pass an int for positional or keyword 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 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 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 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 sign and fastsign (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


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.4.tar.gz (32.4 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.4-cp313-cp313-win_amd64.whl (18.4 kB view details)

Uploaded CPython 3.13Windows x86-64

csignum_fast-1.2.4-cp313-cp313-win32.whl (17.5 kB view details)

Uploaded CPython 3.13Windows x86

csignum_fast-1.2.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (102.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

csignum_fast-1.2.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (109.8 kB view details)

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

csignum_fast-1.2.4-cp313-cp313-macosx_11_0_arm64.whl (15.0 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

csignum_fast-1.2.4-cp312-cp312-win_amd64.whl (18.4 kB view details)

Uploaded CPython 3.12Windows x86-64

csignum_fast-1.2.4-cp312-cp312-win32.whl (17.5 kB view details)

Uploaded CPython 3.12Windows x86

csignum_fast-1.2.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (102.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

csignum_fast-1.2.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (109.7 kB view details)

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

csignum_fast-1.2.4-cp312-cp312-macosx_11_0_arm64.whl (15.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

csignum_fast-1.2.4-cp311-cp311-win_amd64.whl (18.4 kB view details)

Uploaded CPython 3.11Windows x86-64

csignum_fast-1.2.4-cp311-cp311-win32.whl (17.4 kB view details)

Uploaded CPython 3.11Windows x86

csignum_fast-1.2.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (102.4 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

csignum_fast-1.2.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (109.4 kB view details)

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

csignum_fast-1.2.4-cp311-cp311-macosx_11_0_arm64.whl (14.9 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

csignum_fast-1.2.4-cp310-cp310-win_amd64.whl (18.3 kB view details)

Uploaded CPython 3.10Windows x86-64

csignum_fast-1.2.4-cp310-cp310-win32.whl (17.4 kB view details)

Uploaded CPython 3.10Windows x86

csignum_fast-1.2.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (102.4 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

csignum_fast-1.2.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (109.3 kB view details)

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

csignum_fast-1.2.4-cp310-cp310-macosx_11_0_arm64.whl (14.9 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

csignum_fast-1.2.4-cp39-cp39-win_amd64.whl (18.3 kB view details)

Uploaded CPython 3.9Windows x86-64

csignum_fast-1.2.4-cp39-cp39-win32.whl (17.4 kB view details)

Uploaded CPython 3.9Windows x86

csignum_fast-1.2.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (102.4 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

csignum_fast-1.2.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (109.3 kB view details)

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

csignum_fast-1.2.4-cp39-cp39-macosx_11_0_arm64.whl (14.9 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

csignum_fast-1.2.4-cp38-cp38-win_amd64.whl (18.3 kB view details)

Uploaded CPython 3.8Windows x86-64

csignum_fast-1.2.4-cp38-cp38-win32.whl (17.4 kB view details)

Uploaded CPython 3.8Windows x86

csignum_fast-1.2.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (102.2 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

csignum_fast-1.2.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (109.2 kB view details)

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

csignum_fast-1.2.4-cp38-cp38-macosx_11_0_arm64.whl (14.8 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: csignum_fast-1.2.4.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

Hashes for csignum_fast-1.2.4.tar.gz
Algorithm Hash digest
SHA256 c658ca34b094e4ed09f25916395ce6e35ffbd5b0c10dad30b5def3039de98ffa
MD5 32031b05378c7b3fe7c70e483a1f25e9
BLAKE2b-256 36b4c7d6c9b945d216578f18b431bbac1955e396eca2e648e8d3bf3742451a85

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csignum_fast-1.2.4-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 cbbf334644cbcea444081c8e88687aa10a185f6b06aaf3a98f535b981103b3ff
MD5 a46e97fb118b004c69a5f639f38c3560
BLAKE2b-256 dba621644d654f458aa63bdf43fec62ca67ae0c87b0620fca48d1bd8fcac2fa8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: csignum_fast-1.2.4-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

Hashes for csignum_fast-1.2.4-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 1718e0c3e3da62427d5048e4735524456beb1ac14ec7abdc8464241c08b2af24
MD5 d74146e2651569ca3a975401b26a98a9
BLAKE2b-256 d11a905e7dde6f9fa95a3fcfeb8c8bf933e15a7e5402c08eb085f1db8c7f4285

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for csignum_fast-1.2.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2d6b283da2a363c8fe39de3cf1ebda83ff18ba6022f289fc9e933f9f8777064a
MD5 5693df65dd57870fda3767a5d84cc5a7
BLAKE2b-256 53787ce7f8e11677b6634c0a7fe71be7b3a6d65f847254bd0e205b23a9104bdc

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.4-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.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 fba97b0d70823fa6bb96c8cf5d5a09c58f9776b840bd52f58ea249f63fdb6f2e
MD5 dae4186ce6945e9d97a1ab15ee53ad90
BLAKE2b-256 4a7f94b4d1667436dce2e6d9cbd06a4debf43a4187299a3c3035aa7b6826a738

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csignum_fast-1.2.4-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9a27cae38901fcdebd1c6efdb25154ea7b14f0ed4a51f81a22c5e827d997f470
MD5 0cb6bfce28c1597b0b0d4c75a3a68ddb
BLAKE2b-256 84c866ef8cdae7ed556752082dbc4977031e90a4ebd9e105e80eb74d7db76618

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csignum_fast-1.2.4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 242863ac499af842222392d87a0f51bf8bdda15f5ad4d405cbdd663cc94ec080
MD5 14fa800f0bd1b7a058148bfd576c3fd8
BLAKE2b-256 af9ba693581aa21192f947303ac01b63fb2d7a6e0518e44e04c97870ee61d075

See more details on using hashes here.

File details

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

File metadata

  • Download URL: csignum_fast-1.2.4-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

Hashes for csignum_fast-1.2.4-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 152466c1c8d650915d72630d270e62a2ad2f81833e058f9dc1c01d2f9b4b4978
MD5 63adff7017ae689a65f3d6d97db6f5b2
BLAKE2b-256 a89957094811e2f25908e6337ce0a0144440947d0a0e2f18ef91a066bb847859

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for csignum_fast-1.2.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ab2d91d64fffb576abec27ff6f6fce99ccb356fb46c5948374037daedad0a9bb
MD5 2afd9092f39927c398dd5f44911d5d5b
BLAKE2b-256 111aed41628380c0695db7220d45560302bd8e1fcc3a65c7b650cd8f982404c2

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.4-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.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 f348d71ac8bbde0f4057670989c0ec679d66b8555c4d1f3da0557c04e29decac
MD5 08f0b7c3f8e1d94f5fc8e35c26457ac4
BLAKE2b-256 923981c9277204ee3e7e8f55c85aada60fb8a9e99d92b2b26569c1c0372c90c8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csignum_fast-1.2.4-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 93c0e005264ca9ff4519335230000d21415ca4049dd6add6d69984923c6b7111
MD5 fb44b3e5d0cf3b898d4ad0e40f360f91
BLAKE2b-256 f1675752581c8b9e9490effca09163b31aa1f57782fcdb45f5d061996ee1df11

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csignum_fast-1.2.4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 eb3a5ff13e46b66c2721a2ada69a38bece900b2cc2f3a9257813db3033ed8a5b
MD5 8517527247d499a9ddfd9cb925b7c603
BLAKE2b-256 1ef506c280ee8ef11cee0da3737ac379f2a604b02489fc768143f64a521d55aa

See more details on using hashes here.

File details

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

File metadata

  • Download URL: csignum_fast-1.2.4-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

Hashes for csignum_fast-1.2.4-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 a37caa45ec202b69226f20b0e02df1f591f543e30f2c165f0fb12b1d8486bc02
MD5 603aced3d1c07aa9ea811281c7aa8181
BLAKE2b-256 a465fe06d1d0b67ce13944d4f9b8a3b9fc144cf2bb559fdc4298ef88df089646

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for csignum_fast-1.2.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d35772244082c54d8f03f996e6018471ba013fa07cd1da72d1ff25870c737a27
MD5 8cb77447c34dcf73aaea084394f11b2a
BLAKE2b-256 93f3f820bfbfd177ca09a5f80bafb85ffbef258531c0d96522a48f1d9f38d2b9

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.4-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.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 30534ef9a1a8cc35ea37cdfa8489a5c307911776b7d4113c3a497f4ecc70b3ef
MD5 204c5422047ec360ab7267744ba74f99
BLAKE2b-256 445990cb2c8e963fb456888594a604531553ae71a43b37c745a1a0456023c3b5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csignum_fast-1.2.4-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9af4747de1678299d5bc1ebd5e8f60f6d5e0728d4790817b14a3b7c4b771da45
MD5 06f021fe9c8cc85000f2bdcec3fbece4
BLAKE2b-256 0845b2e491ef12e8221d5684f343d717995c48c7ba62948296edd009a1a29f32

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csignum_fast-1.2.4-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 9fa2174d300d575fe62331c04aacfd424c2d92c3e19d4c1e439156c6fe2c0e2c
MD5 46ba2e9615e266f4042dfa9ae43abd62
BLAKE2b-256 dd6641a723495f23e240a1b5c062406071358088ebca06ec4b9905eda4f96fd2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: csignum_fast-1.2.4-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

Hashes for csignum_fast-1.2.4-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 8de1ffc753ba7a66bfb4adce194c5f2d291147b304aca5b88c763ebcdf76b395
MD5 96ae22a5f57f4fe7a4e440d48151e60e
BLAKE2b-256 ca43201614f8539fc7c9d9987c8b7f21b27916410c8f3bdf09898285bb2a1138

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for csignum_fast-1.2.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3467c44fcc6e8be610a95306263806f5467a5cabfaa8702cfb077be8e30ddbaf
MD5 ae9bd68bbc6877462b12ecbded59c075
BLAKE2b-256 fc64e756a5486e1923bcb12045431de662c23d3c29cc17085d1de99c4dc02115

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.4-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.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 1d1c5dc7e1a16b754282f73cbb631710337dc68a05c1624e1ba485d83f57e3ab
MD5 32aaa2d3c0fd71d2e7e1c5ad6c4efac1
BLAKE2b-256 91586357824f3bc7bcd080264d86811aaca041a5aac19e8d46d705810c5219de

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csignum_fast-1.2.4-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4b98bf73e48f95719079eae4fb8e50b7b5c5475726a446b27163c09d8819d13f
MD5 5560ebf3162f421ca2bf81ae6c22fd6d
BLAKE2b-256 8dadc90dd007206f66fe7ee70c42481607ad17fe3845f4b446bb6991c9a5a251

See more details on using hashes here.

File details

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

File metadata

  • Download URL: csignum_fast-1.2.4-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 18.3 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.4-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 cfb1e7b0c6a02225782d9a96ba477e890ebd937ca813057c7ae4298fef51ddc2
MD5 749f90971edc3dd9d6401068b9311452
BLAKE2b-256 40ac7ef36965460a016fd0b97898977154af6a30ec5d4c1ad003417ac6297235

See more details on using hashes here.

File details

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

File metadata

  • Download URL: csignum_fast-1.2.4-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

Hashes for csignum_fast-1.2.4-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 316327716df5036a879214ee845e439c639f359624dad0ae62bbc7f272acef0e
MD5 88e2b025397d494b87a51157dbca6cb1
BLAKE2b-256 bbf016a212e33c3bc27c8564a7069436efe3c254ce93da147100db5cd3e0daf6

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for csignum_fast-1.2.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 af186ba822d16e11b685b427e42376e3cc2c32e784f536a476594eb922e44166
MD5 009c2c76783d0d169b9e703030fcc44a
BLAKE2b-256 569160b68b496dc0e3969e78ba297f4a67369350262296ab0cc4b454227ad09c

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.4-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.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 e3baa63728714cac167bf64d88fb90e4ec863d0d39554e9412866d61510270a0
MD5 67dbbef3cb8cef9da48beee39cb99db3
BLAKE2b-256 19ac7962521f2664f9500351d74d52ca0004f46656164823a3390929bcc97d42

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csignum_fast-1.2.4-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a22f7c5d2f2443ee55870dd30270f3fb2af254fa56e6fe5e870704c461362b0a
MD5 1014522029b41bce90bab597478b22f7
BLAKE2b-256 a78a8d9ed96fff43236e916c22805c089d202c5a3ff9d4b0cf4d129f4a922bce

See more details on using hashes here.

File details

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

File metadata

  • Download URL: csignum_fast-1.2.4-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

Hashes for csignum_fast-1.2.4-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 17efeca111d6ab4add534cf1a3c0c44534cb57acd1d16ae0b8a1cad2b4648498
MD5 4e715124deb7ca76bd8ba782c3a29702
BLAKE2b-256 a49e28ce194ca4acc605a6c994859fd29b4a6fec625e9a7169eaca5b0161da33

See more details on using hashes here.

File details

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

File metadata

  • Download URL: csignum_fast-1.2.4-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

Hashes for csignum_fast-1.2.4-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 8b506bb1203d2bdb90be99cd9d9cb470ada87268038719582fe6c2638769a3cd
MD5 58d4d5531201bd709659b26597517c08
BLAKE2b-256 98bc1d82b0e9792f0f074b886b46e92ab11f30cbd3c5eb2a13cf5a73fb446257

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for csignum_fast-1.2.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e7196555f5e5b513058f931e5cfb545f9173103084fa0003c410b91567b77be5
MD5 53b9ff790f8e2d64ea9d53660387ce5a
BLAKE2b-256 902784ada94c140d3cc66ea50049f7a1705e0efc9322815ccce959a35a710433

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.4-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.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 445172f98dfbdf75b3924a237d235ae4e01934a2f116dc2eed0c80a1c44d0c34
MD5 054b54c83e87fa977131f86033b5dca6
BLAKE2b-256 28337f1fede1dc5f43b33e14fab651738df7a0bf3eadb7d17b9d30a6d45a7f60

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csignum_fast-1.2.4-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ff93bd5da634bb7ba5c946cb38ea41f6ff67fbb81bf6899dc1bc535979828980
MD5 e0816c25fb4786130b8a28b6d3ad470a
BLAKE2b-256 7830a1734e619dc099d8da5dd51bfa24c3c0acbfb7ba41f0ade36b8aab4c4b9d

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