Skip to main content

bobine

Standalone PDF / Office / text → Markdown ingestion engine — a pure-Rust core with Python bindings.

Crates.io docs.rs PyPI Python Rust onnxruntime CI License Website

Contents

What it is

Runs on a single onnxruntime shared library with no CUDA-version coupling: pdf_oxide for fast native PDF text extraction, ONNX models (TexTeller formula OCR, DocLayout-YOLO layout analysis, PaddleOCR) for the heavy passes.

No torch, no optimum, no opencv — not even on the Python side.

Dual-licensed under the terms of either the MIT License or the Apache License, Version 2.0 — you may choose either (see LICENSE).

Why bobine?

The ingestion pipeline was originally entangled with the knowledge-graph project it served (OKFgraph). This crate moves conversion into its own package so any consumer — a graph, a CLI, an MCP server, a batch tool — can reuse it without importing a database stack.

The v0.3.0 rewrite ports the whole pipeline to Rust: same routing heuristics and output contract as the proven Python implementation (preserved under legacy/), with native speed and no Python ML dependencies.

Installation

# Python package (wheels: CPython 3.10–3.14; manylinux x86_64 + aarch64,
# windows x64, macOS arm64 — no Rust toolchain needed for these)
pip install bobine

# Rust library (crates.io, no Python involved)
cargo add bobine

# ...or build from source (repo root)
pip install maturin && maturin develop --release

Runtime: ONNX Runtime

The heavy passes need an ONNX Runtime library — or nothing at all (Office/text/fast-path PDF work needs no models):

pip install bobine[cpu]   # adds onnxruntime == 1.29.0 (CPU)
# or: pip install bobine[gpu]   # onnxruntime-gpu (self-contained CUDA)

Library discovery

import bobine points ORT_DYLIB_PATH at the pip-installed library automatically; an already-set ORT_DYLIB_PATH always wins (e.g. a custom CUDA build):

export ORT_DYLIB_PATH=/path/to/onnxruntime.dll   # e.g. <venv>/Lib/site-packages/onnxruntime/capi/onnxruntime.dll

Version rules

ort loads the library dynamically (load-dynamic, no CUDA-version coupling) and refuses runtimes older than 1.28 (BadVersion). The extras pin exactly 1.29.0, the one runtime shared with okfgraph/embroider (embroider docs/compat.md). Never install both onnxruntime and onnxruntime-gpu (same module name, they clobber each other).

Quick start (Python)

import bobine

conv = bobine.HybridConverter(
    bobine.ConverterConfig(routing_mode=bobine.RoutingMode.Surgical),
    cache_dir="~/.cache/bobine",       # hub-cache root (models shared machine-wide)
)

md = conv.convert_pdf("paper.pdf", work_dir="/tmp/out")
latex = conv.recognize_formula("crop.png")          # r"\frac{1}{2}"

# one-shot helper
md = bobine.convert_to_markdown(
    "paper.pdf", bobine.ConverterConfig(), work_dir="/tmp/out",
    cache_dir="~/.cache/bobine",
)

# Text documents need no models at all
md = conv.convert("notes.txt", work_dir="/tmp/out")
# Binary files under text-ish extensions fail fast (v0.5.11+):
# UnsupportedFormat("binary file, not text: …") instead of a raw
# "invalid UTF-8" I/O error — content-sniffed, extension-agnostic.

Routing modes

HybridConverter routes pages through four modes:

Mode Behaviour Models loaded
Never Fast path only (pdf_oxide). No ONNX models loaded. none
Auto (default) Heuristics per page → full ONNX layout + OCR on flagged pages. TexTeller + layout + OCR (table lazy)
Surgical Formula crops via TexTeller only; full pipeline just for scans. TexTeller only
Always Every page through the full ONNX layout + OCR pipeline; on born-digital pages, formula regions are refined against text-layer math boxes (v0.4.8) and output matches Surgical. TexTeller + layout + OCR (table lazy)

RapidLayout and RapidOCR weights also auto-download from HuggingFace on first use (DocStructBench YOLO ~72 MB, PP-OCRv4 ~16 MB); explicit local paths can override them. Missing/broken heavy models degrade gracefully to the fast path per page — a conversion never fails because of them.

