Skip to main content

fbz

Faster, better zipper: an active compression-format research workbench with fast bzip2, gzip, LZ4, and ZIP decompression plus safe tar extraction.

fbz provides a native CLI, a Rust library, and a Python module. The CLI auto-selects bzip2, gzip, LZ4, or ZIP handling from the filename extension, falling back to stream magic when needed. It streams compressed tar variants through a bounded extractor and adaptively parallelises ZIP work within or across entries. Every path validates decoded sizes and checksums. The bzip2 implementation also provides persistent random-access indexes.

Compression is planned as a separate whole-surface design. The current implementation only decompresses: bzip2, gzip and LZ4 frames; their tar-wrapped variants; and stored or DEFLATE-compressed ZIP archives.

Install

PyPI wheels contain both the Python module and the native fbz executable—there is no Python CLI wrapper:

pip install fbz

Python 3.10 and later are supported. Prebuilt wheels target Linux on x86-64 and ARM64, and macOS on ARM64. macOS Intel is best-effort and can build from source.

Install the native CLI or add the Rust library from crates.io:

cargo install fbz
cargo add fbz

CLI

Decoding is the default operation. .bz2, .bzip2, .gz, .gzip, and .lz4 select their corresponding decoder and are removed from the output name. Compressed tar names—.tar.bz2, .tar.bzip2, .tbz, .tbz2, .tar.gz, .tar.gzip, .tgz, and .tar.lz4—and .zip automatically extract into the current directory or -C/--output-dir. -x/--extract forces archive extraction for stdin or an unusual filename; an explicit -o/--output instead writes a decoded tar stream, but is invalid for ZIP because ZIP has no single decoded byte stream. For stdin and unrecognised extensions, bzip2, gzip, LZ4, or ZIP magic selects the format. Other non-archive input names gain .out.

fbz dump.xml.bz2                   # write dump.xml
fbz events.json.gz                 # write events.json
fbz events.json.lz4                # write events.json
fbz source.tar.gz                  # extract into the current directory
fbz source.tar.lz4 -C unpacked     # stream-decode and extract
fbz source.tbz2 -C unpacked        # extract into unpacked/
fbz dataset.zip -C unpacked         # extract ZIP entries adaptively in parallel
fbz --extract -C unpacked -        # extract tar or ZIP data from stdin
fbz source.tgz -o source.tar       # decode without extracting
fbz dump.xml.bz2 -o result.xml     # choose the decoded output path
fbz dump.xml.bz2 -o -              # write decoded bytes to stdout

Multiple inputs are processed in order, with parallelism applied inside each compressed stream. -C/--output-dir collects decoded files and is the extraction root for archives:

