Skip to main content

OxydeMark

CI codecov License: MIT prek

Extensible Markdown pipelines powered by Rust.

Documentation | API reference

Overview

OxydeMark is a Markdown processing engine built around an AST pipeline architecture. It combines a high-performance Rust core for parsing and rendering with Python bindings (via PyO3) for a flexible plugin system.

Markdown Input
    -> Preprocessing Plugins (Python, text-level)
    -> Rust Parser / rushdown (AST generation)
    -> AST exposed to Python (AstNode tree)
    -> AST Transformation Plugins (Python, AST-level)
    -> Rust Renderer (HTML generation)
    -> Postprocessing Plugins (Python, HTML-level)
    -> Final Output

Installation

Note: OxydeMark is in early development (pre-alpha). Installation from source is currently the only option.

# Clone the repository
git clone https://github.com/noirbizarre/oxydemark.git
cd oxydemark

# Install tools and build
mise install
maturin develop

Quick Start

from oxydemark import OxydeEngine

engine = OxydeEngine()

md = """
# Hello OxydeMark

This is **extensible Markdown**.
"""

html = engine.render(md)
print(html)

Plugins

A plugin is any object implementing one or more of the preprocess, transform and postprocess hooks. No base class, no registration:

from oxydemark import OxydeEngine
from oxydemark.contrib import AdmonitionPlugin, MentionPlugin


class Shouty:
    def postprocess(self, html: str) -> str:
        return html.upper()


engine = OxydeEngine(plugins=[AdmonitionPlugin(), MentionPlugin(), Shouty()])
print(engine.render("> [!NOTE]\n> Ping @alice\n"))

oxydemark.contrib ships four worked examples (admonitions, shortcodes, mentions, lazy images). See the plugin guide for the full authoring documentation, including the AST value-semantics rules.

Development

See CONTRIBUTING.md for the full development guide.

# Set up tools and hooks
mise install
mise run setup

# Common tasks
mise run build        # Build the Rust crate
mise run test         # Run tests
mise run lint         # Run clippy
mise run fmt          # Format code
mise run ci           # Run all checks
mise run docs         # Build the documentation site

Project Structure

oxydemark/
├── src/                    # Rust core
│   ├── lib.rs              # PyO3 module, parser/renderer wiring
│   ├── ast.rs              # AstNode definition, arena-to-tree conversion
│   ├── extensions.rs       # Comark parser/renderer extensions
│   └── html_render.rs      # AST-to-HTML renderer
├── python/oxydemark/       # Python package
│   ├── __init__.py         # Re-exports from native module
│   ├── api.py              # OxydeEngine, plugin protocol
│   └── contrib/            # Example plugins (provisional surface)
├── docs/                   # Documentation site sources
│   ├── plugins.md          # Plugin authoring guide
│   ├── api/                # API reference pages
│   └── specs/              # OMEPs (design decisions)
├── .github/workflows/      # CI pipeline
├── Cargo.toml              # Rust crate configuration
├── pyproject.toml          # Python build config (maturin)
├── mise.toml               # Task runner and tool versions
├── zensical.toml           # Documentation site configuration
├── cliff.toml              # Changelog generation
├── prek.toml               # Pre-commit hooks
├── CONTRIBUTING.md         # Contribution guidelines
└── LICENSE                 # MIT License

Design Decisions

Architectural and tooling decisions are documented as OMEPs (OxydeMark Enhancement Proposals) in docs/specs/. See the OMEP index for the full list.

License

MIT

Metadata

