Skip to main content

fbz

Fast, reliable parallel compression and decompression.

fbz is one CLI for compressing and decompressing bzip2, gzip, LZ4, ZIP, and compressed tar archives. It selects formats from filenames or magic, uses the available CPU cores, validates every decoded stream, and safely creates and extracts archives. The stream codecs are also available through Rust and Python APIs.

fbz was created because we found existing tools tended to be too slow (as the benchmarks below show) or too unreliable (e.g pbzip2 1.1.13 fails to decompress the full English Wikipedia archive). And we wanted a single tool we could use for all common formats with a single CLI interface.

Performance

The same 80.5 MiB SimpleWiki XML payload is used in every row with automatic thread selection. Each CLI is warmed once, then measured once on the primary Apple Silicon development machine.

Decompression

Stream formats are fully decoded and validated without writing output; archives are extracted.

Format fbz Familiar tool Speedup
.bz2 163 ms bzip2: 1.17 s 7.2x
.tar.bz2 152 ms tar: 1.17 s 7.7x
.zip (18 files) 30 ms unzip: 360 ms 12x
.gz 31 ms gzip: 76 ms 2.5x
.tar.gz 57 ms tar: 118 ms 2.1x
.lz4 55 ms lz4: 56 ms 1.0x

Compression

The standalone rows write compressed bytes to a sink. Archive rows create a real archive; the ZIP rows also show that the scheduler handles one large file and many ordinary files without nested parallelism.

Format fbz Familiar tool Relative speed
.bz2 736 ms bzip2: 3.30 s 4.5x
.tar.bz2 729 ms tar: 3.34 s 4.6x
.gz 147 ms gzip: 1.40 s 9.5x
.tar.gz 144 ms tar: 1.44 s 10x
.zip (1 file) 142 ms zip: 1.47 s 10x
.zip (18 files) 138 ms zip: 1.47 s 11x
.lz4 35 ms lz4: 29 ms 0.83x

The fbz LZ4 output was about 7% smaller than the reference output on this payload. Other compressed sizes were within 1% of their familiar tools.

See Benchmarking details for the details.

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

-z/--compress reverses the operation. An output suffix selects the format; when -o is omitted, --format selects it and fbz appends the conventional suffix. Standalone streams accept stdin and can write stdout. Tar and ZIP creation accept multiple filesystem inputs and stream output without an intermediate tar or plaintext file.

fbz -z --format bzip2 dump.xml       # write dump.xml.bz2
fbz -z events.json -o events.json.gz # infer gzip from the output
fbz -z data -o data.lz4              # independent-block LZ4 frame
fbz -z src docs -o source.tar.gz     # stream tar directly into gzip
fbz -z src docs -o source.tar.bz2    # stream tar directly into bzip2
fbz -z src docs -o source.zip        # adaptive parallel ZIP creation
fbz -z --format gzip -o - < events   # write one gzip member 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.

Python

The Python API exposes one-shot compression for all three stream formats. Decompression, validation, scanning, and indexed seeking currently expose the bzip2 backend.

One-shot compression

import fbz

compressed = fbz.compress(plain_bytes, "gzip", level=6)

The format is "bzip2", "gzip", or "lz4". threads=0 selects automatically, memory_limit bounds scheduled work, and the format-specific default level is used when level is omitted.

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 unified compression API covers bzip2, gzip, and LZ4 and writes incrementally:

use fbz::{EncodeFormat, EncodeOptions, compress_to_writer};

fn main() -> fbz::Result<()> {
    let mut input = std::fs::File::open("events.json")?;
    let mut output = std::fs::File::create("events.json.gz")?;
    compress_to_writer(&mut input, &mut output, EncodeFormat::Gzip, EncodeOptions::default())?;
    Ok(())
}

compress returns a Vec<u8>, while Encoder<W> implements Write for producers that generate data incrementally. EncodeOptions controls worker count, memory budget, and compression level. Gzip produces one standard member, LZ4 produces a standard independent-block frame, and bzip2 produces an ordinary BZh1BZh9 stream; none requires an fbz decoder.

