Skip to main content

A Cython implementation of Brent's root-finding method

Project description

cybrentq

A production-quality Cython implementation of Brent's root-finding method. The algorithm is a faithful translation of the C routine in scipy/optimize/Zeros/brentq.c: bisection guarded by inverse quadratic interpolation, with a secant fallback and bisection used whenever an interpolation step would not make adequate progress.

The public API mirrors the relevant subset of scipy.optimize.brentq and can serve as a drop-in replacement in most code paths.

Requires Python 3.10 or newer and a working C compiler (used during install to compile the Cython extension).

Quick start

This project uses uv for environment and dependency management, with a Makefile wrapping the most common commands.

# Install uv if you don't have it:
#   curl -LsSf https://astral.sh/uv/install.sh | sh   (macOS / Linux)
#   powershell -c "irm https://astral.sh/uv/install.ps1 | iex"   (Windows)

# Recommended: use the Makefile. PYTHON_VERSION=3.10 by default.
# The Cython extension is compiled during `make sync`.
make venv
make sync

The Makefile passes hardening flags the bare commands omit (--frozen --refresh --all-extras --all-groups --link-mode=copy, plus --seed --prompt=cybrentq on venv). Read the Makefile for the full invocations.

If you want a minimal install without the Makefile:

uv venv --python 3.10       # create the venv
uv sync                     # install project + default groups, compile Cython
uv sync --group test        # add the test group only
uv sync --no-dev            # consumer-style install (no dev groups)

uv sync reads pyproject.toml, provisions a matching interpreter, builds the C extension via the PEP 517 backend (setuptools + Cython), and writes a uv.lock. Commit uv.lock for reproducible builds across machines.

Editable iteration on the Cython source

uv sync installs the project into the managed venv. After editing _brentq.pyx, re-run uv sync --reinstall-package cybrentq (or just uv sync if you also bump the version) to force a recompile.

Usage

import math
from cybrentq import brentq

# Basic usage — finds sqrt(2)
root = brentq(lambda x: x * x - 2.0, 0.0, 2.0)

# Pass extra arguments via the args tuple
root = brentq(lambda x, target: x ** 3 - target, 0.0, 5.0, args=(27.0,))

# Diagnostics
root, info = brentq(lambda x: math.cos(x) - x, 0.0, 1.0, full_output=True)
print(info)
# RootResults(root=0.7390851332151607, iterations=8, function_calls=10,
#             converged=True, flag='converged')

Signature

brentq(
    f,                          # callable, f(x, *args) -> float
    a, b,                       # bracketing interval, f(a)*f(b) < 0
    args=(),                    # extra positional args forwarded to f
    xtol=2e-12,                 # absolute tolerance
    rtol=4*eps,                 # relative tolerance (>= 4 * machine eps)
    maxiter=100,                # iteration budget
    full_output=False,          # return RootResults alongside the root
    disp=True,                  # raise on non-convergence instead of returning a flag
) -> float | tuple[float, RootResults]

Errors

Condition Behaviour
f(a) and f(b) have the same sign ValueError
xtol <= 0, rtol < 4*eps, or maxiter < 1 ValueError
Iteration budget exhausted and disp=True ConvergenceError
Iteration budget exhausted and disp=False returns (root, RootResults(converged=False))
User-supplied f raises exception propagates unchanged

Tests

make test                                   # all tests
make cov                                    # coverage run (see warning below)
make report                                 # print coverage report from last run

# Direct equivalents for `make test`:
uv run pytest                               # all tests
uv run pytest tests/test_basic.py           # just behaviour / error tests
uv run pytest tests/test_against_scipy.py   # head-to-head correctness vs scipy
uv run pytest tests/test_performance.py     # perf regression guard (CI-safe)

Note on make cov: the target wipes .c/.so artifacts and reinstalls cybrentq with CYTHON_TRACE=1 so that coverage.py (via the Cython.Coverage plugin) can report line coverage from _brentq.pyx. The traced build is significantly slower at runtime. After running make cov, run make sync before make bench — otherwise the traced extension will skew benchmark numbers.

