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.2.3.tar.gz (70.2 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.2.3-cp314-cp314-win_amd64.whl (359.3 kB view details)

Uploaded CPython 3.14Windows x86-64

prosemirror_rs-0.2.3-cp314-cp314-macosx_11_0_arm64.whl (459.7 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

prosemirror_rs-0.2.3-cp314-cp314-macosx_10_12_x86_64.whl (477.4 kB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

prosemirror_rs-0.2.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (529.2 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

prosemirror_rs-0.2.3-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (516.6 kB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ARM64

File details

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

File metadata

  • Download URL: prosemirror_rs-0.2.3.tar.gz
  • Upload date:
  • Size: 70.2 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.2.3.tar.gz
Algorithm Hash digest
SHA256 cd236b16b18780ad915c6f7a26dd92b0a4d861510081edfba5c17c73d9d53cd6
MD5 22fb9dfb76cbf24ed4b6ae0b7202d1d1
BLAKE2b-256 87f409eff493a25e18bd3ec4e23a14d51d3807ce16591e4f6c99f0770eb5eb9c

See more details on using hashes here.

Provenance

The following attestation bundles were made for prosemirror_rs-0.2.3.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.2.3-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for prosemirror_rs-0.2.3-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 e33c30330d18e30cace6fd85df479f003ada250b372180bd21fdc14b2180052d
MD5 01d07a879a0ec659827f6a329da4e07b
BLAKE2b-256 db99b19ff2c25e9203fd36f1d31d1efddb4c366767aeb12e016c628e286773b0

See more details on using hashes here.

Provenance

The following attestation bundles were made for prosemirror_rs-0.2.3-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.2.3-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for prosemirror_rs-0.2.3-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 529648776e6bf05be3a78c420a1ebbcb2667786f180198c13f23567e779a2ccc
MD5 695c508ea8398bcfb14c2ae6f1a38663
BLAKE2b-256 047eac26a307a93eab529309e819413da90fc3f35027baa3f7b0e984edc2c0c4

See more details on using hashes here.

Provenance

The following attestation bundles were made for prosemirror_rs-0.2.3-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.2.3-cp314-cp314-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for prosemirror_rs-0.2.3-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f136e786055b739ee22403a4ebc88a99a14f427be15a2b97a89b5afdcaa6fce5
MD5 08fac042dc6519a4b5db0850b9039ceb
BLAKE2b-256 92cc1aed89db035df4c3addeb2e795bf65dcabe72f14e1a83f71bd5f32b0e0f4

See more details on using hashes here.

Provenance

The following attestation bundles were made for prosemirror_rs-0.2.3-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.2.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for prosemirror_rs-0.2.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 94c2d9cdf588ea6f8e4e83f9bf417d0dd71b811e75350eaaa7fe9afe11a41434
MD5 40c8c8304534443312c9b8f0645372a8
BLAKE2b-256 86f08f37ebb67eda2ee5859a279b4c233163d4afa5bcb879073357eced8b5c09

See more details on using hashes here.

Provenance

The following attestation bundles were made for prosemirror_rs-0.2.3-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.2.3-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for prosemirror_rs-0.2.3-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c5ab29937d888bbb1396ed8772f4a15d95f964384d19781632e8f1b19ee5d392
MD5 0c2a6a4b9357864c2f367abd957cb1b4
BLAKE2b-256 d04b79c6cd73a72cc96204f8501265776a003dce5c9761307d558c0a018b2e41

See more details on using hashes here.

Provenance

The following attestation bundles were made for prosemirror_rs-0.2.3-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