omni-mdx
The high-performance MDX engine for Python, powered by a native Rust core.
pip install omni-mdx
Contents
- What is this?
- When should I use this?
- Install
- Use
- API
- Architecture
- Compatibility
- Security
- Contribute
- License
What is this?
omni-mdx provides a high-performance bridge between the pulldown-cmark Rust parser and native Python applications. It parses MDX (Markdown + JSX) into a deeply manipulable Abstract Syntax Tree (AST) and offers zero-dependency native rendering solutions for both the Web (HTML/KaTeX) and Desktop (PyQt5/Matplotlib).
When should I use this?
- Extreme Performance: You need to parse large amounts of MDX content without blocking the Python GIL, thanks to the native Rust core.
- Data Mining & AI: You want to extract structured data (formulas, metadata, components) from MDX for LLM ingestion or indexing.
- Native Desktop Apps: You are building a PyQt5 or PySide application and need to render rich Markdown and Math equations without the overhead of a heavy WebEngine/Chromium component.
- Scientific Publishing: You need robust, built-in support for GFM Tables and KaTeX/LaTeX math.
Install
The package is distributed as a Fat Wheel, meaning the Rust binary is bundled directly. No Rust toolchain is required for installation.
pip install omni-mdx
# Optional: Required for high-quality Desktop math rendering
pip install matplotlib PyQt5
Use
1. Parsing to AST
Transform raw text into a structured, searchable tree.
import omni_mdx
mdx_content = r"""
# Physics 101
The kinetic energy is defined as:
$$\zeta(s) = \sum_{n=1}^\infty \frac{1}{n^s}$$
<Note type="warning">Check your units!</Note>
"""
# Parse returns an MdxAstRoot object
ast = omni_mdx.parse(mdx_content)
# Nodes are accessible via ast.nodes
for node in ast.nodes:
if node.node_type == "BlockMath":
print(f"Formula found: {node.attributes.get('data-math')}")
2. Web Rendering (HTML)
Generate clean, standards-compliant HTML.
from omni_mdx import render_html, parse
nodes = parse("<Speaker name='Leon'>Welcome to the show.</Speaker>").nodes
# Register custom rendering logic for JSX components
def render_speaker(node, ctx):
name = node.attributes.get("name")
return f'<div class="speaker-tag"><b>{name}:</b> {node.text_content()}</div>'
html_output = render_html(nodes, components={"Speaker": render_speaker})
3. Native Desktop Rendering (PyQt5)
Render MDX content directly into native Qt Widgets.
from PyQt5.QtWidgets import QScrollArea
from omni_mdx.qt_renderer import QtRenderer
import omni_mdx
# 1. Parse and render
nodes = omni_mdx.parse("# Hello Native!").nodes
renderer = QtRenderer()
content_widget = renderer.render(nodes)
# 2. Add to your UI
scroll = QScrollArea()
scroll.setWidget(content_widget)
scroll.setWidgetResizable(True)
API
omni_mdx.parse(source: str) -> MdxAstRoot
Parses the MDX source string into an AST root.
- Returns: An
MdxAstRootcontaining a list ofMdxNodeobjects.
MdxNode Properties
node_type: The type of the node (e.g., "h1", "text", "BlockMath").content: The raw content of the node.attributes: A dictionary of JSX props or math metadata.children: A list of childMdxNodeobjects.is_component: Boolean indicating if the node is a JSX component.
Architecture
Omni-MDX utilizes a "Bridge" architecture. The heavy parsing is performed in Rust, producing a high-performance tree. This tree is then wrapped in a Python layer that provides a familiar, typed API for manipulation and rendering.
Compatibility
- Python: 3.11+.
- Operating Systems: Linux (x86_64, aarch64), macOS (Intel, Apple Silicon), Windows (x86_64).
- GUI Frameworks: Optimized for PyQt5 but compatible with any logic that can ingest the AST.
Security
The Rust core provides a safety layer against common regex-based DoS attacks found in many pure-Python parsers. For HTML rendering, ensure your custom components properly sanitize any raw user input if necessary.
Contribute
This package is part of the TOAQ open-source ecosystem. Current Status:
- Python Layer Coverage: 88.10%.
- Core Rust Coverage: 81.29%.
See the Contribution Guide to get started with local development and maturin.
License
Release files for omni-mdx 1.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| omni_mdx-1.1.1-cp313-cp313-win_amd64.whl | CPython 3.13 | CPython 3.13 | Windows x86-64 | Details |
| omni_mdx-1.1.1-cp313-cp313-manylinux_2_34_x86_64.whl | CPython 3.13 | CPython 3.13 | Linux glibc 2.34+ x86-64 | Details |
| omni_mdx-1.1.1-cp313-cp313-macosx_11_0_arm64.whl | CPython 3.13 | CPython 3.13 | macOS 11.0+ ARM64 | Details |
Total release size:2.2 MB
Release files / omni_mdx-1.1.1-cp313-cp313-win_amd64.whl
| Download URL | omni_mdx-1.1.1-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 641.2 kB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
7d4b134f666caa72cac51e89bbab5c58752629860ff0b8ab2d4900705e9be502
|
|
BLAKE2b-256 checksum How to use checksums |
05a8fe95b5fa1d92ea687def31963d7dbd14ac365d7690170c09ed3c3377ed1e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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 Apr 16, 2026.
Transparency logRelease files / omni_mdx-1.1.1-cp313-cp313-manylinux_2_34_x86_64.whl
| Download URL | omni_mdx-1.1.1-cp313-cp313-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 826.3 kB |
| Tags | CPython 3.13 Linux glibc 2.34+ x86-64 |
|
SHA-256 checksum How to use checksums |
7bffd0df8d61d47e99438995c1070e78795e50bd339073bfdf288c8a1dabf833
|
|
BLAKE2b-256 checksum How to use checksums |
183263b871531468f8292ab2fd8c6c2899c4cbe0e8835e1dfc4f027412fe946c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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 Apr 16, 2026.
Transparency logRelease files / omni_mdx-1.1.1-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | omni_mdx-1.1.1-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 720.3 kB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
b5e02e84b233b337ac543dd0febc977d478306cca12457809b48f1b2959066e1
|
|
BLAKE2b-256 checksum How to use checksums |
0335060e594f990937a0954aa271c82aeb1b27113c9db2c69787f3fb303856a6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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 Apr 16, 2026.
Transparency log