or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

configuration.mdcore-display.mddata-utilities.mdframework-extensions.mdindex.mdtype-system.md
tile.json

tessl/pypi-itables

Python library that transforms Pandas and Polars DataFrames into interactive DataTables with sorting, pagination, and filtering capabilities.

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
pypipkg:pypi/itables@2.5.x

To install, run

npx @tessl/cli install tessl/pypi-itables@2.5.0

index.mddocs/

ITables

ITables is a Python library that transforms Pandas and Polars DataFrames into interactive DataTables with sorting, pagination, scrolling, and filtering capabilities. It provides a minimal-dependency solution that works across all major Jupyter environments and extends to multiple application frameworks including Dash, Streamlit, Shiny, and Jupyter Widgets.

Package Information

  • Package Name: itables
  • Language: Python
  • Installation: pip install itables
  • Dependencies: IPython, pandas, numpy (core)
  • Optional Dependencies: polars, streamlit, dash, shiny, anywidget (for specific features)

Core Imports

import itables

Common usage patterns:

from itables import show, init_notebook_mode
import itables.options as opts

For specific framework integrations:

from itables.streamlit import interactive_table
from itables.shiny import DT, init_itables
from itables.dash import ITable
from itables.widget import ITable as WidgetITable

Basic Usage

import pandas as pd
from itables import show, init_notebook_mode

# Initialize interactive mode for all DataFrames
init_notebook_mode()

# Create sample data
df = pd.DataFrame({
    'Name': ['Alice', 'Bob', 'Charlie', 'David'],
    'Age': [25, 30, 35, 28],
    'City': ['New York', 'London', 'Tokyo', 'Paris']
})

# Display as interactive table
show(df)

# Or get HTML representation
html = itables.to_html_datatable(df, caption="Sample Data")

Configuration example:

import itables.options as opts

# Configure global options
opts.classes = "display compact"
opts.maxRows = 1000
opts.column_filters = "header"

# Show DataFrame with custom options
show(df, pageLength=25, scrollX=True)

Architecture

ITables follows a modular architecture with clear separation of concerns:

  • Core Engine: HTML/JavaScript generation for DataTables integration
  • Framework Extensions: Specialized components for different application frameworks
  • Configuration System: Flexible options management with file-based configuration support
  • Data Processing: Automatic downsampling and type handling for large datasets

The library serves as an adapter between Python DataFrame libraries (Pandas/Polars) and the DataTables.net JavaScript library, providing seamless interactive table functionality without requiring JavaScript knowledge.

Capabilities

Core Display Functions

Primary functions for rendering DataFrames as interactive tables in Jupyter environments, with support for both connected (online) and offline modes.

def show(df, caption=None, **kwargs):
    """Render DataFrame as interactive datatable in Jupyter environments"""

def to_html_datatable(df, caption=None, **kwargs):
    """Return HTML representation of DataFrame as interactive datatable"""

def init_notebook_mode(all_interactive=True, connected=False, dt_bundle=None):
    """Load DataTables library and activate interactive mode for all DataFrames"""

Core Display Functions

Configuration Management

Comprehensive configuration system supporting both programmatic and file-based configuration, with validation and type checking capabilities.

# Configuration variables (all configurable)
layout: dict  # Table layout configuration
showIndex: str | bool  # Whether to show DataFrame index
classes: str | list  # CSS classes for styling
maxBytes: str | int  # Maximum bytes before downsampling
maxRows: int  # Maximum rows before downsampling
column_filters: str | bool  # Column filtering UI location

Configuration Management

Framework Extensions

Specialized components and functions for integrating interactive tables into various Python application frameworks.

# Streamlit integration
def interactive_table(df, key=None, caption=None, **kwargs):
    """Render DataFrame as interactive table in Streamlit applications"""

# Shiny integration  
def DT(df, caption=None, **kwargs):
    """Render DataFrame as interactive table in Shiny applications"""

# Dash component
class ITable:
    """Dash component for interactive tables"""

# Jupyter Widget
class ITable:
    """AnyWidget-based interactive table widget"""

Framework Extensions

Data Processing and Utilities

Utilities for data handling, downsampling, sample data generation, and type processing to ensure optimal table performance.

def downsample(df, max_rows=0, max_columns=0, max_bytes=0):
    """Downsample DataFrame to fit size limits"""

# Sample data functions
def get_countries(html=False, climate_zone=False):
    """Return DataFrame with world countries data"""

def generate_random_df(rows, columns, column_types=None):
    """Generate random DataFrame with specified dimensions"""

Data Processing and Utilities

Type System

Comprehensive type definitions for configuration options, JavaScript integration, and DataFrame compatibility across Pandas and Polars.

# Type aliases and classes
DataFrameOrSeries = Any  # Union of supported DataFrame/Series types
class JavascriptFunction(str):  # JavaScript function wrapper
class JavascriptCode(str):  # JavaScript code wrapper
class ITableOptions(TypedDict):  # Configuration options

Type System