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","."]
docstr: Generate the row containing index names
  
   +----------------------------+---------------+---------------------------+
   |  index_names (level_0 to level_n) ...      | column_blanks ...         |
   +----------------------------+---------------+---------------------------+
  
  Parameters
  ----------
  iter : tuple
      Looping variables from outer scope
  max_cols : int
      Permissible number of columns
  
  Returns
  -------
  list of elements
code: def _generate_index_names_row(
      self, iter: tuple, max_cols: int, col_lengths: dict
  ):
      """
      Generate the row containing index names
  
       +----------------------------+---------------+---------------------------+
       |  index_names (level_0 to level_n) ...      | column_blanks ...         |
       +----------------------------+---------------+---------------------------+
  
      Parameters
      ----------
      iter : tuple
          Looping variables from outer scope
      max_cols : int
          Permissible number of columns
  
      Returns
      -------
      list of elements
      """
  
      clabels = iter
  
      index_names = [
          _element(
              "th",
              f"{self.css['index_name']} {self.css['level']}{c}",
              self.css["blank_value"] if name is None else name,
              not self.hide_index_[c],
          )
          for c, name in enumerate(self.data.index.names)
      ]
  
      column_blanks: list = []
      visible_col_count: int = 0
      if clabels:
          last_level = (
              self.columns.nlevels - 1
          )  # use last level since never sparsed
          for c, value in enumerate(clabels[last_level]):
              header_element_visible = _is_visible(
                  c, last_level, col_lengths
              )
              if header_element_visible:
                  visible_col_count += 1
              if self._check_trim(
                  visible_col_count,
                  max_cols,
                  column_blanks,
                  "th",
                  f"{self.css['blank']} {self.css['col']}{c} {self.css['col_trim']}",
                  self.css["blank_value"],
              ):
                  break
  
              column_blanks.append(
                  _element(
                      "th",
                      f"{self.css['blank']} {self.css['col']}{c}",
                      self.css["blank_value"],
                      c not in self.hidden_columns,
                  )
              )
  
      return index_names + column_blanks
  
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 10 for calling the StylerRenderer obj's underlying member method code with example usage: obj._generate_index_names_row(iter, max_cols, col_lengths) and returns: unknown