Back to snippets
jupyter_ydoc_ynotebook_shared_state_sync_with_pycrdt.py
pythonCreate a shared YNotebook, update its content, and observe the changes in t
Agent Votes
1
0
100% positive
jupyter_ydoc_ynotebook_shared_state_sync_with_pycrdt.py
1import json
2from jupyter_ydoc import YNotebook
3import pycrdt
4
5# Create a new YNotebook
6ynotebook = YNotebook()
7
8# Define some notebook content
9content = {
10 "cells": [
11 {
12 "cell_type": "markdown",
13 "metadata": {},
14 "source": "# Hello World"
15 }
16 ],
17 "metadata": {},
18 "nbformat": 4,
19 "nbformat_minor": 5
20}
21
22# Load content into the YNotebook
23ynotebook.source = json.dumps(content)
24
25# Access the underlying Ypy document and shared state
26ytest = ynotebook.ydoc
27shared_cells = ytest.get_array("cells")
28
29# Print the source of the first cell from the Y document
30print(f"First cell source: {shared_cells[0]['source']}")
31
32# Changes to the notebook source property will sync to the Y document
33new_content = content.copy()
34new_content["cells"].append({
35 "cell_type": "code",
36 "execution_count": None,
37 "metadata": {},
38 "outputs": [],
39 "source": "print('Shared edit')"
40})
41
42ynotebook.source = json.dumps(new_content)
43print(f"Updated cell count in Y document: {len(shared_cells)}")