@mateusz made some changes around Model sub-classing for Bokeh 3.0 hopefully he can chime in here with some guidance.
examples/plotting/data_models.py is a good starting point for this. One thing it doesn’t show, is that data models can extend existing models and define new properties, so you can write something like this:
class MyPlot(Plot, DataModel):
my_proproperty = Int()
This works for figure as well.
Note that __subtype__ was removed. __view_model__ and __view_module__ are still in use, but should be used sparingly. Data models don’t require those properties in typical usage.