class UnlockedDocumentProxy(doc: Document)[source]

Wrap a Document object so that only methods that can safely be used from unlocked callbacks or threads are exposed. Attempts to otherwise access or change the Document results in an exception.

__init__(doc: Document) None[source]
add_next_tick_callback(callback: Callback) NextTickCallback[source]

Add a “next tick” callback.


callback (callable) –

remove_next_tick_callback(callback: NextTickCallback) None[source]

Remove a “next tick” callback.


callback (callable) –

without_document_lock(func: bokeh.document.locking.F) bokeh.document.locking.NoLockCallback[bokeh.document.locking.F][source]

Wrap a callback function to execute without first obtaining the document lock.


func (callable) – The function to wrap


a function wrapped to execute without a Document lock.

Return type


While inside an unlocked callback, it is completely unsafe to modify curdoc(). The value of curdoc() inside the callback will be a specially wrapped version of Document that only allows safe operations, which are:

Only these may be used safely without taking the document lock. To make other changes to the document, you must add a next tick callback and make your changes to curdoc() from that second callback.

Attempts to otherwise access or change the Document will result in an exception being raised.