Skip to main content

Fast Python progress bars with a C++ core. Windows-first.

Project description

BarFlow

A fast Python progress bar library with a C++ core. Windows-first. Built to beat tqdm, rich.progress, and alive-progress on cold import, per-iteration overhead, peak it/s, memory footprint, tail latency, multi-bar throughput, and first-frame latency — simultaneously.

import barflow

# Fastest: `for _ in progress:` runs at 160+ M it/s — faster than
# a bare `for _ in range(n): pass` because Py_None is immortal.
with barflow.Progress(total=n, desc="Crunching") as p:
    for _ in p:
        do_work()

# When you also need the iterated values:
for x in barflow.track(range(1_000_000), desc="Working"):
    ...

# Event-driven / manual:
with barflow.Progress(total=n, desc="Streaming") as p:
    for chunk in data:
        process(chunk)
        p.advance(len(chunk))

Benchmarks

Numbers below are from benchmarks/bench.py on Windows 11 / Python 3.13 / N = 20,000,000 iterations (5 runs per data point, best wall time for rate measurements, min CPU time for CPU measurements). Baseline bare for _ in range(n): pass is 145.75 M it/s (6.9 ns/iter, 140.6 ms of CPU). Raw output lives in benchmarks/bench_raw.md; methodology and platform notes are in benchmarks/results.md.

Headline

Axis BarFlow tqdm rich alive-progress
Cold import (ms) 1.21 72.27 74.96 30.12
Overhead, for _ in p: (ns/iter) 0.0 7.4 471.9 384.9
Overhead, track(...) (ns/iter) 3.0 7.4 471.9 384.9
Peak it/s, display off 160.8 M 70.2 M 2.1 M 2.6 M
Peak it/s, display on 101.8 M 19.6 M 2.1 M 2.1 M
Python heap peak (1 M iters) 486 B 298 KB 661 KB 3.4 MB
Tail latency p99.9 (ns) 100 200 2,200 2,200
First-frame latency (µs) 32 97 921 n/a
Multi-bar, 4 tasks (M it/s) 43.9 M 8.8 M 2.2 M n/a
Metadata churn (M it/s) 29.6 M 6.6 M 2.0 M 1.9 M
Total CPU, display on (ms for 20 M) 188 953 9,297 9,391

