A lazy table viewer with narwhals-backed query pushdown, for Marimo or Juptyer
Project description
tablescope
tablescope is a Marimo-oriented lazy table viewer. It accepts a dataframe-like
object that Narwhals can normalize, keeps sort and aggregation work pushed down
to the underlying engine, and renders a Solid + TanStack data grid via
anywidget.
Install
pip install tablescope
Status
This is a first pass focused on:
- lazy row paging with backend pushdown
- arbitrary fraction jumps through the dataset
- per-column profile stats
- value counts for enum-like columns
- on-demand histograms for numeric and datetime columns
- derived columns from polars/narwhals expressions (e.g.
col("a") + 1); on a polars source the full polars API is available, other backends get the narwhals subset - keyboard navigation in the grid
Usage
import marimo as mo
import polars as pl
import tablescope
lf = pl.scan_parquet("data.parquet")
viewer = tablescope.view(lf, page_size=100)
viewer
CLI
To browse a file without writing any Python, run:
tablescope data.parquet
This starts a local server, prints its URL, and opens your browser. Supported
file types: .parquet, .csv, .tsv, .arrow/.feather/.ipc, and
.json/.ndjson/.jsonl. Files are read with polars, using lazy pushdown
where the format allows it.
Over SSH, pass --no-open and use the printed URL (forward the port, e.g.
ssh -L 6767:localhost:6767 host):
tablescope data.parquet --no-open
# tablescope: serving data.parquet at http://localhost:6767
Other flags: --port, --host, --page-size.
To stop the server, press Ctrl+C at the terminal, or click ⏻ Stop server in the page's top bar — the page then shows a "Server stopped" message.
Databricks
With the databricks extra installed (pip install tablescope[databricks]),
point tablescope straight at a Unity Catalog table or a SQL query:
tablescope --source databricks:dev --table catalog.schema.table
tablescope --source databricks:dev --query "SELECT * FROM catalog.schema.t WHERE region = 'us'"
--source takes a <backend>:<profile> pair; only databricks is supported,
and the profile is a Databricks CLI profile (databricks auth login -p dev).
Use --source databricks alone for the default profile.
The table or query is opened with databricks-connect as a lazy Spark DataFrame, so tablescope's filters, sorts, and paging push down to Spark — the table is never fully materialized. Refine the view further from the UI.
Release
Use the justfile to build and validate the package artifacts before
uploading them to PyPI.
just check-release
just publish
Frontend build
The frontend bundle is generated from frontend/src and inlined into
src/tablescope/_frontend.py.
npm install
npm run build
Python workflow
just sync
just test
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tablescope-0.2.2.tar.gz.
File metadata
- Download URL: tablescope-0.2.2.tar.gz
- Upload date:
- Size: 63.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
359dc48115607b6528cc81d37348e77dc4a27c25f4f447e4c3d5a74c4ab0c916
|
|
| MD5 |
bc7f958d54d23f55277beb51f82c28b0
|
|
| BLAKE2b-256 |
e5bf0a2c9f92cc740cc8933640a6e9deb3aff8e30c30b1a549eaf0d524f46fa4
|
File details
Details for the file tablescope-0.2.2-py3-none-any.whl.
File metadata
- Download URL: tablescope-0.2.2-py3-none-any.whl
- Upload date:
- Size: 65.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4f194d7bdf39fc1d97237a2cfded18ac58d2545a1bb333b5bacf79be00522cf3
|
|
| MD5 |
844eac8ec21abd2cf0a625afcc105f4b
|
|
| BLAKE2b-256 |
4460533f1f2ecd8de2fd755fe166f0ca5ab24ed670b3819c62832aa6f59ab01b
|