Skip to main content

Emit csv-viewer's CsvGrid interactive tables from pandas DataFrames (Jupyter / Quarto / static HTML).

Project description

csv_grid

Python emitter for CsvGrid, the embeddable interactive table of the csv-viewer project: render a pandas DataFrame as a sortable, filterable, type-aware grid in Jupyter, Quarto (.qmd), or any static HTML you generate.

The grid re-infers column types from the data exactly as the viewer app does (numbers right with greater_tables-style formatting, dates ISO and centered, fzf search, equal-risk column widths). NaN / None become blank cells.

Install

uv add csv-grid              # or: pip install csv-grid

or local path install from a clone of this repo:

uv add --editable path/to/csv-viewer/python

The grid's built JS/CSS assets ship inside the package (refreshed by the repo's npm run build).

Use

from csv_grid import show, to_html

show(df)                          # Jupyter / qmd cell: display the grid
show(df, align="llrcr", fmt=[None, None, ",d", "year", ",.2f"])

html = to_html(df, name="results.df", assets="inline")   # fragment string
  • show(df, **options) displays via IPython. Each grid carries the JS + CSS via an idempotent <head> guard (assets="inline", the default), so fragments are self-contained and re-running/clearing a notebook cell can't strip a shared stylesheet. Use assets="https://…/base" to link the assets from a URL instead, or assets=False if they are already on the page.
  • to_html(df, **options) returns a self-contained HTML fragment; fragments compose freely (no need to mark a "first" one).
  • payload(df) returns the {records, columns} dict the grid consumes, if you want to ship data yourself.
  • Options mirror the JS API in snake_case: global_search, column_filters, sortable, status_bar, expand_buttons, align ('llrcr…'), formats/fmt (per-column [,][.N](f|d|%|e|s), 'year', 'eng', None = auto), width_mode ('equal-risk' default, or 'coverage' to maximize the count of fully-shown cells), display_mode ('auto' formatted / 'raw' verbatim), rows (cap the viewport to ~N rows, vertical scroll for the rest) / max_height (raw CSS, e.g. '400px'), render_cap, eager_cells, worker (default False — data is inlined), plus name (status line) and index (include the DataFrame index as leading columns). Dark mode follows the host page (prefers-color-scheme; JupyterLab dark themes included) unless theme="light"/"dark" forces it.
  • Clickable rows/cells (selectable=True): a body click fires a bubbling csvgrid:cellclick DOM event whose detail carries the clicked cell and the whole row keyed by column name (raw + formatted) with the original row index — wire it to HTMX/JS for drill-down. select_mode ('row'/'cell'/'none') controls the highlight; hidden_columns=[…] ships a key column in the payload without displaying it. No Python callback — to_html stays a pure string emitter.
to_html(df, name="transactions", selectable=True,
        select_mode="row", hidden_columns=["trans_id"])

Dates are emitted ISO (yyyy-mm-dd, with hh:mm only when a column has non-midnight times); integral float columns are emitted as integers so the grid's integer/year rules apply.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

csv_grid-3.7.1.tar.gz (37.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

csv_grid-3.7.1-py3-none-any.whl (23.8 kB view details)

Uploaded Python 3

File details

Details for the file csv_grid-3.7.1.tar.gz.

File metadata

  • Download URL: csv_grid-3.7.1.tar.gz
  • Upload date:
  • Size: 37.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for csv_grid-3.7.1.tar.gz
Algorithm Hash digest
SHA256 0d17262f165c0799f2ec271707c00fe38a5525fa9a597b93c682b9c456973897
MD5 a28671eb75e986c46f55ff2484e5a194
BLAKE2b-256 ff181cee6a3d51c4f2d8bbbd2335cb17cfe8a7a1356d6146f4754151dd9a1d56

See more details on using hashes here.

File details

Details for the file csv_grid-3.7.1-py3-none-any.whl.

File metadata

  • Download URL: csv_grid-3.7.1-py3-none-any.whl
  • Upload date:
  • Size: 23.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for csv_grid-3.7.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8a27d61f64111f87c874d6a592c49b09a57de1d6fd15e6d95f5aada5a2626331
MD5 7fffc20f2a073a6673db25b74f27bedc
BLAKE2b-256 fc2631ca30b15b4945bee9f7a68934cd09c309a803ee6e0753bdd6e7fab0738e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page