zip::create_to_writer creates stored/DEFLATE ZIP and Zip64 archives from zip::PathInput values. For tar composition, feed a gzip::Encoder, lz4::Encoder, or Bzip2Encoder directly to a streaming tar::Builder, which is the same composition used by the CLI.

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, gzip, or LZ4 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. ZIP is not exposed through Reader because an archive has no single decoded byte stream.

CLI output safety

  • Existing generated files and archive entries are rejected by default. --force replaces them; --skip-existing applies to standalone outputs and newly created archives rather than extraction into an existing tree.
  • 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 an input only after its compressed or decoded output has been committed successfully. Archive creation deliberately does not remove its source tree.
  • --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 standalone operations report completion, 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, selects parallelism automatically; an explicit positive value is honoured by every codec. --memory-limit is the byte budget for in-flight scheduler reservations and defaults to 1G; it bounds queued input, working state, and retained results rather than promising an exact process-RSS ceiling. Automatic bzip2 compression stops at 12 workers because its BWT working sets reach a clear throughput plateau there. Automatic LZ4 decoding stops at four workers because it is memory-bandwidth bound; explicit -P values remain unchanged. Gzip and standalone LZ4 compression divide one standard stream into independently encoded ordered segments or blocks. ZIP uses one level of parallelism at a time: large entries use the parallel DEFLATE engine, while archives of ordinary entries process files concurrently without nested worker pools.

Benchmarking details

The headline benchmarks use the first 84,423,012 decoded bytes of SimpleWiki for every format. In the decompression table, standalone bzip2 and gzip use each tool's validation mode; ZIP extracts 18 equal files, while compressed tar extracts one. In the compression table, standalone codecs write to a sink, tar wraps one file, and ZIP creates either one large entry or 18 equal entries. Each comparison performs the same work on both sides. All results are single local release-mode observations after one untimed warm-up, not statistical aggregates.

The familiar reference CLIs are the system bzip2, gzip, and tar; Apple Info-ZIP zip/unzip 3.0/6.00; and Homebrew lz4 1.10.0. The detailed fixture-generation and single-run commands live in DEV.md, alongside in-process codec comparisons and separate memory diagnostics. RSS is deliberately omitted from the headline tables: it is bounded and configurable, but the parallel encoders trade memory for throughput and the exact figures are implementation diagnostics rather than user-visible work.

On the complete 1.57 GiB SimpleWiki XML recompressed with system gzip -6, fbz validated the stream in 0.33 seconds, compared with 0.36 seconds for a local rapidgzip-rust checkout and 1.37 seconds for Apple gzip. This larger result is kept here because it exercises sustained parallel gzip decoding; it is not mixed into the common-payload headline table.

Reliability on large inputs

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 benchmark results therefore do not establish full-file reliability, which is why fbz treats structural and checksum validation as part of decompression.

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 its decoder discovers independently decodable boundaries, represents unknown predecessor bytes as compact markers, and resolves only the suffix needed for the next 32 KiB history window. Its encoder schedules 1 MiB raw-DEFLATE segments with the preceding 32 KiB dictionary, joins their byte-aligned boundaries in order, and writes one ordinary gzip member and trailer. The same raw-DEFLATE encoder creates ZIP entries. Fixed, dynamic, and stored blocks are selected by encoded size.

LZ4 framing and blocks are likewise implemented in safe Rust. Decoding schedules independent blocks in bounded batches and retains only 64 KiB for linked history. Compression emits independent blocks so they can be encoded and later decoded in parallel; compressible blocks use a fast latest-match table, with the shared hash-chain matcher available at higher levels, and incompressible blocks are stored. Header, block, and content XXH32 checksums are handled where present.

The bzip2 encoder splits ordinary BZh1BZh9 streams at their natural block boundaries. RLE1 runs are formed incrementally, BWT/MTF/RLE2/Huffman work runs independently per block, and exact bit strings plus combined CRCs are committed in order. The BWT uses a safe SA-IS suffix array. Decoder and encoder share the bzip2 CRC implementation.

