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.0.tar.gz (73.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.3.0-cp314-cp314-win_amd64.whl (361.3 kB view details)

Uploaded CPython 3.14Windows x86-64

prosemirror_rs-0.3.0-cp314-cp314-macosx_11_0_arm64.whl (465.3 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

prosemirror_rs-0.3.0-cp314-cp314-macosx_10_12_x86_64.whl (481.6 kB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

prosemirror_rs-0.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (532.9 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

prosemirror_rs-0.3.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (518.8 kB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ARM64

File details

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

File metadata

  • Download URL: prosemirror_rs-0.3.0.tar.gz
  • Upload date:
  • Size: 73.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.3.0.tar.gz
Algorithm Hash digest
SHA256 f55e16e49fa1346be1cd8784c6bce9d122c4a8dbb3474caa3506f8d2e26bf00d
MD5 a0daa9bf47bb827062f56a2122c8177d
BLAKE2b-256 76e53f20d0937008ebf5f109dbc938fda0f2c9387fd2e8c9adf698af3a5e8bd3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for prosemirror_rs-0.3.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 e85ba2283d5bcbdbc073a155d44575953cd6053b56616c3ae35792f62221b8b2
MD5 6222bfafcbc4bed950b2b4f3716ac73c
BLAKE2b-256 684754db369f8861112345a6b1a054096d42e8d3306f40b3c3b357966592e768

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for prosemirror_rs-0.3.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 06e43e743aeef389aec103b1f638ba7da6c13bdaa3be34becdc277ef4247447f
MD5 2dc3e964ee58decde57fba7c6cb1597a
BLAKE2b-256 0df25361a21805545b4088435d6a091a00e801ae27e361b509a36bf3a18f83e8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for prosemirror_rs-0.3.0-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 add91ee1f568353a0902f99d0cbb6502b766d015f2edf55b0b9cb3b9db4cd258
MD5 bcea975d8a07c88d72bbc0a2abde592c
BLAKE2b-256 63d5f4dcf8faeeb58114566ebf598cfd2f8972623f53b5983d8c18e3f292f99f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for prosemirror_rs-0.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7febc24ffbaea2c3c92cbed4322ccd5b3540cc118af165b823befa5e6bb09bba
MD5 7796eaabb190042e79feace59116125f
BLAKE2b-256 2db54e966b60d71f32a0ec3bd899db041c56c4af30f1187938d7b0cb12637465

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for prosemirror_rs-0.3.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 29e937dcb04c71e02e437429534e84ba7249867270d9fdb0413b0d027fc9c963
MD5 7997f708c523ac30a5f6dc2e9c06dd48
BLAKE2b-256 305a047845a59c6c7f542e16766f5e79241015a4ac30cf1610cc150409c4e33b

See more details on using hashes here.

Provenance

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