class_docstr: Base class to process rendering a Styler with a specified jinja2 template.
class_docstr_tok: ["Base","class","to","process","rendering","a","Styler","with","a","specified","jinja2","template","."]
code: def __init__(
      self,
      data: DataFrame | Series,
      uuid: str | None = None,
      uuid_len: int = 5,
      table_styles: CSSStyles | None = None,
      table_attributes: str | None = None,
      caption: str | tuple | list | None = None,
      cell_ids: bool = True,
      precision: int | None = None,
  ) -> None:
      # validate ordered args
      if isinstance(data, Series):
          data = data.to_frame()
      if not isinstance(data, DataFrame):
          raise TypeError("``data`` must be a Series or DataFrame")
      self.data: DataFrame = data
      self.index: Index = data.index
      self.columns: Index = data.columns
      if not isinstance(uuid_len, int) or uuid_len < 0:
          raise TypeError(
              "``uuid_len`` must be an integer in range [0, 32]."
          )
      self.uuid = uuid or uuid4().hex[: min(32, uuid_len)]
      self.uuid_len = len(self.uuid)
      self.table_styles = table_styles
      self.table_attributes = table_attributes
      self.caption = caption
      self.cell_ids = cell_ids
      self.css = {
          "row_heading": "row_heading",
          "col_heading": "col_heading",
          "index_name": "index_name",
          "col": "col",
          "row": "row",
          "col_trim": "col_trim",
          "row_trim": "row_trim",
          "level": "level",
          "data": "data",
          "blank": "blank",
          "foot": "foot",
      }
      self.concatenated: list[StylerRenderer] = []
      # add rendering variables
      self.hide_index_names: bool = False
      self.hide_column_names: bool = False
      self.hide_index_: list = [False] * self.index.nlevels
      self.hide_columns_: list = [False] * self.columns.nlevels
      self.hidden_rows: Sequence[
          int
      ] = []  # sequence for specific hidden rows/cols
      self.hidden_columns: Sequence[int] = []
      self.ctx: DefaultDict[tuple[int, int], CSSList] = defaultdict(
          list
      )
      self.ctx_index: DefaultDict[
          tuple[int, int], CSSList
      ] = defaultdict(list)
      self.ctx_columns: DefaultDict[
          tuple[int, int], CSSList
      ] = defaultdict(list)
      self.cell_context: DefaultDict[
          tuple[int, int], str
      ] = defaultdict(str)
      self._todo: list[tuple[Callable, tuple, dict]] = []
      self.tooltips: Tooltips | None = None
      precision = (
          get_option("styler.format.precision")
          if precision is None
          else precision
      )
      self._display_funcs: DefaultDict[  # maps (row, col) -> format func
          tuple[int, int], Callable[[Any], str]
      ] = defaultdict(
          lambda: partial(_default_formatter, precision=precision)
      )
      self._display_funcs_index: DefaultDict[  # maps (row, level) -> format func
          tuple[int, int], Callable[[Any], str]
      ] = defaultdict(
          lambda: partial(_default_formatter, precision=precision)
      )
      self._display_funcs_columns: DefaultDict[  # maps (level, col) -> format func
          tuple[int, int], Callable[[Any], str]
      ] = defaultdict(
          lambda: partial(_default_formatter, precision=precision)
      )
  
imports: from __future__ import annotations
  from collections import defaultdict
  from functools import partial
  import re
  from typing import Any, Callable, DefaultDict, Dict, List, Optional, Sequence, Tuple, TypedDict, Union
  from uuid import uuid4
  import numpy
  from pandas._config import get_option
  from pandas._libs import lib
  from pandas._typing import Axis, Level
  from pandas.compat._optional import import_optional_dependency
  from pandas.core.dtypes.common import is_complex, is_float, is_integer
  from pandas.core.dtypes.generic import ABCSeries
  from pandas import DataFrame, Index, IndexSlice, MultiIndex, Series, isna
  from pandas.api.types import is_list_like
  import pandas.core.common
  from markupsafe import escape
label_desc: Use image node_id 1 to create a new StylerRenderer object  with example: obj = StylerRenderer(data, uuid, uuid_len, table_styles, table_attributes, caption, cell_ids, precision)