class_docstr: Base class for Bokeh property instances, which can be added to Bokeh
  Models.
  
  Args:
      default (obj, optional) :
          A default value for attributes created from this property to have.
  
      help (str or None, optional) :
          A documentation string for this property. It will be automatically
          used by the :ref:`bokeh.sphinxext.bokeh_prop` extension when
          generating Spinx documentation. (default: None)
class_docstr_tok: ["Base","class","for","Bokeh","property","instances",",","which","can","be","added","to","Bokeh","Models",".","Args",":","default","(","obj",",","optional",")",":","A","default","value","for","attributes","created","from","this","property","to","have",".","help","(","str","or","None",",","optional",")",":","A","documentation","string","for","this","property",".","It","will","be","automatically","used","by","the",":","ref",":","`","bokeh.sphinxext.bokeh_prop","`","extension","when","generating","Spinx","documentation",".","(","default",":","None",")"]
docstr: Determine whether we can set this property from this value.
  
  Validation happens before transform()
  
  Args:
      value (obj) : the value to validate against this property type
      detail (bool, options) : whether to construct detailed exceptions
  
          Generating detailed type validation error messages can be
          expensive. When doing type checks internally that will not
          escape exceptions to users, these messages can be skipped
          by setting this value to False (default: True)
  
  Returns:
      None
  
  Raises:
      ValueError if the value is not valid for this property type
docstr_tok: ["Determine","whether","we","can","set","this","property","from","this","value",".","Validation","happens","before","transform","(",")","Args",":","value","(","obj",")",":","the","value","to","validate","against","this","property","type","detail","(","bool",",","options",")",":","whether","to","construct","detailed","exceptions","Generating","detailed","type","validation","error","messages","can","be","expensive",".","When","doing","type","checks","internally","that","will","not","escape","exceptions","to","users",",","these","messages","can","be","skipped","by","setting","this","value","to","False","(","default",":","True",")","Returns",":","None","Raises",":","ValueError","if","the","value","is","not","valid","for","this","property","type"]
code: def validate(self, value: Any, detail: bool = True) -> None:
      """Determine whether we can set this property from this value.
  
      Validation happens before transform()
  
      Args:
          value (obj) : the value to validate against this property type
          detail (bool, options) : whether to construct detailed exceptions
  
              Generating detailed type validation error messages can be
              expensive. When doing type checks internally that will not
              escape exceptions to users, these messages can be skipped
              by setting this value to False (default: True)
  
      Returns:
          None
  
      Raises:
          ValueError if the value is not valid for this property type
  
      """
      pass
  
imports: from __future__ import annotations
  import logging
  from copy import copy
  from typing import TYPE_CHECKING, Any, Callable, ClassVar, TypeVar, Union
  from ...util.dependencies import uses_pandas
  from ...util.strings import nice_join
  from ..has_props import HasProps
  from ._sphinx import property_link, register_type_link, type_link
  from .descriptor_factory import PropertyDescriptorFactory
  from .descriptors import PropertyDescriptor
  from .singletons import Intrinsic, IntrinsicType, Undefined, UndefinedType
label_desc: Use image node_id 17 for calling the Property obj's underlying member method code with example usage: obj.validate(value, detail) without return types