I’m trying to write an html file with
bokeh.embed.file_html()
, but I’m running into this error:
SerializationError Traceback (most recent call last)
Cell In[1], line 361
358 tab_settings = bk.TabPanel(child=settings_layout, title="Settings")
359 my_layout = bk.Tabs(tabs=[tab_layout, tab_settings])
--> 361 html = bk.file_html(
362 models=my_layout,
363 resources=bk.CDN,
364 title=q_original["html_title"],
365 template=mdl.template,
366 )
367 with open(q["webpage_name"], "wt") as _:
368 _.write(html)
File d:\ProgramData\Anaconda3\envs\default\Lib\site-packages\bokeh\core\serialization.py:247, in Serializer.encode(self, obj)
<a href='file:///d%3A/ProgramData/Anaconda3/envs/default/Lib/site-packages/bokeh/core/serialization.py?line=244'>245</a> ident = id(obj)
<a href='file:///d%3A/ProgramData/Anaconda3/envs/default/Lib/site-packages/bokeh/core/serialization.py?line=245'>246</a> if ident in self._circular:
--> <a href='file:///d%3A/ProgramData/Anaconda3/envs/default/Lib/site-packages/bokeh/core/serialization.py?line=246'>247</a> self.error("circular reference")
<a href='file:///d%3A/ProgramData/Anaconda3/envs/default/Lib/site-packages/bokeh/core/serialization.py?line=247'>248</a> # warn("circular reference", BokehUserWarning)
<a href='file:///d%3A/ProgramData/Anaconda3/envs/default/Lib/site-packages/bokeh/core/serialization.py?line=248'>249</a> # return self._encode(obj)
<a href='file:///d%3A/ProgramData/Anaconda3/envs/default/Lib/site-packages/bokeh/core/serialization.py?line=250'>251</a> self._circular[ident] = obj
File d:\ProgramData\Anaconda3\envs\default\Lib\site-packages\bokeh\core\serialization.py:470, in Serializer.error(self, message)
<a href='file:///d%3A/ProgramData/Anaconda3/envs/default/Lib/site-packages/bokeh/core/serialization.py?line=468'>469</a> def error(self, message: str) -> NoReturn:
--> <a href='file:///d%3A/ProgramData/Anaconda3/envs/default/Lib/site-packages/bokeh/core/serialization.py?line=469'>470</a> raise SerializationError(message)
File d:\ProgramData\Anaconda3\envs\default\Lib\site-packages\bokeh\core\serialization.py:470, in Serializer.error(self, message)
<a href='file:///d%3A/ProgramData/Anaconda3/envs/default/Lib/site-packages/bokeh/core/serialization.py?line=468'>469</a> def error(self, message: str) -> NoReturn:
--> <a href='file:///d%3A/ProgramData/Anaconda3/envs/default/Lib/site-packages/bokeh/core/serialization.py?line=469'>470</a> raise SerializationError(message)
SerializationError: circular reference
Looking at the code in bokeh\core\serialization.py
def encode(self, obj: Any) -> AnyRep:
ref = self.get_ref(obj)
if ref is not None:
return ref
ident = id(obj)
if ident in self._circular:
self.error("circular reference")
I’m guessing the problem is that my bokeh.layout object references the same object multiple times, maybe once in the plot and once in a callback.
However, if I comment out the line raising the error, then the html file writes successfully with no apparent issues. This was also not an issue when I was using Bokeh 2.4.3. Does anyone have any general insight onto why this error occurs, and whether it is needed?