The scipy-comparison suite asserts that:

  • both implementations report converged=True on every problem,
  • root estimates agree to within 1e-10 relative and absolute tolerance,
  • iteration counts and function-call counts match exactly (Brent's method is deterministic, so any divergence flags a bug in our translation).

Benchmarks

The benchmark suite compares this Cython brentq against scipy.optimize.brentq and against pymodab (a C implementation of the Modified Anderson-Björck root-finding method) across nine problems.

make bench                                              # default config
make bench BENCH_ARGS="--n-calls 5000 --repeats 7"      # override args

# Direct equivalent:
uv run python benchmarks/bench_brentq.py --n-calls 5000 --repeats 7

Sample output (numbers depend on the machine, Python build, and library versions):

problem                            scipy (µs)  cython (µs)   modab (µs)    cy/sc    mb/sc
-----------------------------------------------------------------------------------------
x^2 - 2 (cheap)                         8.374        0.518        2.665   16.16x    3.14x
x^3 - x - 2 (cheap)                     8.957        0.875        2.925   10.24x    3.06x
cos(x) - x                              7.978        0.782        2.718   10.20x    2.94x
exp(x) - 2                              9.862        0.981        2.950   10.05x    3.34x
sin(x), root at pi                      6.623        0.287        2.210   23.04x    3.00x
(x-1)^3 (flat)                          3.566        0.257        1.770   13.90x    2.02x
atan(1000*(x-0.5)) (steep)              3.692        0.341        1.864   10.82x    1.98x
poly degree 5                          13.879        2.010        4.445    6.90x    3.12x
expensive f (sum of 50 sines)          69.151       57.117       59.970    1.21x    1.15x
-----------------------------------------------------------------------------------------
cython vs scipy: gmean 9.24x  min 1.21x  max 23.04x
modab  vs scipy: gmean 2.52x  min 1.15x  max 3.34x

Columns: cy/sc is scipy_time / cython_time (Cython speedup over scipy); mb/sc is scipy_time / modab_time (pymodab speedup over scipy). Higher is better in both columns.

Before each timed problem the runner calls all three implementations and asserts the roots agree to within 1e-9 — a benchmark with a silent correctness regression is worse than one that doesn't run.

A few things to note when reading the numbers:

  • Brent's method usually converges in 6–15 iterations, so most of the wall time of a single solve is spent inside f, not inside the algorithm. When f is expensive (the "sum of 50 sines" row), all implementations spend the vast majority of their time in f and look nearly identical.
  • The Cython win is largest when f is cheap, because that is when the algorithm's own overhead matters most.
  • pymodab's Modified Anderson-Björck typically uses fewer f evaluations than Brent — but each iteration carries pure-Python wrapper overhead here, so it lands between scipy and our Cython version.

Building distributions

make build            # equivalent to: uv build
                      # produces sdist + wheel under dist/

Make targets

make help lists every target with a short description.

Target Action
venv Create the project venv via uv venv (PYTHON_VERSION=3.10 by default)
lock Resolve and write uv.lock (uv lock --upgrade --refresh)
outdated Show outdated direct and transitive deps
sync Sync the venv with uv.lock (all groups + extras)
test Run the test suite without coverage
cov / test/cov Recompile extension with CYTHON_TRACE=1 and run under coverage.py (no pytest-cov). Run make sync afterward to restore the fast build.
report / cov/report Print the coverage report from the last make cov
bench Run the benchmark suite (override args via BENCH_ARGS=…)
lint / lint/check Read-only ruff check
lint/fix Rewrites filesruff check --fix
fmt / fmt/check Read-only ruff format --check
fmt/fix Rewrites filesruff format
check lint/check + fmt/check (CI-safe)
build / dist Build sdist + wheel into dist/
clean Remove build artifacts and coverage data

Bare lint and fmt are intentionally read-only; mutation requires the explicit /fix variant so typos don't rewrite the tree.

Linting and formatting

The project pins ruff (configuration in pyproject.toml under [tool.ruff]). Enabled rule families:

Code Family
E / W pycodestyle errors / warnings
F pyflakes (unused imports, undefined names)
I isort
N pep8-naming
UP pyupgrade
C90 mccabe complexity (max-complexity = 10)
A flake8-builtins (shadowing)
B flake8-bugbear
PERF perflint
PT flake8-pytest-style
RUF ruff-native rules
SIM flake8-simplify
TRY tryceratops (exception hygiene)

Ruff lints .py files only — _brentq.pyx is outside the ruff scope.

make check            # lint + format check, no mutations (use this in CI)
make lint/fix         # rewrites files: ruff check --fix
make fmt/fix          # rewrites files: ruff format

Layout

src/cybrentq/
  _brentq.pyx           # the algorithm
  _brentq.pyi           # type stubs for IDEs / mypy
  __init__.py           # re-exports brentq, RootResults, ConvergenceError
  py.typed              # PEP 561 marker
tests/
  conftest.py           # shared fixture: 11 canonical root-finding problems
  test_basic.py         # behaviour, error paths, edge cases
  test_against_scipy.py # parity vs scipy
  test_performance.py   # perf regression guard
benchmarks/
  bench_brentq.py       # speed comparison vs scipy and pymodab
Makefile                # venv, sync, test, cov, bench, lint, fmt, build
pyproject.toml          # project metadata + ruff/coverage/pytest config

License

MIT.

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

cybrentq-0.1.3.tar.gz (143.7 kB view details)

Uploaded Source

Built Distributions

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

cybrentq-0.1.3-cp314-cp314-win_amd64.whl (33.8 kB view details)

Uploaded CPython 3.14Windows x86-64

cybrentq-0.1.3-cp314-cp314-musllinux_1_2_x86_64.whl (229.5 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

cybrentq-0.1.3-cp314-cp314-musllinux_1_2_aarch64.whl (221.5 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

cybrentq-0.1.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (230.3 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

cybrentq-0.1.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (225.5 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

cybrentq-0.1.3-cp314-cp314-macosx_11_0_arm64.whl (104.8 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

cybrentq-0.1.3-cp313-cp313-win_amd64.whl (33.1 kB view details)

Uploaded CPython 3.13Windows x86-64

cybrentq-0.1.3-cp313-cp313-musllinux_1_2_x86_64.whl (230.7 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

cybrentq-0.1.3-cp313-cp313-musllinux_1_2_aarch64.whl (222.3 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

cybrentq-0.1.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (230.6 kB view details)

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

cybrentq-0.1.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (225.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

cybrentq-0.1.3-cp313-cp313-macosx_11_0_arm64.whl (103.7 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

cybrentq-0.1.3-cp312-cp312-win_amd64.whl (33.9 kB view details)

Uploaded CPython 3.12Windows x86-64

cybrentq-0.1.3-cp312-cp312-musllinux_1_2_x86_64.whl (234.5 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

cybrentq-0.1.3-cp312-cp312-musllinux_1_2_aarch64.whl (226.9 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

cybrentq-0.1.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (234.8 kB view details)

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

cybrentq-0.1.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (229.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

cybrentq-0.1.3-cp312-cp312-macosx_11_0_arm64.whl (104.5 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

cybrentq-0.1.3-cp311-cp311-win_amd64.whl (33.6 kB view details)

Uploaded CPython 3.11Windows x86-64

cybrentq-0.1.3-cp311-cp311-musllinux_1_2_x86_64.whl (231.4 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

cybrentq-0.1.3-cp311-cp311-musllinux_1_2_aarch64.whl (224.6 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

cybrentq-0.1.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (230.8 kB view details)

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

cybrentq-0.1.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (226.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

cybrentq-0.1.3-cp311-cp311-macosx_11_0_arm64.whl (104.9 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

cybrentq-0.1.3-cp310-cp310-win_amd64.whl (33.7 kB view details)

Uploaded CPython 3.10Windows x86-64

cybrentq-0.1.3-cp310-cp310-musllinux_1_2_x86_64.whl (218.9 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

cybrentq-0.1.3-cp310-cp310-musllinux_1_2_aarch64.whl (213.4 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

cybrentq-0.1.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (217.9 kB view details)

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

cybrentq-0.1.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (214.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

cybrentq-0.1.3-cp310-cp310-macosx_11_0_arm64.whl (105.1 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file cybrentq-0.1.3.tar.gz.

File metadata

  • Download URL: cybrentq-0.1.3.tar.gz
  • Upload date:
  • Size: 143.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for cybrentq-0.1.3.tar.gz
Algorithm Hash digest
SHA256 98607297a6f1eba18b36c39c6dae638a8e6d709d0aaf996947805df538144f72
MD5 d23fdedc75bf1ad885b6ce8dfb93bee2
BLAKE2b-256 5391b73f5d441c8807297cd2869453c22da938275a3876feaf7406506df5e7d3

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.3.tar.gz:

Publisher: release.yml on gledi-ai/cybrentq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cybrentq-0.1.3-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: cybrentq-0.1.3-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 33.8 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for cybrentq-0.1.3-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 d116c1842b6b65752b3ec5cbdfdb321dac962cc58f1b1a8a389daca686dc7410
MD5 4ed3a2df805a877dac751c0956e00331
BLAKE2b-256 dad568c1164d20d8774b9e9c01c24f982ca6489068e6f59e702e8d252bccf27e

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.3-cp314-cp314-win_amd64.whl:

Publisher: release.yml on gledi-ai/cybrentq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cybrentq-0.1.3-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.3-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e4088e5728f02f6b55c393e99501e13ebaf129ad581dcacf81b2367b5f15f754
MD5 8c45ea6c588d4877917f6580d2663699
BLAKE2b-256 ca31d4e05c12cd42fdd35e21cf69d737742c75a498d772ed3b79cf0c6bc56f95

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.3-cp314-cp314-musllinux_1_2_x86_64.whl:

Publisher: release.yml on gledi-ai/cybrentq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cybrentq-0.1.3-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.3-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 8954cf91296d7ecdce954ed2155830aa0d0a952b13b821de424c9ee8cb090afe
MD5 522ed4706055b9c8e4e64d412b870207
BLAKE2b-256 d370996191e6672bcb7d750c1b4ae7501dfbd6069984966300d075a3077db810

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.3-cp314-cp314-musllinux_1_2_aarch64.whl:

Publisher: release.yml on gledi-ai/cybrentq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cybrentq-0.1.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 18f2d6f6bf2e00f7cdc51ef831e4be3a6cfec80dc11be1cf7274402b4434ab6b
MD5 d7dfae357d7c1ec4bdce8856fdc57eb7
BLAKE2b-256 a130619b33c734a4fe617f911e16d7bb13877f1c3857a0cb47e691da6222022e

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on gledi-ai/cybrentq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cybrentq-0.1.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 06bb7bb0dc80df593059365d0528175107b0abcf302b979c432f009166f74970
MD5 2585459c8670a8bfa50ef22a5e059a6d
BLAKE2b-256 c9f626feb5c7ec430ce027c37632cd0a36b04372f0208a0db691bb6e3d5b5506

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on gledi-ai/cybrentq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cybrentq-0.1.3-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.3-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ebc20976c529a1fc7797e3644e6880077baec5b0ee9121f189d6f73f4090927a
MD5 ea634bdc85e84cda5b41299d24583f90
BLAKE2b-256 c9c83815b62ce27b6d12fa7c626ac54d82422c6b55bebc720488c196fa441d5c

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.3-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: release.yml on gledi-ai/cybrentq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cybrentq-0.1.3-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: cybrentq-0.1.3-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 33.1 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for cybrentq-0.1.3-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 73a698a94d2468108052fef24a1f13458a3acee1501a6a9e4391cd3cc4ea052e
MD5 fb13ef031eb20cbc9b99a1079d838211
BLAKE2b-256 dad3a91ce0417b43b43e5d1d4b1159dfc5202d70fb4ebeb17cb567f9cdc6c6b5

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.3-cp313-cp313-win_amd64.whl:

Publisher: release.yml on gledi-ai/cybrentq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cybrentq-0.1.3-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.3-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8b469b9e63dc82ad6a0feeff3fdbe9bd3ea7fa55867635d5c95c3c5dd420a8fe
MD5 f2449ca38ca6a7f2ba9c4033855ada70
BLAKE2b-256 66abe4d9bd922fc6c84363cc1b4665556c76af8736d32bad02f52f7200150e74

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.3-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: release.yml on gledi-ai/cybrentq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cybrentq-0.1.3-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.3-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 d68b352ef3e80105a1053d5055140cbd1985af0e44db4724efe0c4f711025841
MD5 4f6daedd64e110eed801263c26a6e38b
BLAKE2b-256 26c321f6e8f1e62edf2fc07e48dc0de7f1a5e1b3a59520b620fc4b4378663c1f

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.3-cp313-cp313-musllinux_1_2_aarch64.whl:

Publisher: release.yml on gledi-ai/cybrentq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cybrentq-0.1.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6817c8245857c350abe07b83372b6623fd11601717d5b71310e7562dc36a3ec5
MD5 887b62341036f2e7d59148129d1bb2cb
BLAKE2b-256 8b242b0a9ef7458350994291609aa289c1142a9b4dc1c147c7a0f052d21dfe6f

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on gledi-ai/cybrentq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cybrentq-0.1.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 cec21e1139329565bfdcf7bebe148b6be61082c3a5e4084ca8edc3202bdd2a37
MD5 89c7c5c8075a534d9a5be041d0b56904
BLAKE2b-256 d90ea24fb4106cd74205d9dd0e4386ec715cf8899cf55b44e4f68ed29090161a

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on gledi-ai/cybrentq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cybrentq-0.1.3-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.3-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a94c1e49141015b931d881dad257ead42d70cdee0fd5492d94d32eda86a93fdf
MD5 2b64e8cc70d973b927af6c3c3e0212dc
BLAKE2b-256 07a4c530dbc9509349de99e1bd48b860c5c6b5efd36da3ba6bfd653efad01305

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.3-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: release.yml on gledi-ai/cybrentq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cybrentq-0.1.3-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: cybrentq-0.1.3-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 33.9 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for cybrentq-0.1.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 24d5f8316a1af518210707c6c32088efe7934050b40c2f2616fffa32a0bbf98f
MD5 bae1c51476531de26f03318804d0c2c6
BLAKE2b-256 ec37ffa14ba6a7997815a8d800f5be8ecd91704decb2dd3dd9fb6b25186da0aa

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.3-cp312-cp312-win_amd64.whl:

Publisher: release.yml on gledi-ai/cybrentq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cybrentq-0.1.3-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.3-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7673e696447f3822c4a73342289a4c0c409e5e52a745cf0888b8083896538808
MD5 9e0be4e6b91d401d89ee815c55122364
BLAKE2b-256 dda13cf2d6bb435123f08bcfde45061cc594629a29641e364e1fa1f40db1e1cb

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.3-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: release.yml on gledi-ai/cybrentq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cybrentq-0.1.3-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.3-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 fc18a709a069a61ecfcf426705117e7bea02626a91ae05689c1893487e563fd1
MD5 459c576f5f5ac1ff809bd39d569e653b
BLAKE2b-256 125c4ac05988349576a3577a35386f0a6dbedb676cb6f3242b59f1fa61195c7d

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.3-cp312-cp312-musllinux_1_2_aarch64.whl:

Publisher: release.yml on gledi-ai/cybrentq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cybrentq-0.1.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 eb274eac695b2d88ed1f296f8b9c1d79c1f2cc2aef43dcc7d8ce0e68c0a04898
MD5 c2abaea8f2c59b9d12acb7ba67f3d098
BLAKE2b-256 d6847d0f9a5225010446f27720532a3b0bdb22da6c3a48e3cf7e2576e813e266

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on gledi-ai/cybrentq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cybrentq-0.1.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ab1e3bddfb62787a14854369d94dd07ed59e61938195c1fd7d76a41c17802457
MD5 42c73348603c09e4130cf7698871dfd9
BLAKE2b-256 465298bf4560cefb235883d2a326898964ddc3c6a5d613c5ddb787e2f9da8d62

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on gledi-ai/cybrentq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cybrentq-0.1.3-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3bbb47cb18ff4ec56a3fde6babb56c1e5941267b56ad3d0b8647b5bd5b93ed7f
MD5 abab060c279805fadb9abec3df783689
BLAKE2b-256 9f2eca00404ed95108e585daedbbb4b2332d8a867eb3748231fa972d8f5038c8

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.3-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release.yml on gledi-ai/cybrentq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cybrentq-0.1.3-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: cybrentq-0.1.3-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 33.6 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for cybrentq-0.1.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 fe75d63b79cabd0ec1d92fd1ceda6c503ff2e498d46d1579e44d37e3a800c871
MD5 263f7666d7be31e07183a85d1288f009
BLAKE2b-256 d74b220968ab4707281a810ef331cf232c8374b78b727021308bb138135db670

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.3-cp311-cp311-win_amd64.whl:

Publisher: release.yml on gledi-ai/cybrentq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cybrentq-0.1.3-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.3-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 eedeb26c22d99499517ed67382806749f30110d6409f489bba1aee4e9cd048c7
MD5 7b7665fa04457a30ea657f0667b9db21
BLAKE2b-256 63ffb61d21057d446e8605be9120097ac510a95be2ffcf3924d227510c161cb3

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.3-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: release.yml on gledi-ai/cybrentq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cybrentq-0.1.3-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.3-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 1bf5414a0695589636fd3957cedb7a15a679ed22e5e2a31af807f53351b4f037
MD5 6fc0e164c4f5a2b5d8bb28de5581738a
BLAKE2b-256 904e6ac014aaab8b70fe6f9b94ebadaadfec3449365be2af245e0fa0140e7538

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.3-cp311-cp311-musllinux_1_2_aarch64.whl:

Publisher: release.yml on gledi-ai/cybrentq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cybrentq-0.1.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8ad6a73ac6d2a4706c67e0b9a866a2fa9c8bf25b651727999e9988fe9bf62109
MD5 dd42118aa5b5578a225d000407174c97
BLAKE2b-256 5654462df42a6b21d0dcf423fde04d5237d34be3a6595f04f0bb76297cb96891

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on gledi-ai/cybrentq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cybrentq-0.1.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1336e6b9bb6c8ccb4b2fc7807e32b0187678dcc3e299f4a17288f8f43b7204c6
MD5 256fb77f41c195cab6c22ab26fbdbc67
BLAKE2b-256 68fbbfa47efb18729cf530154c5a79e4373dd17d31ca2de244299d7496353f09

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on gledi-ai/cybrentq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cybrentq-0.1.3-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fbfd2fa29ae6874f187bcedf514f899ee220177b1b7f064af33c34658f846fcd
MD5 dd3c32d39fb34ef12ba5f21bc8a6eca8
BLAKE2b-256 ed74941bcdd30930ff05fc8959f8c75e1d8d868707ae3d97860306de0c9e26b6

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.3-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: release.yml on gledi-ai/cybrentq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cybrentq-0.1.3-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: cybrentq-0.1.3-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 33.7 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for cybrentq-0.1.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 95eaadc97775781b2f9c008712b95e4328d71373329d358b78ca57024f0d027e
MD5 c10e40b69f39ddc261a038892bb9abbc
BLAKE2b-256 a25d939b422bf5f8d87c9d624e691fca8806c2711a8edf13afbc4dbf3beb3eb0

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.3-cp310-cp310-win_amd64.whl:

Publisher: release.yml on gledi-ai/cybrentq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cybrentq-0.1.3-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.3-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7a72f9a8d1519b1522f64ab90f4507e690507a7b93dace708d665359e469c856
MD5 85c4676713e26d8afe209ac94e16bb96
BLAKE2b-256 0cf4d6b010a0fffac8f3fbc7f5b4059f7a781c7a3e865b03a7bfca0eee9aa520

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.3-cp310-cp310-musllinux_1_2_x86_64.whl:

Publisher: release.yml on gledi-ai/cybrentq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cybrentq-0.1.3-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.3-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 603adf4abec8452ab58cbafe7d6d2509dd70c5f14878e346a42bece941a1ae86
MD5 13291ebfb28336937388b083486a57ac
BLAKE2b-256 dbf1cd7f34a3db2f004f8a6e7359e61ca30986d0d7d6683f93dbb9188232e881

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.3-cp310-cp310-musllinux_1_2_aarch64.whl:

Publisher: release.yml on gledi-ai/cybrentq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cybrentq-0.1.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 55870dffff21255ce010e5c693e7ad9854911ce60e9992c9d9a7d2cb9025ac0f
MD5 0c605e973b814edfc4ab2fe66a6afb0a
BLAKE2b-256 598da55b10e2cdbf37e716430c77dc1614a75624f724d832682ffc312feefa53

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on gledi-ai/cybrentq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cybrentq-0.1.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 93e75be8e71642d0d7a9a009af3deae9e0864fadf6907f30a85594f4149576cc
MD5 fc4aad7ab1a32ea78382eaf3cb6ee4a4
BLAKE2b-256 152431e23a457075d1e915f270eb857bbae418af6be22487424a82919f4d8729

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on gledi-ai/cybrentq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cybrentq-0.1.3-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9dcd0a83f366590dea81b54ed78f5e13b23ccdb4eebb16d521926f0cd2fd663d
MD5 1808d6f5b8076a6f3867cd610fbfb440
BLAKE2b-256 9ce1a5dbff27b195ccc244a015a469753a529bf03d8045dd612062a238ffbee3

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.3-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: release.yml on gledi-ai/cybrentq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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