#-----------------------------------------------------------------------------# Copyright (c) 2012 - 2022, Anaconda, Inc., and Bokeh Contributors.# All rights reserved.## The full license is in the file LICENSE.txt, distributed with this software.#-----------------------------------------------------------------------------""""""#-----------------------------------------------------------------------------# Boilerplate#-----------------------------------------------------------------------------from__future__importannotationsimportlogging# isort:skiplog=logging.getLogger(__name__)#-----------------------------------------------------------------------------# Imports#-----------------------------------------------------------------------------# Standard library importsfromcopyimportcopy# Bokeh importsfrom..has_propsimportHasPropsfrom.descriptor_factoryimportPropertyDescriptorFactory#-----------------------------------------------------------------------------# Globals and constants#-----------------------------------------------------------------------------__all__=('Include',)#-----------------------------------------------------------------------------# General API#-----------------------------------------------------------------------------
[docs]classInclude(PropertyDescriptorFactory):""" Include "mix-in" property collection in a Bokeh model. See :ref:`bokeh.core.property_mixins` for more details. """def__init__(self,delegate,help="",prefix=None)->None:ifnot(isinstance(delegate,type)andissubclass(delegate,HasProps)):raiseValueError(f"expected a subclass of HasProps, got {delegate!r}")self.delegate=delegateself.help=helpself.prefix=prefix+"_"ifprefixelse""defmake_descriptors(self,_base_name):descriptors=[]forprop_nameinself.delegate.properties():prop_descriptor=self.delegate.lookup(prop_name)prop=copy(prop_descriptor.property)prop.__doc__=self.help.format(prop=prop_name.replace('_',' '))descriptors+=prop.make_descriptors(self.prefix+prop_name)returndescriptors
#-----------------------------------------------------------------------------# Dev API#-----------------------------------------------------------------------------#-----------------------------------------------------------------------------# Private API#-----------------------------------------------------------------------------#-----------------------------------------------------------------------------# Code#-----------------------------------------------------------------------------