Skip to main content

anytomd

PyPI Python Docs Upstream

Python binding of anytomd-rs — the pure-Rust engine by developer0hye that converts DOCX, PPTX, XLSX, HTML, CSV, notebooks, images and code into clean Markdown, designed for LLM consumption.

Same engine, same output, now one pip install away: no Python dependencies, the GIL released during conversion, native asyncio, typed end to end.

pip install anytomd        # or: uv add anytomd
from anytomd import convert_file

result = convert_file("report.docx")
print(result.markdown)     # headings, tables, lists, links, images
print(result.plain_text)   # the same content, no Markdown syntax
print(result.title)        # 'Quarterly Report'

Formats

Format Extensions
Word, PowerPoint, Excel .docx .pptx .xlsx .xls
Web and data .html .htm .csv .json .xml .ipynb
Images .png .jpg .gif .webp .bmp .tiff .svg .heic .avif
Code and text .py .rs .js .ts .go … · .txt .md .yaml .toml …

Detected from magic bytes and extension. PDF is refused on purpose: current LLMs read it natively. Details per format → Formats.

API

Call Does
convert_file(path, **options) Convert a file; format autodetected
convert_bytes(data, format, **options) Convert in-memory bytes; format is an extension ("docx", ".csv")
await convert_file_async(path, **options) Awaitable, off the event loop; images described concurrently
await convert_bytes_async(data, format, **options) Awaitable variant over bytes
detect_format(path, data) The format the engine would pick, or None
detect_zip_format(data) "docx", "pptx", "xlsx" behind a ZIP, or None

Options, keyword-only on every conversion: extract_images, extract_comments, strict, max_input_bytes, max_total_image_bytes, max_uncompressed_zip_bytes, and image_describer / async_image_describer. One by one → Reference.

LLM image descriptions

Any callable (image: bytes, mime_type: str, prompt: str) -> str writes the alt text — your OpenAI, Anthropic or local model — or use the built-in Gemini describers:

from anytomd import GeminiDescriber, convert_file

result = convert_file("deck.pptx", image_describer=GeminiDescriber())   # GEMINI_API_KEY
# ![A bar chart of quarterly revenue by region](image1.png)

The async variants take an async def and describe every image of a document concurrently. A failing describer never aborts the conversion: it becomes a warning. → Image descriptions

Errors

Best-effort by default: recoverable problems land in result.warnings; strict=True raises instead. Unrecoverable ones raise a subclass of ConvertError; unreadable paths raise FileNotFoundError and friends. → Errors and warnings

Upstream

All conversion logic, format coverage and performance belong to anytomd-rs — see its README for benchmarks, the CLI and the WASM build. anytomd.__version__ reports the engine release compiled into your wheel. Markdown output issues go upstream; Python API issues go here. → Upstream and versioning

Self-maintenance

The binding follows its dependencies on its own; a human only reviews and merges.

