Skip to main content

pycrdt-sticky-xml

A fork of pycrdt that adds sticky_index support for XML types (XmlElement and XmlText).

What's New

This fork extends the original pycrdt library by adding sticky_index functionality to XML types:

  • XmlElement.sticky_index(): Create sticky indices for XML element children
  • XmlText.sticky_index(): Create sticky indices within XML text content

Installation

From PyPI (when published)

pip install pycrdt-sticky-xml

Development Installation

For development, you need Rust installed (via rustup):

# Clone the repository
git clone https://github.com/yourusername/pycrdt-sticky-xml.git
cd pycrdt-sticky-xml

# Install with uv (recommended)
uv pip install -e .

# Or build with maturin
source "$HOME/.cargo/env"  # If Rust installed via rustup
uv run maturin develop

Note: The Python module is imported as pycrdt_sticky_xml (with underscores), even though the package name uses hyphens.

Usage

from pycrdt_sticky_xml import Doc, XmlFragment, XmlElement, XmlText, Assoc

# Create a document with XML content
doc = Doc()
frag = doc.get("content", type=XmlFragment)

# Add XML text
text = XmlText("Hello World")
frag.children.append(text)

# Create a sticky index at position 5
idx = text.sticky_index(5, Assoc.AFTER)

# Insert text before the sticky position
text.insert(0, "Say ")

# The sticky index maintains its semantic position
print(idx.get_index())  # Now points to position 9 (after "Say Hello")

Features

  • All features from the original pycrdt
  • Sticky indices for XmlElement children
  • Sticky indices for XmlText content
  • Full compatibility with Yrs collaborative editing

Running Tests

# Install test dependencies
uv pip install pydantic pytest-mypy-testing trio

# Run tests
uv run pytest

# Run specific test file
uv run pytest tests/test_xml.py -v

Original Project

This is a fork of pycrdt. All credit for the core functionality goes to the original authors.

License

MIT License (same as original pycrdt)

Metadata

Release files for pycrdt-sticky-xml 0.12.29

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pycrdt-sticky-xml 0.12.29
File Size Uploaded
pycrdt_sticky_xml-0.12.29.tar.gz 153.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pycrdt-sticky-xml 0.12.29
File Interpreter ABI Platform
pycrdt_sticky_xml-0.12.29-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details

Total release size: 876.7 kB

Release files / pycrdt_sticky_xml-0.12.29.tar.gz

Download URL pycrdt_sticky_xml-0.12.29.tar.gz
Size 153.6 kB
Tags Source
SHA-256 checksum
How to use checksums
44d86551daf13c9af9a2b1e7bf75974f40772f5796575ed062e988280ce80ff8
BLAKE2b-256 checksum
How to use checksums
6ffc21347873096368251a0a10902ad2e819af136dd126520407cd15aae54315
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.9.4

Release files / pycrdt_sticky_xml-0.12.29-cp312-cp312-macosx_11_0_arm64.whl

Download URL pycrdt_sticky_xml-0.12.29-cp312-cp312-macosx_11_0_arm64.whl
Size 723.1 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
e5e73133d30849ec3c63eb3646306cf0438cb1d6dd91dadd4c3141dd101b5da0
BLAKE2b-256 checksum
How to use checksums
d7ea39972aec9c98e74ede5b822233647fec1b0a5e7d8f3f1f270cc26fc67c25
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.9.4

Release history Release notifications | RSS feed

This release

0.12.29 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page