bobine 0.5.11

PDF / Office / text → Markdown ingestion engine with ONNX formula OCR (TexTeller), layout analysis and OCR
Documentation
[build-system]
requires = ["maturin>=1.7,<2.0"]
build-backend = "maturin"

[project]
name = "bobine"
version = "0.5.11"
description = "PDF / Office / text → Markdown ingestion engine (Rust core with Python bindings)"
license = "Apache-2.0 OR MIT"
authors = [{ name = "opticsWolf", email = "opticswolf@protonmail.com" }]
readme = "README.md"
requires-python = ">=3.9"

[project.urls]
Homepage = "https://github.com/opticsWolf/bobine"
Repository = "https://github.com/opticsWolf/bobine"
Documentation = "https://github.com/opticsWolf/bobine/docs"
Issues = "https://github.com/opticsWolf/bobine/issues"

[project.optional-dependencies]
# ONNX Runtime libraries (auto-located on `import bobine`; see ORT_DYLIB_PATH).
# Minimum 1.28: the ort engine refuses older runtimes (BadVersion).
# cpu XOR gpu — never install both (same `onnxruntime` module name).
# gpu pulls NVIDIA's wheel-packaged CUDA/cuDNN via onnxruntime-gpu's own
# extras — a bare onnxruntime-gpu has NO cudnn64_9.dll and its CUDA EP
# fails at the first Conv node (verified: graceful CPU/image fallback).
cpu = ["onnxruntime>=1.28"]
gpu = ["onnxruntime-gpu[cuda,cudnn]>=1.28"]
# TexTeller formula OCR (ONNX models auto-downloaded from HuggingFace)
formula = []

[tool.maturin]
features = ["extension-module"]
python-source = "python"
module-name = "bobine._native"
bindings = "pyo3"
# Strip symbols from the compiled extension (biggest wheel-size win;
# the 97 MB debug .pyd is almost entirely debuginfo).
strip = true
# Belt-and-braces: never bundle local `maturin develop` junk (stale *.pyd,
# 600MB+ *.pdb, __pycache__) when building from a dirty tree. Verified that
# the fresh extension module is added by path and unaffected; maturin also
# skips most of this on its own. Scoped to junk extensions only — never *.py.
exclude = ["**/__pycache__/**", "**/*.pyc", "**/*.pyd", "**/*.pdb"]