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.1.tar.gz (90.1 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.1-cp314-cp314-win_amd64.whl (104.5 kB view details)

Uploaded CPython 3.14Windows x86-64

cybrentq-0.1.1-cp314-cp314-musllinux_1_2_x86_64.whl (228.9 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

cybrentq-0.1.1-cp314-cp314-musllinux_1_2_aarch64.whl (220.9 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

cybrentq-0.1.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (229.7 kB view details)

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

cybrentq-0.1.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (224.9 kB view details)

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

cybrentq-0.1.1-cp314-cp314-macosx_11_0_arm64.whl (104.2 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

cybrentq-0.1.1-cp313-cp313-win_amd64.whl (102.9 kB view details)

Uploaded CPython 3.13Windows x86-64

cybrentq-0.1.1-cp313-cp313-musllinux_1_2_x86_64.whl (230.2 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

cybrentq-0.1.1-cp313-cp313-musllinux_1_2_aarch64.whl (221.8 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

cybrentq-0.1.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (230.0 kB view details)

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

cybrentq-0.1.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (224.7 kB view details)

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

cybrentq-0.1.1-cp313-cp313-macosx_11_0_arm64.whl (103.1 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

cybrentq-0.1.1-cp312-cp312-win_amd64.whl (103.7 kB view details)

Uploaded CPython 3.12Windows x86-64

cybrentq-0.1.1-cp312-cp312-musllinux_1_2_x86_64.whl (233.9 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

cybrentq-0.1.1-cp312-cp312-musllinux_1_2_aarch64.whl (226.3 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

cybrentq-0.1.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (234.2 kB view details)

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

cybrentq-0.1.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (228.9 kB view details)

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

cybrentq-0.1.1-cp312-cp312-macosx_11_0_arm64.whl (104.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

cybrentq-0.1.1-cp311-cp311-win_amd64.whl (103.3 kB view details)

Uploaded CPython 3.11Windows x86-64

cybrentq-0.1.1-cp311-cp311-musllinux_1_2_x86_64.whl (230.8 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

cybrentq-0.1.1-cp311-cp311-musllinux_1_2_aarch64.whl (224.0 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

cybrentq-0.1.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (230.2 kB view details)

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

cybrentq-0.1.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (226.2 kB view details)

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

cybrentq-0.1.1-cp311-cp311-macosx_11_0_arm64.whl (104.3 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

cybrentq-0.1.1-cp310-cp310-win_amd64.whl (103.5 kB view details)

Uploaded CPython 3.10Windows x86-64

cybrentq-0.1.1-cp310-cp310-musllinux_1_2_x86_64.whl (218.3 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

cybrentq-0.1.1-cp310-cp310-musllinux_1_2_aarch64.whl (212.8 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

cybrentq-0.1.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (217.3 kB view details)

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

cybrentq-0.1.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (214.3 kB view details)

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

cybrentq-0.1.1-cp310-cp310-macosx_11_0_arm64.whl (104.5 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: cybrentq-0.1.1.tar.gz
  • Upload date:
  • Size: 90.1 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.1.tar.gz
Algorithm Hash digest
SHA256 ca1c5d715434fd971750be28392e7d16f24dc797a1348930b080846d01a19d3f
MD5 23177246d166b6ea6953b58e89ee1b20
BLAKE2b-256 879d4887ef6b02d86d41b3281ea71c9feccbb73edddc2c6232040ebf2554b330

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.1.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.1-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: cybrentq-0.1.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 104.5 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.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 5270bd98d53c29f0781faa5e46d65b10b6fadb6ca12007c1eeedd88a2e8c8bad
MD5 11f2894462c98259e652faeebdde78c0
BLAKE2b-256 ccaa2591c19883b607becaa666276f9b23370e0db230e22cd188d4710beea34b

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.1-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.1-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.1-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 45648a61407ede46fe35d01bf79fa1b318a359c737d025b30422958ecdc1cfec
MD5 c70f67c2469db020079eb69f7d7caef0
BLAKE2b-256 0b784885e01dd47bde7024a9b56fc017d48021992402b62098b93e6bcf9eb3dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.1-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.1-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.1-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e63dd28f682ba12aa3e3461ff189478076ee375954fa8339e94e1ec1808b48e6
MD5 4b280355813d6fe9277d20da63090dea
BLAKE2b-256 52b055e3e4d3b830a05d82172b3463fa6ece08c26ace35b0c630f5399832e4d4

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.1-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.1-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.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6d597b38f7c0295c8bc82a455f5d21369bb8a6155ad63dcc1828af89e28a8903
MD5 8ef1e5cf72fbfb39f1e2b823a144c628
BLAKE2b-256 3274665659a9a7d5c1c32fcca9189392925c92a8059807429575185538bf47fa

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.1-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.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0f6cc1ce49e03fb143d7f753a08b9f60518dc02cc928012257a176c5b280b0c2
MD5 64f9d3c67cd09db2155cc833250fe1ab
BLAKE2b-256 670c491cdf20c751416d036994a2afe29fc75ee7866221d694de1caf55d0b2d6

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.1-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.1-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7ce22e7c44fa972c7cc3e5426da811060a8018e842c0ef151f9c08a9987ef9c3
MD5 2371fdd75f6bd843855d5c97c2904fdd
BLAKE2b-256 522c55ec48b21265f9bd9be52f04054305bc3f05fc638bd67992e46c099bd2af

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.1-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.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: cybrentq-0.1.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 102.9 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.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 c024f60ad033ba50839cf73a68e623fa3a936c019ed095a81e9b805d0fd9b6de
MD5 cf26fbb03a696e30b19fd5ad404981b3
BLAKE2b-256 7559b66d64fca0268c6d96feaf91273767c96d6ed00100396a558438b778494c

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.1-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.1-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.1-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c2c4f989b0d1623a4d24f78cfc40cbaf1164496658a17fdb662a52f455a1941c
MD5 f004f0e240148b4e829858f9206b6b19
BLAKE2b-256 222a06f8f15d3801b97807416bcc68d483102ceaef2a211c7611129f8164d5b8

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.1-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.1-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.1-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e09fdeacd7e19c9753282530759c0a2b049ab8b73ce44061843d39f4d58f20e8
MD5 3b9b5548ad3a7a43f4760ac491e53f57
BLAKE2b-256 8f68cdde814f7e588645bf27abe103268e2bd4d41a943b4075e8568017884a2b

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.1-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.1-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.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4d296cbc8c8dff457206c50b84f75b176604699411427103fe56b85241628f98
MD5 2d182462e40d2eb5cff0fce95ee31528
BLAKE2b-256 f1aa283fd30f8e60439d236182123b59c16d37842ecd6a586c08dc6ccf2fbcc2

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.1-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.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3c8ca08a5b5259aba41858164f69b76497ca1206887a0ee40240837c2c6cb33c
MD5 bf15b8b3acbf98deb38d14594f92df6d
BLAKE2b-256 28c46a94247e71e9ba19a11c0b3504aa05359a2b32852a46f9166c7ad5d6f0a1

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.1-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.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bc3481794832b29b511f091e41e0ef73d6172a6cc1b67f42cd20f9a05a99f7db
MD5 4d4352cc41f2c067a0a8fe35d5ed34ef
BLAKE2b-256 886d6c322ef8547fc59c2f1a1757abec7446200743de1b3291c4f493913accf3

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.1-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.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: cybrentq-0.1.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 103.7 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.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 52ff23af3f273f2b6abd8879c9594844c78430fce3b75acccaedca561c2d0487
MD5 1e35bd6461ac90527adc2405e880ca4d
BLAKE2b-256 ac703136ea249f49cf0eeb03167ac568a31b8b64c1a48b5ca40f879cae9b793a

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.1-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.1-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c365f0d0a0e352987a06e96dc5472d540a9a79eae8ec0a64118b73970a48d379
MD5 9da059c3cbee768e2518bb9ef4c95b79
BLAKE2b-256 1505e1adf5c582e3232d744f4957f6f0879297d86e9d1bb8afd348c881551b87

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.1-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.1-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.1-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 8813d2bb763d6d96862eede15a7d82181f625895371230ea0fd3c83272f596e3
MD5 9845459a86e1b2833c524c8b7a0b1baf
BLAKE2b-256 d1a60ed4ef45e23c4d529ca20f155331d1ce204a314ca7024d782cd6ad6c9219

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.1-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.1-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.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 696705c08ff552b3e167917f93128b286cac049fcf358ef72ad65838e387256b
MD5 32cb374bffdb77c0bf756029dccd1e12
BLAKE2b-256 e5fd5c5c339dad08388bdc2ded29b99da40dea50b1935c8fb3f6264ed99b2bc9

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.1-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.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 88e48c7d4a04489a440bcc1e703b11ad97dad98d1b48034b0384d6b97c1c729b
MD5 47c98dd1bc31cd7638a96f096222d271
BLAKE2b-256 88b74354da575493f518e8389bbe0cbb3dd32f10eda46ca8f4c7b7da69eaf544

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.1-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.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 61c2d4ac56e463b5a37e6886db796574cea3403ad348480cc52e51dd646c811c
MD5 fe3915e93a572fafe8866f018342a77f
BLAKE2b-256 d50dfa312464a593af3e63f44c2ca0efbe0ffe1e8cabe367ddcdad4eddc8d59c

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.1-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.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: cybrentq-0.1.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 103.3 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.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 996ba2521492d2f9163cb156be14236e9d920262a4646fff6c7d34064890f6b8
MD5 8a88c7d47625f8937e067be84596904d
BLAKE2b-256 263a2b844af6975434de573121b5ad896d48b3e719b717fd8d38f3359dc97293

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.1-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.1-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.1-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 04ea2e1bd5ac0fefeb74021c3016dca56417af9153e94451746c90543947244e
MD5 b9e03f9c9b93fc58fd10a4b37cc1dcc5
BLAKE2b-256 42c5b9e1bcb4d7cfb7b6faf288fbb04f9923b2aed9dc0db1b3aeac4ff5f05c7c

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.1-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.1-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.1-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 213268ddc2cf43a3a8bd1fc778028dd5ba4ea08b09adb32edcb52d21e09abde4
MD5 a46ff2ffef6302c7781db84fc5ebe7ad
BLAKE2b-256 f3076cf893182c2a4d0de0830637940f47b15a056fd6677bc33070ac7d9dc2b6

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.1-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.1-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.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 88f0fa697d7d2c88d6c54dacd9b15a03724428d0f7b13305cdce0f1a9ecd4d3e
MD5 b7af79c1a533c01635f5f7a4029da795
BLAKE2b-256 6531e05cc23ab509e12241c0eb0825a03195e0fa1869d6531361bf71a3a8a010

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.1-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.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9e5f6b1d8474eb112099e73c73483eae319398d51ac2f2d9d4b452caf5c5a676
MD5 a30978f6372dba73af1ab02c6004ee8d
BLAKE2b-256 0d77826d14916b7aad7d06c5391ece91e3bb9802dac1510fd55b1841fd0eb249

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.1-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.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a06b4dddc84f2f94a1e38ca8b4dd9feda2038800438e9dd87622f33831dee019
MD5 284589d70538ed7870460b334b8da8ba
BLAKE2b-256 b9e520b209e41bf974333af0181fe753f00d89e722a154d6e2b10cf74cb5f96b

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.1-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.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: cybrentq-0.1.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 103.5 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.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 f54e4567dcee1ef6545953401f0303e18a8ccc06e5528ab89acd5f80adaf7588
MD5 42255552096b2fe59065787a4cfcc3d8
BLAKE2b-256 2dedea91f6bf5b4f25ad9992c774efc9f2c9132e6ac9d524d7793367e806d1bf

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.1-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.1-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.1-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7748eae83b4d1d51bb1826dc0e9607fd6c118396f9b3ea8f8ebc8ed42f60b0aa
MD5 5c8fd9cbf8da195a7593b205d7b35dd6
BLAKE2b-256 b30f41a03506d4ba89ef1fc455d7f1153607e744a93f91dbbe92887274d83b49

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.1-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.1-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.1-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a39e493449a5627e86b739324abf00a0a05126b5f4d3f3638b7ee25617b600d5
MD5 10a208ee600e1517d654b0ff0d246391
BLAKE2b-256 0fea16cc3283952d87249fb1087935ddc80609989862fec292770b14d1db2eba

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.1-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.1-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.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 843c65b7adccd11fa530533f6ed937e39807bb04164029861a503d7076f06575
MD5 0963361dc2d567fed62d66eab4d39296
BLAKE2b-256 806b07f908ca68ee623eea57a12b5eec13d72b67a21c6352ed009ac7d538485b

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.1-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.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 371d2b2d212a7b0d57ee8e7dd66a753ef8ca2bfdd83209ba33e0da4bdd121d8b
MD5 4b7db4a2765e6954a75e611d7c90131a
BLAKE2b-256 42ee5ea879906aac2e6b79cb9d11aec414b8c68a5b3e124f003afc867a226169

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.1-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.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cybrentq-0.1.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4a470349d4d044d67e1eae2ee452aae18583fb475cb6627fd9b80827f990a3f1
MD5 b72b3fbf39b53c4eaa354cb050204055
BLAKE2b-256 e7abc39977528480f8b41932a476f69981beca59e105a0dce9437a3c81eb7b2d

See more details on using hashes here.

Provenance

The following attestation bundles were made for cybrentq-0.1.1-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