BarFlow wins on every axis — 25–62× faster cold import, zero measurable overhead on its iteration fast path (faster than a bare for _ in range(n) because Py_None is immortal on 3.12+ and skips the store-cycle refcount work that range's small-int yields incur), 5.2× display-on throughput vs tqdm, ~50× vs rich / alive, 600×+ less Python heap peak, 2× tighter tail latency, 3× faster first-frame paint than tqdm, and ~50× less CPU than rich / alive over 20 M iterations. The sub-1.0 CPU/wall ratio reflects the decoupled render thread: it wakes on a 50 ms timeout, formats into a preallocated buffer, and spends most of its life parked on a condition variable, so the producer loop never pays for rendering inline.

Import startup (median, baseline-subtracted, 11 runs)

Library Cold import (ms) vs BarFlow
barflow 1.21
alive 30.12 25×
tqdm 72.27 60×
rich 74.96 62×

Measured by timing python -c "from <lib> import ..." in a subprocess and subtracting a bare-interpreter baseline (python -c "pass"), so the number is just the work the library does at import time. BarFlow's module graph is deliberately lazy: themes, columns, style, spinners, hooks, and aio are all resolved on first attribute access via __getattr__, so the cold import only pays for the C extension load and an __init__.py that does nothing but expose Progress, Tracker, and track.

No-display hot path — pure per-tick overhead

Display is disabled (disable=True where the library supports it) so we measure the cost of advancing the counter, not rendering. ns/iter is over the bare for-loop baseline.

Variant M it/s ns/iter over baseline
barflow-iter 160.76 0.0
barflow-track 101.13 3.0
tqdm 70.23 7.4
barflow-tick 65.39 8.4
alive 2.55 384.9
rich 2.09 471.9
  • barflow-iter is for _ in p: — BarFlow's Progress type implements the iteration protocol directly, so FOR_ITER dispatches tp_iternext without the CPython vectorcall trampoline. The iternext body is three x86 instructions (load, fetch_add, return Py_None), and Py_None's immortal refcount on 3.12+ means the loop's STORE_FAST _ is free. Net result: below the bare for-loop baseline, because a range-driven loop still does refcount work on its cached small-int yields.
  • barflow-track is the for x in barflow.track(iterable): wrapper, used when you also need the yielded values.
  • barflow-tick is the manual Progress.tick() call from Python, which pays the full CPython vectorcall dispatch overhead per call. Use the iteration protocol above when you don't have a source iterable.

Display on — throughput with a live renderer

Comparator libraries write into an io.StringIO sink with force_terminal=True so no real console I/O is measured. BarFlow writes to its native Windows console path (no sink parameter), which makes the comparison conservatively worse for BarFlow.

Library M it/s vs BarFlow
barflow 101.76
tqdm 19.57 5.20×
rich 2.11 48×
alive-progress 2.09 49×

BarFlow's render loop emits delta frames: each column's previously-rendered bytes are cached, and on the next frame the render thread emits \x1b[<n>C (cursor-right) over unchanged spans instead of re-writing the bytes. On a real TTY this cuts bytes-written per frame by roughly 60% for the default layout; the sink-based benchmark above does not exercise the delta path, so the number you see is the lower bound — real terminals get more.

Memory footprint

Library tracemalloc peak RSS import RSS run
barflow 486 B 236 KB 192 KB
tqdm 298 KB 6.83 MB 992 KB
rich 661 KB 6.58 MB 1.77 MB
alive-progress 3.41 MB 1.64 MB 3.79 MB

tracemalloc peak is the high-water mark of the Python heap over a 1 M-iteration run (bench_memory.py). BarFlow's ~500 bytes is effectively one Progress object's shell — the counter, output buffer, render thread, and render scratch all live in C-owned storage that tracemalloc cannot see. Competitors allocate hundreds of KB to several MB of Python objects per run.

Tail latency (per-iter distribution, display on)

Library p50 p90 p99 p99.9 max
barflow 100 ns 100 ns 100 ns 100 ns 7.80 µs
tqdm 100 ns 200 ns 200 ns 200 ns 28.00 µs
rich 500 ns 600 ns 800 ns 2.20 µs 153.20 µs
alive-progress 500 ns 600 ns 700 ns 2.20 µs 138.00 µs

Per-iter timestamps recorded with perf_counter_ns() across 100 K iterations; bench_tail_latency.py. BarFlow is the only library whose p99.9 does not diverge from its p50 — the render thread never spills work onto the producer, so there is no jitter source to create tail spikes.

First-frame latency (__enter__ to first byte)

Library median min p90
barflow 32 µs 28 µs 41 µs
tqdm 97 µs 93 µs 109 µs
rich 921 µs 845 µs 1.05 ms

BarFlow paints a synchronous first frame on Progress.__enter__ before the render thread takes over, eliminating the 50 ms "blank bar" window that would otherwise be visible for short-lived jobs. Measured by bench_first_frame.py.

Multi-bar throughput (4 concurrent tasks)

Library wall time aggregate
barflow 22.8 ms 43.9 M it/s
tqdm 114.1 ms 8.8 M it/s
rich 465.8 ms 2.2 M it/s
alive-progress skipped (no clean multi-task API)

4 tasks × 250 K ticks each, driven round-robin from one thread (bench_multibar.py). BarFlow stays lock-free — every task has its own cache-line-padded counter, and the render thread walks the task vector under a mutex that the hot path never touches.

Metadata churn (description updated every 1 K iters)

Library wall time it/s
barflow 33.8 ms 29.6 M
tqdm 152.4 ms 6.6 M
rich 514.1 ms 2.0 M
alive-progress 526.9 ms 1.9 M

1 M ticks, set_description called every 1000 ticks with a pre-generated 40-char string (bench_metadata_churn.py). BarFlow exposes set_description(str) and set_task_description(task_id, str) that briefly acquire the render mutex to swap the description; the lock-free tick hot path is unaffected.

CPU cost — render thread counted

time.process_time() sums user+system time across every thread of the process (Windows GetProcessTimes, Linux CLOCK_PROCESS_CPUTIME_ID, macOS task_info), so a background render thread cannot hide from this measurement.

Library Mode CPU ms (best of 5) Extra ns/iter CPU / wall
barflow display-off 187.5 2.3 0.96
barflow display-on 187.5 2.3 0.96
tqdm display-off 265.6 6.2 0.93
tqdm display-on 953.1 40.6 0.95
alive-progress display-off 7,671.9 376.6 0.98
alive-progress display-on 9,390.6 462.5 0.98
rich display-off 9,437.5 464.8 0.96
rich display-on 9,296.9 457.8 0.98

Two things stand out:

  1. BarFlow's CPU cost is identical whether the display is on or off. Turning the bar on adds no measurable per-iter CPU because the render thread wakes on a 50 ms condition-variable timeout and spends the rest of its life parked. The producer loop sees the same hot path in both modes.
  2. tqdm's CPU grows 3.6× when the display turns on (266 → 953 ms), because rendering runs inline on the producer thread. Rich and alive-progress sit near ~50× BarFlow's CPU cost in both modes — they pay hundreds of nanoseconds of dict/lock work per advance() call before any rendering happens.

Caveats / reproducibility

  • Numbers are from a single Windows 11 box; absolute values will differ on Linux / macOS but the ratios are stable in repeated runs. Re-run python benchmarks/bench.py --n 20000000 --runs 5 to reproduce the main table, and python benchmarks/bench_*.py for each extra axis (tail latency, memory, first-frame, multi-bar, metadata churn).
  • tqdm is run with mininterval=0.05 (matching BarFlow's default) rather than its out-of-box 0.10, so the comparison isolates per-render work from render frequency instead of giving tqdm a free 2× render-skip advantage.
  • time.process_time() resolution is ~15 ms on Windows, so the smallest CPU numbers (barflow: 187 ms) sit only ~12 ticks above noise floor. Differences against tqdm (5×) and rich/alive (~50×) are well outside that window.
  • Display-on throughput is measured against an io.StringIO sink, which skips Windows console latency. On a real TTY, BarFlow's delta-render (cursor-advance over unchanged column spans) gives it additional headroom that the StringIO harness cannot see.

Install

pip install barflow

Wheels are published for Windows (AMD64), Linux (x86_64, aarch64), and macOS (x86_64, arm64) for CPython 3.13 and 3.14, including the free-threaded cp313t / cp314t builds.

Features

  • Zero-overhead iteration. for _ in progress: runs at 160+ M it/s — below the bare for _ in range(n) baseline, because FOR_ITER dispatches directly to tp_iternext (no vectorcall trampoline) and Py_None is immortal on 3.12+ (no refcount work on STORE_FAST).
  • C++ hot path. tick, advance, and Tracker's iter-next are single std::atomic::fetch_add calls with no locks and no Python-level bookkeeping. Task counters are cache-line padded so the render thread's reads never false-share with producer writes.
  • Decoupled renderer. A background thread wakes on a 50 ms condition-variable timeout and formats into a preallocated buffer. The producer never blocks.
  • Delta-render. The render loop caches each column's previous bytes and emits \x1b[<n>C cursor-advance over unchanged spans instead of rewriting the frame. Roughly 60% fewer bytes written per frame on the default layout.
  • Synchronous first frame. Progress.__enter__ paints one frame inline before the render thread takes over, so short-lived jobs don't see the 50 ms blank-bar window.
  • Windows-first. Unconditional ENABLE_VIRTUAL_TERMINAL_PROCESSING, UTF-16 transcoded WriteConsoleW chunked at 32 KB, legacy-console fallback. No colorama dependency. A reusable wscratch transcoding buffer means steady-state frames are zero-alloc.
  • Multi-task + columns. 9 built-in column types (description/bar/percent/count/rate/elapsed/eta/spinner/text), rich-style column API, themes, ANSI cursor stacking for nested bars. Progress.set_description(str) and set_task_description(task_id, str) expose metadata churn without touching the lock-free hot path.
  • Spinner DSL. Compositional factories (frame / scrolling / bouncing / alongside / sequential) compile to precomputed frame tables at __enter__.
  • print() interception. capture_output=True reroutes sys.stdout through write_above() so user prints appear above live bars without tearing.
  • asyncio. barflow.aio.atrack(aiter) wraps async iterables.
  • Tiny cold import. import barflow is ~1.2 ms (baseline-subtracted median) — 25–62× faster than the alternatives. All non-core submodules (themes, columns, spinners, style, hooks, aio) are lazy-loaded via PEP 562 __getattr__.
  • Sub-kilobyte Python heap. Peak tracemalloc usage across a 1 M-iteration run is ~500 bytes, vs 300 KB (tqdm), 660 KB (rich), and 3.4 MB (alive-progress).

Usage

import barflow
from barflow.columns import (
    SpinnerColumn, DescriptionColumn, BarColumn, PercentColumn,
    CountColumn, RateColumn, EtaColumn,
)

# Simplest form — when you need the iterated values
for x in barflow.track(range(1000), desc="task"):
    ...

# Fastest form — when you just need a counter
with barflow.Progress(total=1000, desc="task") as p:
    for _ in p:
        do_work()

# Custom columns
with barflow.Progress(
    SpinnerColumn(name="dots"), " ",
    DescriptionColumn(), " ",
    BarColumn(width=40, color="magenta"), " ",
    PercentColumn(), "  ",
    CountColumn(), " | ", EtaColumn(),
    total=1000, desc="build",
) as p:
    for _ in range(1000):
        p.tick()

# Named theme
with barflow.Progress(theme="classic", total=1000) as p:
    ...

# Multi-task
with barflow.Progress(theme="classic") as p:
    dl = p.add_task(total=100, desc="download")
    ex = p.add_task(total=100, desc="extract")
    for i in range(100):
        p.update(dl, 1)
        p.update(ex, 1)

# Live prints during a bar
with barflow.Progress(total=100, capture_output=True) as p:
    for i in range(100):
        if i % 10 == 0:
            print(f"checkpoint {i}")   # appears above the bar
        p.tick()

# asyncio
import asyncio, barflow.aio as aio
async def main():
    async for x in aio.atrack(some_async_iter(), total=1000):
        ...
asyncio.run(main())

Design

See docs/DESIGN.md for the full architecture: atomic hot path, background render thread, column pipeline, Windows console handling, and the benchmarks methodology.

Build from source

Requires Visual Studio 2022+ (Windows) or GCC/Clang + Python headers (POSIX) and Python ≥ 3.13.

# Windows
build.bat

# POSIX
python -m pip install -e .

License

MIT. See LICENSE.

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

barflow-0.2.1.tar.gz (89.7 kB view details)

Uploaded Source

Built Distributions

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

barflow-0.2.1-cp314-cp314t-win_amd64.whl (90.4 kB view details)

Uploaded CPython 3.14tWindows x86-64

barflow-0.2.1-cp314-cp314t-musllinux_1_2_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

barflow-0.2.1-cp314-cp314t-musllinux_1_2_aarch64.whl (1.4 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

barflow-0.2.1-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (462.9 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

barflow-0.2.1-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (446.1 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

barflow-0.2.1-cp314-cp314t-macosx_11_0_arm64.whl (79.8 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

barflow-0.2.1-cp314-cp314t-macosx_10_15_x86_64.whl (80.9 kB view details)

Uploaded CPython 3.14tmacOS 10.15+ x86-64

barflow-0.2.1-cp314-cp314-win_amd64.whl (89.3 kB view details)

Uploaded CPython 3.14Windows x86-64

barflow-0.2.1-cp314-cp314-musllinux_1_2_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

barflow-0.2.1-cp314-cp314-musllinux_1_2_aarch64.whl (1.4 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

barflow-0.2.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (454.3 kB view details)

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

barflow-0.2.1-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (438.4 kB view details)

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

barflow-0.2.1-cp314-cp314-macosx_11_0_arm64.whl (79.2 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

barflow-0.2.1-cp314-cp314-macosx_10_15_x86_64.whl (80.2 kB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

barflow-0.2.1-cp313-cp313t-win_amd64.whl (89.0 kB view details)

Uploaded CPython 3.13tWindows x86-64

barflow-0.2.1-cp313-cp313t-musllinux_1_2_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

barflow-0.2.1-cp313-cp313t-musllinux_1_2_aarch64.whl (1.4 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

barflow-0.2.1-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (462.7 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

barflow-0.2.1-cp313-cp313t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (445.9 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

barflow-0.2.1-cp313-cp313t-macosx_11_0_arm64.whl (79.9 kB view details)

Uploaded CPython 3.13tmacOS 11.0+ ARM64

barflow-0.2.1-cp313-cp313t-macosx_10_13_x86_64.whl (80.8 kB view details)

Uploaded CPython 3.13tmacOS 10.13+ x86-64

barflow-0.2.1-cp313-cp313-win_amd64.whl (88.1 kB view details)

Uploaded CPython 3.13Windows x86-64

barflow-0.2.1-cp313-cp313-musllinux_1_2_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

barflow-0.2.1-cp313-cp313-musllinux_1_2_aarch64.whl (1.4 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

barflow-0.2.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (454.3 kB view details)

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

barflow-0.2.1-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (438.3 kB view details)

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

barflow-0.2.1-cp313-cp313-macosx_11_0_arm64.whl (79.3 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

barflow-0.2.1-cp313-cp313-macosx_10_13_x86_64.whl (80.2 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

File details

Details for the file barflow-0.2.1.tar.gz.

File metadata

  • Download URL: barflow-0.2.1.tar.gz
  • Upload date:
  • Size: 89.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for barflow-0.2.1.tar.gz
Algorithm Hash digest
SHA256 178884aa0e7ae3798a76f0e8f85b16cf3fcc588280f32658b7b1d5e500a6e3e3
MD5 c20690ae644d4366b7987a69776a1cb2
BLAKE2b-256 20db388ff4d3fc6b0ff61ff85f842755ccb600edcd8be5480bd5f69937139914

See more details on using hashes here.

Provenance

The following attestation bundles were made for barflow-0.2.1.tar.gz:

Publisher: wheels.yml on NevermindNilas/barflow

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

File details

Details for the file barflow-0.2.1-cp314-cp314t-win_amd64.whl.

File metadata

  • Download URL: barflow-0.2.1-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 90.4 kB
  • Tags: CPython 3.14t, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for barflow-0.2.1-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 a2f5d925f5060dc2e46ead82bbb625e826328cde3db585ed827d19aeee0a182b
MD5 d6bbeb62a76422a28444f7b78b1ca183
BLAKE2b-256 9104649ac15ce997c06e0924175d091ece5ec1639dfab2a38aa5f4cc2bcb7127

See more details on using hashes here.

Provenance

The following attestation bundles were made for barflow-0.2.1-cp314-cp314t-win_amd64.whl:

Publisher: wheels.yml on NevermindNilas/barflow

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

File details

Details for the file barflow-0.2.1-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for barflow-0.2.1-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 04c41dabf235460fc0ec66462ed7eaccb6b3d8c779534d3017203468504cca11
MD5 f9d3b21e7264f4f64b5a914e8d760eec
BLAKE2b-256 d80365d5c67efb9d7cd17f5a543262c248aecc6b0462eff5de2bce5e82cc9fba

See more details on using hashes here.

Provenance

The following attestation bundles were made for barflow-0.2.1-cp314-cp314t-musllinux_1_2_x86_64.whl:

Publisher: wheels.yml on NevermindNilas/barflow

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

File details

Details for the file barflow-0.2.1-cp314-cp314t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for barflow-0.2.1-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 8f01fac1f7a4dd68ed40dbdfe0045cd518582cf6f5fc82bb8d63a18ab603588f
MD5 7b2b440f52800bc12fe7ca5f902e7628
BLAKE2b-256 b859645cdc4a6dc9f4dfdcc48c95d7b1d80d711b74e29cdf34b3af7f71e094a6

See more details on using hashes here.

Provenance

The following attestation bundles were made for barflow-0.2.1-cp314-cp314t-musllinux_1_2_aarch64.whl:

Publisher: wheels.yml on NevermindNilas/barflow

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

File details

Details for the file barflow-0.2.1-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for barflow-0.2.1-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 935d1dbf62156e3c90794cb2d32fc9c7b8b6715009d83c94f625b1e3b3f54a54
MD5 0608f7994128a7d598c9f80b3248d706
BLAKE2b-256 85716cae29182d52ac9ee40f746734426e7890fa736e2b2d97728c95bf6923a5

See more details on using hashes here.

Provenance

The following attestation bundles were made for barflow-0.2.1-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on NevermindNilas/barflow

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

File details

Details for the file barflow-0.2.1-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for barflow-0.2.1-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 cb74f894ceb121dd42fa069c7505e6b8858bbed019923adadfcb195aebdefe1c
MD5 f5ca9e14317100b7f3d247706b5f44cf
BLAKE2b-256 bb10643173d77c65a78b197849ff083f420dc65b34336a32bde963999a0edfed

See more details on using hashes here.

Provenance

The following attestation bundles were made for barflow-0.2.1-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on NevermindNilas/barflow

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

File details

Details for the file barflow-0.2.1-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for barflow-0.2.1-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 45c1b792255a78e06884e5b2b0a82138d6175c38affe44f639a0a020d7f7514e
MD5 22d2e5682cdd416d9002a180b75ac138
BLAKE2b-256 d3c03bfec79bca028c8da6ede7f91b5e66302fec9cfcf7ff39ff79d304d74dde

See more details on using hashes here.

Provenance

The following attestation bundles were made for barflow-0.2.1-cp314-cp314t-macosx_11_0_arm64.whl:

Publisher: wheels.yml on NevermindNilas/barflow

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

File details

Details for the file barflow-0.2.1-cp314-cp314t-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for barflow-0.2.1-cp314-cp314t-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 dd7be4d33d02564a2ba2f1e3b9a6f5b496e0d581b0327f3929bfd86c39efd7e5
MD5 42081c0039af4e8957b96459b9c33fb9
BLAKE2b-256 f801c5d4415e8013c46ccac605bf700c7f6229509dda5bcb837cb2a3773bb7f5

See more details on using hashes here.

Provenance

The following attestation bundles were made for barflow-0.2.1-cp314-cp314t-macosx_10_15_x86_64.whl:

Publisher: wheels.yml on NevermindNilas/barflow

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

File details

Details for the file barflow-0.2.1-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: barflow-0.2.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 89.3 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for barflow-0.2.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 7c6dbbe478879ee1901eeede5c7e84c8954ee5aa9c1f273d0dc9db4a068aa463
MD5 386ff6e85288c8ddc2d39a90334d963a
BLAKE2b-256 677d671b4963b4e7831fa20fb4801a52e08103dd26ba76219e95a4b4c3f5a76b

See more details on using hashes here.

Provenance

The following attestation bundles were made for barflow-0.2.1-cp314-cp314-win_amd64.whl:

Publisher: wheels.yml on NevermindNilas/barflow

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

File details

Details for the file barflow-0.2.1-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for barflow-0.2.1-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 063a3401ea98d2361fc599d9aff9991cfedfa62d6d6c6ee2515f10f596a7c956
MD5 cd7cf16e06b59bd7ea2b129c270bd6f9
BLAKE2b-256 ca9eef5c1f385845d81461f6d376e62addb12c71fca8027597bfc2356ec07007

See more details on using hashes here.

Provenance

The following attestation bundles were made for barflow-0.2.1-cp314-cp314-musllinux_1_2_x86_64.whl:

Publisher: wheels.yml on NevermindNilas/barflow

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

File details

Details for the file barflow-0.2.1-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for barflow-0.2.1-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 1202638fe9dc159caf9b84c167561fdf6cd733199e65ee7c8f689181bb0093de
MD5 35dbe2604d793d1c095872a91f863075
BLAKE2b-256 3cc7567c8af8ee09625f7133cd131f694d890ecaae77175e60166d95658e156c

See more details on using hashes here.

Provenance

The following attestation bundles were made for barflow-0.2.1-cp314-cp314-musllinux_1_2_aarch64.whl:

Publisher: wheels.yml on NevermindNilas/barflow

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

File details

Details for the file barflow-0.2.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for barflow-0.2.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 51d1a276f5e8739d79fe742855f57ef2b6609b3039fa6dd6c33bd35060a58160
MD5 8acea7589847a441401bd4749f11c53e
BLAKE2b-256 d8da2095358d3c58a05c6737a348e39ad1e4e4427abdec688a282049ef12066a

See more details on using hashes here.

Provenance

The following attestation bundles were made for barflow-0.2.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on NevermindNilas/barflow

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

File details

Details for the file barflow-0.2.1-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for barflow-0.2.1-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6c2492237c18ab2e2198a5b6bc8beb41c36746bbada72c9eec286103eb659070
MD5 8c3eef18f11121c3c3fbdca54e96b395
BLAKE2b-256 211528c6ddf259652a8d7570f5bcadea57fc32f12bd5d52e675a6b0f2d222cc1

See more details on using hashes here.

Provenance

The following attestation bundles were made for barflow-0.2.1-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on NevermindNilas/barflow

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

File details

Details for the file barflow-0.2.1-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for barflow-0.2.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2ec0206f5572ecdc1f2584ec56652f3a4bcba61ca17de72c084503436bf1a257
MD5 959ffd252364ec207f44b4f2dbb81d07
BLAKE2b-256 3ca6ff223e0827e78829b0e4dc7e05f563961dcf3f604bd963beca1373781e8f

See more details on using hashes here.

Provenance

The following attestation bundles were made for barflow-0.2.1-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: wheels.yml on NevermindNilas/barflow

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

File details

Details for the file barflow-0.2.1-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for barflow-0.2.1-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 d0176349ca2f4ee482b5105ddb9f9608eceb655d070db07bafe0a51ab546a9c3
MD5 7187c926b7e9d6f5bab210cf47b6842c
BLAKE2b-256 dd663235383e35997df38c98b286b2341c9536cfeb293b14de712504d862e77d

See more details on using hashes here.

Provenance

The following attestation bundles were made for barflow-0.2.1-cp314-cp314-macosx_10_15_x86_64.whl:

Publisher: wheels.yml on NevermindNilas/barflow

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

File details

Details for the file barflow-0.2.1-cp313-cp313t-win_amd64.whl.

File metadata

  • Download URL: barflow-0.2.1-cp313-cp313t-win_amd64.whl
  • Upload date:
  • Size: 89.0 kB
  • Tags: CPython 3.13t, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for barflow-0.2.1-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 e22b527f38838334aa1caa386e6ac03d6f8b376c8219a7c896db9dee6c87c7df
MD5 4683f560e0eaef16b3675b74a1810494
BLAKE2b-256 b6d5354923afd8714a2c391807f22a7de8327930ab43321e74bafd9c8b0f5678

See more details on using hashes here.

Provenance

The following attestation bundles were made for barflow-0.2.1-cp313-cp313t-win_amd64.whl:

Publisher: wheels.yml on NevermindNilas/barflow

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

File details

Details for the file barflow-0.2.1-cp313-cp313t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for barflow-0.2.1-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9dc63484bb17393761bd5e8370bce51ef639d27c0480feb0ed0c27266f8cfe51
MD5 f36d2be06607b3123c45b8bf67cfa5df
BLAKE2b-256 ceb5994942d59213cb4e626aba4531f347a6848bdd93cfd31886a9cd940aba86

See more details on using hashes here.

Provenance

The following attestation bundles were made for barflow-0.2.1-cp313-cp313t-musllinux_1_2_x86_64.whl:

Publisher: wheels.yml on NevermindNilas/barflow

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

File details

Details for the file barflow-0.2.1-cp313-cp313t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for barflow-0.2.1-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f93c54855bea9896d32cf30e32ed21da81a637e91afdb2bbae1cfb13edb4acfd
MD5 c8e2fe6291176a227c52564858ba0a7d
BLAKE2b-256 faddd0dbc365534a2f035aad8da27261ee7ba788737bbcc7d0015d69a3332aec

See more details on using hashes here.

Provenance

The following attestation bundles were made for barflow-0.2.1-cp313-cp313t-musllinux_1_2_aarch64.whl:

Publisher: wheels.yml on NevermindNilas/barflow

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

File details

Details for the file barflow-0.2.1-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for barflow-0.2.1-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9cf77fc2ff2f1430ac2fe2327cb5b44d1d31ae6e3eff312711bf423351fb032f
MD5 95767e555d96e6fa50b951a718dc7fe0
BLAKE2b-256 df143802a7991f1dc8330eaadce40ff488094c7aa7ed7ebea7c2a2f05aa828eb

See more details on using hashes here.

Provenance

The following attestation bundles were made for barflow-0.2.1-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on NevermindNilas/barflow

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

File details

Details for the file barflow-0.2.1-cp313-cp313t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for barflow-0.2.1-cp313-cp313t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 14e906671424779b3a9c2826ed66272129e0c947ceed022bbe14c115990abac3
MD5 2a61599a82d4fce1643dde2a5b1df9c3
BLAKE2b-256 ea0e7a32faafda457efa715823b90e708ffa86a15dfacdecf65e43ae02bafc99

See more details on using hashes here.

Provenance

The following attestation bundles were made for barflow-0.2.1-cp313-cp313t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on NevermindNilas/barflow

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

File details

Details for the file barflow-0.2.1-cp313-cp313t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for barflow-0.2.1-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0b87d455d944d15c29be97dc747eb79dff2a72b90eb500b979e1409bee5eec0b
MD5 1b4df38d9dd03c14a067c7e3b9dd6239
BLAKE2b-256 fda805384ff8c9c1a6d7b05d8bcbd96368cbbed44a4b3624986520ea24254929

See more details on using hashes here.

Provenance

The following attestation bundles were made for barflow-0.2.1-cp313-cp313t-macosx_11_0_arm64.whl:

Publisher: wheels.yml on NevermindNilas/barflow

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

File details

Details for the file barflow-0.2.1-cp313-cp313t-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for barflow-0.2.1-cp313-cp313t-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 363e03e4ee3192f5442071231535500d283971e8e9f61ed1fbc02a92e40a93b8
MD5 bed818e129718641977804ec37eb6ed6
BLAKE2b-256 2130574842118ce1f8abe66864ebd174b3c8ee466f841d5ced3ccaeb23491f0f

See more details on using hashes here.

Provenance

The following attestation bundles were made for barflow-0.2.1-cp313-cp313t-macosx_10_13_x86_64.whl:

Publisher: wheels.yml on NevermindNilas/barflow

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

File details

Details for the file barflow-0.2.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: barflow-0.2.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 88.1 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for barflow-0.2.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 504f6d15c416d911afeb4ffc5325abf2624d4f936e5a995837af47f72223f53d
MD5 57da0912de602144b1a90fc9b144ed2b
BLAKE2b-256 7d001ccef5fbf8a84d192ca1b3bccc21e30a0ee8103dd62f73d39ac2bc9fff2e

See more details on using hashes here.

Provenance

The following attestation bundles were made for barflow-0.2.1-cp313-cp313-win_amd64.whl:

Publisher: wheels.yml on NevermindNilas/barflow

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

File details

Details for the file barflow-0.2.1-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for barflow-0.2.1-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4e1fe4cae05058849f8a82c7e3f5943583aa14d208821692b67af9db43228937
MD5 46cd52f67de0cc6e9a1db90b5f27be37
BLAKE2b-256 0e11ca1f0e4bace6ceb8324f96d92e17881e2d662df8a51cc6fb42889aadfcec

See more details on using hashes here.

Provenance

The following attestation bundles were made for barflow-0.2.1-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: wheels.yml on NevermindNilas/barflow

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

File details

Details for the file barflow-0.2.1-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for barflow-0.2.1-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 1bd87a28f846c78d75ed62e287b7ba640c3e980a23eaa54079d46799af7ceb27
MD5 f7a2bf75db842b81e33020ac2fbaf999
BLAKE2b-256 639e512a01e91c776baea671e4f7615bdc6b72f854af0427a917a3defc17bec3

See more details on using hashes here.

Provenance

The following attestation bundles were made for barflow-0.2.1-cp313-cp313-musllinux_1_2_aarch64.whl:

Publisher: wheels.yml on NevermindNilas/barflow

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

File details

Details for the file barflow-0.2.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for barflow-0.2.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d9201b260431fc35c0b2d60cae2920ec480f1d197adfdbc91ac325fb9f5f7f56
MD5 000bae68580714702f5e78ceb27cf6f7
BLAKE2b-256 09328e191b6f7321eef04abe0ca13ac88546e7076161c42031f796976c6d7dc6

See more details on using hashes here.

Provenance

The following attestation bundles were made for barflow-0.2.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on NevermindNilas/barflow

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

File details

Details for the file barflow-0.2.1-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for barflow-0.2.1-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 437e90e10ad198f8aa6e3a4edc176ca691389f9494b5aa03f785006e2ee7e7cb
MD5 e36186805a05a282625351f0ec9db80c
BLAKE2b-256 588a172f7c3fa5811d990573b4b284902e307894961bf10fa25f4d1094445dbd

See more details on using hashes here.

Provenance

The following attestation bundles were made for barflow-0.2.1-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on NevermindNilas/barflow

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

File details

Details for the file barflow-0.2.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for barflow-0.2.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9e583f38bb531212dad97ec2cae4cc2a48f16d5dcd620276680ad404d32eaffe
MD5 1bc9eeed386d9302de3e1b76fd5dc7df
BLAKE2b-256 25fb02f41ff78f278e0208496f3d04bf58f518a437c71070cb0576d5b0b27e5d

See more details on using hashes here.

Provenance

The following attestation bundles were made for barflow-0.2.1-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: wheels.yml on NevermindNilas/barflow

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

File details

Details for the file barflow-0.2.1-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for barflow-0.2.1-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 a77cd93ed0b3a152a45d6fbdaed9bb7ab0a08a74732a090f4431e6fc032d2e0e
MD5 4aae50e5e356b79926aba0b2d36e775c
BLAKE2b-256 cb0179fc1b9cdf02c1cb5f0c42ae72c359273099f721f28f4d7922c02bc4e2e9

See more details on using hashes here.

Provenance

The following attestation bundles were made for barflow-0.2.1-cp313-cp313-macosx_10_13_x86_64.whl:

Publisher: wheels.yml on NevermindNilas/barflow

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