class_docstr: Contains attributes and methods for modifying the aesthetic
  style of the chart.
docstr: Recursively apply the settings value to the given settings attribute.
  
  Recursion is necessary because some bokeh objects may
  have multiple child objects.
  E.g. figures can have more than one x-axis.
docstr_tok: ["Recursively","apply","the","settings","value","to","the","given","settings","attribute",".","Recursion","is","necessary","because","some","bokeh","objects","may","have","multiple","child","objects",".","E.g",".","figures","can","have","more","than","one","x-axis","."]
code: def _apply_bokeh_setting(self, attribute, value, base_obj=None):
      """Recursively apply the settings value to the given settings attribute.
  
      Recursion is necessary because some bokeh objects may
      have multiple child objects.
      E.g. figures can have more than one x-axis.
      """
      # If not a bokeh attribute then we don't need to apply anything.
      if "figure" not in attribute and base_obj is None:
          return
  
      split_attribute = attribute.split(".")
      if base_obj is None:
          base_obj = self._chart
      if len(split_attribute) == 1:
          setattr(base_obj, attribute, value)
      else:
          for i, attr in enumerate(split_attribute):
              # If the attribute contains a list, the slice the list.
              list_split = attr.split("[")
              list_index = None
              if len(list_split) > 1:
                  list_index = int(list_split[1].replace("]", ""))
                  attr = list_split[0]
  
              if i < len(split_attribute) - 1:
                  base_obj = getattr(base_obj, attr)
              # Slice the list if list_index is not None
              if list_index is not None:
                  base_obj = base_obj[list_index]
              # If the base object is a list, then apply settings to each
              # element.
              if isinstance(base_obj, (list,)):
                  for obj in base_obj:
                      self._apply_bokeh_setting(
                          ".".join(split_attribute[i + 1 :]),
                          value,
                          base_obj=obj,
                      )
                  break
          else:
              setattr(base_obj, attr, value)
  
imports: from itertools import cycle
  import yaml
  import bokeh
  from bokeh.core.properties import value
  from chartify._core import colors
  from chartify._core.options import options
  from packaging import version
label_desc: Use image node_id 6 for calling the Style obj's underlying member method code with example usage: obj._apply_bokeh_setting(attribute, value, base_obj) without return types