☰Read-only archive⌕
Looking for help with Bokeh?

This is a read-only archive. Ask questions and join the conversation on GitHub.

Visit Community Support on GitHub →
Archived discussions · Captured October 28, 2026

patch columndatasource and catch changes

Community Support
chupach1
chupach1

hello,

with the little example below, i’d like to ask for the good practice to catch a change in cds in its attached callback.

Here patching (unless you hit the button very quickly) results in old and new dictionaries being the same.

So, how do we actually catch the changes ? (I naively expected this to be between old and new dictionaries)

Do we have to make some bookkeeping of the previous cds data so to be able to find the cds changes between the old and the new data ?

Hopefully there is a better way.

Thanks !

import numpy as np

import time

from bokeh.io import curdoc

from bokeh.layouts import column

from bokeh.models import ColumnDataSource

from bokeh.models.widgets import DataTable, TableColumn, Button

source = ColumnDataSource(dict(index=[0,1,2], x=[0,0,0]))

def cb(attr,old,new):

print(‘source’,attr,old[‘x’][0],’ → ',new[‘x’][0])

source.on_change(‘data’,cb)

b = Button()

def button_cb():

new = int(not source.data[‘x’][0])

print(‘patch’,new)

time.sleep(0.1)

source.patch({‘x’: [(0,new)]})

b.on_click(button_cb)

data_table = DataTable(source=source, columns=[

    TableColumn(field="x", title="x"),

    TableColumn(field="r", title="r"),

], editable=True) 

curdoc().add_root(column(b,data_table))

⌁   Link to post

End of archived discussion · Replies are disabled