fbz data/*.bz2 logs/*.gz -C decoded
fbz data/*.bz2 logs/*.gz -C decoded --skip-existing
fbz backups/*.tgz -C restored
fbz datasets/*.zip -C restored

Validation and inspection remain flags rather than subcommands:

fbz --test dump.xml.bz2          # fully decode and validate, writing nothing
fbz --index dump.xml.bz2         # write dump.xml.bz2.fbz2i (bzip2 only)
fbz --list events.json.gz        # print the validated member/block layout
fbz --list events.json.lz4       # print the validated frame/block layout
fbz --list dataset.zip           # print the validated entry layout
fbz --list --json dump.xml.bz2   # emit the complete layout as JSON

--test, --index, --list, and explicit --extract are mutually exclusive. Human-readable --list output labels each input when given multiple files; JSON output is one object for one input and an array for multiple inputs.

Output safety

  • Existing decoded files and archive entries are rejected by default. --force replaces them; --skip-existing applies to decoded files rather than archives.
  • Decoded-file outputs use a same-directory temporary file and become visible atomically only after successful checksum validation.
  • Tar entries stream into a same-filesystem staging directory through a bounded pipe. ZIP entries decode directly into the same staging scheme. Entries are preflighted and moved into the destination only after every relevant compression stream and archive structure validates, so a late CRC failure leaves no extracted files.
  • Tar and ZIP paths and link targets are confined to the destination. ZIP rejects unsafe or duplicate paths; tar safely skips unsafe entries. New entries use the archive's permissions and modification times where provided. Standalone decoded files inherit those values from the compressed input.
  • --rm removes each compressed input only after its decoded file or all archive entries have been committed successfully.
  • --max-output SIZE limits decoded bytes per input, including tar framing and padding. Sizes accept binary suffixes such as K, MiB, and G.

Long interactive operations report completion, decoded throughput, compression ratio, and ETA on stderr. Progress is disabled automatically when stderr is redirected; -q/--quiet also suppresses progress and skip notices.

-P/--threads 0, the default, uses the machine's available parallelism; an explicit positive value is honoured by every decoder. --memory-limit bounds speculative output in the shared scheduler and defaults to 1G. Gzip uses parallel dynamic-block discovery only when the input and memory budget can amortize it. LZ4 frames with independent blocks decode those blocks concurrently and commit them in order; automatic LZ4 decoding caps this memory-bandwidth-bound work at four workers, while explicit -P values remain unchanged. Linked-block frames decode serially because each block depends on the preceding 64 KiB history. ZIP uses one level of parallelism at a time: large entries use the parallel DEFLATE engine, while archives of ordinary entries decode files concurrently without nested worker pools.

Python

The Python API currently exposes the bzip2 backend. Unified Python dispatch will follow the CLI workbench rather than being designed ahead of it.

One-shot decompression and validation

import fbz

plain = fbz.decompress(compressed_bytes)
fbz.test("dump.xml.bz2")  # returns None after successful validation

decompress accepts a bytes-like object and returns bytes. test accepts either compressed bytes or a path and avoids retaining the decoded result.

Seekable reads and persistent indexes

fbz.open returns a seekable binary io.RawIOBase. Opening without an index performs a complete validation pass and builds an in-memory block index; build_index can persist that work for later processes:

import fbz

fbz.build_index("dump.xml.bz2", "dump.xml.bz2.fbz2i")

with fbz.open("dump.xml.bz2", index="dump.xml.bz2.fbz2i") as f:
    f.seek(1_000_000_000)
    chunk = f.read(64 * 1024)
    print(f.tell(), f.size)

Building an index fully decodes into a sink but does not write or retain the plaintext. Indexes contain compressed and decoded block offsets and are bound to the exact compressed source by its length and BLAKE3 hash. Loading one verifies that identity without decoding the whole payload; subsequent reads decode only the blocks needed for the requested range and cache recent blocks. cache_limit controls that cache. Path sources are memory-mapped, while bytes-like sources stay in memory.

Structural scanning

scan cheaply finds candidate stream headers and bit-level block markers without decoding:

import bz2
from fbz import scan

result = scan(bz2.compress(b"hello"))
assert result.blocks[0].bit_offset == 32

Scan results are deliberately untrusted candidates. Use test, decompress, build_index, or open when validation is required.

Rust

The streaming API accepts any Write destination and uses the serial fast path when threads is one:

use fbz::{DecodeOptions, Source, decompress_to_writer};

fn main() -> fbz::Result<()> {
    let source = Source::open("dump.xml.bz2")?;
    let mut output = std::io::stdout().lock();
    decompress_to_writer(source.as_slice(), &mut output, DecodeOptions::default())?;
    Ok(())
}

decompress returns a Vec<u8>. decode_to_writer returns a validated Index while streaming output, build_index validates into a sink, and their *_with_progress variants report completed compressed and decoded byte counts. IndexedReader implements Read and Seek; it can build an index itself or load a persisted one with open_with_index.

The in-repo gzip decoder is available separately so callers can choose explicitly:

let plain = fbz::gzip::decompress(&compressed_gzip)?;

gzip::decompress_to_writer and gzip::decompress_to_writer_with_options return a validated report containing gzip member metadata, each DEFLATE block's kind and ranges, and counts of accepted speculative and serial-fallback chunks. They support stored, fixed-Huffman, and dynamic-Huffman blocks, optional gzip headers, and concatenated members.

The raw shared codec is available as fbz::deflate::decompress_to_sink_with_options_and_progress; gzip framing and ZIP extraction both use this exact decoder.

The in-repo LZ4 frame decoder has the same one-shot, writer, options, progress, and report shapes as gzip:

let plain = fbz::lz4::decompress(&compressed_lz4)?;

It accepts standard independent or linked blocks, stored blocks, all four standard block maxima, optional block/content checksums and sizes, concatenated frames, and skippable frames. External dictionaries and the obsolete legacy frame format are intentionally unsupported.

Streaming reads

fbz::Reader provides a normal std::io::Read over bzip2 or gzip files without a preliminary indexing or validation pass:

use std::io::{BufReader, Read};
use fbz::{DecodeOptions, Reader};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let reader = Reader::open("dump.xml.bz2", DecodeOptions::default())?;
    let mut reader = BufReader::new(reader);
    let mut header = [0; 4096];
    reader.read_exact(&mut header)?;
    Ok(())
}

Magic takes priority over the filename extension, with the extension used as a fallback for damaged headers. The decoder runs on an owned worker thread and transfers completed decoder allocations through a zero-capacity pipe; it neither materializes the plaintext nor writes an intermediate file. DecodeOptions controls decoder threads and speculative memory. Dropping early disconnects the pipe, cancels outstanding work, and joins the worker.

Checksum errors discovered after output has begun are returned by a later read() call. Therefore only successful EOF establishes that the complete stream was valid; dropping early deliberately does not finish validation. Compressed tar inputs yield the decoded tar byte stream rather than extracting it. LZ4 and ZIP are not currently exposed through Reader: LZ4's frame-layout pass must first become incremental, while ZIP has no single decoded byte stream.

Performance

These are single local release-mode CLI runs on the primary Apple Silicon development machine. The gzip comparison warms each executable with the 5% fixture, then measures exactly one full validation run; peak physical footprint comes from a separate sampled run because process inspection can perturb such a short workload. ZIP and tar likewise warm each CLI once and then measure one extraction. The LZ4 comparison uses its automatic four-worker limit. These are observations rather than statistical aggregates. In-process codec and library-oracle comparisons live in DEV.md, not this user-facing section.

Full SimpleWiki recompressed with system gzip -6 (438,904,466 bytes compressed, 1,688,460,257 bytes decoded):

CLI Mode Seconds Peak physical footprint
rapidgzip-rust, local checkout auto parallel, --test 0.363 460.0 MiB
fbz auto parallel, --test 0.326 335.9 MiB
Apple gzip serial, stdout discarded 1.371 1.2 MiB

The memory values use macOS physical footprint rather than ru_maxrss. The fbz CLI memory-maps its 419 MiB input, so clean reclaimable file pages make RSS look roughly 419 MiB larger; pread-based tools leave the same cached pages outside process RSS. Physical footprint makes the comparison meaningful.

ZIPs containing the same 80.5 MiB SimpleWiki prefix (25.8 MiB compressed), after one untimed warm-up per executable:

Shape fbz, auto parallel Info-ZIP unzip 6.00 (Apple) Speedup
One DEFLATE entry 35.571 ms 355.235 ms 10.0x
18 DEFLATE entries 29.700 ms 360.008 ms 12.1x

The many-entry sampled run used 36.7 MiB physical footprint for fbz versus 2.4 MiB for unzip; its 18-way file parallelism deliberately spends modest memory to obtain the throughput above. Both fbz rows used automatic thread selection, which resolved to 18 available cores on this machine.

Compressed tar archives containing the same 80.5 MiB prefix, after one untimed warm-up per CLI:

Format fbz extraction System tar Speedup
.tgz 56.850 ms 117.962 ms 2.1x
.tar.bz2 151.783 ms 1.168 s 7.7x

The same 80.5 MiB prefix in a standard independent-block LZ4 frame (40.2 MiB compressed), after one untimed warm-up per executable:

CLI Milliseconds Peak RSS fbz/reference
fbz, auto (4 workers) 51.188 71.0 MiB 0.944x
Homebrew lz4 1.10.0 54.228 32.0 MiB

The larger fbz RSS includes its memory-mapped 40.2 MiB source plus bounded in-flight decoded blocks; it does not grow with decoded file size. Testing higher worker counts showed no meaningful throughput gain and raised RSS, so automatic LZ4 decoding stops at four workers; -P remains an explicit override.

Homebrew pbzip2 1.1.13 could not safely decompress the complete 26,668,484,995-byte English Wikipedia multistream dump on this machine. It segfaulted, and repeated attempts produced divergent and truncated plaintext. Successful smaller-file results therefore do not establish full-file reliability.

Implementation and compatibility

The production codec logic is portable Rust. The bzip2 decoder uses a tuned 4096-entry Huffman lookup table for codes up to 12 bits and canonical fallback for longer codes. A structural scan finds possible non-byte-aligned block markers; these remain speculative until ordered decoding establishes the exact stream chain and validates all block and combined-stream CRCs. A rolling scheduler keeps workers busy across concatenated streams while bounding decoded results awaiting validation.

The gzip backend implements RFC 1952 framing and DEFLATE directly in this repository. For sufficiently large dynamic-Huffman inputs it discovers independently decodable boundaries, decodes speculative chunks through the shared byte-budgeted scheduler, and represents unknown predecessor bytes as compact markers. The ordered coordinator resolves only the suffix needed to derive the next 32 KiB history window; full marker resolution and per-chunk CRC run as priority work on the same staged worker queue, and CRCs are combined in order. Once a chunk has a marker-free window, the same decoder switches its remaining output from u16 markers to ordinary bytes. Small, stored-heavy, fixed-heavy, one-thread, and low-memory inputs use the serial path; concatenated members may independently choose either path. FHCRC, CRC32, and ISIZE are always validated. LZ4 framing and block decoding are likewise implemented in safe Rust. Independent blocks use the same ordered, byte-budgeted scheduler as bzip2; linked blocks retain only the preceding 64 KiB window. LZ4 and DEFLATE share one optimized overlapping back-reference expansion primitive. Header, block, and content XXH32 checksums are validated where present. ZIP reuses the raw DEFLATE core and uses the mature zip crate only for container structure and metadata. It supports stored and DEFLATE entries, Zip64, streaming data descriptors, Unix symlinks/modes, and Unix/NTFS modification-time fields; encryption and uncommon legacy compression methods are intentionally unsupported. crc32fast and twox-hash are the production checksum helpers; flate2 and lz4_flex are dev-only differential oracles.

Legacy randomized blocks generated by bzip2 releases before 0.9.5 are intentionally unsupported. Normal BZh1 through BZh9 streams and concatenated streams are supported.

Research lineage and credits

The gzip work builds on Maximilian Knespel and Holger Brunst's HPDC '23 paper, Rapidgzip: Parallel Decompression and Seeking in Gzip Files Using Cache Prefetching. In particular, fbz adapts its central idea of starting DEFLATE decoding without the preceding 32 KiB window, representing uncertain output until the true history becomes available, and committing independently decoded chunks in order.

The open-source implementations and codebases consulted were:

  • rapidgzip, the C++ implementation described by the paper.
  • rapidgzip-rust, a pure-Rust reimplementation and fbz's local gzip performance and memory reference.
  • librapidarchive, an experimental shared architecture for parallel bzip2 and gzip access.
  • indexed_bzip2, for non-byte-aligned marker scanning, independent bzip2 block decoding, ordered prefetch, and indexed seeking.
  • zip, used without codec features for maintained ZIP structure and metadata handling.
  • LZ4, the reference format and Homebrew CLI performance baseline.
  • lz4_flex, used dev-only to generate a broad interoperability matrix and benchmark frames.
  • lz4-rs, consulted as a second local implementation reference.
  • Rob Landley's 0BSD bzcat implementation in Toybox, from which fbz's specialised bzip2 decoder is derived.

Development

DEV.md documents the architecture, test strategy, benchmark fixture generation, build commands, and release process.

fbz is licensed under the Apache License 2.0.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

fbz-0.1.7-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

fbz-0.1.7-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

fbz-0.1.7-cp314-cp314-macosx_11_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

fbz-0.1.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

fbz-0.1.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

fbz-0.1.7-cp313-cp313-macosx_11_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

fbz-0.1.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

fbz-0.1.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

fbz-0.1.7-cp312-cp312-macosx_11_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

fbz-0.1.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

fbz-0.1.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

fbz-0.1.7-cp311-cp311-macosx_11_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

fbz-0.1.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

fbz-0.1.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

fbz-0.1.7-cp310-cp310-macosx_11_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file fbz-0.1.7-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fbz-0.1.7-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 42c948e0ccf779fde9c602ae67a07af5c10620ee586e32adb8ccdc89b0d28ad4
MD5 f23c8c211aa2b5e17da3f7457443d110
BLAKE2b-256 49350d7044878b3fd4b3399eaa1898a23a95c12599cf158366b65d134bdc685a

See more details on using hashes here.

Provenance

The following attestation bundles were made for fbz-0.1.7-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: ci.yml on AnswerDotAI/fbz

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

File details

Details for the file fbz-0.1.7-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for fbz-0.1.7-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 cf89a4d102aff68abb61291a1952922e10d8102f4f730e39dbfeb4dca5567400
MD5 d2d8fd928d1b7d84642e35340b34fb9c
BLAKE2b-256 bdb6d53516060363c1b229fcf14848a66a929ff21d185ffcee728796df2052de

See more details on using hashes here.

Provenance

The following attestation bundles were made for fbz-0.1.7-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: ci.yml on AnswerDotAI/fbz

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

File details

Details for the file fbz-0.1.7-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

  • Download URL: fbz-0.1.7-cp314-cp314-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.14, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for fbz-0.1.7-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 61ba2fabce1a0cf31316b16385148f46435668e60d796f09af07bbdaec87ee45
MD5 a493a92ca01463c6041fad5d6cfaae26
BLAKE2b-256 548465f3d807c4e2faabc8fb580e05ef84516aafdc305e2cb76426424b1e67a7

See more details on using hashes here.

Provenance

The following attestation bundles were made for fbz-0.1.7-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: ci.yml on AnswerDotAI/fbz

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

File details

Details for the file fbz-0.1.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fbz-0.1.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c56f74090420073104a72da8913153be368d52f548ff5b2205f9d840715e1ad7
MD5 1f485467e1be86b7ceab0ff75ab29626
BLAKE2b-256 e54d158143b9bca439544fd9d2cdd0b1626a3624b7684dbf099b01143310cb9b

See more details on using hashes here.

Provenance

The following attestation bundles were made for fbz-0.1.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: ci.yml on AnswerDotAI/fbz

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

File details

Details for the file fbz-0.1.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for fbz-0.1.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5841e1aa71ee2f8fc197e0cd9bdd7e2374ceaee55ffb85f91505c1d427a9eeb2
MD5 f48947d90eff16b5c0a4c434d9be0a56
BLAKE2b-256 73a0fc4daf209e29fe4a18538beee858614d5e1d824bbf0f8a247a5c29110025

See more details on using hashes here.

Provenance

The following attestation bundles were made for fbz-0.1.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: ci.yml on AnswerDotAI/fbz

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

File details

Details for the file fbz-0.1.7-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

  • Download URL: fbz-0.1.7-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.13, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for fbz-0.1.7-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 37e3ce6b450e30aaba2b2e5729718eaf53b970cccc3b4ddd26da1383d576e654
MD5 04b8a64e61ab558db07855542de61b95
BLAKE2b-256 bbaf0da2759aae87768c4d4a3beafe0e91996bde4ed23e02e4abc6d15fd7ecbe

See more details on using hashes here.

Provenance

The following attestation bundles were made for fbz-0.1.7-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: ci.yml on AnswerDotAI/fbz

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

File details

Details for the file fbz-0.1.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fbz-0.1.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a24d355bd4296b14ab5cbcb3746747fb6faf2c5ea0f91ed16e36650e12ee8373
MD5 2c6ae2a9ad6fd15f8795f65593deb0f1
BLAKE2b-256 2e912e3fd1ab85bcd4cf2491a9d55a0b41fca03d22f0c568c5a6123704501ddf

See more details on using hashes here.

Provenance

The following attestation bundles were made for fbz-0.1.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: ci.yml on AnswerDotAI/fbz

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

File details

Details for the file fbz-0.1.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for fbz-0.1.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e332a697a75f52b0674fc3c3a6e6d6e3b4e9a040551c98f6a2f7bb2aa1a19120
MD5 aa2a11336674daf4cfadcd80fc9906f0
BLAKE2b-256 2a8e56d8011d61661142d94d3dc307add6f5230cd5862cf17d89d0e2275d6162

See more details on using hashes here.

Provenance

The following attestation bundles were made for fbz-0.1.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: ci.yml on AnswerDotAI/fbz

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

File details

Details for the file fbz-0.1.7-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

  • Download URL: fbz-0.1.7-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.12, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for fbz-0.1.7-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fb3d4b744bb5127b3e246e632d292b974053c6819cf39d582e6d2b8c98bfb607
MD5 4e5909ce4a15e4cca97a9a7ccc806429
BLAKE2b-256 1e59e3065c6e2a9719e52941f3d2b54d6cd293519a608fe96b9da44e10bf184d

See more details on using hashes here.

Provenance

The following attestation bundles were made for fbz-0.1.7-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: ci.yml on AnswerDotAI/fbz

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

File details

Details for the file fbz-0.1.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fbz-0.1.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b378e196f5387c3642135a9085c254f7a1a086aa38a602cf18ad1151cdfcaa6b
MD5 99d36b446625d4d24a6f45a1fbd25cfd
BLAKE2b-256 a23f4031250342f91a3c8bf875a05c3922c91585d768b67e7f227f23a1efecc2

See more details on using hashes here.

Provenance

The following attestation bundles were made for fbz-0.1.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: ci.yml on AnswerDotAI/fbz

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

File details

Details for the file fbz-0.1.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for fbz-0.1.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b1dff7e804c467597d27da052ee6dd59cbcb2f97d330b8618b257733c42dccfd
MD5 e177512bcb82014bc7d43e712c28abfe
BLAKE2b-256 fad1494c0236d6c267adb6d1762f478c24166f8d8df4e8a78ea6fd1d53d658d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for fbz-0.1.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: ci.yml on AnswerDotAI/fbz

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

File details

Details for the file fbz-0.1.7-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

  • Download URL: fbz-0.1.7-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.11, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for fbz-0.1.7-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6246100e81e0aa934e64c7488c805f917df46d7185f4fe36bf59ca0f321d7c53
MD5 80c7b0476306400d44e72aab3dcb8e9e
BLAKE2b-256 c26823f18a021c275786f4212f31ceeb88346d50660de81748f7e2e725afeadd

See more details on using hashes here.

Provenance

The following attestation bundles were made for fbz-0.1.7-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: ci.yml on AnswerDotAI/fbz

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

File details

Details for the file fbz-0.1.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fbz-0.1.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6e03ab3188a42b3cdd50b4d23b1e68513755bcdc14ed2ff8a9467c7c072200ec
MD5 7c9ec3e692010102ef77eb592243717f
BLAKE2b-256 8f26e4fb80dbcf54aa65fd8743e8489c5104c882e53707826adf484b45b3b61d

See more details on using hashes here.

Provenance

The following attestation bundles were made for fbz-0.1.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: ci.yml on AnswerDotAI/fbz

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

File details

Details for the file fbz-0.1.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for fbz-0.1.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ed6fd2326f7bdcb31dbff23ea1c25e1bfbfd51d48f6179e1d5bbfb13128f9a1a
MD5 265e5c97cb03a0d7da9c155ccf9b11cd
BLAKE2b-256 e1f55b937b641ff86b9d56634c8675465828f32ac98a3e9352371a85bb3b4066

See more details on using hashes here.

Provenance

The following attestation bundles were made for fbz-0.1.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: ci.yml on AnswerDotAI/fbz

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

File details

Details for the file fbz-0.1.7-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

  • Download URL: fbz-0.1.7-cp310-cp310-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.10, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for fbz-0.1.7-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9384a70feac207f857030d98065b67f68647798106e27d99e18734f3ba00c088
MD5 d599379f6415852c33334c0928be200b
BLAKE2b-256 db9d1c2928ec99376a59a598cd69f399b9f190ad5f3759ea78f74fcfc3dd1c4c

See more details on using hashes here.

Provenance

The following attestation bundles were made for fbz-0.1.7-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: ci.yml on AnswerDotAI/fbz

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

Release history Release notifications | RSS feed

0.1.10

15 files

0.1.9

15 files

0.1.8

15 files

This release

0.1.7 This release

15 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page