class_docstr: Helps style a DataFrame or Series according to the data with HTML and CSS.
  
  Parameters
  ----------
  data : Series or DataFrame
  precision : int
      precision to round floats to, defaults to pd.options.display.precision
  table_styles : list-like, default None
      list of {selector: (attr, value)} dicts; see Notes
  uuid : str, default None
      a unique identifier to avoid CSS collisions; generated automatically
  caption : str, default None
      caption to attach to the table
  cell_ids : bool, default True
      If True, each cell will have an ``id`` attribute in their HTML tag.
      The ``id`` takes the form ``T_<uuid>_row<num_row>_col<num_col>``
      where ``<uuid>`` is the unique identifier, ``<num_row>`` is the row
      number and ``<num_col>`` is the column number.
  
  Attributes
  ----------
  env : Jinja2 Environment
  template : Jinja2 Template
  loader : Jinja2 Loader
  
  See Also
  --------
  pandas.DataFrame.style
  
  Notes
  -----
  Most styling will be done by passing style functions into
  ``Styler.apply`` or ``Styler.applymap``. Style functions should
  return values with strings containing CSS ``'attr: value'`` that will
  be applied to the indicated cells.
  
  If using in the Jupyter notebook, Styler has defined a ``_repr_html_``
  to automatically render itself. Otherwise call Styler.render to get
  the generated HTML.
  
  CSS classes are attached to the generated HTML
  
  * Index and Column names include ``index_name`` and ``level<k>``
    where `k` is its level in a MultiIndex
  * Index label cells include
  
    * ``row_heading``
    * ``row<n>`` where `n` is the numeric position of the row
    * ``level<k>`` where `k` is the level in a MultiIndex
  
  * Column label cells include
    * ``col_heading``
    * ``col<n>`` where `n` is the numeric position of the column
    * ``evel<k>`` where `k` is the level in a MultiIndex
  
  * Blank cells include ``blank``
  * Data cells include ``data``
class_docstr_tok: ["Helps","style","a","DataFrame","or","Series","according","to","the","data","with","HTML","and","CSS",".","Parameters","--","--","--","--","--","data",":","Series","or","DataFrame","precision",":","int","precision","to","round","floats","to",",","defaults","to","pd.options.display.precision","table_styles",":","list-like",",","default","None","list","of","{","selector",":","(","attr",",","value",")","}","dicts",";","see","Notes","uuid",":","str",",","default","None","a","unique","identifier","to","avoid","CSS","collisions",";","generated","automatically","caption",":","str",",","default","None","caption","to","attach","to","the","table","cell_ids",":","bool",",","default","True","If","True",",","each","cell","will","have","an","``","id","``","attribute","in","their","HTML","tag",".","The","``","id","``","takes","the","form","``","T_","<","uuid",">","_row","<","num_row",">","_col","<","num_col",">","``","where","``","<","uuid",">","``","is","the","unique","identifier",",","``","<","num_row",">","``","is","the","row","number","and","``","<","num_col",">","``","is","the","column","number",".","Attributes","--","--","--","--","--","env",":","Jinja2","Environment","template",":","Jinja2","Template","loader",":","Jinja2","Loader","See","Also","--","--","--","--","pandas.DataFrame.style","Notes","--","--","-","Most","styling","will","be","done","by","passing","style","functions","into","``","Styler.apply","``","or","``","Styler.applymap","``",".","Style","functions","should","return","values","with","strings","containing","CSS","``","'attr",":","value","'","``","that","will","be","applied","to","the","indicated","cells",".","If","using","in","the","Jupyter","notebook",",","Styler","has","defined","a","``","_repr_html_","``","to","automatically","render","itself",".","Otherwise","call","Styler.render","to","get","the","generated","HTML",".","CSS","classes","are","attached","to","the","generated","HTML","*","Index","and","Column","names","include","``","index_name","``","and","``","level","<","k",">","``","where","`","k","`","is","its","level","in","a","MultiIndex","*","Index","label","cells","include","*","``","row_heading","``","*","``","row","<","n",">","``","where","`","n","`","is","the","numeric","position","of","the","row","*","``","level","<","k",">","``","where","`","k","`","is","the","level","in","a","MultiIndex","*","Column","label","cells","include","*","``","col_heading","``","*","``","col","<","n",">","``","where","`","n","`","is","the","numeric","position","of","the","column","*","``","evel","<","k",">","``","where","`","k","`","is","the","level","in","a","MultiIndex","*","Blank","cells","include","``","blank","``","*","Data","cells","include","``","data","``"]
docstr: Apply ``func(self, *args, **kwargs)``, and return the result.
  
  .. versionadded:: 0.24.0
  
  Parameters
  ----------
  func : function
      Function to apply to the Styler.  Alternatively, a
      ``(callable, keyword)`` tuple where ``keyword`` is a string
      indicating the keyword of ``callable`` that expects the Styler.
  *args, **kwargs :
      Arguments passed to `func`.
  
  Returns
  -------
  object :
      The value returned by ``func``.
  
  See Also
  --------
  DataFrame.pipe : Analogous method for DataFrame.
  Styler.apply : Apply a function row-wise, column-wise, or table-wise to
      modify the dataframe's styling.
  
  Notes
  -----
  Like :meth:`DataFrame.pipe`, this method can simplify the
  application of several user-defined functions to a styler.  Instead
  of writing:
  
  .. code-block:: python
  
      f(g(df.style.set_precision(3), arg1=a), arg2=b, arg3=c)
  
  users can write:
  
  .. code-block:: python
  
      (df.style.set_precision(3)
         .pipe(g, arg1=a)
         .pipe(f, arg2=b, arg3=c))
  
  In particular, this allows users to define functions that take a
  styler object, along with other parameters, and return the styler after
  making styling changes (such as calling :meth:`Styler.apply` or
  :meth:`Styler.set_properties`).  Using ``.pipe``, these user-defined
  style "transformations" can be interleaved with calls to the built-in
  Styler interface.
  
  Examples
  --------
  >>> def format_conversion(styler):
  ...     return (styler.set_properties(**{'text-align': 'right'})
  ...                   .format({'conversion': '{:.1%}'}))
  
  The user-defined ``format_conversion`` function above can be called
  within a sequence of other style modifications:
  
  >>> df = pd.DataFrame({'trial': list(range(5)),
  ...                    'conversion': [0.75, 0.85, np.nan, 0.7, 0.72]})
  >>> (df.style
  ...    .highlight_min(subset=['conversion'], color='yellow')
  ...    .pipe(format_conversion)
  ...    .set_caption("Results with minimum conversion highlighted."))