Converter models live in the standard HuggingFace hub cache (0.6.0+): cache_dir is the hub-cache root — an override of the env-resolved default, shared machine-wide, never a per-output sidecar. The first fetch after upgrading downloads once; repeats reuse the blob (a cached file costs zero network, logged as "using cached"). bobine.model_status(cache_dir=None) reports per-family status offline (same dict keys as okfgraph's model_info); ingest_document accepts an optional cache_dir (None = standard cache).

Quick start (Rust)

use bobine::{ConverterConfig, HybridConverter, RoutingMode};

let mut conv = HybridConverter::new(
    ConverterConfig { routing_mode: RoutingMode::Surgical, ..Default::default() },
    std::path::Path::new("~/.cache/bobine"),
);
let md = conv.convert_pdf(std::path::Path::new("paper.pdf"),
                          std::path::Path::new("/tmp/out"))?;

Module layout

src/
├── lib.rs            crate root & re-exports
├── config.rs         ConverterConfig · RoutingMode · ModelPrecision · ImageMode
├── engine.rs         OnnxEngine (lazy model manager: TexTeller/Layout/OCR)
├── converter.rs      HybridConverter (core PDF/Office pipeline + binary-sniffed text fallback)
├── tex_teller.rs     TexTeller ONNX — ViT encoder → RoBERTa decoder
├── rapid_layout.rs   DocLayout-YOLO page layout analysis
├── rapid_ocr.rs      PaddleOCR det + rec (DBNet / CRNN, CTC decode)
├── rapid_table.rs    SLANet-plus table-structure recognition (scans)
├── sanitize.rs       Post-OCR LaTeX repair (split_cmds, fence fixup, script split)
├── mml.rs            MathML → LaTeX (verbatim port, fixture-parity gated)
├── jats.rs           JATS XML → GFM (formulas/tables/figures, no ONNX needed)
├── pdf_source.rs     PdfSource trait — page text without a real PDF file
├── tables.rs         HTML table → GFM pipe-table converter
├── excel.rs          Excel workbooks → per-sheet csv/json/md
├── office_images.rs  Office picture staging (IR walk + package fallback)
├── assets.rs         okf-asset://\ staging store
├── documents.rs      ConvertedDocument + frontmatter
├── pipeline.rs       ingest_document / convert_directory / ProgressHooks
├── error.rs          BobineError
└── py_bindings.rs    PyO3 surface (behind the extension-module feature)
python/bobine/        Python shim + type stubs        (import bobine)
legacy/               frozen pure-Python bobine v0.2.0 (reference implementation)

Performance

Reference box: RTX 3090, ORT 1.28.1 (benches predate the 1.29.0 pin — ratios, not absolutes, are the takeaway). Full tables, fixtures, and repro commands in docs/benchmarks.md.

Workload CPU CUDA (RTX 3090) Routing
Layout (DocLayout-YOLO, 1024²) 480 ms 37–38 ms (~12.8×) CUDA auto-enabled
OCR det+rec (PP-OCRv4, 1024²) 131 ms 36 ms (~3.6×) CUDA auto-enabled
OCR 47-line page (batched) 0.79 s 0.32 s (6.3× vs per-line) CUDA + chunked rec
Table (SLANet-plus, 700×400) 28.8 ms 49 ms (0.6× — slower) Pinned to CPU
Table (SLANet-plus, 1024²) 133 ms 893 ms (0.15× — much slower) Pinned to CPU
TexTeller fp32 + KV-cache 0.95 s 0.42 s (~2.3×) CUDA opt-in (see below)
TexTeller int8 0.50 s 1.32 s (slower) CPU default

Takeaways:

  • CUDA wins big on layout + OCR (12.8× / 3.6×) — auto-enabled, zero config.
  • Tables stay on CPU by design — SLANet fragments across devices (2–9× slower on CUDA).
  • Quantization is hardware-dependent: int8 is ~1.9× faster than fp32 on CPU (identical output, ~319 MB vs ~1.25 GB) but loses on CUDA (dequant overhead, no KV-cache); Int8 + CUDA is discouraged and warned against.
  • Batching is provider-gated: chunked rec is 6.3× faster on CUDA but was measured 4.8× slower on CPU — CPU sessions keep the exact single-line path (byte-identical tensors).

Formula OCR

Formulas are recognized by TexTeller (80M training pairs), decoded with KV-cache over a ViT encoder → RoBERTa decoder ONNX graph — roughly 5× faster per crop than the RapidLaTeXOCR backend used by the legacy Python package, with markedly better accuracy.

Model choice

By default bobine downloads the quantized export (~319 MB total, HF Ji-Ha/TexTeller3-ONNX-dynamic) into the converter's cache dir on first use; set model_quantization=ModelQuantization::Fp32 to use full-precision weights (~1.25 GB, HF OleehyO/TexTeller) instead. Preprocessing matches upstream TexTeller exactly, including its normalize-before-pad order (v0.4.4 fixed black pad fill, which measurably degraded recognition). Measured on a 10-formula corpus: Int8+CPU scores 10/10, Fp32+CUDA 9/10 — occasional single-token decode noise flips between examples on either variant, so pick by hardware, not quality.

GPU

On NVIDIA GPUs, point ORT_DYLIB_PATH at a GPU onnxruntime build — v0.4.9+ auto-enables CUDA for the layout and OCR slots when the loaded library exposes a usable CUDA execution provider (EP-availability probe, shared embroider crate since v0.5.10).

Zero config needed; explicit per-slot overrides: layout_ort_providers, ocr_ort_providers, table_ort_providers, encoder_ort_providers, decoder_ort_providers. To also run Fp32 formula decode on the GPU, set ort_providers=["CUDAExecutionProvider", "CPUExecutionProvider"] (Int8 + CUDA is discouraged and warned against).

Formula regions

Formula regions come from the PDF text layer (TeX math fonts such as cmmi/cmsy/cmex, plus unicode math codepoints), merged line-aware so multi-line display equations become one crop while separate equations, columns and prose stay apart. For text-layer-hostile PDFs (Word/InDesign/OCR output without math fonts), set formula_layout_fallback=True to ask the layout model for equation regions instead (off by default).

OCR batching

OCR recognition runs line crops in chunks of 32 on accelerators (6.3x faster on CUDA, measured) while CPU-only sessions keep the exact single-line path — provider-gated batching, byte-identical tensors on CPU (v0.4.28, see benchmarks).

Office documents

.docx / .xlsx / .pptx plus legacy .doc / .xls / .ppt convert to markdown via office_oxide (HybridConverter::convert_office(path) or the convert() dispatcher — no models needed). Excel workbooks additionally export per-sheet csv/json (convert_excel, <stem>.<sheet>.csv + <stem>.json siblings). Embedded pictures stage into <work_dir>/assets/office/ and rewrite to staged files, promoted to okf-asset:// by ingest_document — see §12 of the architecture doc.

Structured sources (JATS)

Publisher full-text XML (.xml / .jats) routes to convert_jats (no ONNX needed): presentation MathML → LaTeX via mml.rs (fused $…$ inline, $$tex \tag{N}$$ display), real JATS tables → GFM pipes, figures as ![alt](href) with remote URLs preserved, sections as headings. Returns JatsDocument { md_path, title, n_formulas, n_figures, n_tables }; Python: bobine.convert_jats / converter.convert_jats. See the proposal for the P-A→P-D ladder (sanitizer, benchmark harness, okfgraph/gossamer phases).

Output contract

convert_pdf returns one markdown string: inline $…$ / display $$…$$ LaTeX spliced in place, GFM pipe tables, fenced code blocks from monospaced font runs, embedded images written to work_dir, plus an okf-asset:// staging store for unreferenced figures. Office docs additionally stage pictures into <work_dir>/assets/office/; workbooks yield <stem>.<sheet>.csv + <stem>.json siblings. For document-level workflows use ingest_document / convert_directory, which return versioned ConvertedDocuments with frontmatter and lint hooks.

Testing

cargo test                # 137 lib tests (ORT_DYLIB_PATH required — no dylib = abort)
cargo test --test test_office --test test_excel --test test_golden   # no models needed
ORT_DYLIB_PATH=... cargo test --test test_converter                 # incl. full-paper AUTO run
maturin develop && python -c "import bobine"   # bindings smoke test

Fixtures: trimmed CC BY 4.0 arXiv papers + a generated scanned page + generated OOXML fixtures — see tests/fixtures/SOURCES.md for provenance.

Docs

License

Apache-2.0 OR MIT (dual, choose either). Test fixtures are CC BY 4.0 (attribution in tests/fixtures/SOURCES.md). legacy/ keeps the original Python release's licensing.

Metadata

Release files for bobine 0.7.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for bobine 0.7.2
File Size Uploaded Provenance Actions
bobine-0.7.2.tar.gz 319.9 kB With provenance Details for bobine-0.7.2.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for bobine 0.7.2
File Actions
bobine-0.7.2-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details for bobine-0.7.2-cp314-cp314-win_amd64.whl
bobine-0.7.2-cp314-cp314-manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64 Details for bobine-0.7.2-cp314-cp314-manylinux_2_28_x86_64.whl
bobine-0.7.2-cp314-cp314-manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ ARM64 Details for bobine-0.7.2-cp314-cp314-manylinux_2_28_aarch64.whl
bobine-0.7.2-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details for bobine-0.7.2-cp314-cp314-macosx_11_0_arm64.whl
bobine-0.7.2-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for bobine-0.7.2-cp313-cp313-win_amd64.whl
bobine-0.7.2-cp313-cp313-manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64 Details for bobine-0.7.2-cp313-cp313-manylinux_2_28_x86_64.whl
bobine-0.7.2-cp313-cp313-manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ ARM64 Details for bobine-0.7.2-cp313-cp313-manylinux_2_28_aarch64.whl
bobine-0.7.2-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details for bobine-0.7.2-cp313-cp313-macosx_11_0_arm64.whl
bobine-0.7.2-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for bobine-0.7.2-cp312-cp312-win_amd64.whl
bobine-0.7.2-cp312-cp312-manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64 Details for bobine-0.7.2-cp312-cp312-manylinux_2_28_x86_64.whl
bobine-0.7.2-cp312-cp312-manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ ARM64 Details for bobine-0.7.2-cp312-cp312-manylinux_2_28_aarch64.whl
bobine-0.7.2-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details for bobine-0.7.2-cp312-cp312-macosx_11_0_arm64.whl
bobine-0.7.2-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for bobine-0.7.2-cp311-cp311-win_amd64.whl
bobine-0.7.2-cp311-cp311-manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64 Details for bobine-0.7.2-cp311-cp311-manylinux_2_28_x86_64.whl
bobine-0.7.2-cp311-cp311-manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ ARM64 Details for bobine-0.7.2-cp311-cp311-manylinux_2_28_aarch64.whl
bobine-0.7.2-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details for bobine-0.7.2-cp311-cp311-macosx_11_0_arm64.whl
bobine-0.7.2-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details for bobine-0.7.2-cp310-cp310-win_amd64.whl
bobine-0.7.2-cp310-cp310-manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64 Details for bobine-0.7.2-cp310-cp310-manylinux_2_28_x86_64.whl
bobine-0.7.2-cp310-cp310-manylinux_2_28_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ ARM64 Details for bobine-0.7.2-cp310-cp310-manylinux_2_28_aarch64.whl
bobine-0.7.2-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details for bobine-0.7.2-cp310-cp310-macosx_11_0_arm64.whl

Total release size: 343.0 MB

Release files / bobine-0.7.2.tar.gz

Download URL bobine-0.7.2.tar.gz
Size 319.9 kB
Tags Source
SHA-256 checksum
How to use checksums
7f93c32b5a55a3d2e833377e7e4a4c3aa484d14669b73e275651115df1c16084
BLAKE2b-256 checksum
How to use checksums
fde0bd73d7fbf1fa769072792a198f6934eeb4518d4871fb4c9f1d9dc14254f3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / bobine-0.7.2-cp314-cp314-win_amd64.whl

Download URL bobine-0.7.2-cp314-cp314-win_amd64.whl
Size 17.4 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
1b068769c2dca4bcab65faee27e50e05cdbae1e48dfa4cd8da416c1210522465
BLAKE2b-256 checksum
How to use checksums
50fe3d7ae3e8f98e9f0b910afcca262454d088d25385ae00b23b8fa2e063ff0b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / bobine-0.7.2-cp314-cp314-manylinux_2_28_x86_64.whl

Download URL bobine-0.7.2-cp314-cp314-manylinux_2_28_x86_64.whl
Size 18.1 MB
Tags CPython 3.14 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
fe306463fe70cc0c894a926d04ac961133d251f90ded94b3efd94fde74dcb995
BLAKE2b-256 checksum
How to use checksums
0838c324eae01f089cad66464da9fb2cbfc6e610216005443c40ad31f89c3785
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / bobine-0.7.2-cp314-cp314-manylinux_2_28_aarch64.whl

Download URL bobine-0.7.2-cp314-cp314-manylinux_2_28_aarch64.whl
Size 16.7 MB
Tags CPython 3.14 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
f1360923c403ad3e51f87eca3cf0a870306e777ac481d113c2e1e2a9eb3fbf62
BLAKE2b-256 checksum
How to use checksums
2bdc6a6795e5eefb6e8039670968b8a6058c1840e33fd4b27e40507b3d7df125
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / bobine-0.7.2-cp314-cp314-macosx_11_0_arm64.whl

Download URL bobine-0.7.2-cp314-cp314-macosx_11_0_arm64.whl
Size 16.3 MB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ce34111d78e9f8826dea3869e42bae9ad4acaa15d846d336f256d71451ea0768
BLAKE2b-256 checksum
How to use checksums
22b56d996e91f5cda9fe8fdca338ab3c33513f7404521cdcae8d6d8e596a4e77
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / bobine-0.7.2-cp313-cp313-win_amd64.whl

Download URL bobine-0.7.2-cp313-cp313-win_amd64.whl
Size 17.4 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
d9f989aaaa31e87a6fc9d3d02de5f909b9ffdf8a8e0f37ff0c98300cdb0c5b97
BLAKE2b-256 checksum
How to use checksums
c1deda556b04ad26d17fc5a59fb108b4a27691de385f0001efaaa84536edc25d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / bobine-0.7.2-cp313-cp313-manylinux_2_28_x86_64.whl

Download URL bobine-0.7.2-cp313-cp313-manylinux_2_28_x86_64.whl
Size 18.1 MB
Tags CPython 3.13 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
13a1691f4120f6f322542fa37466704c2befbd4eda3c895b4056a7ff061507be
BLAKE2b-256 checksum
How to use checksums
253d4f8b8fb544b07964ebc87d4ad095628a2169a82bed714382fc120ce3e088
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / bobine-0.7.2-cp313-cp313-manylinux_2_28_aarch64.whl

Download URL bobine-0.7.2-cp313-cp313-manylinux_2_28_aarch64.whl
Size 16.7 MB
Tags CPython 3.13 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
6673f301f1152056eaaa3bc68ac92b8490b251c7ac6c168fae89b90cb3f05d47
BLAKE2b-256 checksum
How to use checksums
b01ba7d93111d62a5638bb628fc01b7bb2d788a8be69e9363ad20befc4376060
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / bobine-0.7.2-cp313-cp313-macosx_11_0_arm64.whl

Download URL bobine-0.7.2-cp313-cp313-macosx_11_0_arm64.whl
Size 16.3 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
30b3c3c53766049dd20a9f8d1844c87718c65820bbcbfaa1913b9d43fedd3f4a
BLAKE2b-256 checksum
How to use checksums
c930d074942203949601395b17378152a7b0f1a3371e96811eda58a5c1938d28
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / bobine-0.7.2-cp312-cp312-win_amd64.whl

Download URL bobine-0.7.2-cp312-cp312-win_amd64.whl
Size 17.4 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
a5ddc11130bfd935bce735e47b20d5cac08e5246ef4fc5e949d9f7b095461a1a
BLAKE2b-256 checksum
How to use checksums
f32566affa6209ab8462d5369344a3077db262d7cf5712b561345c0ae18778b7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / bobine-0.7.2-cp312-cp312-manylinux_2_28_x86_64.whl

Download URL bobine-0.7.2-cp312-cp312-manylinux_2_28_x86_64.whl
Size 18.1 MB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
3add6dd29b2f99f69f9d5714a776aa49e3b4d976a0bc4fd424bad4e5795ef897
BLAKE2b-256 checksum
How to use checksums
a179a47545d671d316b207097e67657131db854a4d8e44a407d3d5a6fd311f6c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / bobine-0.7.2-cp312-cp312-manylinux_2_28_aarch64.whl

Download URL bobine-0.7.2-cp312-cp312-manylinux_2_28_aarch64.whl
Size 16.7 MB
Tags CPython 3.12 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
8fefca43ea8095bbbd571e6a24f94b15df89dbe94fd039bc7153d93fe5b77e50
BLAKE2b-256 checksum
How to use checksums
a362e634cdd78e6bb0751a9aa69b922b63010501ea8d6892b8caf1380dbb32cf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / bobine-0.7.2-cp312-cp312-macosx_11_0_arm64.whl

Download URL bobine-0.7.2-cp312-cp312-macosx_11_0_arm64.whl
Size 16.3 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
f257cd9a2d95d2997bcd958579ad355325e377c81a70ee067d90f818da2a36c6
BLAKE2b-256 checksum
How to use checksums
49e0ac5d0dbf30ee261a6ec1f2c60d020b238878225f16b2b8151350fad26917
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / bobine-0.7.2-cp311-cp311-win_amd64.whl

Download URL bobine-0.7.2-cp311-cp311-win_amd64.whl
Size 17.4 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
31f2790c3748fb6a6e33725f902cea03b368e9c1db602ca663c606bafc8036dd
BLAKE2b-256 checksum
How to use checksums
5ee123b4aa7482e1b66e2c2006d3a1823a41fdd36882c155dc04ea53a7127e82
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / bobine-0.7.2-cp311-cp311-manylinux_2_28_x86_64.whl

Download URL bobine-0.7.2-cp311-cp311-manylinux_2_28_x86_64.whl
Size 18.1 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
39dbb6279d74a9877727fb010af57da53bfb63a31442a9028e1cb504cb52bb89
BLAKE2b-256 checksum
How to use checksums
b44315e329436f83c41279096d6551023368142715207bd6aa5ae9214d0da71d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / bobine-0.7.2-cp311-cp311-manylinux_2_28_aarch64.whl

Download URL bobine-0.7.2-cp311-cp311-manylinux_2_28_aarch64.whl
Size 16.7 MB
Tags CPython 3.11 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
04783c34d868fc823be1f80d1f8eaeb5fff4722af4626a36bda178c94780a5e5
BLAKE2b-256 checksum
How to use checksums
98882b0b9c9f654a1840ba0fe081c7d2a1a529aac7dc519c500ada3c61de2842
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / bobine-0.7.2-cp311-cp311-macosx_11_0_arm64.whl

Download URL bobine-0.7.2-cp311-cp311-macosx_11_0_arm64.whl
Size 16.3 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
337d3f5efa3f9ed3f7ecaadf8b0c3eb02f5438bdf61b90fb6a2643b7a42df930
BLAKE2b-256 checksum
How to use checksums
656f33d258a9d9c372ebb3d355b089dd90129df5f069c78dffb4bce738e65540
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / bobine-0.7.2-cp310-cp310-win_amd64.whl

Download URL bobine-0.7.2-cp310-cp310-win_amd64.whl
Size 17.4 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
824c84ac7195d5eed01ef76df7a5dd87201e33118c6d61bd77621c6aac2a43c8
BLAKE2b-256 checksum
How to use checksums
7c08c8d3b4f50f7de8385ac7b6977523200a62802e0672ac07ef9fa6760300fd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / bobine-0.7.2-cp310-cp310-manylinux_2_28_x86_64.whl

Download URL bobine-0.7.2-cp310-cp310-manylinux_2_28_x86_64.whl
Size 18.1 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
f810491f442165be9249ae84953832d52983d20fe8723ecd705a94e52e4e3141
BLAKE2b-256 checksum
How to use checksums
62e0fa088a4837f45336362a8da566f18e3113e24908118b770200c4d5ecfd57
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / bobine-0.7.2-cp310-cp310-manylinux_2_28_aarch64.whl

Download URL bobine-0.7.2-cp310-cp310-manylinux_2_28_aarch64.whl
Size 16.7 MB
Tags CPython 3.10 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
50f844b171f27a0f2b3ca0fd380b05b5c2c91e7abf1e2a0fe83710b6c6624581
BLAKE2b-256 checksum
How to use checksums
f25be69f21421a347f6c28c0f10190b969dbece578204909558a46359e02562d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / bobine-0.7.2-cp310-cp310-macosx_11_0_arm64.whl

Download URL bobine-0.7.2-cp310-cp310-macosx_11_0_arm64.whl
Size 16.3 MB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
bb7d77d79b3bf9d19df8e735051141b82c0689952fb9a8889e7aea2556efe3f6
BLAKE2b-256 checksum
How to use checksums
6a8c8e44b2bf7ac1f4338e09b200cb528903536f9a4c67fb8ba699e316ef3317
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Security for bobine 0.7.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 21 files in this release have been uploaded with provenance metadata.

Select from 21 files

Attestation for bobine-0.7.2.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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