Trigger Job Does
New anytomd-rs, PyO3, tokio, tooling release Renovate Opens a PR (renovate/*)
That PR sync.yml Sets the package version to the engine's, logs the engine in CHANGELOG.md, regenerates THIRD_PARTY_LICENSES.md
Every push and PR ci.yml prek hooks, tests on Linux/macOS/Windows × Python 3.12/3.14, Rust coverage ≥ 90 %, docs; on renovate/* also the engine's public API diff and release notes
CI red, or engine API grew ai-fix.yml A Qwen Code agent repairs or extends the binding under QWEN.md; allowlisted commits only, three attempts at most
First day of the month health.yml Flags archived, vanished, stale or dormant dependencies in one issue
v* tag release.yml Wheels for five platforms, sdist, build provenance, PyPI via trusted publishing

Package version = engine version; binding-only fixes ship as .postN. Exactly which files each piece may edit, and with which tool → What it touches

Development

uv sync && uv run prek install   # hooks: ruff, ty, tach, rustfmt, clippy, licenses, zizmor, docs, gitleaks
make check                       # build + ruff + ty + tach + tests
make cov                         # Rust coverage driven by the Python suite (gate 90 %)

→ Development

License

Apache-2.0, like anytomd-rs. Wheels statically link anytomd-rs and its dependencies; their licenses ship in THIRD_PARTY_LICENSES.md, inside every wheel too.

Metadata

Release files for anytomd 1.3.1.post1

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

Source distribution (sdist)

Source distribution for anytomd 1.3.1.post1
File Size Uploaded Provenance
anytomd-1.3.1.post1.tar.gz 65.1 kB With provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for anytomd 1.3.1.post1
File
anytomd-1.3.1.post1-cp312-abi3-win_amd64.whl CPython 3.12 abi3 Windows x86-64 Details
anytomd-1.3.1.post1-cp312-abi3-manylinux_2_28_x86_64.whl CPython 3.12 abi3 Linux glibc 2.28+ x86-64 Details
anytomd-1.3.1.post1-cp312-abi3-manylinux_2_28_aarch64.whl CPython 3.12 abi3 Linux glibc 2.28+ ARM64 Details
anytomd-1.3.1.post1-cp312-abi3-macosx_11_0_arm64.whl CPython 3.12 abi3 macOS 11.0+ ARM64 Details
anytomd-1.3.1.post1-cp312-abi3-macosx_10_12_x86_64.whl CPython 3.12 abi3 macOS 10.12+ x86-64 Details

Total release size: 13.3 MB

Release files / anytomd-1.3.1.post1.tar.gz

Download URL anytomd-1.3.1.post1.tar.gz
Size 65.1 kB
Tags Source
SHA-256 checksum
How to use checksums
2c3ef1379182889aeb6d7af323bf23b49dd0ef7f7d4d8a5bbcba8a3dcd8b4f1a
BLAKE2b-256 checksum
How to use checksums
d20d2cbc307472d5086a29e52699ea97c0aa059bfb37efb5df4449a18c592b8c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 15, 2026.

Transparency log

Release files / anytomd-1.3.1.post1-cp312-abi3-win_amd64.whl

Download URL anytomd-1.3.1.post1-cp312-abi3-win_amd64.whl
Size 2.7 MB
Tags CPython 3.12 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
0c82b70806a863559de2a76f7fd985b320a4e007f417732bd5151336ed167233
BLAKE2b-256 checksum
How to use checksums
e49781f976b4b652363db92831bf004458c8b54ea79336a5b0a37b334e472448
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 15, 2026.

Transparency log

Release files / anytomd-1.3.1.post1-cp312-abi3-manylinux_2_28_x86_64.whl

Download URL anytomd-1.3.1.post1-cp312-abi3-manylinux_2_28_x86_64.whl
Size 2.7 MB
Tags CPython 3.12 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
56cf3f981f95e61583d9c9f6374c8999b55ba13f051c9c7bf54812d724f09a5d
BLAKE2b-256 checksum
How to use checksums
07ec6526412850b7e49a94f760e2104dc39cd6b8d4b29283e9b72a4780827196
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 15, 2026.

Transparency log

Release files / anytomd-1.3.1.post1-cp312-abi3-manylinux_2_28_aarch64.whl

Download URL anytomd-1.3.1.post1-cp312-abi3-manylinux_2_28_aarch64.whl
Size 2.7 MB
Tags CPython 3.12 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
fbd9111e3b6185eff376e951ebcf9d82f572aa5ffc0e1ee39bd719bc6dd2cbbd
BLAKE2b-256 checksum
How to use checksums
79646f162a872e92abccec400d51d538299d58ea8bcd899dc815d839e5c70672
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 15, 2026.

Transparency log

Release files / anytomd-1.3.1.post1-cp312-abi3-macosx_11_0_arm64.whl

Download URL anytomd-1.3.1.post1-cp312-abi3-macosx_11_0_arm64.whl
Size 2.5 MB
Tags CPython 3.12 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
bc2a4c58104114d2481e98e92015fec057739bd9132e9f1632e239b0e9d209d6
BLAKE2b-256 checksum
How to use checksums
742bf7cdce5369e9e4f05a0843b004050e5ac88acb3d1e36e87cb8dd4046a687
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 15, 2026.

Transparency log

Release files / anytomd-1.3.1.post1-cp312-abi3-macosx_10_12_x86_64.whl

Download URL anytomd-1.3.1.post1-cp312-abi3-macosx_10_12_x86_64.whl
Size 2.6 MB
Tags CPython 3.12 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
6be41848fb7c458c78658d0f45444ac28acff023e229761eabef96a1c648dadb
BLAKE2b-256 checksum
How to use checksums
e5b75bd8b74a845dd554a52827e9a9945563680c08aaee7dc3dfff2f89a7bb0e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 15, 2026.

Transparency log

Security for anytomd 1.3.1.post1

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 6 files in this release have been uploaded with provenance metadata.

Select from 6 files

Attestation for anytomd-1.3.1.post1.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 15, 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.

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