class_docstr: Base class for all objects stored in Bokeh |Document| instances.
  
      
class_docstr_tok: ["Base","class","for","all","objects","stored","in","Bokeh","|Document|","instances","."]
docstr: Generate Python ``Parameter`` values suitable for functions that are
  derived from the glyph.
  
  Returns:
      list(Parameter)
code: def parameters(cls: type[Model]) -> list[Parameter]:
      """Generate Python ``Parameter`` values suitable for functions that are
      derived from the glyph.
  
      Returns:
          list(Parameter)
  
      """
      arg_params = []
      no_more_defaults = False
  
      for arg in reversed(cls._args):
          descriptor = cls.lookup(arg)
          default = descriptor.class_default(cls, no_eval=True)
          if default is None:
              no_more_defaults = True
  
          # simplify field(x) defaults to just present the column name
          if isinstance(default, dict) and set(default) == {"field"}:
              default = default["field"]
  
          # make sure built-ins don't hold on to references to actual Models
          if cls.__module__.startswith("bokeh.models"):
              assert not isinstance(default, Model)
  
          param = Parameter(
              name=arg,
              kind=Parameter.POSITIONAL_OR_KEYWORD,
              # For positional arg properties, default=None means no default.
              default=Parameter.empty if no_more_defaults else default,
          )
          if default:
              del default
          typ = type_link(descriptor.property)
          arg_params.insert(0, (param, typ, descriptor.__doc__))
  
      # these are not really useful, and should also really be private, just skip them
      omissions = {
          "js_event_callbacks",
          "js_property_callbacks",
          "subscribed_events",
      }
  
      kwarg_params = []
  
      kws = set(cls.properties()) - set(cls._args) - omissions
      for kw in kws:
          descriptor = cls.lookup(kw)
          default = descriptor.class_default(cls, no_eval=True)
  
          # simplify field(x) defaults to just present the column name
          if isinstance(default, dict) and set(default) == {"field"}:
              default = default["field"]
  
          # make sure built-ins don't hold on to references to actual Models
          if cls.__module__.startswith("bokeh.models"):
              assert not isinstance(default, Model)
  
          param = Parameter(
              name=kw,
              kind=Parameter.KEYWORD_ONLY,
              default=default,
          )
          del default
          typ = type_link(descriptor.property)
          kwarg_params.append((param, typ, descriptor.__doc__))
  
      for kw, (typ, doc) in cls._extra_kws.items():
          param = Parameter(
              name=kw,
              kind=Parameter.KEYWORD_ONLY,
          )
          kwarg_params.append((param, typ, doc))
  
      kwarg_params.sort(key=lambda x: x[0].name)
  
      return arg_params + kwarg_params
  
imports: from __future__ import annotations
  import logging
  from inspect import Parameter, Signature, isclass
  from typing import TYPE_CHECKING, Any, Iterable
  from ..core import properties
  from ..core.has_props import HasProps, _default_resolver, abstract
  from ..core.property._sphinx import type_link
  from ..core.property.validation import without_property_validation
  from ..core.serialization import ObjectRefRep, Ref, Serializer
  from ..core.types import ID
  from ..events import Event
  from ..themes import default
  from ..util.callback_manager import EventCallbackManager, PropertyCallbackManager
  from ..util.serialization import make_id
  from .docs import html_repr, process_example
  from .util import HasDocumentRef, collect_models, visit_value_and_its_immediate_references
label_desc: Use image node_id 8 for calling the Model obj's underlying member method code with example usage: obj.parameters(cls) and returns: unknown