Skip to main content

Python bindings for prosemirror-rs: a Rust implementation of ProseMirror's document model and transform pipeline

Project description

prosemirror-rs — Python bindings

Python bindings for prosemirror, a Rust implementation of ProseMirror's document model and transform pipeline.

Installation

pip install prosemirror-rs

Design goals

  • Zero unnecessary copies. The schema and document live entirely in Rust memory. Only JSON strings cross the Python/Rust boundary.
  • Wire-efficient. Steps arriving as JSON (e.g. from a WebSocket) can be passed directly to apply_steps_json() without any Python-level parsing.
  • Database-efficient. doc_json() serializes the document in Rust and returns a plain Python str, ready to write to a database with no intermediate Python objects.

Quick start

from prosemirror_rs import Editor
import json

schema_json = json.dumps({
    "nodes": {
        "doc":       {"content": "paragraph+"},
        "paragraph": {"content": "text*", "group": "block"},
        "text":      {"group": "inline"},
    },
    "marks": {"strong": {}, "em": {}},
})

doc_json = json.dumps({
    "type": "doc",
    "content": [{"type": "paragraph", "content": [{"type": "text", "text": "Hello"}]}],
})

editor = Editor(schema_json, doc_json)
print(editor.version)   # 0

# Typical server loop: steps arrive as raw JSON from a client
async def on_message(raw: str):
    data = json.loads(raw)                          # parse envelope only
    results = editor.apply_steps_json(              # steps stay as JSON string
        json.dumps(data["steps"])
    )
    if all(results):
        doc = editor.doc_json()                     # serialised in Rust
        await db.execute("UPDATE docs SET body = $1", doc)

API reference

Editor(schema_json, doc_json)

Create an editor. Both arguments are JSON strings (schema spec and initial document). Raises ValueError on malformed input.

editor.apply_step(step_json) -> bool

Apply one step supplied as a JSON string. Returns True on success, False if the step cannot be applied (document is left unchanged). Raises ValueError on invalid JSON.

editor.apply_steps_json(steps_json, *, stop_on_failure=True) -> list[bool]

Preferred method for incoming network data. Accepts a JSON array of steps as a single string — passed directly to Rust and parsed there, so nothing touches Python's JSON machinery. Returns one bool per step.

editor.apply_steps(steps, *, stop_on_failure=True) -> list[bool]

Convenience method for when steps are constructed or modified in Python. Each element of steps is a JSON string for one step. All steps are parsed before any are applied, so a bad JSON string raises ValueError without mutating the document. Returns one bool per step.

editor.doc_json() -> str

Return the current document as a compact JSON string. Serialized entirely in Rust; only the final string is handed to Python — suitable for direct database writes with no intermediate objects.

editor.version (int, read-only property)

Number of steps successfully applied since construction. Use as a document version counter in collaborative-editing protocols.

Credits

The underlying Rust library was originally written by Daniel Seiler (Xiphoseer, me@dseiler.eu), who designed and implemented the document model, transform pipeline, and runtime schema system. Currently maintained by Johannes Wilm (FidusWriter, johannes@fiduswriter.org).

ProseMirror is by Marijn Haverbeke and contributors — see prosemirror.net.

License

MIT — see LICENSE.

Copyright 2026 Johannes Wilm Copyright 2020 Daniel Seiler Copyright 2015–2026 Marijn Haverbeke and others

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

prosemirror_rs-0.3.5.tar.gz (78.4 kB view details)

Uploaded Source

Built Distributions

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

prosemirror_rs-0.3.5-cp314-cp314-win_amd64.whl (377.6 kB view details)

Uploaded CPython 3.14Windows x86-64

prosemirror_rs-0.3.5-cp314-cp314-macosx_11_0_arm64.whl (477.1 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

prosemirror_rs-0.3.5-cp314-cp314-macosx_10_12_x86_64.whl (495.6 kB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

prosemirror_rs-0.3.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (546.8 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

prosemirror_rs-0.3.5-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (532.8 kB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ARM64

File details

Details for the file prosemirror_rs-0.3.5.tar.gz.

File metadata

  • Download URL: prosemirror_rs-0.3.5.tar.gz
  • Upload date:
  • Size: 78.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for prosemirror_rs-0.3.5.tar.gz
Algorithm Hash digest
SHA256 45cdd9d812ac64725df846b85e469b004ad924a0c27124fc81dc339ec3b26f90
MD5 e042df9453ed4bf10538ff10de72a648
BLAKE2b-256 e4eb24da1f8f0698afa2e70b53db7d6ed58491655e406c38db5779f306f77603

See more details on using hashes here.

Provenance

The following attestation bundles were made for prosemirror_rs-0.3.5.tar.gz:

Publisher: publish.yml on fiduswriter/prosemirror-rs

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

File details

Details for the file prosemirror_rs-0.3.5-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for prosemirror_rs-0.3.5-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 973c59ac745465fe65c623d77c4ab91e39e019d1f7d3f037fb8374fc15a7d509
MD5 d575529f5642e89231965d6a4c3f0db4
BLAKE2b-256 0f4b804f198be7385a5cee9e26d6046758f607dde247f6f00a3e85db094330dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for prosemirror_rs-0.3.5-cp314-cp314-win_amd64.whl:

Publisher: publish.yml on fiduswriter/prosemirror-rs

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

File details

Details for the file prosemirror_rs-0.3.5-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for prosemirror_rs-0.3.5-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b9068de60fd096d8600adef0131a935908b86a05b9b375d5abb24c646beabf18
MD5 3f6790a0a02bf80285b06b720bb003e4
BLAKE2b-256 495ad14d862edd0f36311e2e839236e9dd0e65834f32e8622e94ab1cc0c0dbf8

See more details on using hashes here.

Provenance

The following attestation bundles were made for prosemirror_rs-0.3.5-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: publish.yml on fiduswriter/prosemirror-rs

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

File details

Details for the file prosemirror_rs-0.3.5-cp314-cp314-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for prosemirror_rs-0.3.5-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 51650a367f1b6ac5c07fc04543db3d21c2cf83ea13f9aec266a916a2ee989042
MD5 c0f34c36fb5777b80bc61fe188e473e7
BLAKE2b-256 026d72f674801f84827b53b5e1baae21eb94a06822bf7b30707bfcc935724024

See more details on using hashes here.

Provenance

The following attestation bundles were made for prosemirror_rs-0.3.5-cp314-cp314-macosx_10_12_x86_64.whl:

Publisher: publish.yml on fiduswriter/prosemirror-rs

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

File details

Details for the file prosemirror_rs-0.3.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for prosemirror_rs-0.3.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a7b85792f71e484b8516ce1bf567f9f76fecd7e1ec60e26ae84f443b1c610152
MD5 87eb3bcb2ac60555a56d49e380cede57
BLAKE2b-256 786daec994f5b2d91561ac6d0548fc1f5e54b0065ae790626d23beff89716b8e

See more details on using hashes here.

Provenance

The following attestation bundles were made for prosemirror_rs-0.3.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on fiduswriter/prosemirror-rs

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

File details

Details for the file prosemirror_rs-0.3.5-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for prosemirror_rs-0.3.5-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4b18ba0803cf4ed1b409b72143f555c85345543f959a7c4c6c5484ce2d885714
MD5 e2065820e47ad6ddc2891e86a81cddae
BLAKE2b-256 c3ac85a0a2b2ca5df720c3ec536a3decaa25128fcf97c7e1d038bad77a39ce28

See more details on using hashes here.

Provenance

The following attestation bundles were made for prosemirror_rs-0.3.5-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on fiduswriter/prosemirror-rs

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