Skip to main content

RDX parser for Python — parse .rdx documents at Rust speed

Project description

rdx-py

Python bindings for the RDX parser via PyO3 and maturin. Parse .rdx documents at Rust speed, get plain Python dicts back.

Installation

pip install rdx-parser

Usage

import rdx

ast = rdx.parse("""---
title: API Reference
---

# {$title}

<Notice type="warning">
  This endpoint is deprecated.
</Notice>
""")

print(ast["frontmatter"])  # {'title': 'API Reference'}
print(ast["children"][0]["type"])  # 'heading'

API

rdx.parse(input: str) -> dict

Parse an RDX document into an AST dict.

rdx.parse_with_defaults(input: str) -> dict

Parse with built-in transforms (auto-slug headings + table of contents).

rdx.parse_with_transforms(input: str, transforms: list[str]) -> dict

Parse with selected transforms. Available: "auto-slug", "toc".

rdx.validate(ast: dict, schema: dict) -> list[dict]

Validate an AST against a component schema.

schema = {
    "strict": True,
    "components": {
        "Notice": {
            "props": {
                "type": {"type": "enum", "required": True, "values": ["info", "warning", "error"]}
            }
        }
    }
}

diagnostics = rdx.validate(ast, schema)
for d in diagnostics:
    print(f"{d['severity']}: {d['message']} at line {d['line']}")

rdx.collect_text(ast: dict) -> str

Extract all plain text from the AST. Useful for search indexing, embeddings, and reading time estimation.

text = rdx.collect_text(ast)
words = text.split()
reading_time = len(words) // 200  # minutes

rdx.query_all(ast: dict, node_type: str) -> list[dict]

Find all nodes of a given type.

headings = rdx.query_all(ast, "heading")
components = rdx.query_all(ast, "component")

rdx.version() -> str

Returns the RDX parser version.

RAG / AI Pipeline Example

import rdx

def prepare_for_embedding(rdx_source: str) -> list[str]:
    """Parse RDX and split into clean text chunks by heading."""
    ast = rdx.parse(rdx_source)
    chunks = []
    current = []

    for node in ast["children"]:
        if node["type"] == "heading":
            if current:
                chunks.append(rdx.collect_text({"type": "root", "frontmatter": None, "children": current, "position": ast["position"]}))
            current = [node]
        else:
            current.append(node)

    if current:
        chunks.append(rdx.collect_text({"type": "root", "frontmatter": None, "children": current, "position": ast["position"]}))

    return chunks

Development

pip install maturin
maturin develop
python -c "import rdx; print(rdx.parse('# Hello'))"

License

Licensed under either of Apache License, Version 2.0 or MIT License at your option.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rdx_parser-0.1.1b3.tar.gz (55.3 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

rdx_parser-0.1.1b3-cp314-cp314-macosx_11_0_arm64.whl (886.3 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

rdx_parser-0.1.1b3-cp312-cp312-win_amd64.whl (802.7 kB view details)

Uploaded CPython 3.12Windows x86-64

rdx_parser-0.1.1b3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

File details

Details for the file rdx_parser-0.1.1b3.tar.gz.

File metadata

  • Download URL: rdx_parser-0.1.1b3.tar.gz
  • Upload date:
  • Size: 55.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for rdx_parser-0.1.1b3.tar.gz
Algorithm Hash digest
SHA256 328f5f6679a9b1b23ac2a0f6d71c1031bee6187d8260f847313302a622de8baa
MD5 1c68b109aad63877b7a631e386b072dd
BLAKE2b-256 9c68c2afe107c7fc284383a33cc170a8f213421f08d7c59dc59331a5b49c6379

See more details on using hashes here.

Provenance

The following attestation bundles were made for rdx_parser-0.1.1b3.tar.gz:

Publisher: release.yml on rdx-lang/rdx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rdx_parser-0.1.1b3-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rdx_parser-0.1.1b3-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c8e1ea5238d20bfcb12ba2987e17c8319ff5821b1bb78b1ca37f4e31c239bc10
MD5 5cdfeb6503d10e112222f77b9999215d
BLAKE2b-256 8df2697361c5464dfbec3c38dcc9bfdb0868ef1eb92b793359493d270156eb53

See more details on using hashes here.

Provenance

The following attestation bundles were made for rdx_parser-0.1.1b3-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: release.yml on rdx-lang/rdx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rdx_parser-0.1.1b3-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for rdx_parser-0.1.1b3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 b4fc751aaaa7ea69bcb50419f24a53cabedcb526d43d4e57d4da7860c9cb5e37
MD5 72d6aba448ab3ac9ad6fa98edee7333e
BLAKE2b-256 d94e3fa66382c8befb51d1df5c6420d653a5aa46cc69a07264499aebe4b628ba

See more details on using hashes here.

Provenance

The following attestation bundles were made for rdx_parser-0.1.1b3-cp312-cp312-win_amd64.whl:

Publisher: release.yml on rdx-lang/rdx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rdx_parser-0.1.1b3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rdx_parser-0.1.1b3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0fa17397cc9a5ac8112d11d03a320f9779a59b5b84fe00d87d2abe8a0fccbec8
MD5 e6ef1445036aef0a48f66e1e0071490d
BLAKE2b-256 f2c997309d4a4116927150d51fefaea5df3af04c668f820f67373a52c2532e82

See more details on using hashes here.

Provenance

The following attestation bundles were made for rdx_parser-0.1.1b3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on rdx-lang/rdx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page