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 ofitables.init_notebook_mode
toTrue
- The ITables options can be imported and modified directly through
itables.options
- We have updated
dt_for_itables
todatatables.net-dt==2.2.2
anddatatables.net-select-dt==3.0.0
- We have updated the dependencies of our Jupyter widget and our of Streamlit component.
Fixed
- We have removed an erroneous assertion and added tests on the warnings issued when selected rows are not displayed ([#351])
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)
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
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)
Fixed
- We fixed an issue with the Streamlit component when
selected_rows
was not set.
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 theITable
widget, the returned value of the Streamlitinteractive_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 ofto_html_datatable
has been renamed totable_id
Fixed
- The dependencies of the Streamlit component have been updated (#320)
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
whenui.nav
is not available - The dependencies of the Streamlit component have been updated (#313, #315)
Fixed
- We have fixed an OverflowError (can't convert negative int to unsigned) when displaying Polars DataFrames that contain unsigned integers (#299)
Fixed
- We have improved the detection of large integers in the context of Polars DataFrames (#291)
Changed
- The default CSS contains now has
overflow:auto
ondiv.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)
Fixed
- We have added an explicit
encoding
argument in the calls toread_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
to2.0.8
, and included the column visibility button in thedt_for_itables
package (#284)
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 todatatables.net-dt==2.0.7
anddatatables.net-select-dt==2.0.2
(#273) - We have updated the pre-commit hooks used in the project (#268)
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
to2.0.5
and its extensions to their latest version (#260) maxBytes
can now be a string. Its default value remains unchanged at64KB
(#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)
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
ofDataTables
(#121) - Large Python integers are now mapped to JavaScript
BigInt
(#172) - ITables is build using
hatch
andpyproject.toml
Fixed
Added
- We have added a check to make sure any
tableId
provided by the user is valid (#233)
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 withuse_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 thandf.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.
Fixed
- Complex table footers are now in the correct order (#219)
- We have adjusted the test suite for
pandas==2.2.0
(#223, pandas-57229, pandas-55080)
Changed
- HTML in table columns is supported (#213)
Fixed
- We have removed an indirect dependency on
jinja2
caused by the Pandas style objects (#202)
Fixed
- We have fixed an issue when rendering Pandas style objects in Google Colab (#199)
Added
- We have added support for Pandas style (#194)
Fixed
- We do not generate timedeltas in the sample dataframes when using
pandas==2.1
as this fails (pandas-55080)
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.
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
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
againstpandas
in pre-release versions
Fixed
- Empty Polars DataFrame are now rendered correctly (#167)
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
Added
- We have added a new
JavascriptCode
class to encapsulate JS Code. This will let the user set JS values for some options likecolumnDefs.render
(#154).
Fixed
- Fixed an issue when
lengthMenu
is a 2D array (#151)
Changed
- We make sure that no argument passed to
show
is equal toNone
(for all tested options, passingNone
results in a datatable that never loads) - Running the test collection will not update the CSV files used for testing anymore
Fixed
- We have added
numpy
to the dependencies,pytz
is an optional dependency (used in the sample dataframes only), and we do not depend onsix
anymore (#149) The build time dependenciespathlib
andrequests
are listed inpyproject.toml
(since #123,itables==1.4.0
)
Changed
- When a table is made of only a few rows, we display just the table (not the search box, pagination control, etc)
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)
Fixed
- We have added
setuptools.build_meta
as the build backend inpyproject.toml
(#142) - We have fixed a typo in
itables.options.style
Changed
- We have updated the development status of the project to Production/Stable
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 theshow
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 (defaultstyle
waswidth: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 increasedmaxColumns
to200
(instead of Pandas' default at 20).
Fixed
- We use
pandas.io.formats.format.format_array
to format non-trivial dtypes (as initables<=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).
Fixed
- We have removed
scrollX = True
which was causing issues with non-wide tables (#110). Instead, we now usestyle = "width:auto"
.
Changed
- We have added
scrollX = True
to the default options to make the rendering of wide tables more similar to Pandas.
Fixed
- We have reimplemented the function that encodes the Pandas dataframes to JSON
to avoid triggering FutureWarnings when using
pandas>=1.5
(#107).
Added
- The
show
method has a newcss
argument (defaults toitables.options.css
) (#104).
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)
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)
Fixed
- Tables with duplicated column names are now supported, thanks to Antonio Commisso's fix (#89)
Changed
- Tables with many rows are preferentially downsampled on rows, while tables with many columns are preferentially downsampled on columns (#84)
Fixed
- Added missing
column_filters
package data.
Added
itables.options
and theshow
function have a newcolumn_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.
Added
- 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 help on the subject.
Changed
- ITables uses the ESM version 1.12.1 of datatables.net
Added
- Additional
tags
like e.g. captions are supported (#10).
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)
Changed
- The
itables
documentation now uses Jupyter Book (#56) - We have added a new
style
option initables.options
and inshow
, with a default value equal tomax-width:100%
.
Fixed
- Add 'require_config.js' to the pip package (#48)
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.
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.
Fixed
- Long column names don't overlap anymore (#28)
rFixed
- Now
itables
also works in Jupyter Lab, Colab, VS Code and PyCharm (#3, #4, #26, #40), as we load thedatatables.net
library with an ES import whenrequire.js
is not available. Many thanks to François Wouts for his precious help!
Changed
- The
show
function (anditables.options
) has a new argumenteval_functions
. When set toTrue
, the nested strings passed todatatables.net
that start withfunction
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
Fixed
- We fixed an issue (
jquery
not found) with the HTML export when usingnbconvert>=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 thanmaster
- Updated
datatables
to 1.11.3 andjquery
to 3.5.1
Fixed
itables
now has an explicitinit_notebook_mode
function, which inserts the datatables.net library in the notebook. Useinit_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.
Fixed
- Pandas'
display.max_columns
can beNone
, by Arthur Deygin (#14)
Added
- Animated screenshot in README
Fixed
- Add IPython to setup.py install_requires, by Jon Shao (#9)
Added
- Large tables are downsampled (#2)
Changed
- Javascript code moved to Javascript files
Fixed
- Tables with many columns are now well rendered (#5)
Initial release