Source code for astropy.table.notebook_backends

# Licensed under a 3-clause BSD style license - see LICENSE.rst
"""Backend implementations for `~astropy.table.Table` interface
with Jupyter notebooks.

"""

__all__ = ["classic", "ipydatagrid"]


# NOTE: The actual deprecation warning is emitted in show_in_notebook
# method in table.py module.
[docs] def classic( table, tableid=None, css=None, display_length=50, table_class="astropy-default", show_row_index="idx", ): """Render the table in HTML and show it in the Jupyter notebook. .. deprecated:: 6.1 Use :func:`ipydatagrid` instead. Parameters ---------- table : `~astropy.table.Table` Table to render. tableid : str or None An html ID tag for the table. Default is ``table{id}-XXX``, where id is the unique integer id of the table object, id(table), and XXX is a random number to avoid conflicts when printing the same table multiple times. table_class : str or None A string with a list of HTML classes used to style the table. The special default string ('astropy-default') means that the string will be retrieved from the configuration item ``astropy.table.default_notebook_table_class``. Note that these table classes may make use of bootstrap, as this is loaded with the notebook. See `this page <https://getbootstrap.com/css/#tables>`_ for the list of classes. css : str A valid CSS string declaring the formatting for the table. Defaults to ``astropy.table.jsviewer.DEFAULT_CSS_NB``. display_length : int, optional Number or rows to show. Defaults to 50. show_row_index : str or False If this does not evaluate to False, a column with the given name will be added to the version of the table that gets displayed. This new column shows the index of the row in the table itself, even when the displayed table is re-sorted by another column. Note that if a column with this name already exists, this option will be ignored. Defaults to "idx". Returns ------- html : object An ``IPython.display.HTML`` instance representing the given table. Notes ----- Currently, unlike :meth:`~astropy.table.Table.show_in_browser` (with ``jsviewer=True``), this method needs to access online Javascript code repositories. This is due to modern browsers' limitations on accessing local files. Hence, if you call this method while offline (and don't have a cached version of jquery and jquery.dataTables), you will not get the jsviewer features. """ import numpy as np from IPython.display import HTML from . import conf from .jsviewer import JSViewer if tableid is None: tableid = f"table{id(table)}-{np.random.randint(1, 1e6)}" jsv = JSViewer(display_length=display_length) if show_row_index: display_table = table._make_index_row_display_table(show_row_index) else: display_table = table if table_class == "astropy-default": table_class = conf.default_notebook_table_class html = display_table._base_repr_( html=True, max_width=-1, tableid=tableid, max_lines=-1, show_dtype=False, tableclass=table_class, ) columns = display_table.columns.values() sortable_columns = [ i for i, col in enumerate(columns) if col.info.dtype.kind in "iufc" ] html += jsv.ipynb(tableid, css=css, sort_columns=sortable_columns) return HTML(html)
[docs] def ipydatagrid(table, **kwargs): """Render the table in HTML with ``ipydatagrid`` and show it in the Jupyter notebook. This function creates an ``ipydatagrid.DataGrid`` object by converting the input ``table`` to a ``pandas.DataFrame`` and passing ``**kwargs`` to the constructor. The available ``DataGrid`` options can be seen in a Jupyter notebook with ``help(ipydatagrid.DataGrid)``. .. note:: This function requires optional dependencies ``pandas`` and ``ipydatagrid``. Parameters ---------- table : `~astropy.table.Table` Table to render. **kwargs : dict, optional Keyword arguments accepted by ``ipydatagrid.DataGrid``. Returns ------- dg : object An ``ipydatagrid.DataGrid`` instance representing the given table. """ from ipydatagrid import DataGrid return DataGrid(table.to_pandas(), **kwargs)