Release files for oxydemark 0.2.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 oxydemark 0.2.2
File Size Uploaded Provenance Actions
oxydemark-0.2.2.tar.gz 61.3 kB With provenance Details for oxydemark-0.2.2.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for oxydemark 0.2.2
File Actions
oxydemark-0.2.2-cp312-abi3-win_amd64.whl CPython 3.12 abi3 Windows x86-64 Details for oxydemark-0.2.2-cp312-abi3-win_amd64.whl
oxydemark-0.2.2-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 abi3 Linux glibc 2.17+ x86-64 Details for oxydemark-0.2.2-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
oxydemark-0.2.2-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.12 abi3 Linux glibc 2.17+ ARM64 Details for oxydemark-0.2.2-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
oxydemark-0.2.2-cp312-abi3-macosx_11_0_arm64.whl CPython 3.12 abi3 macOS 11.0+ ARM64 Details for oxydemark-0.2.2-cp312-abi3-macosx_11_0_arm64.whl
oxydemark-0.2.2-cp312-abi3-macosx_10_12_x86_64.whl CPython 3.12 abi3 macOS 10.12+ x86-64 Details for oxydemark-0.2.2-cp312-abi3-macosx_10_12_x86_64.whl

Total release size: 4.7 MB

Release files / oxydemark-0.2.2.tar.gz

Download URL oxydemark-0.2.2.tar.gz
Size 61.3 kB
Tags Source
SHA-256 checksum
How to use checksums
142023ec9c4e9e94242cf7bee3631fc5d0c1d92527ba5359641bb6ac914d6f39
BLAKE2b-256 checksum
How to use checksums
f292de32050db70de4fb6cbcda061b0aa527820dd51a6db4c5ef9ef1fc19900e
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 Aug 3, 2026.

Transparency log

Release files / oxydemark-0.2.2-cp312-abi3-win_amd64.whl

Download URL oxydemark-0.2.2-cp312-abi3-win_amd64.whl
Size 763.3 kB
Tags CPython 3.12 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
bc9f411f64c411461a2d2af1d471c1260ce4e1525686035f5c1785ee020c34f4
BLAKE2b-256 checksum
How to use checksums
5c3bbc5f9509266f297a7c5773eb9238cf3d6adfec518f69542317218ec18077
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 Aug 3, 2026.

Transparency log

Release files / oxydemark-0.2.2-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL oxydemark-0.2.2-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.0 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
6ba0bc9604c0364c71d236101dfee67ecc10332c7d97a8e8dadf0a740b90c2e3
BLAKE2b-256 checksum
How to use checksums
21f14dee9d2bbc9a0cd61b85b3ad440e83865235535c36c062eaac008bd1860f
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 Aug 3, 2026.

Transparency log

Release files / oxydemark-0.2.2-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL oxydemark-0.2.2-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 1.1 MB
Tags CPython 3.12 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
19361d1598045ce7e6cee29dfdd2ded5c9bb8b7c0c8997c25db25efae87e1fe6
BLAKE2b-256 checksum
How to use checksums
68d9455350d1bb242a385f07041543b3e605bbef50a8e928a5b0e4a2502e0fbf
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 Aug 3, 2026.

Transparency log

Release files / oxydemark-0.2.2-cp312-abi3-macosx_11_0_arm64.whl

Download URL oxydemark-0.2.2-cp312-abi3-macosx_11_0_arm64.whl
Size 892.6 kB
Tags CPython 3.12 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
db8cc5dcb78b933a68e14d186aee0953a180ecff683b58bbd32563dbb0941134
BLAKE2b-256 checksum
How to use checksums
b898a6579c067a3d8ecac4db90621401fa80662f58e97cc34b0ed476ffc39f59
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 Aug 3, 2026.

Transparency log

Release files / oxydemark-0.2.2-cp312-abi3-macosx_10_12_x86_64.whl

Download URL oxydemark-0.2.2-cp312-abi3-macosx_10_12_x86_64.whl
Size 872.0 kB
Tags CPython 3.12 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
6d958ed1edf427fab52e204b0e0b0774741809b5d07f115c30acfa259ef449e4
BLAKE2b-256 checksum
How to use checksums
22f262aab21cc38fe300115d7c0bba86b0e59344338691c238a06322886a5e19
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 Aug 3, 2026.

Transparency log

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

Select from 6 files

Attestation for oxydemark-0.2.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 Aug 3, 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