No project description provided
Project description
Ypy
Ypy is a Python binding for Y-CRDT. It provides distributed data types that enable real-time collaboration between devices. Y-Py can sync data with any other platform that has a Y-CRDT binding, allowing for seamless cross-domain communication. The library is a thin wrapper around Yrs, taking advantage of the safety and performance of Rust.
Installation
pip install y-py
Getting Started
Ypy provides many of the same shared data types as Yjs. All objects are shared within a YDoc
and get modified within a transaction block.
import y_py as Y
d1 = Y.YDoc()
# Create a new YText object in the YDoc
text = d1.get_text('test')
# Start a transaction in order to update the text
with d1.begin_transaction() as txn:
# Add text contents
text.push(txn, "hello world!")
# Create another document
d2 = Y.YDoc()
# Share state with the original document
state_vector = Y.encode_state_vector(d2)
diff = Y.encode_state_as_update(d1, state_vector)
Y.apply_update(d2, diff)
with d2.begin_transaction() as txn:
value = d2.get_text('test').to_string(txn)
assert value == "hello world!"
Development Setup
- Install Rust Nightly and Python
- Install
maturin
in order to build Ypy
pip install maturin
- Create a development build of the library
maturin develop
Tests
All tests are located in /tests
. You can run them with pytest
.
pytest
Build Ypy :
Build the library as a wheel and store them in target/wheels
:
maturin build
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for y_py-0.2.3-cp310-none-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8e191062df8aed3f901f19c9298ca85958d4e35441b23d8967b1e3838a2056e1 |
|
MD5 | 8c27d99753511e85e9d0d6a1052a4498 |
|
BLAKE2b-256 | a9cd866a44a15128573e92d319ff5e715e4ef04c74a6a89b976966274fafcf60 |
Hashes for y_py-0.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7c95d79edcb03a5397589c4aa0d57575ae0a660ee2bb13b086ab18ce84f8c983 |
|
MD5 | 121e3b3fdac4c7117990afe8337256e3 |
|
BLAKE2b-256 | b65b274f66a9e592b6a7b2d34732f877739a17eb3ed1a42a4a81b7090d7d077a |
Hashes for y_py-0.2.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a2d7dd4ae1478fd0e579bc0706db63e883b6f4dd1d447ce749131863046c6cd9 |
|
MD5 | 815c36d809ac752a34b7e12425bc9e9d |
|
BLAKE2b-256 | d320c6074caa243b16d236d2e228efdd0d12af0fb045267c72d97a71bf27da7d |
Hashes for y_py-0.2.3-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 90514d10d925335437dd61e463bc28e9cedafb79c702ab5792b247ed0453456d |
|
MD5 | b0889529dc9e05f6ce939381526079ce |
|
BLAKE2b-256 | 901ce791ee897884b50acc5d882a45ee5e0add36ba71694d124982ac98b116f1 |
Hashes for y_py-0.2.3-cp39-none-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b1cdee3d367a36cc3916b35c0f2b32267c71cce0889e53e153cd14eaf9ea384b |
|
MD5 | 95529b9cfcd800939b49a5bcccb1e1dc |
|
BLAKE2b-256 | 213779c24d9c7408851064c6ba3a432cf95e3b8fe5126f45e0d2774585e5dfd4 |
Hashes for y_py-0.2.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 29d752a114d787387c232a9d502d3653526feeec23ad58400ec81334cac01415 |
|
MD5 | c6446a09198a79a09e535de58721ae5c |
|
BLAKE2b-256 | 6f30e275764d59769faf85da689fd984a41cb3eba4c76dc59cc5581477059cc4 |
Hashes for y_py-0.2.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 19c8645d7159b9b7aebb947ea76a416114d64f7d1d18a3b332beda818856d4aa |
|
MD5 | edf0197760c4233e41ccd4a8c4a87036 |
|
BLAKE2b-256 | 8c00a1aee01ad612f3458627ca3b9648a0d178a866b8c6e25cfa5cfed2a262ba |
Hashes for y_py-0.2.3-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 551bda44a67c36eb1d48d1b57a12a9c6f40fe6b6a105ff6d68ab8ec8efdcb71f |
|
MD5 | a6565530af7a8de90089c8cd90e896f2 |
|
BLAKE2b-256 | e540f176d6919244b28f601868b96b2c76af07e9716d0e59a93ddc65822cda7a |
Hashes for y_py-0.2.3-cp38-none-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 95c202561309b4f62d1f27114221f99fc2cabd342b5d185a0f18cd0702711714 |
|
MD5 | 9f465ed9ddde488b6f77e5dd00b8105e |
|
BLAKE2b-256 | 5a501670388cb8d7b352c9c2ad800315ca7fd707f5ae5994a2bb9cb3f062795a |
Hashes for y_py-0.2.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a45fa6d9a511e0aa2b33e8307010914bd7fab96f1ae3b50a298c673e307d4b4e |
|
MD5 | dad7d592a45cad4940fcd990fd0bb8c3 |
|
BLAKE2b-256 | 7a03f6158ba709368484f96c9fd2a61f14abb8de5de77060e1ecf61d487d6579 |
Hashes for y_py-0.2.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 63a6b77a55dfd28a4a364ad17fa842ece6ee7b177496be8a1b5e1d5d0fec6e7a |
|
MD5 | c786450e0447e72747b179dc61013d87 |
|
BLAKE2b-256 | 56cd4ec1d5bc78c1e22589a426dd3ec764ecf93184efe328e5fc79d5f65394c4 |
Hashes for y_py-0.2.3-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b5b7fa50187ecedb719858a6f27542156a0ea69dff2fce53844ca46ff39f2ff5 |
|
MD5 | 49827b07887efa4ee8567088c411ec84 |
|
BLAKE2b-256 | fe958400eb65dc2e0720b66b4871364a699edbe3b2743d22a9bed129053e71fb |
Hashes for y_py-0.2.3-cp37-none-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a0d4a3d9d73b6e207c8c87f045f0c16cb6ee13f86d56ddb476f784ca47a6fb43 |
|
MD5 | bdb8b3ef65f0fba8a4a9645037c20a78 |
|
BLAKE2b-256 | 14dbc41b1bcd569a08d4224d05e6fa3430c4ad91ea8b2ce0c0deadf4433e0e32 |
Hashes for y_py-0.2.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 92bb599e1a513802036d87de8997fd69b51b24f0f53bd5da3ce3bf3a222e47fe |
|
MD5 | aaa8edea549aeda3a7e0db0adf65def7 |
|
BLAKE2b-256 | d42ffa9323ce7d348a18335a6f227f09620035973d35b0aa35766a2d0b80f233 |
Hashes for y_py-0.2.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b13f0d38c66a5e0ab22c8dcba5284ac9483bf813db35f880f89b7c3c9c4923a5 |
|
MD5 | 0f14954822b8ea9394e064bcf1fec164 |
|
BLAKE2b-256 | 2157751a17c8713e73201c7f2b8459a72cb5c6da44c9ea64cc4d58983579ea1b |
Hashes for y_py-0.2.3-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f7e408083185b7e517fabe48a74c03e695aa417467982ba2580ed81a42e95223 |
|
MD5 | e1853b5199a979746c7080cb53ff6657 |
|
BLAKE2b-256 | 1e0838e9d12a5fd7e27cf317c683fc5378a8923bdf691d3aea330618d40c8c7d |