code: def pipe(self, func, *args, **kwargs):
      """
      Apply ``func(self, *args, **kwargs)``, and return the result.
  
      .. versionadded:: 0.24.0
  
      Parameters
      ----------
      func : function
          Function to apply to the Styler.  Alternatively, a
          ``(callable, keyword)`` tuple where ``keyword`` is a string
          indicating the keyword of ``callable`` that expects the Styler.
      *args, **kwargs :
          Arguments passed to `func`.
  
      Returns
      -------
      object :
          The value returned by ``func``.
  
      See Also
      --------
      DataFrame.pipe : Analogous method for DataFrame.
      Styler.apply : Apply a function row-wise, column-wise, or table-wise to
          modify the dataframe's styling.
  
      Notes
      -----
      Like :meth:`DataFrame.pipe`, this method can simplify the
      application of several user-defined functions to a styler.  Instead
      of writing:
  
      .. code-block:: python
  
          f(g(df.style.set_precision(3), arg1=a), arg2=b, arg3=c)
  
      users can write:
  
      .. code-block:: python
  
          (df.style.set_precision(3)
             .pipe(g, arg1=a)
             .pipe(f, arg2=b, arg3=c))
  
      In particular, this allows users to define functions that take a
      styler object, along with other parameters, and return the styler after
      making styling changes (such as calling :meth:`Styler.apply` or
      :meth:`Styler.set_properties`).  Using ``.pipe``, these user-defined
      style "transformations" can be interleaved with calls to the built-in
      Styler interface.
  
      Examples
      --------
      >>> def format_conversion(styler):
      ...     return (styler.set_properties(**{'text-align': 'right'})
      ...                   .format({'conversion': '{:.1%}'}))
  
      The user-defined ``format_conversion`` function above can be called
      within a sequence of other style modifications:
  
      >>> df = pd.DataFrame({'trial': list(range(5)),
      ...                    'conversion': [0.75, 0.85, np.nan, 0.7, 0.72]})
      >>> (df.style
      ...    .highlight_min(subset=['conversion'], color='yellow')
      ...    .pipe(format_conversion)
      ...    .set_caption("Results with minimum conversion highlighted."))
      """
      return com._pipe(self, func, *args, **kwargs)
  
imports: from collections import defaultdict
  from contextlib import contextmanager
  import copy
  from functools import partial
  from itertools import product
  from uuid import uuid1
  import numpy
  from pandas.compat import range
  from pandas.util._decorators import Appender
  from pandas.core.dtypes.common import is_float, is_string_like
  from pandas.core.dtypes.generic import ABCSeries
  import pandas
  from pandas.api.types import is_dict_like, is_list_like
  import pandas.core.common
  from pandas.core.config import get_option
  from pandas.core.generic import _shared_docs
  from pandas.core.indexing import _maybe_numeric_slice, _non_reducing_slice
label_desc: Use image node_id 39 for calling the Styler obj's underlying member method code with example usage: obj.pipe(func) and returns: com