ZIP extraction uses the mature zip crate with codec features disabled for container structure and metadata, then feeds raw entry ranges through fbz's decoder. ZIP creation writes the small amount of required structure directly so externally produced raw-DEFLATE segments can stream without being copied through a second codec. It supports stored and DEFLATE entries, Zip64, data descriptors, Unix symlinks/modes, and extended timestamps. Tar creation and extraction use the mature tar crate as a streaming structural layer. Encryption and uncommon legacy ZIP methods are intentionally unsupported. crc32fast and twox-hash are the production checksum helpers; libbz2-rs-sys, 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.
  • crabz2, whose MIT-licensed BWT, MTF/RLE2, and grouped-Huffman encoder machinery was adapted for fbz's block-parallel bzip2 compressor.
  • 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. The adapted crabz2 encoder files retain their bundled MIT license and attribution.

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.9-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

fbz-0.1.9-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.4 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

fbz-0.1.9-cp314-cp314-macosx_11_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

fbz-0.1.9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

fbz-0.1.9-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

fbz-0.1.9-cp313-cp313-macosx_11_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

fbz-0.1.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

fbz-0.1.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

fbz-0.1.9-cp312-cp312-macosx_11_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

fbz-0.1.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

fbz-0.1.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

fbz-0.1.9-cp311-cp311-macosx_11_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

fbz-0.1.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

fbz-0.1.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

fbz-0.1.9-cp310-cp310-macosx_11_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

File hashes

Hashes for fbz-0.1.9-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b2e4779bc8107d2ac40809c05c9ff873d903ef768f8896c4df16f39c9f2d753d
MD5 b86205222619034aff46add071353949
BLAKE2b-256 9b5c394d03f4edaf70f3d380b832b18ea219a5430fcd3b46ae0fae088d9773cd

See more details on using hashes here.

Provenance

The following attestation bundles were made for fbz-0.1.9-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.9-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for fbz-0.1.9-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 739d6f077a5b7d1f3438b72d01071c20120273d8c25a689c5ed1616e232cf21c
MD5 680af6cae6ddea707654f4098a40cbe3
BLAKE2b-256 49137c199dd995fa171c094be4e1812c3e26a7bd0c788f0aa63075cba1572cdc

See more details on using hashes here.

Provenance

The following attestation bundles were made for fbz-0.1.9-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.9-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

  • Download URL: fbz-0.1.9-cp314-cp314-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 1.3 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.9-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7286659be991e9a53f9d3d1784079bae1985eb5458b72a8704d2b871ad739a0c
MD5 5b8c9ee061c0372997bb8dddb41fe527
BLAKE2b-256 213babe5235149420e494eace3e02aacd79388f9ff74f00785d55605201ca1b5

See more details on using hashes here.

Provenance

The following attestation bundles were made for fbz-0.1.9-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.9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fbz-0.1.9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 87adc6b2b48acea04f3394ba5bb4e38327bf40463ae1022db4d8f7a75201b526
MD5 799d4909d4c46fee6c9c0664ec6c706f
BLAKE2b-256 8394693c190102f4f96ec72624d2e69d2dfd11e957382af6c4ed98f1c105dbf7

See more details on using hashes here.

Provenance

The following attestation bundles were made for fbz-0.1.9-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.9-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for fbz-0.1.9-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d904e99764022d47be3d8b5db5554e7c5e3c6efd1f0e94fd034e546b5857dae8
MD5 7f37b6f852d617a634d6a3abeff57567
BLAKE2b-256 428263c5651c15aaa157c8ca74d0f3508da653fdb757bbca90770600d802576b

See more details on using hashes here.

Provenance

The following attestation bundles were made for fbz-0.1.9-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.9-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

  • Download URL: fbz-0.1.9-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 1.3 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.9-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3bee7d61838fdf52bbbc35a4984cef501b1b0dd6995d9b5a559dceab52fa463f
MD5 1c6d5a08c1c1de846c8b276c5b14477a
BLAKE2b-256 11d250e63837c55aa3c0f7dc692efdf52bdc5fc22d686441d79037167dbec42b

See more details on using hashes here.

Provenance

