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.0: 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.0)

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.0: CPython FastCall. Migration to METH_FASTCALL. This eliminated the overhead of using temporary tuple and dictionary for argument parsing.
  • New in v1.2.0: 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.0 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.0.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.0-cp313-cp313-win_amd64.whl (13.9 kB view details)

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13Windows x86

csignum_fast-1.2.0-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.0-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.0-cp313-cp313-macosx_11_0_arm64.whl (11.3 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12Windows x86

csignum_fast-1.2.0-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.0-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.0-cp312-cp312-macosx_11_0_arm64.whl (11.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11Windows x86

csignum_fast-1.2.0-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.0-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.0-cp311-cp311-macosx_11_0_arm64.whl (11.2 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10Windows x86

csignum_fast-1.2.0-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.0-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.0-cp310-cp310-macosx_11_0_arm64.whl (11.2 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

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

Uploaded CPython 3.9Windows x86-64

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

Uploaded CPython 3.9Windows x86

csignum_fast-1.2.0-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.0-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.0-cp39-cp39-macosx_11_0_arm64.whl (11.2 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

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

Uploaded CPython 3.8Windows x86-64

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

Uploaded CPython 3.8Windows x86

csignum_fast-1.2.0-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.0-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.0-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.0.tar.gz.

File metadata

  • Download URL: csignum_fast-1.2.0.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.0.tar.gz
Algorithm Hash digest
SHA256 a6dde0c99d012bb33ae720adb2b7e2303802ee6fe35bbf6c703a5d75c16f0d8e
MD5 49351a775442d84bc4fbe4ce8d988165
BLAKE2b-256 1281dfa35a54d3f8b694deed7a4ca8290468a5589ad65d32e03cdfdc095d05ce

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csignum_fast-1.2.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 a49f20d210deab1a1f3ad02907f57d04c5d327b99877251662001b6343d8dd9f
MD5 f04e819dbf28c09f28341bbca0ee47ab
BLAKE2b-256 7d09983c675586c94a639ae64623fef3c1cf1d9f5425f8e08f0bc250a9d335e0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: csignum_fast-1.2.0-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.0-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 7f3bbcf3407028ca5b91611e34319b81529770dd101cb6b0ddbf17a157af71aa
MD5 080330828a08094ddc65947b9fae4558
BLAKE2b-256 7b3be177056a656899ba559d63a3faa20c0e55f90f34756d090cf39144f81790

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.0-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.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 baf5bb9cb742031aa9c81c4e0a60dfbfb86eb7d916b0fcd57af808702cd23312
MD5 b378aeb1cfe97c9c31f6a90176131064
BLAKE2b-256 7bc13aa1030fbba7986b665999204dae6af233e3adfbc93f60048298b8ab8435

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.0-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.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 d06fb95f15be05c95cfbb959ca16fd59e55850aa72f29c589b5d1cdff9085535
MD5 501e6472f2be23da253bc0de1972a14b
BLAKE2b-256 dd288585b744980bbb6424627c6c133fc37549f9ccc3c1a45e49d2c86d0662d8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csignum_fast-1.2.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d8cb162047cf6248fd2fc7a95012fac9a69d8828fce9e330468e14806ae8fd08
MD5 357cca4ebf74583e6bbc037262cd76bc
BLAKE2b-256 e26facda65861049de7f85f64062d62aaa12186140d7120c16b34dabb1515a0d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csignum_fast-1.2.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 bf9f1fea6edfe20f21a16c651dddb460bc4ecf53c4470c5584b66cec3f0fdcac
MD5 ea2a1297ad596a6cd6efd6ce8d89bcf6
BLAKE2b-256 2d8aeea869827ee1fc9cfba915929e8638b10ea3e8f3fa2ed3920700a6a2224e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: csignum_fast-1.2.0-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.0-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 9c0d810bffa2015ad88f13f3634d2b0e09249db5627c9335ecd49a302604a37a
MD5 294d8e45509884f83ff166c5d4ccdcd5
BLAKE2b-256 acad0a7240613828de17a49ad15332cf4f755b9dfe09736ae23709100b654996

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.0-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.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 872b2e4b1f37b2b6fe70f26b79afcac1d250e2e85022a306b36cc465050f1f74
MD5 c6d5b48905eb9862aa99b407371b9e26
BLAKE2b-256 04b7b4bafc96d777ec7f53d26436651fb975a349f431ffb0bf3ba73570514fbf

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.0-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.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 4f6121cafb5cf7109622e3c1c34d2fe32dfd8485ba0a26436935241ae8e64c8e
MD5 71a6c4dcfcb2dbd953d4477fe5dfcc93
BLAKE2b-256 2bcf414c4b7066acde6f75f2b59c4c401ceca67b1b8b6cefb8e6e7b9e6a0df75

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csignum_fast-1.2.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c90bf512071404230283e4e2d269f19d7b4a46ea7bf199e3fa92a39442b0e053
MD5 24f3f50c0573c9a50e31c4a0eb0868e3
BLAKE2b-256 26a8d5f26d083f12af69a4fbef848b409e0daea1483cf8f4e9f4c8f6b010ea4a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csignum_fast-1.2.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 5aa1e8670a8f496db4213c809977a854b208c0751e423d5ca45cc7ac828a3371
MD5 e1f43b329998afe2581e3e885b2ea3d5
BLAKE2b-256 c43d63355cff5eedb740d80b721a97a7c51223eb14d556c9dd59c8a613e83393

See more details on using hashes here.

File details

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

File metadata

  • Download URL: csignum_fast-1.2.0-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.0-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 f1d3cc918ad1e9bec500753505c884f52d3f0bb431af1016cf45a3756912300e
MD5 95f3e0e75f37cbe5e8217ecf9dfbc489
BLAKE2b-256 f5b280c6f67d76c99969757aacd2daa0b4e3f8a8f767501efb67da70524717f4

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.0-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.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f1392d2088418b0605e5e87db80c3b01ac5e5c7dcd61408e8415b75bc9b4e6b3
MD5 35c127ce9d2a75ddc20f643df7335a95
BLAKE2b-256 c3cc0b1fe5b90b11c9521ba7ada6d73615db5d118da39dc09e9eb1edd93d30b7

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.0-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.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 d3660eed55c85a8ceeadc5452624ebefa9ae8fd44d5775cf717f24d73ca72f82
MD5 feec09b807f1682be3aa9e61cf8955e7
BLAKE2b-256 1a582c767f0d267ef7acb9729bdc1a613a6a86bd95c8c9d682a00d8f4e6ea5a0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csignum_fast-1.2.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 36d15c36a63ea56e16e77897eb77d89483fd0832cb9a4d44f42ef9b014bf69a9
MD5 ae3b25c9c3f11613e3c3657eb1dce07d
BLAKE2b-256 2b0632b607b2428b6a3598df2d5f1a52a1fc547124a88b68dab2ad5c3a4a7bff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csignum_fast-1.2.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 e5a6e603b90e6c713ca8c3906848adf4a246c524a6a455d3f2574a339da23a26
MD5 d6f6282e92c3d4cd128acd53283ee7f0
BLAKE2b-256 2c0715b4e814adc5f648101a9efb917d06fea37830847b4e9cf3e8612df172e9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: csignum_fast-1.2.0-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.0-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 6febc0f8c9f151be7528c57bcbf2ef07f7b29a60258e29bc15d57c18b56765d9
MD5 77a5db0a59c5f30ac181ecf8f53fd547
BLAKE2b-256 d5a861b0133bb0607fbeb768322bc3af93c9100eb1c858d6d73f41837a61dd2a

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.0-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.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bc8d0e6f78cdb38c7742e89c4cd53b8156e89476d8965557da023ce4fb0d4f8d
MD5 18058662f6cc0c75f6e0dac2be48a7cd
BLAKE2b-256 f23d318d7cfb3cbd7b294b859c7a4b911fc0de97537eab3e16a7bb810765da82

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.0-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.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 469276707abbed411ec9c04fed0b4b73a90e5bd48b7a20362c11d6d3185be92c
MD5 262567ca11da57e8705ba3628244b871
BLAKE2b-256 4d344196d5401ef868d9f34df3b955240fe90e49639c1e51be12274e7267d5cd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csignum_fast-1.2.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 799368c817c0091378f75aae115d00c5a9bf982001db9a00caa7318e2ca85613
MD5 07f3d7783c5529bb0b386be03efd31ad
BLAKE2b-256 86e032f60edc52e60013ebea74b43f1e4b7672344be6a1a4cefb21e2a8b569d3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: csignum_fast-1.2.0-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.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 aca746bad1fbf1ad63cd28578e7313ed5f23b7a4ddb09c996c7700a43b32e67f
MD5 32022094f56e6172300445f4ff44f60a
BLAKE2b-256 fbaca05827f332296425e8e25ad979e2f469e9df86a233f02a767e610debf096

See more details on using hashes here.

File details

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

File metadata

  • Download URL: csignum_fast-1.2.0-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.0-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 c2d7c7c9633183add0070d4e63cb9d6ef2c80f685e0bc8d5f31839bd68cc2864
MD5 0b10b3c063f5485303d62b486b89b7c3
BLAKE2b-256 5de555a0375b1fd9d7ca314e40cabfdde036bd0822fa2b35bb6d40cea6d3c29c

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.0-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.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a9af8559b593365e8b5f32221eaca4d9e1ded33a8926dd5f8167b1800cf20ddb
MD5 3050e8abd4a73c2455cb4c9ea1dc9ff7
BLAKE2b-256 1cd53c91576be6d3f2d41234f5c541bf99faf336018fb43707042ac071e3241c

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.0-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.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 3d83429e62f8b29147823905f288107aea38b865add704c2b5ea4582d689766e
MD5 9e5a797574386f057874cabddbfc7b65
BLAKE2b-256 2219b66f9ada4db346542222db64e50f73a0e8c30662f71936e952882ede166c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csignum_fast-1.2.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 58174f05b1f5ce4ae42c54e17f92f9ffe9a6462e143bceffbeee785387881da4
MD5 4ac20925cd568872fcb7292f7acb7b6f
BLAKE2b-256 9bb83a0bf4dfa8467c6b0d5dac697ca54060266ad5cf7a5092024d9f95d6ccea

See more details on using hashes here.

File details

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

File metadata

  • Download URL: csignum_fast-1.2.0-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.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 2b338ed6667158a3589c41055cb4ea493157574a2ee8387982bda438ddeb6eb8
MD5 0be8a2c1f6a021575d26fe91e6fe1c03
BLAKE2b-256 0def557993f6a976cdc5631446ab702ab6b05954bbcc263a2473a355cda30203

See more details on using hashes here.

File details

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

File metadata

  • Download URL: csignum_fast-1.2.0-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.0-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 26ab0d94d21ae1faafd321322fddd5f9a591e69b17f05c9f8bf938bd0038a213
MD5 278165ee7677f916d825bc29e2fb32dd
BLAKE2b-256 65208893ee7bda20f6a02313783fc8c446d7536195f82c4ee6a389c41e49c724

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.0-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.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 653db2112c49fd5f6fd9f3ef90fe7509c90e7a963c73c8455bb916e6eb340e0d
MD5 7de12212d78303f7fa8f726b91ecde12
BLAKE2b-256 7f86f1177ad803082f1f7051a1b66b55cfd1d62873ef2a3f8814b55b861bbeb7

See more details on using hashes here.

File details

Details for the file csignum_fast-1.2.0-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.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 67358252be7c501a7c0c6f718348431928919a641a659a15c168552b4b9a164b
MD5 0c4b1e96c32c57bc682e098bc31882b4
BLAKE2b-256 269075236af1760c075199b9678d569d37f01d8562a7e257132072ed220ee07b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csignum_fast-1.2.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 80671762740f182840bc897ceece347799d0134f2190c212f18cca38ca052fe9
MD5 2594c07377162b843d03157d7f51231d
BLAKE2b-256 4774be552404156e9861d4afe9076d6b23b2778cbe816bb297cdace428977075

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