https://github.com/jupyter-server/jupyter_ydoc
Jupyter document structures for collaborative editing using Yjs/pycrdt
https://github.com/jupyter-server/jupyter_ydoc
Last synced: 7 months ago
JSON representation
Jupyter document structures for collaborative editing using Yjs/pycrdt
- Host: GitHub
- URL: https://github.com/jupyter-server/jupyter_ydoc
- Owner: jupyter-server
- License: bsd-3-clause
- Created: 2022-05-02T07:36:38.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2025-05-07T07:34:37.000Z (7 months ago)
- Last Synced: 2025-05-07T08:32:14.583Z (7 months ago)
- Language: TypeScript
- Homepage: https://jupyter-ydoc.readthedocs.io
- Size: 1.52 MB
- Stars: 38
- Watchers: 12
- Forks: 19
- Open Issues: 20
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://github.com/jupyter-server/jupyter_ydoc/actions)
[](https://github.com/psf/black)
[](https://pypi.org/project/jupyter-ydoc/)
[](https://www.npmjs.com/package/@jupyter/ydoc)
# jupyter_ydoc
`jupyter_ydoc` provides [pycrdt](https://github.com/jupyter-server/pycrdt)-based data structures for various
documents used in the Jupyter ecosystem. Built-in documents include:
- `YBlob`: a generic immutable binary document.
- `YUnicode`: a generic UTF8-encoded text document (`YFile` is an alias to `YUnicode`).
- `YNotebook`: a Jupyter notebook document.
These documents are registered via an entry point under the `"jupyter_ydoc"` group as `"blob"`,
`"unicode"` (or `"file"`), and `"notebook"`, respectively. You can access them as follows:
```py
from jupyter_ydoc import ydocs
print(ydocs)
# {
# 'blob': ,
# 'file': ,
# 'notebook': ,
# 'unicode':
# }
```
Which is just a shortcut to:
```py
from importlib.metadata import entry_points
# for Python < 3.10, install importlib_metadata and do:
# from importlib_metadata import entry_points
ydocs = {ep.name: ep.load() for ep in entry_points(group="jupyter_ydoc")}
```
Or directly import them:
```py
from jupyter_ydoc import YBlob, YUnicode, YNotebook
```
The `"jupyter_ydoc"` entry point group can be populated with your own documents, e.g. by adding the
following to your package's `pyproject.toml`:
```
[project.entry-points.jupyter_ydoc]
my_document = "my_package.my_file:MyDocumentClass"
```