The following attestation bundles were made for fbz-0.1.9-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.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fbz-0.1.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 52fbc440df4a2a2b86de30c86cd8431bf22dfe79319f8d657c4b424d1cbac38c
MD5 1aae0a98260fe0bb113175beda8f8636
BLAKE2b-256 2345a545a9d89d57765f24f4177f08f2c1c619041c1523d8210df7627273270a

See more details on using hashes here.

Provenance

The following attestation bundles were made for fbz-0.1.9-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.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for fbz-0.1.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2e7101b6e99093f40c9248aec22a07f3b9756b82169c186e12dadd867e565bd5
MD5 bf6f438d5bc9d5965d5a85db799b549e
BLAKE2b-256 b2b5ebde5ad9532e4473b666f49977d612da8511f98d3146bc265e5a21c126c4

See more details on using hashes here.

Provenance

The following attestation bundles were made for fbz-0.1.9-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.9-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

  • Download URL: fbz-0.1.9-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 1.3 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.9-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bb9c1f75cd94420c1e33cb4af8385dda2747992c9d740760c4c9719db1e608b6
MD5 92875dbb0db5a5ef04b5454775706554
BLAKE2b-256 11f1169266df2f24b25f030b6f2aab2691c59c046aebb6946fdce6e85e576382

See more details on using hashes here.

Provenance

The following attestation bundles were made for fbz-0.1.9-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.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fbz-0.1.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cf06747de9f76899b9fd354ac926f2e562966090a39d22787e459ff583abbeb0
MD5 27deabfd77acd0e0dc58930bfa2f21f6
BLAKE2b-256 2d7fb0be05a5f8b615670aa68ef4c17d0729686a8a87d0fde3864b4ed2ce1bdb

See more details on using hashes here.

Provenance

The following attestation bundles were made for fbz-0.1.9-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.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for fbz-0.1.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ce24546e575c4e04eaa4a25f00e10d09c161740aa9763f0a69a0e3b2fd965ede
MD5 78efa5dfccbc8909888d8e8a66597b8a
BLAKE2b-256 d7c36147f9a0eead9d309cca87409de75f0ea2c9aa6f8b7aaa2ed5f6711567f8

See more details on using hashes here.

Provenance

The following attestation bundles were made for fbz-0.1.9-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.9-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

  • Download URL: fbz-0.1.9-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 1.3 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.9-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9234898ad3c83cb20d5a8c132925f638a6971d1451045308da5a94adeff3be3b
MD5 18be0343330166c3541834764a6bcc6b
BLAKE2b-256 a65a0addfd3c08afce2ac4be306ddf9977494301f44958f6db63dc522fdcf14d

See more details on using hashes here.

Provenance

The following attestation bundles were made for fbz-0.1.9-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.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fbz-0.1.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c51d0390ecddb7d1b4a39cda5fb98df59863475593a860893f9bcbc0c1348396
MD5 dea98113a7f3c23a5323e1813e4fc996
BLAKE2b-256 716861e8df242c5707464ff647be654705799b551fd50ea13267fb1819b39a7b

See more details on using hashes here.

Provenance

The following attestation bundles were made for fbz-0.1.9-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.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for fbz-0.1.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ffe4e3093cf9d915e6899fa6a672eb71dcffa2068883fe234a6d31b558f6b40a
MD5 e6a4b92465c9281f3863c1a2795b566f
BLAKE2b-256 b8adeb7fd171a4d7e8fcdf8008eee29b48900a3e2ca0c4204b052f829b6130d2

See more details on using hashes here.

Provenance

The following attestation bundles were made for fbz-0.1.9-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.9-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

  • Download URL: fbz-0.1.9-cp310-cp310-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 1.3 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.9-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 618ec63cdb4f7a56019f79eeaded9e76e82fc08829802c75a4c35bee7fd06917
MD5 ff02847c62eef37a1a05073b41ecab9b
BLAKE2b-256 670b9b205b045eae6c2af58a7e216a02febc89ddfe52fd92916ce0f781b87465

See more details on using hashes here.

Provenance

The following attestation bundles were made for fbz-0.1.9-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

This release

0.1.9 This release

15 files

0.1.8

15 files

0.1.7

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