ITables ChangeLog

Contents

ITables ChangeLog#

2.9.0 (2026-07-19)#

Added

  • The interactive HTML table now shows a plain, static HTML table by default, right next to the (initially hidden) interactive table, so that viewers that can’t or won’t run JavaScript (e.g. GitHub’s static preview of .ipynb files, or an untrusted notebook) get a readable table instead of a broken or empty one. We have also added itables.to_markdown_table(), a simple, static Markdown table representation of a dataframe; itables.show() prints it instead of the interactive table when it can’t expect a working, JavaScript-powered display at all (no IPython, or a non-Jupyter/terminal session). See the new Fallbacks documentation section (#575)

Changed

  • We have moved the documentation to itables.org!

  • We have further sped up the CI: the conda package is now built with rattler-build instead of conda-build, and dependencies in the pytest matrix are now installed with uv instead of pip.

  • We now use a standard python3 kernel for the documentation - this removes the need for a custom kernel.

Fixed

  • We have fixed several dark mode issues with the ITable widget and with the documentation, where the table controls (search box, page length) turned dark but the table itself stayed light (#426):

    • VS Code renders ipywidget content inside a same-origin iframe of its own, but only sets the data-vscode-theme-kind attribute on the outer notebook webview’s <body>, so itables’ dark-mode detection now also looks at ancestor documents, not just the widget’s own.

    • itables’ table cells are transparent by design, so that they blend into the host page’s own background - but some hosts (e.g. ipywidgets front-ends, or pydata-sphinx-theme on itables.org) wrap the output in their own container with a hard-coded background that itables has no control over. div.dt-container now paints its own theme-aware background and text color instead of relying on transparency and inheritance.

    • On itables.org specifically, pydata-sphinx-theme also added its own padding around that container as part of its (now neutralized) safety-net background, which showed up as a light border around the table; we now ship a small custom stylesheet with the docs to opt itables’ own output out of it.

    • In VS Code specifically, the Jupyter extension also wraps every ipywidget’s output in its own .cell-output-ipywidget-background container(s), hardcoded to white regardless of the editor’s theme, which showed up as a thick white border around the widget; the ITable widget’s CSS now repaints it too, whenever it’s actually hosting an ITable (other widgets are left untouched).

2.8.2 (2026-07-19)#

Added

  • We have added a css argument to show (and a matching itables.options.css) to inject custom CSS. Unlike display(HTML(f"<style>{css}</style>")), this CSS is embedded in the output of every table, so it does not depend on that separate cell’s output being rendered - some notebook front-ends (e.g. VS Code) defer rendering outputs that are scrolled out of view, so a standalone CSS cell may not take effect until it becomes visible (#572).

Changed

  • We have sped up the CI: the pytest matrix jobs now install the wheel built once by build-wheel instead of each rebuilding the JS bundle from source, tests now run in parallel with pytest-xdist, and pytest-pixi-updated (which overlaps with the weekly scheduled run) is skipped on pull requests.

Fixed

  • We have fixed the dark mode detection so that it also reacts to theme changes that happen after the table has been rendered, e.g. when the user switches the Jupyter Lab or VS Code theme (#576).

  • We have fixed the dark mode detection in offline mode (#564).

  • We have fixed the dark mode detection in Quarto documents (#536).

  • We have fixed the misaligned ColumnControl search dropdown (e.g. columnControl={"content": ["searchDropdown"]}) (#536).

  • The dash version used to generate src/itables_for_dash/ITable.py is now pinned to dash==4.4.0 to avoid jitter in ITable.py.

Security

  • We have added zizmor to our CI to scan the GitHub Actions workflows for security issues. All actions are now pinned to a commit SHA, checkout steps no longer persist credentials, jobs use least-privilege permissions, and we fixed a code-injection risk in the PR-comment workflow where untrusted pull request metadata was interpolated directly into a github-script template.

2.8.1 (2026-06-10)#

Added

  • We have added the Scroller extension of DataTables to the dt_for_itables package. Use scroller=True together with scrollY to enable virtual scrolling for large tables. The deferRender option is also now supported and pairs naturally with Scroller for improved rendering performance #380.

  • We have added the ColReorder extension of DataTables to the dt_for_itables package. Use colReorder=True to let users drag and drop column headers to reorder them.

  • Our ITables widget works in Panel. We have added an example Panel app to demonstrate this.

2.8.0 (2026-05-17)#

Added

  • Categorical columns (pd.CategoricalDtype, pl.Categorical, pl.Enum) are now sorted according to the category order rather than alphabetically. Null/missing values sort first. Set add_rank_to_categories=False to revert to alphabetical sorting (#501).

  • A new Pixi environment lets you build the package locally: pixi run -e build hatch build

  • Another Pixi environment lets you test the example streamlit app: pixi run -e streamlit-app streamlit run apps/streamlit/itables_app.py

Changed

  • The Streamlit component has been migrated to st.components.v2, which renders inline (no iframe) and uses a cleaner function-based lifecycle (#521, #519)

  • We have updated TypeScript to its latest version (#543)

  • We have updated the JavaScript dependencies of dt_for_itables (#545), itables_anywidget (#544), and itables_for_dash (#546)

  • We have updated @babel/plugin-transform-modules-systemjs (#547)

  • We have updated GitHub Actions dependencies in the workflows (#548)

  • We now allow the build step to comment on pull requests (#552), and build the wheel and conda packages in parallel (#656)

Fixed

  • We have fixed the missing leading whitespace in lengthMenu label (#542)

  • We have added a new CSS rule to make sure that sorting icons are always displayed on the same side ([#535])

  • We have updated postcss in itables_for_dash to address a security issue (#549)

  • We have fixed a TypeError raised by dash-generate-components when building itables_for_dash with npm run build

2.7.3 (2026-03-22)#

Fixed

  • We have fixed a DataTables “Requested unknown parameter” warning triggered when updating an ITable widget to a dataframe with a different column structure (e.g., a dataframe with float columns followed by an empty dataframe) (#527). Thanks to newrokor for reporting this!

2.7.2 (2026-03-22)#

Fixed

  • We have fixed a ValueError raised by to_html_datatable on columns with numpy floating scalars (float32, float16) containing NaN or Inf values (#524). Thanks to Luke Tsekouras for reporting this!

2.7.1 (2026-03-08)#

Added

  • We have added the FixedHeader extension of DataTables to the dt_for_itables package (#496). Thanks to Luke Tsekouras for suggesting this!

Changed

  • The HTML code generated by ITables is now deterministic. Thanks to Tim Maier for suggesting and implementing this! (#504)

  • We have introduced more line breaks in the HTML to make it easier to read (#502)

Fixed

  • We have fixed the ordering of floats (#508)

  • We no longer calculate the rank of floats; they are now sorted directly by their value (#490)

  • We have added an optional columnControl to option.py. Thanks to kultura-luke for pointing out at this (#496)

  • We have fixed one test on the streamlit example app (#509)

  • We have fixed the build step as well (#513)

  • We have updated the dependencies of the ITables extension for Dash to address three vulnerability issues (#520)

2.7.0 (2026-02-04)#

Changed

  • Floats are formatted using the underlying dataframe formatter when format_floats_in_python is "auto" (the default). Set that option False if you want to format the values in JS directly (#483).

  • Complex Polars objects are formatted using Polars’ internal method x._s.get_fmt (#471)

  • We have updated dt_for_itables to the latest version of datatables.net-dt==2.3.7 (#485)

  • The default look of ITables is more compact. Create an itables.toml configuration file with just classes = ["display", "nowrap"] to revert the change locally.

Fixed

  • We have fixed an issue with show_dtypes for certain dataframes (#480)

  • We have updated the JavaScript dependencies of the Streamlit extension (#477, #479)

2.6.2 (2025-12-26)#

Fixed

  • The typing_extensions package is required for static type checking on Python <= 3.10 (#473)

2.6.1 (2025-12-14)#

Fixed

  • We have fixed a conda build error: TypeError: typing.Any is not subscriptable (#468, #469), and added more tests

2.6.0 (2025-12-14)#

Added

  • ITables has no dependencies (#457,#465). Also, it has been tested with Python 3.14.

  • When Narwhals is installed, ITables can show cuDF and Modin DataFrames, as well as PyArrow tables. Many thanks to Marco Gorelli and to Dea María Léon for making this happen! (#325)

  • We have added a new show_dtypes option. It defaults to "auto", meaning that dtypes are only shown for Polars Dataframes by default (#449)

  • Another new option is show_df_type (defaults to False) to show the DataFrame or Series type (#448)

  • When displaying Polars DataFrames, ITables will format floats using float_precision, if set on the pl.Config object (#447)

  • The development environment for ITables is now controlled with Pixi (#453)

  • A conda package is built (and attached) to each PR (#438)

Fixed

Changed

  • We have updated the JavaScript dependencies of our Streamlit component

2.5.2 (2025-09-02)#

Fixed

  • platformdirs is an optional dependency of ITables (#437)

2.5.1 (2025-08-31)#

Changed

  • tomli is an optional dependency of ITables (#436)

2.5.0 (2025-08-31)#

Fixed

  • The offline mode now allows the init cell to be rendered after the table cells. It should work more reliably in VS Code (#424)

Added

  • We have added the columnControl extension that was recently added to DataTables (blog post) (#403)

  • The default options can be set through an itables.toml configuration file, either in the current or in a parent folder (#429)

Changed

  • We have changed the default value of the html argument in itables.sample_dfs.get_countries. It now defaults to False, in which case the example dataframes contains no HTML code.

2.4.5 (2025-08-23)#

Fixed

  • The showIndex argument is now ignored when df is a Polars DataFrame (#422)

  • The dependencies of the streamlit component have been updated to address security issues (#420, #421, #425)

2.4.4 (2025-07-07)#

Fixed

  • We have fixed an assertion error when a table_id argument is passed to DT (#417)

2.4.3 (2025-07-01)#

Fixed

  • We have fixed an issue with an index not shown when polars was not installed (#415)

2.4.2 (2025-06-11)#

Added

  • We have added a Framework :: Dash classifier to highlight the fact that ITables has a component for Dash

  • We have added more type annotations (#390)

Fixed

  • We have added a Typing :: Typed classifier to the package as ITables now comes with type annotations (#411)

  • Added type hints and an example for pageLength (#410)

2.4.1 (2025-06-10)#

Added

  • We enforce strict pyright on the ITables documentation (#395) and on the example apps (#401)

Changed

  • The warn_on_undocumented_option option now defaults to True and only check the option names

  • We have added a new option warn_on_unexpected_option_type that defaults to warn_on_undocumented_option when typeguard>=4.4.1 is installed (False otherwise)

  • Wrapping JS function definitions in parentheses prior to JS eval is now done on the JS side.

Fixed

  • We have added type hints to itable.options even for the options that don’t have a default value (#224)

  • The optional final semicolon in style argument is now supported again (#386)

  • The index of Pandas Style object is now rendered when non-trivial (#393)

  • We have made the CSS files compatible with the shadow dom used by Marimo (#383)

  • A workaround for the incorrect widget weight in Shiny is to use fillable=False in the output_widget (#360)

  • We have fixed a Javascript error in the Jupyter widget (‘t.state_change is undefined’) (#407)

2.4.0 (2025-05-17)#

Added

  • The ITable widget, and the ITable components for Dash and Streamlit have the same features as the show function. They can show non-finite floats, bigints, Pandas Style objects and use custom JavaScript formatters (#374)

  • We have added type hints for the show function and for the various app components. A SyntaxWarning is issued if either the argument name or type does not match when warn_on_undocumented_option=True (the default when typeguard>=4.4.1 is installed)

  • We have added more application examples, and documented how to use ITables in Marimo (#348)

Changed

  • By default, the HTML content in Pandas and Polars dataframes is now escaped. Use allow_html=True to display HTML content (use this option only if you trust the content of the table!) (#346)

  • Consistently with Pandas Style, the HTML content in Styler objects is not escaped - make sure you trust the content of the corresponding tables.

  • We have updated DataTables to its latest release 2.3.0

  • ITable now requires Python 3.9, due to the addition of type hints

  • The dom argument (deprecated in v2.0) has been removed.

Fixed

  • We have added a new option text_in_header_can_be_selected (defaults to True). With that option the text in headers can be selected, giving you the option to select and copy the column names back to your Python code.

  • We have fixed the rendering of Polars Struct columns (#290)

2.3.0 (2025-04-05)#

Added

  • ITable now has a component for Dash! You can render your Python DataFrames in your Dash application with from itables.dash import ITable (#245)

Changed

  • We have changed the default value of the all_interactive argument of itables.init_notebook_mode to True

  • The ITables options can be imported and modified directly through itables.options

  • We have updated dt_for_itables to datatables.net-dt==2.2.2 and datatables.net-select-dt==3.0.0

  • We have updated the dependencies of our Jupyter widget and our of Streamlit component.

2.2.5 (2025-02-22)#

Fixed

  • We have removed an erroneous assertion and added tests on the warnings issued when selected rows are not displayed ([#351])

2.2.4 (2024-12-07)#

Fixed

  • We have fixed an issue with the HTML export of multiple tables in the same cell (#338)

  • The dependencies of the Streamlit component have been updated (#343, #345)

2.2.3 (2024-11-01)#

Fixed

  • Table footers continue to work when the notebook is exported to HTML (#331)

  • The dependencies of the Streamlit component have been updated (#327, #330)

Added

  • ITables is now tested with Python 3.13

2.2.2 (2024-09-29)#

Fixed

  • We have fixed a HTML pop up warning when displaying Pandas Style objects in Quarto (#317)

  • The dependencies of the Streamlit component have been updated (#323)

Added

  • We have documented how to use the ITable widget in a Shiny application

  • We have deployed a sample Shiny app (#276)

2.2.1 (2024-09-22)#

Fixed

  • We fixed an issue with the Streamlit component when selected_rows was not set.

2.2.0 (2024-09-22)#

Added

  • ITables has a Jupyter Widget (#267). Our widget was developed and packaged using AnyWidget which I highly recommend!

  • The selected rows are now available in the apps. Use either the selected_rows attribute of the ITable widget, the returned value of the Streamlit interactive_table component, or the {table_id}_selected_rows input in Shiny (#208, #250)

  • ITables works offline in Shiny applications too - just add ui.HTML(init_itables()) to your application

Changed

  • The tableId argument of to_html_datatable has been renamed to table_id

Fixed

  • The dependencies of the Streamlit component have been updated (#320)

2.1.5 (2024-09-08)#

Fixed

  • DataTables was updated to its latest version (2.1.6)

  • We have added the DateTime extension, required by SearchTime when showing dates (#288)

  • We have improved the function that determines whether a dark theme is being used (#294)

  • We have adjusted the generation of the Polars sample dataframes to fix the CI (Polars-18130)

  • The test on the Shiny app fallbacks to ui.nav_panel when ui.nav is not available

  • The dependencies of the Streamlit component have been updated (#313, #315)

2.1.4 (2024-07-03)#

Fixed

  • We have fixed an OverflowError (can’t convert negative int to unsigned) when displaying Polars DataFrames that contain unsigned integers (#299)

2.1.3 (2024-06-22)#

Fixed

  • We have improved the detection of large integers in the context of Polars DataFrames (#291)

2.1.2 (2024-06-19)#

Changed

  • The default CSS contains now has overflow:auto on div.dt-layout-table>div. Thanks to this we now get an automatic horizontal scrolling in Jupyter, Jupyter Book and also Streamlit if the table is too wide (#282).

Fixed

  • The dependencies of the Streamlit components have been updated to fix a vulnerability in ws (Alert 1)

2.1.1 (2024-06-08)#

Fixed

  • We have added an explicit encoding argument in the calls to read_text to address an issue seen on Windows (#252).

  • We have adjusted the codecov settings (#280)

Changed

  • We have added a default css on dt-container equal to {max-width:100%}.

  • We have updated datatables.net-dt to 2.0.8, and included the column visibility button in the dt_for_itables package (#284)

2.1.0 (2024-05-27)#

Added

  • ITables works with Streamlit (#270)

Changed

  • ITables now uses the src layout (#246) - many thanks to Mahendra Paipuri for his help on this topic!

  • We have updated dt_for_itables’ dependencies to datatables.net-dt==2.0.7 and datatables.net-select-dt==2.0.2 (#273)

  • We have updated the pre-commit hooks used in the project (#268)

2.0.1 (2024-04-30)#

Added

  • We have added a logo for ITables (#257)

  • The loading message gives more information, including the version of ITables and where DataTables is loaded from (#258)

Changed

  • We have updated DataTables to 2.0.5 and its extensions to their latest version (#260)

  • maxBytes can now be a string. Its default value remains unchanged at 64KB (#239)

Fixed

  • We have improve the compatibility with dark themes (#255)

  • We now enforce non-sparse index when displaying Pandas Style objects with a multiindex (#254)

  • Export buttons are shown when using show(df, buttons=...) on a Pandas Style object (#259)

  • We have fixed a side effect when using logging (#265)

2.0.0 (2024-03-16)#

Added

  • The CSV, Excel and Print buttons are now included (#50, #155)

  • We have included a few other extensions like SearchBuilder and SearchPanes and documented how to add more (#178, #207, #208, #231)

  • ITables is now tested with Python 3.12

Changed

  • ITables uses the latest version 2.0.2 of DataTables (#121)

  • Large Python integers are now mapped to JavaScript BigInt (#172)

  • ITables is build using hatch and pyproject.toml

1.7.1 (2024-03-05)#

Fixed

  • The select and search box now use a white font in VS Code (dark mode) (#232, #156, #103)

Added

  • We have added a check to make sure any tableId provided by the user is valid (#233)

1.7.0 (2024-02-09)#

Added

  • ITables works well with Quarto. We have added Quarto examples to the documentation. We set data-quarto-disable-processing="true" on the tables that are generated with use_to_html=False and thus can’t be processed by Quarto (#179)

Fixed

  • ITables works when you duplicate a notebook (#222)

  • We use df.isetitem(i, ...) rather than df.iloc[:,i] = ... to avoid a warning with Pandas 2.2.0 (#223)

Changed

  • We have changed how datatables.net is loaded. This is expected to improve the VSCode experience (#216)

  • We have removed legacy Python 2 code.

1.6.4 (2024-02-03)#

Fixed

1.6.3 (2023-12-10)#

Changed

  • HTML in table columns is supported (#213)

1.6.2 (2023-10-07)#

Fixed

  • We have removed an indirect dependency on jinja2 caused by the Pandas style objects (#202)

1.6.1 (2023-10-01)#

Fixed

  • We have fixed an issue when rendering Pandas style objects in Google Colab (#199)

1.6.0 (2023-09-30)#

Added

Fixed

  • We do not generate timedeltas in the sample dataframes when using pandas==2.1 as this fails (pandas-55080)

1.5.4 (2023-08-18)#

Fixed

  • Fixed an OverflowError when displaying Polar tables containing unsigned integers (#192)

Changed

  • We have refactored the GitHub Action workflows. Python 2 was removed since it is not supported anymore.

1.5.3 (2023-06-11)#

Fixed

  • We fixed an interaction issue with other ui elements in Shiny apps - use from itables.shiny import DT (#181)

  • We fixed the rendering of some empty dataframes

1.5.2 (2023-03-26)#

Fixed

  • Integers that are too big for Javascript are converted to str (#152)

  • If a downsampling occurs, the downsampling message is displayed even if the table only has a few rows

Added

  • We have added a CI configuration where we test itables against pandas in pre-release versions

1.5.1 (2023-03-12)#

Fixed

  • Empty Polars DataFrame are now rendered correctly (#167)

1.5.0 (2023-03-11)#

Fixed

  • 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 for providing the right fix!

Added

  • Polars DataFrames are supported (#159)

  • We have added an example to show how to include images in tables (#158)

  • We have added links and images (flags from https://flagpedia.net) to the sample countries df (#158).

Changed

  • We have updated the pre-commit hooks

1.4.6 (2023-01-31)#

Added

  • 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).

1.4.5 (2023-01-23)#

Fixed

  • Fixed an issue when lengthMenu is a 2D array (#151)

Changed

  • We make sure that no argument passed to show is equal to None (for all tested options, passing None results in a datatable that never loads)

  • Running the test collection will not update the CSV files used for testing anymore

1.4.4 (2023-01-15)#

Fixed

  • 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 (#149) The build time dependencies pathlib and requests are listed in pyproject.toml (since #123, itables==1.4.0)

1.4.3 (2023-01-14)#

Changed

  • When a table is made of only a few rows, we display just the table (not the search box, pagination control, etc)

1.4.2 (2022-12-23)#

Fixed

  • We make sure that the table content has the same number of columns as the header (#141)

  • We have updated the documentation on column widths (#145)

1.4.1 (2022-12-04)#

Fixed

  • We have added setuptools.build_meta as the build backend in pyproject.toml (#142)

  • We have fixed a typo in itables.options.style

Changed

  • We have updated the development status of the project to Production/Stable

1.4.0 (2022-12-04)#

Fixed

  • We have improved the support for dark themes by using the CSS from datatables.net in version 1.13.1 (#103)

  • We have fixed a compatibility issue with old versions of pandas

  • We have added a test to make sure that timezones are preserved

  • requests was added as a build dependency (#123)

  • and the flake8 pre-commit hook was fixed (#124) - thanks to Anselm Hahn for these two contributions!

  • Duplicated column and index names are supported (#134)

Added

  • The examples in the documentation are now executed as part of the test suite to increase the coverage.

  • We have added a new caption argument to the show function to make it easier to add captions on tables.

Changed

  • We have changed the default table to 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)

  • The default classes applied to datatables are now ["display", "nowrap"]

  • We have changed the default order to 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)

  • We have set an explicit maxRows = 0 and also increased maxColumns to 200 (instead of Pandas’ default at 20).

1.3.5 (2022-11-12)#

Fixed

  • We use pandas.io.formats.format.format_array to format non-trivial dtypes (as in itables<=1.3.1) (#112)

  • The downsampling of large tables is faster. We have also added a new function generate_random_df to generate large tables on demand (#113)

  • We don’t raise a warning anymore when a table is downsampled. Instead, we add this information to the table summary (#114)

Added

  • We have added support for Python 2 (#115).

1.3.4 (2022-11-07)#

Fixed

  • We have removed scrollX = True which was causing issues with non-wide tables (#110). Instead, we now use style = "width:auto".

1.3.3 (2022-11-06)#

Changed

  • We have added scrollX = True to the default options to make the rendering of wide tables more similar to Pandas.

1.3.2 (2022-11-06)#

Fixed

  • We have reimplemented the function that encodes the Pandas dataframes to JSON to avoid triggering FutureWarnings when using pandas>=1.5 (#107).

1.3.1 (2022-11-05)#

Added

  • The show method has a new css argument (defaults to itables.options.css) (#104).

1.3.0 (2022-09-04)#

Changed

  • The order of rows is preserved by default (unless you explicitly pass an order parameter) (#99).

Fixed

  • Nullable types (bool, int) are now supported (#98)

1.2.0 (2022-08-15)#

Added

  • New to_html_datatable function to export a DataFrame to an HTML div (#88)

  • We have added examples on how to use itables in Shiny for Python (#86)

1.1.3 (2022-08-11)#

Fixed

  • Tables with duplicated column names are now supported, thanks to Antonio Commisso’s fix (#89)

1.1.2 (2022-06-30)#

Changed

  • Tables with many rows are preferentially downsampled on rows, while tables with many columns are preferentially downsampled on columns (#84)

1.1.1 (2022-06-23)#

Fixed

  • Added missing column_filters package data.

1.1.0 (2022-06-23)#

Added

  • itables.options and the show function have a new column_filters argument to display individual column search boxes (#69)

  • We have documented DataTables’ dom option.

  • We have introduced a new class JavascriptFunction to limit the evaluation of Javascript function to selected ones.

  • The documentation is formatted with black thanks to a Jupytext & Black pre-commit hook.

1.0.0 (2022-06-22)#

Added

Changed

0.4.7 (2022-04-13)#

Added

  • Additional tags like e.g. captions are supported (#10).

0.4.6 (2022-03-29)#

Changed

  • We have removed the default column width at 70 pixels (#61, #62, #66)

  • We now use pyupgrade in our pre-commit hooks

Fixed

  • We have improved the rendering of multiindex columns (#63)

0.4.5 (2022-01-25)#

Changed

  • The itables documentation now uses Jupyter Book (#56)

  • We have added a new style option in itables.options and in show, with a default value equal to max-width:100%.

0.4.4 (2022-01-10)#

Fixed

  • Add ‘require_config.js’ to the pip package (#48)

0.4.3 (2022-01-08)#

Changed

  • 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.

0.4.2 (2022-01-07)#

Fixed

  • Fix the HTML output when eval_functions=True

  • Display “Loading…” under the table header until the table is displayed with datatables.net

  • init_notebook_mode(all_interactive=False) restores the original Pandas HTML representation.

0.4.1 (2022-01-06)#

Fixed

  • Long column names don’t overlap anymore (#28)

0.4.0 (2022-01-06)#

rFixed

  • Now itables also works in Jupyter Lab, Colab, 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!

Changed

  • The 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.

  • The HTML code for the datatables.net representation of the table is generated with an HTML template.

  • We use f-strings and thus require Python >= 3.6

0.3.1 (2021-12-24)#

Fixed

  • We fixed an issue (jquery not found) with the HTML export when using nbconvert>=6.0 (#21)

  • We documented how to change the default ordering of rows - with the order option (#30)

  • We documented how to load require in Jupyter Lab (#3)

Changed

  • The main branch for the project is main rather than master

  • Updated datatables to 1.11.3 and jquery to 3.5.1

0.3.0 (2020-12-14)#

Fixed

  • 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).

Changed

  • itables uses GitHub Actions for the CI.

Added

  • itables is tested with Python 3.9 as well.

0.2.2 (2020-10-01)#

Fixed

  • Pandas’ display.max_columns can be None, by Arthur Deygin (#14)

0.2.1 (2019-11-21)#

Added

  • Animated screenshot in README

Fixed

  • Add IPython to setup.py install_requires, by Jon Shao (#9)

0.2.0 (2019-11-20)#

Added

  • Large tables are downsampled (#2)

Changed

  • Javascript code moved to Javascript files

Fixed

  • Tables with many columns are now well rendered (#5)

0.1.0 (2019-04-23)#

Initial release