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.4.tar.gz (74.5 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.4-cp314-cp314-win_amd64.whl (360.4 kB view details)

Uploaded CPython 3.14Windows x86-64

prosemirror_rs-0.3.4-cp314-cp314-macosx_11_0_arm64.whl (465.0 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

prosemirror_rs-0.3.4-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.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (532.8 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

prosemirror_rs-0.3.4-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (519.0 kB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ARM64

File details

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

File metadata

  • Download URL: prosemirror_rs-0.3.4.tar.gz
  • Upload date:
  • Size: 74.5 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.4.tar.gz
Algorithm Hash digest
SHA256 c43ae6fc718fe0eab673aea55f371e6272bf5f60857001696b2fdea3c26ba466
MD5 784c8ec0ddf67cc6a6fb2f039081786f
BLAKE2b-256 315adf808ed870faea58aa76c1bb5751d04c0f9a22f947d39bd93ef6fe051c4d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for prosemirror_rs-0.3.4-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 f1a51768facb7b7c57bf52daedacf75fa5353f73853e17d2af8c7fc8a530d672
MD5 fef7574d3664dd23b747d6c3f38380f6
BLAKE2b-256 5eeaf075028eb01751a84c796f416dafa04156db5dc178a56d2a4503882e323a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for prosemirror_rs-0.3.4-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6ec1ebc636d66d5de1c819599ef6d0b4cd23967efd392d3faf77b5e5c63bcd59
MD5 946dabb5eaacd141d6bfb753ec329032
BLAKE2b-256 7fd61c1fbc0c79dc5062235c54465e81c8f358022aadc0f96e3150a8e26750de

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for prosemirror_rs-0.3.4-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 072c57942119e827eb7a84075e99b9fbc8ecbafcecbdc88d0116a5d8cf7edad7
MD5 731e402a6b87b2f15c32a068dbc28f72
BLAKE2b-256 309f327cd50884d017610655aa5a030678303c1d7ccf550bc73f2c96d434b99e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for prosemirror_rs-0.3.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8b40ac15113cc71449a9a6152f5edd313048a48a6641410d8687a5f88f107b00
MD5 4d3a2efd175e11f7ea7ef59e98abe788
BLAKE2b-256 6585b3093094f7af904f08948823b98d2d9a76eba3d45db5671b17870cb14c6a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for prosemirror_rs-0.3.4-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0e937210055d9b967de278864a22da59a3032653934b6a1ac5087a326b891a1b
MD5 8cb1d8b4f9b19ba561f6cdd3f4798ed8
BLAKE2b-256 4ed9aafe1146fe9e11f1c78e71f4ec134885d9d89736278d3ba616d601b522b7

See more details on using hashes here.

Provenance

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