#-----------------------------------------------------------------------------# Copyright (c) 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 importsfromcopyimportcopyfromtypingimportTypeVar# Bokeh importsfrom..has_propsimportHasPropsfrom.descriptor_factoryimportPropertyDescriptorFactoryfrom.descriptorsimportPropertyDescriptor#-----------------------------------------------------------------------------# Globals and constants#-----------------------------------------------------------------------------__all__=('Include',)T=TypeVar("T")#-----------------------------------------------------------------------------# General API#-----------------------------------------------------------------------------
[docs]classInclude(PropertyDescriptorFactory[T]):""" Include "mix-in" property collection in a Bokeh model. See :ref:`bokeh.core.property_mixins` for more details. """def__init__(self,delegate:type[HasProps],*,help:str="",prefix:str|None=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:str)->list[PropertyDescriptor[T]]:descriptors=[]fordescriptorinself.delegate.descriptors():prop=copy(descriptor.property)prop.__doc__=self.help.format(prop=descriptor.name.replace("_"," "))descriptors+=prop.make_descriptors(self.prefix+descriptor.name)returndescriptors
#-----------------------------------------------------------------------------# Dev API#-----------------------------------------------------------------------------#-----------------------------------------------------------------------------# Private API#-----------------------------------------------------------------------------#-----------------------------------------------------------------------------# Code#-----------------------------------------------------------------------------