NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #4129 most downloaded on PyPI
Python DataFrames as interactive DataTables
Last release 2 months ago
22 Jul 2026
Release timing varies
gaps range from 8 days to 3 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
94 releases · first in 2019
We have addressed the window.initializeDataTable is not a function error when a notebook is reloaded (#160, #163). Many thanks again to François Wouts
Fixed
window.initializeDataTable is not a function error when a notebook is reloaded
(#160, #163). Many thanks again to François Wouts for providing the right fix!Added
Changed
One column per quarter.
We have added a new JavascriptCode class to encapsulate JS Code. This will let the user set JS values for some options like columnDefs.render (#154).
Added
JavascriptCode class to encapsulate JS Code. This will let the user set JS values for some options like columnDefs.render (#154).Fixed an issue when lengthMenu is a 2D array
Fixed
lengthMenu is a 2D array (#151)Changed
show is equal to None (for all tested options, passing None results in a datatable that never loads)We have added numpy to the dependencies, pytz is an optional dependency (used in the sample dataframes only), and we do not depend on six anymore (#14
When a table is made of only a few rows, we display just the table (not the search box, pagination control, etc)
Changed
We make sure that the table content has the same number of columns as the header
We have added setuptools.build_meta as the build backend in pyproject.toml
Fixed
setuptools.build_meta as the build backend in pyproject.toml (#142)itables.options.styleChanged
We have improved the support for dark themes by using the CSS from datatables.net in version 1.13.1
Fixed
requests was added as a build dependency (#123)flake8 pre-commit hook was fixed (#124) - thanks
to Anselm Hahn for these two contributions!Added
caption argument to the show function to make it easier to add captions on tables.Changed
style = "table-layout:auto;width:auto;margin:auto" to fix an issue on the width of index columns (default style was width:auto previously) (#130)["display", "nowrap"]order = [] i.e. we don't sort anymore the table, even when the index is monotonic, to fix an issue in the order of categories (#135)maxRows = 0 and also increased maxColumns to 200 (instead of Pandas' default at 20).We use pandas.io.formats.format.format_array to format non-trivial dtypes (as in itables<=1.3.1)
Fixed
pandas.io.formats.format.format_array to format non-trivial dtypes (as in itables<=1.3.1) (#112)generate_random_df to generate large tables on demand (#113)Added
We have removed scrollX = True which was causing issues with non-wide tables (#110). Instead, we now use style = "width:auto".
Fixed
scrollX = True which was causing issues with non-wide tables (#110). Instead, we now use style = "width:auto".We have added scrollX = True to the default options to make the rendering of wide tables more similar to Pandas.
Changed
scrollX = True to the default options to make the rendering of wide tables more similar to Pandas.We have reimplemented the function that encodes the Pandas dataframes to JSON to avoid triggering FutureWarnings when using pandas>=1.5 (#107).
Fixed
pandas>=1.5 (#107).The show method has a new css argument (defaults to itables.options.css) (#104).
Added
show method has a new css argument (defaults to itables.options.css) (#104).The order of rows is preserved by default (unless you explicitly pass an order parameter) (#99).
New to_html_datatable function to export a DataFrame to an HTML div
Added
to_html_datatable function to export a DataFrame to an HTML div (#88)itables in Shiny for Python (#86)Tables with duplicated column names are now supported, thanks to Antonio Commisso's fix
Fixed
Tables with many rows are preferentially downsampled on rows, while tables with many columns are preferentially downsampled on columns
Changed
Added missing column_filters package data.
Fixed
column_filters package data.itables.options and the show function have a new column_filters argument to display individual column search boxes
Added
itables.options and the show function have a new column_filters argument to display individual column search boxes (#69)dom option.JavascriptFunction to limit the evaluation of Javascript function to selected ones.black thanks to a Jupytext & Black pre-commit hook.ITables works offline! (#8, #70). Marc would like to thank Allan Jardine, the author of the datatables library, and François Wouts for their precious
Added
Changed
Additional tags like captions are supported (#10).
tags like captions are supported (#10).Added
tags like e.g. captions are supported (#10).We have removed the default column width at 70 pixels (#61, #62, #66)
pyupgrade in our pre-commit hooksThe itables documentation now uses Jupyter Book
itables documentation now uses Jupyter Book (#56)style option in itables.options and in show, with a default value equal to max-width:100%.Add 'require_config.js' to the pip package
When a JS function is created on the Python side, we export it as-is (without quotes) in the HTML file and don't use JS eval anymore.
Fix the HTML output when eval_functions=True
eval_functions=Trueinit_notebook_mode(all_interactive=False) restores the original Pandas HTML representationLong column names don't overlap any more
Now itables also works in Jupyter Lab, Colab, Nteract, VS Code and PyCharm (#3, #4, #26, #40), as we load the datatables.net library with an ES import
itables also works in Jupyter Lab, Colab, Nteract, VS Code and PyCharm (#3, #4, #26, #40), as we load the datatables.net library with an ES import when require.js is not available. Many thanks to François Wouts for his precious help!show function (and itables.options) has a new argument eval_functions. When set to True, the nested strings passed to datatables.net that start with function are converted to Javascript functions.We fixed an issue (jquery not found) with the HTML export when using nbconvert>=6.0
jquery not found) with the HTML export when using nbconvert>=6.0 (#21)order option (#30)require in Jupyter Lab (#3)main rather than masterdatatables to 1.11.3 and jquery to 3.5.1itables now has an explicit init_notebook_mode function, which inserts the datatables.net library in the notebook. Use init_notebook_mode(all_interact
itables now has an explicit init_notebook_mode function, which inserts the datatables.net library in the notebook. Use init_notebook_mode(all_interactive=True) to display all the pandas object as interactive tables. This fixes (#6) and (#17).itables uses GitHub Actions for the CI.itables is tested with Python 3.9 as well.Pandas' display.max_columns can be None, by Arthur Deygin
display.max_columns can be None, by Arthur Deygin (#14)Add IPython to setup.py install_requires, by Jon Shao
Javascript code moved to Javascript files
Added
Changed
Fixed
Initial release
Initial release
Your coding agent can read these notes before it upgrades. Set up the MCP server →