123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883 |
- """
- This module is imported from the pandas package __init__.py file
- in order to ensure that the core.config options registered here will
- be available as soon as the user loads the package. if register_option
- is invoked inside specific modules, they will not be registered until that
- module is imported, which may or may not be a problem.
- If you need to make sure options are available even before a certain
- module is imported, register them here rather than in the module.
- """
- from __future__ import annotations
- import os
- from typing import Callable
- import pandas._config.config as cf
- from pandas._config.config import (
- is_bool,
- is_callable,
- is_instance_factory,
- is_int,
- is_nonnegative_int,
- is_one_of_factory,
- is_str,
- is_text,
- )
- # compute
- use_bottleneck_doc = """
- : bool
- Use the bottleneck library to accelerate if it is installed,
- the default is True
- Valid values: False,True
- """
- def use_bottleneck_cb(key) -> None:
- from pandas.core import nanops
- nanops.set_use_bottleneck(cf.get_option(key))
- use_numexpr_doc = """
- : bool
- Use the numexpr library to accelerate computation if it is installed,
- the default is True
- Valid values: False,True
- """
- def use_numexpr_cb(key) -> None:
- from pandas.core.computation import expressions
- expressions.set_use_numexpr(cf.get_option(key))
- use_numba_doc = """
- : bool
- Use the numba engine option for select operations if it is installed,
- the default is False
- Valid values: False,True
- """
- def use_numba_cb(key) -> None:
- from pandas.core.util import numba_
- numba_.set_use_numba(cf.get_option(key))
- with cf.config_prefix("compute"):
- cf.register_option(
- "use_bottleneck",
- True,
- use_bottleneck_doc,
- validator=is_bool,
- cb=use_bottleneck_cb,
- )
- cf.register_option(
- "use_numexpr", True, use_numexpr_doc, validator=is_bool, cb=use_numexpr_cb
- )
- cf.register_option(
- "use_numba", False, use_numba_doc, validator=is_bool, cb=use_numba_cb
- )
- #
- # options from the "display" namespace
- pc_precision_doc = """
- : int
- Floating point output precision in terms of number of places after the
- decimal, for regular formatting as well as scientific notation. Similar
- to ``precision`` in :meth:`numpy.set_printoptions`.
- """
- pc_colspace_doc = """
- : int
- Default space for DataFrame columns.
- """
- pc_max_rows_doc = """
- : int
- If max_rows is exceeded, switch to truncate view. Depending on
- `large_repr`, objects are either centrally truncated or printed as
- a summary view. 'None' value means unlimited.
- In case python/IPython is running in a terminal and `large_repr`
- equals 'truncate' this can be set to 0 and pandas will auto-detect
- the height of the terminal and print a truncated object which fits
- the screen height. The IPython notebook, IPython qtconsole, or
- IDLE do not run in a terminal and hence it is not possible to do
- correct auto-detection.
- """
- pc_min_rows_doc = """
- : int
- The numbers of rows to show in a truncated view (when `max_rows` is
- exceeded). Ignored when `max_rows` is set to None or 0. When set to
- None, follows the value of `max_rows`.
- """
- pc_max_cols_doc = """
- : int
- If max_cols is exceeded, switch to truncate view. Depending on
- `large_repr`, objects are either centrally truncated or printed as
- a summary view. 'None' value means unlimited.
- In case python/IPython is running in a terminal and `large_repr`
- equals 'truncate' this can be set to 0 or None and pandas will auto-detect
- the width of the terminal and print a truncated object which fits
- the screen width. The IPython notebook, IPython qtconsole, or IDLE
- do not run in a terminal and hence it is not possible to do
- correct auto-detection and defaults to 20.
- """
- pc_max_categories_doc = """
- : int
- This sets the maximum number of categories pandas should output when
- printing out a `Categorical` or a Series of dtype "category".
- """
- pc_max_info_cols_doc = """
- : int
- max_info_columns is used in DataFrame.info method to decide if
- per column information will be printed.
- """
- pc_nb_repr_h_doc = """
- : boolean
- When True, IPython notebook will use html representation for
- pandas objects (if it is available).
- """
- pc_pprint_nest_depth = """
- : int
- Controls the number of nested levels to process when pretty-printing
- """
- pc_multi_sparse_doc = """
- : boolean
- "sparsify" MultiIndex display (don't display repeated
- elements in outer levels within groups)
- """
- float_format_doc = """
- : callable
- The callable should accept a floating point number and return
- a string with the desired format of the number. This is used
- in some places like SeriesFormatter.
- See formats.format.EngFormatter for an example.
- """
- max_colwidth_doc = """
- : int or None
- The maximum width in characters of a column in the repr of
- a pandas data structure. When the column overflows, a "..."
- placeholder is embedded in the output. A 'None' value means unlimited.
- """
- colheader_justify_doc = """
- : 'left'/'right'
- Controls the justification of column headers. used by DataFrameFormatter.
- """
- pc_expand_repr_doc = """
- : boolean
- Whether to print out the full DataFrame repr for wide DataFrames across
- multiple lines, `max_columns` is still respected, but the output will
- wrap-around across multiple "pages" if its width exceeds `display.width`.
- """
- pc_show_dimensions_doc = """
- : boolean or 'truncate'
- Whether to print out dimensions at the end of DataFrame repr.
- If 'truncate' is specified, only print out the dimensions if the
- frame is truncated (e.g. not display all rows and/or columns)
- """
- pc_east_asian_width_doc = """
- : boolean
- Whether to use the Unicode East Asian Width to calculate the display text
- width.
- Enabling this may affect to the performance (default: False)
- """
- pc_ambiguous_as_wide_doc = """
- : boolean
- Whether to handle Unicode characters belong to Ambiguous as Wide (width=2)
- (default: False)
- """
- pc_table_schema_doc = """
- : boolean
- Whether to publish a Table Schema representation for frontends
- that support it.
- (default: False)
- """
- pc_html_border_doc = """
- : int
- A ``border=value`` attribute is inserted in the ``<table>`` tag
- for the DataFrame HTML repr.
- """
- pc_html_use_mathjax_doc = """\
- : boolean
- When True, Jupyter notebook will process table contents using MathJax,
- rendering mathematical expressions enclosed by the dollar symbol.
- (default: True)
- """
- pc_max_dir_items = """\
- : int
- The number of items that will be added to `dir(...)`. 'None' value means
- unlimited. Because dir is cached, changing this option will not immediately
- affect already existing dataframes until a column is deleted or added.
- This is for instance used to suggest columns from a dataframe to tab
- completion.
- """
- pc_width_doc = """
- : int
- Width of the display in characters. In case python/IPython is running in
- a terminal this can be set to None and pandas will correctly auto-detect
- the width.
- Note that the IPython notebook, IPython qtconsole, or IDLE do not run in a
- terminal and hence it is not possible to correctly detect the width.
- """
- pc_chop_threshold_doc = """
- : float or None
- if set to a float value, all float values smaller than the given threshold
- will be displayed as exactly 0 by repr and friends.
- """
- pc_max_seq_items = """
- : int or None
- When pretty-printing a long sequence, no more then `max_seq_items`
- will be printed. If items are omitted, they will be denoted by the
- addition of "..." to the resulting string.
- If set to None, the number of items to be printed is unlimited.
- """
- pc_max_info_rows_doc = """
- : int or None
- df.info() will usually show null-counts for each column.
- For large frames this can be quite slow. max_info_rows and max_info_cols
- limit this null check only to frames with smaller dimensions than
- specified.
- """
- pc_large_repr_doc = """
- : 'truncate'/'info'
- For DataFrames exceeding max_rows/max_cols, the repr (and HTML repr) can
- show a truncated table (the default from 0.13), or switch to the view from
- df.info() (the behaviour in earlier versions of pandas).
- """
- pc_memory_usage_doc = """
- : bool, string or None
- This specifies if the memory usage of a DataFrame should be displayed when
- df.info() is called. Valid values True,False,'deep'
- """
- def table_schema_cb(key) -> None:
- from pandas.io.formats.printing import enable_data_resource_formatter
- enable_data_resource_formatter(cf.get_option(key))
- def is_terminal() -> bool:
- """
- Detect if Python is running in a terminal.
- Returns True if Python is running in a terminal or False if not.
- """
- try:
- # error: Name 'get_ipython' is not defined
- ip = get_ipython() # type: ignore[name-defined]
- except NameError: # assume standard Python interpreter in a terminal
- return True
- else:
- if hasattr(ip, "kernel"): # IPython as a Jupyter kernel
- return False
- else: # IPython in a terminal
- return True
- with cf.config_prefix("display"):
- cf.register_option("precision", 6, pc_precision_doc, validator=is_nonnegative_int)
- cf.register_option(
- "float_format",
- None,
- float_format_doc,
- validator=is_one_of_factory([None, is_callable]),
- )
- cf.register_option(
- "max_info_rows",
- 1690785,
- pc_max_info_rows_doc,
- validator=is_instance_factory((int, type(None))),
- )
- cf.register_option("max_rows", 60, pc_max_rows_doc, validator=is_nonnegative_int)
- cf.register_option(
- "min_rows",
- 10,
- pc_min_rows_doc,
- validator=is_instance_factory([type(None), int]),
- )
- cf.register_option("max_categories", 8, pc_max_categories_doc, validator=is_int)
- cf.register_option(
- "max_colwidth",
- 50,
- max_colwidth_doc,
- validator=is_nonnegative_int,
- )
- if is_terminal():
- max_cols = 0 # automatically determine optimal number of columns
- else:
- max_cols = 20 # cannot determine optimal number of columns
- cf.register_option(
- "max_columns", max_cols, pc_max_cols_doc, validator=is_nonnegative_int
- )
- cf.register_option(
- "large_repr",
- "truncate",
- pc_large_repr_doc,
- validator=is_one_of_factory(["truncate", "info"]),
- )
- cf.register_option("max_info_columns", 100, pc_max_info_cols_doc, validator=is_int)
- cf.register_option(
- "colheader_justify", "right", colheader_justify_doc, validator=is_text
- )
- cf.register_option("notebook_repr_html", True, pc_nb_repr_h_doc, validator=is_bool)
- cf.register_option("pprint_nest_depth", 3, pc_pprint_nest_depth, validator=is_int)
- cf.register_option("multi_sparse", True, pc_multi_sparse_doc, validator=is_bool)
- cf.register_option("expand_frame_repr", True, pc_expand_repr_doc)
- cf.register_option(
- "show_dimensions",
- "truncate",
- pc_show_dimensions_doc,
- validator=is_one_of_factory([True, False, "truncate"]),
- )
- cf.register_option("chop_threshold", None, pc_chop_threshold_doc)
- cf.register_option("max_seq_items", 100, pc_max_seq_items)
- cf.register_option(
- "width", 80, pc_width_doc, validator=is_instance_factory([type(None), int])
- )
- cf.register_option(
- "memory_usage",
- True,
- pc_memory_usage_doc,
- validator=is_one_of_factory([None, True, False, "deep"]),
- )
- cf.register_option(
- "unicode.east_asian_width", False, pc_east_asian_width_doc, validator=is_bool
- )
- cf.register_option(
- "unicode.ambiguous_as_wide", False, pc_east_asian_width_doc, validator=is_bool
- )
- cf.register_option(
- "html.table_schema",
- False,
- pc_table_schema_doc,
- validator=is_bool,
- cb=table_schema_cb,
- )
- cf.register_option("html.border", 1, pc_html_border_doc, validator=is_int)
- cf.register_option(
- "html.use_mathjax", True, pc_html_use_mathjax_doc, validator=is_bool
- )
- cf.register_option(
- "max_dir_items", 100, pc_max_dir_items, validator=is_nonnegative_int
- )
- tc_sim_interactive_doc = """
- : boolean
- Whether to simulate interactive mode for purposes of testing
- """
- with cf.config_prefix("mode"):
- cf.register_option("sim_interactive", False, tc_sim_interactive_doc)
- use_inf_as_na_doc = """
- : boolean
- True means treat None, NaN, INF, -INF as NA (old way),
- False means None and NaN are null, but INF, -INF are not NA
- (new way).
- """
- # We don't want to start importing everything at the global context level
- # or we'll hit circular deps.
- def use_inf_as_na_cb(key) -> None:
- from pandas.core.dtypes.missing import _use_inf_as_na
- _use_inf_as_na(key)
- with cf.config_prefix("mode"):
- cf.register_option("use_inf_as_na", False, use_inf_as_na_doc, cb=use_inf_as_na_cb)
- data_manager_doc = """
- : string
- Internal data manager type; can be "block" or "array". Defaults to "block",
- unless overridden by the 'PANDAS_DATA_MANAGER' environment variable (needs
- to be set before pandas is imported).
- """
- with cf.config_prefix("mode"):
- cf.register_option(
- "data_manager",
- # Get the default from an environment variable, if set, otherwise defaults
- # to "block". This environment variable can be set for testing.
- os.environ.get("PANDAS_DATA_MANAGER", "block"),
- data_manager_doc,
- validator=is_one_of_factory(["block", "array"]),
- )
- # TODO better name?
- copy_on_write_doc = """
- : bool
- Use new copy-view behaviour using Copy-on-Write. Defaults to False,
- unless overridden by the 'PANDAS_COPY_ON_WRITE' environment variable
- (if set to "1" for True, needs to be set before pandas is imported).
- """
- with cf.config_prefix("mode"):
- cf.register_option(
- "copy_on_write",
- # Get the default from an environment variable, if set, otherwise defaults
- # to False. This environment variable can be set for testing.
- os.environ.get("PANDAS_COPY_ON_WRITE", "0") == "1",
- copy_on_write_doc,
- validator=is_bool,
- )
- # user warnings
- chained_assignment = """
- : string
- Raise an exception, warn, or no action if trying to use chained assignment,
- The default is warn
- """
- with cf.config_prefix("mode"):
- cf.register_option(
- "chained_assignment",
- "warn",
- chained_assignment,
- validator=is_one_of_factory([None, "warn", "raise"]),
- )
- string_storage_doc = """
- : string
- The default storage for StringDtype.
- """
- with cf.config_prefix("mode"):
- cf.register_option(
- "string_storage",
- "python",
- string_storage_doc,
- validator=is_one_of_factory(["python", "pyarrow"]),
- )
- # Set up the io.excel specific reader configuration.
- reader_engine_doc = """
- : string
- The default Excel reader engine for '{ext}' files. Available options:
- auto, {others}.
- """
- _xls_options = ["xlrd"]
- _xlsm_options = ["xlrd", "openpyxl"]
- _xlsx_options = ["xlrd", "openpyxl"]
- _ods_options = ["odf"]
- _xlsb_options = ["pyxlsb"]
- with cf.config_prefix("io.excel.xls"):
- cf.register_option(
- "reader",
- "auto",
- reader_engine_doc.format(ext="xls", others=", ".join(_xls_options)),
- validator=is_one_of_factory(_xls_options + ["auto"]),
- )
- with cf.config_prefix("io.excel.xlsm"):
- cf.register_option(
- "reader",
- "auto",
- reader_engine_doc.format(ext="xlsm", others=", ".join(_xlsm_options)),
- validator=is_one_of_factory(_xlsm_options + ["auto"]),
- )
- with cf.config_prefix("io.excel.xlsx"):
- cf.register_option(
- "reader",
- "auto",
- reader_engine_doc.format(ext="xlsx", others=", ".join(_xlsx_options)),
- validator=is_one_of_factory(_xlsx_options + ["auto"]),
- )
- with cf.config_prefix("io.excel.ods"):
- cf.register_option(
- "reader",
- "auto",
- reader_engine_doc.format(ext="ods", others=", ".join(_ods_options)),
- validator=is_one_of_factory(_ods_options + ["auto"]),
- )
- with cf.config_prefix("io.excel.xlsb"):
- cf.register_option(
- "reader",
- "auto",
- reader_engine_doc.format(ext="xlsb", others=", ".join(_xlsb_options)),
- validator=is_one_of_factory(_xlsb_options + ["auto"]),
- )
- # Set up the io.excel specific writer configuration.
- writer_engine_doc = """
- : string
- The default Excel writer engine for '{ext}' files. Available options:
- auto, {others}.
- """
- _xlsm_options = ["openpyxl"]
- _xlsx_options = ["openpyxl", "xlsxwriter"]
- _ods_options = ["odf"]
- with cf.config_prefix("io.excel.xlsm"):
- cf.register_option(
- "writer",
- "auto",
- writer_engine_doc.format(ext="xlsm", others=", ".join(_xlsm_options)),
- validator=str,
- )
- with cf.config_prefix("io.excel.xlsx"):
- cf.register_option(
- "writer",
- "auto",
- writer_engine_doc.format(ext="xlsx", others=", ".join(_xlsx_options)),
- validator=str,
- )
- with cf.config_prefix("io.excel.ods"):
- cf.register_option(
- "writer",
- "auto",
- writer_engine_doc.format(ext="ods", others=", ".join(_ods_options)),
- validator=str,
- )
- # Set up the io.parquet specific configuration.
- parquet_engine_doc = """
- : string
- The default parquet reader/writer engine. Available options:
- 'auto', 'pyarrow', 'fastparquet', the default is 'auto'
- """
- with cf.config_prefix("io.parquet"):
- cf.register_option(
- "engine",
- "auto",
- parquet_engine_doc,
- validator=is_one_of_factory(["auto", "pyarrow", "fastparquet"]),
- )
- # Set up the io.sql specific configuration.
- sql_engine_doc = """
- : string
- The default sql reader/writer engine. Available options:
- 'auto', 'sqlalchemy', the default is 'auto'
- """
- with cf.config_prefix("io.sql"):
- cf.register_option(
- "engine",
- "auto",
- sql_engine_doc,
- validator=is_one_of_factory(["auto", "sqlalchemy"]),
- )
- # --------
- # Plotting
- # ---------
- plotting_backend_doc = """
- : str
- The plotting backend to use. The default value is "matplotlib", the
- backend provided with pandas. Other backends can be specified by
- providing the name of the module that implements the backend.
- """
- def register_plotting_backend_cb(key) -> None:
- if key == "matplotlib":
- # We defer matplotlib validation, since it's the default
- return
- from pandas.plotting._core import _get_plot_backend
- _get_plot_backend(key)
- with cf.config_prefix("plotting"):
- cf.register_option(
- "backend",
- defval="matplotlib",
- doc=plotting_backend_doc,
- validator=register_plotting_backend_cb,
- )
- register_converter_doc = """
- : bool or 'auto'.
- Whether to register converters with matplotlib's units registry for
- dates, times, datetimes, and Periods. Toggling to False will remove
- the converters, restoring any converters that pandas overwrote.
- """
- def register_converter_cb(key) -> None:
- from pandas.plotting import (
- deregister_matplotlib_converters,
- register_matplotlib_converters,
- )
- if cf.get_option(key):
- register_matplotlib_converters()
- else:
- deregister_matplotlib_converters()
- with cf.config_prefix("plotting.matplotlib"):
- cf.register_option(
- "register_converters",
- "auto",
- register_converter_doc,
- validator=is_one_of_factory(["auto", True, False]),
- cb=register_converter_cb,
- )
- # ------
- # Styler
- # ------
- styler_sparse_index_doc = """
- : bool
- Whether to sparsify the display of a hierarchical index. Setting to False will
- display each explicit level element in a hierarchical key for each row.
- """
- styler_sparse_columns_doc = """
- : bool
- Whether to sparsify the display of hierarchical columns. Setting to False will
- display each explicit level element in a hierarchical key for each column.
- """
- styler_render_repr = """
- : str
- Determine which output to use in Jupyter Notebook in {"html", "latex"}.
- """
- styler_max_elements = """
- : int
- The maximum number of data-cell (<td>) elements that will be rendered before
- trimming will occur over columns, rows or both if needed.
- """
- styler_max_rows = """
- : int, optional
- The maximum number of rows that will be rendered. May still be reduced to
- satsify ``max_elements``, which takes precedence.
- """
- styler_max_columns = """
- : int, optional
- The maximum number of columns that will be rendered. May still be reduced to
- satsify ``max_elements``, which takes precedence.
- """
- styler_precision = """
- : int
- The precision for floats and complex numbers.
- """
- styler_decimal = """
- : str
- The character representation for the decimal separator for floats and complex.
- """
- styler_thousands = """
- : str, optional
- The character representation for thousands separator for floats, int and complex.
- """
- styler_na_rep = """
- : str, optional
- The string representation for values identified as missing.
- """
- styler_escape = """
- : str, optional
- Whether to escape certain characters according to the given context; html or latex.
- """
- styler_formatter = """
- : str, callable, dict, optional
- A formatter object to be used as default within ``Styler.format``.
- """
- styler_multirow_align = """
- : {"c", "t", "b"}
- The specifier for vertical alignment of sparsified LaTeX multirows.
- """
- styler_multicol_align = r"""
- : {"r", "c", "l", "naive-l", "naive-r"}
- The specifier for horizontal alignment of sparsified LaTeX multicolumns. Pipe
- decorators can also be added to non-naive values to draw vertical
- rules, e.g. "\|r" will draw a rule on the left side of right aligned merged cells.
- """
- styler_hrules = """
- : bool
- Whether to add horizontal rules on top and bottom and below the headers.
- """
- styler_environment = """
- : str
- The environment to replace ``\\begin{table}``. If "longtable" is used results
- in a specific longtable environment format.
- """
- styler_encoding = """
- : str
- The encoding used for output HTML and LaTeX files.
- """
- styler_mathjax = """
- : bool
- If False will render special CSS classes to table attributes that indicate Mathjax
- will not be used in Jupyter Notebook.
- """
- with cf.config_prefix("styler"):
- cf.register_option("sparse.index", True, styler_sparse_index_doc, validator=is_bool)
- cf.register_option(
- "sparse.columns", True, styler_sparse_columns_doc, validator=is_bool
- )
- cf.register_option(
- "render.repr",
- "html",
- styler_render_repr,
- validator=is_one_of_factory(["html", "latex"]),
- )
- cf.register_option(
- "render.max_elements",
- 2**18,
- styler_max_elements,
- validator=is_nonnegative_int,
- )
- cf.register_option(
- "render.max_rows",
- None,
- styler_max_rows,
- validator=is_nonnegative_int,
- )
- cf.register_option(
- "render.max_columns",
- None,
- styler_max_columns,
- validator=is_nonnegative_int,
- )
- cf.register_option("render.encoding", "utf-8", styler_encoding, validator=is_str)
- cf.register_option("format.decimal", ".", styler_decimal, validator=is_str)
- cf.register_option(
- "format.precision", 6, styler_precision, validator=is_nonnegative_int
- )
- cf.register_option(
- "format.thousands",
- None,
- styler_thousands,
- validator=is_instance_factory([type(None), str]),
- )
- cf.register_option(
- "format.na_rep",
- None,
- styler_na_rep,
- validator=is_instance_factory([type(None), str]),
- )
- cf.register_option(
- "format.escape",
- None,
- styler_escape,
- validator=is_one_of_factory([None, "html", "latex"]),
- )
- cf.register_option(
- "format.formatter",
- None,
- styler_formatter,
- validator=is_instance_factory([type(None), dict, Callable, str]),
- )
- cf.register_option("html.mathjax", True, styler_mathjax, validator=is_bool)
- cf.register_option(
- "latex.multirow_align",
- "c",
- styler_multirow_align,
- validator=is_one_of_factory(["c", "t", "b", "naive"]),
- )
- val_mca = ["r", "|r|", "|r", "r|", "c", "|c|", "|c", "c|", "l", "|l|", "|l", "l|"]
- val_mca += ["naive-l", "naive-r"]
- cf.register_option(
- "latex.multicol_align",
- "r",
- styler_multicol_align,
- validator=is_one_of_factory(val_mca),
- )
- cf.register_option("latex.hrules", False, styler_hrules, validator=is_bool)
- cf.register_option(
- "latex.environment",
- None,
- styler_environment,
- validator=is_instance_factory([type(None), str]),
- )
|