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.6.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.6-cp314-cp314-win_amd64.whl (377.7 kB view details)

Uploaded CPython 3.14Windows x86-64

prosemirror_rs-0.3.6-cp314-cp314-macosx_11_0_arm64.whl (477.5 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

prosemirror_rs-0.3.6-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.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (546.2 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

prosemirror_rs-0.3.6-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (532.7 kB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ARM64

File details

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

File metadata

  • Download URL: prosemirror_rs-0.3.6.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.6.tar.gz
Algorithm Hash digest
SHA256 ad6b3fba6f4f0939fd5349d4e954d5dd4b12bc1530c5b3403ee6fd857049c9b9
MD5 8c921d2caa8c71f7bc949e2a7faaa36b
BLAKE2b-256 30891d855ad74a9cc9aaa9d180c513347b9416b7f55e3c0d303655dc8b6c6379

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for prosemirror_rs-0.3.6-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 068aeccaf3a928337b7ddd9b7ae783b620cecfe7858f9c0e02d03f714943cd3b
MD5 910a08f23785fe49fbe0f0fd3ea8a916
BLAKE2b-256 69d29daed9df52ddbb08fd6425334f822c69e6b4db83deb57c219a75115e4921

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for prosemirror_rs-0.3.6-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d612e6d69bdd1584277876065ed4d828392ffdce277e8c605f34f7f4902ff990
MD5 304f6fa6626d1a2f30d7433e895007e6
BLAKE2b-256 a8617452841fa4f68faa356c6baf96ca68e2755d6c374692e18bc6625a70e643

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for prosemirror_rs-0.3.6-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e9006e98e67a5df0bb3e56efab9b1d1f740f36636e4e2d30ab6f583c4587cc7a
MD5 7207f5def797b8840cf23ae1b12294c7
BLAKE2b-256 2be3dd853b30c364b1cf738faba5578dd820955767d9c4a92d17aa3f09cc30b2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for prosemirror_rs-0.3.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a6cbd5d757da3710192f3f610121daae3f74ff70f6a6dfded1e6a378c195ae0a
MD5 177a9317cf7cc9be7e300e710fe658e5
BLAKE2b-256 e3089748a786460d9a17bb4833875c4124b6387cf8dc6dd84c11f1c6c47c07f9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for prosemirror_rs-0.3.6-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 32148fc38621edd9439b229fe86bd58853ed932c5f4bbced39dc5d3e5d7e920a
MD5 07bba1170a5fcb716b0d5d66e9933810
BLAKE2b-256 dd1c2ef2f1ca42fee9bac336a6d0acbe91e38217b7c640e1f5ebc49d1d738484

See more details on using hashes here.

Provenance

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