class_docstr: Accept values from enumerations.
  
  The first value in enumeration is used as the default value, unless the
  ``default`` keyword argument is used.
  
  See :ref:`bokeh.core.enums` for more information.
class_docstr_tok: ["Accept","values","from","enumerations",".","The","first","value","in","enumeration","is","used","as","the","default","value",",","unless","the","``","default","``","keyword","argument","is","used",".","See",":","ref",":","`","bokeh.core.enums","`","for","more","information","."]
code: def validate(self, value: Any, detail: bool = True) -> None:
      super().validate(value, detail)
  
      if value in self._enum:
          return
  
      msg = (
          ""
          if not detail
          else f"invalid value: {value!r}; allowed values are {nice_join(self.allowed_values)}"
      )
      raise ValueError(msg)
  
file_path: bokeh/src/bokeh/core/property/enum.py
imports: from __future__ import annotations
  import logging
  from typing import Any, overload
  from ...util.strings import nice_join
  from ..None import enums
  from ._sphinx import model_link, property_link, register_type_link
  from .bases import Init
  from .primitive import String
  from .singletons import Intrinsic
label_desc: Use image node_id 6 for calling the Enum obj's underlying member method code with example usage: obj.validate(value, detail) without return types