Skip to main content

Keyboard-driven TUI for browsing columnar data files.

Project description

dataview-tui

dataview-tui is a keyboard-driven terminal UI for inspecting columnar data files. The command line entry point is dview.

The project supports Parquet, ORC, Avro, and optional Lance datasets. It is built for quickly moving between schema, data preview, metadata, and SQL query views without leaving the terminal.

Features

  • Textual-based terminal application with a project-specific dark theme.
  • Automatic format detection by extension and magic bytes.
  • S3-compatible object storage reads for Parquet, ORC, and Avro objects.
  • PyArrow-backed Parquet and ORC readers.
  • fastavro-backed Avro reader.
  • Optional Lance reader via the lance extra.
  • Schema, Data, Metadata, and SQL sidebar views.
  • Schema tree entries include field type and nullable state.
  • Metadata view includes file info, row groups/fragments/blocks, and per-column details.
  • DuckDB SQL engine exposing the opened file as data and t.
  • CLI entry points: dview and dataview.

Installation

pipx install dataview-tui
dview --version

For Lance datasets:

pipx install "dataview-tui[lance]"

To update an existing install:

pipx upgrade dataview-tui

To install the current main branch from source:

pipx install git+https://github.com/lyne7-sc/dataview-tui.git

Quick Start

Open supported files or datasets:

dview path/to/file.parquet
dview path/to/file.orc
dview path/to/file.avro
dview path/to/dataset.lance

Open a Parquet, ORC, or Avro object from S3-compatible storage:

dview s3://bucket/path/to/file.parquet

For MinIO or another S3-compatible endpoint:

dview s3://bucket/path/to/file.parquet \
  --s3-endpoint-url http://localhost:9000 \
  --s3-access-key minioadmin \
  --s3-secret-key minioadmin \
  --s3-region us-east-1

S3-compatible reads use PyArrow's S3 filesystem. If explicit credentials are not provided, PyArrow uses the available AWS credential chain. SQL is disabled for remote S3-compatible objects in this version. Remote Lance datasets are not supported yet.

Choose an initial tab:

dview path/to/file.parquet --tab data

Shell Completion

dview can print static shell completion scripts. Static completion keeps Tab completion fast because the shell does not need to start the Python TUI app for each completion request.

For zsh:

mkdir -p ~/.zfunc
dview --print-completion zsh > ~/.zfunc/_dview

Make sure ~/.zfunc is on your fpath, then restart your shell or run compinit.

For bash or fish, replace zsh with bash or fish.

Keyboard

Key Action
q Quit
1 / 2 / 3 Show Schema / Data / Metadata tab
] / [ Next page / previous page
Ctrl+F Filter columns by regex
/ Search cell contents
n / Shift+N Next / previous match
Enter Show full current cell value
s Toggle SQL sidebar
Ctrl+Enter / Ctrl+J / F5 Run SQL

SQL

The SQL engine exposes the opened file as DuckDB views named data and t:

SELECT * FROM data LIMIT 20;
SELECT count(*) FROM t;

Query results are capped by the engine to keep the terminal responsive.

Terminal Setup

The app cannot force a terminal font. For a clearer table and SQL experience, use a monospaced font with readable punctuation and digits, such as JetBrains Mono or Maple Mono.

Development

Install dependencies and run checks:

uv sync --extra dev
uv run pytest -q
uv run ruff check .
uv build

Project layout:

src/dataview/
  app.py
  cli.py
  readers/
  widgets/
tests/

Publishing

Releases are built by GitHub Actions when a GitHub Release is published. PyPI publishing uses PyPI Trusted Publishing, so the PyPI project must be configured with this repository and .github/workflows/release.yml before publishing a release.

Dependencies

Runtime:

  • pyarrow>=12
  • textual>=0.40
  • fastavro>=1.9
  • duckdb>=0.9
  • tree-sitter>=0.25
  • tree-sitter-sql>=0.3.11

Optional:

  • pylance>=0.20 via the lance extra

Development:

  • pytest
  • pytest-asyncio
  • ruff

License

MIT

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

dataview_tui-0.3.0.tar.gz (33.4 kB view details)

Uploaded Source

Built Distribution

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

dataview_tui-0.3.0-py3-none-any.whl (32.0 kB view details)

Uploaded Python 3

File details

Details for the file dataview_tui-0.3.0.tar.gz.

File metadata

  • Download URL: dataview_tui-0.3.0.tar.gz
  • Upload date:
  • Size: 33.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dataview_tui-0.3.0.tar.gz
Algorithm Hash digest
SHA256 6f49718f142f201978a8982f30e78d6860d69dfb4dbcd074ad05888309297594
MD5 8b85cf777a6cca8921f6111e3e615458
BLAKE2b-256 b535f30322601bd01b73207044458fd893ab20a7b90996cb0c4a1c5869935ebd

See more details on using hashes here.

Provenance

The following attestation bundles were made for dataview_tui-0.3.0.tar.gz:

Publisher: release.yml on lyne7-sc/dataview-tui

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dataview_tui-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: dataview_tui-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 32.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dataview_tui-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f065506f35bfc9d7198759531f30cf9df4115b0e81fe2281e6e0967883c289cb
MD5 40915e47db3a6de0de7065ca377eb972
BLAKE2b-256 994f595f0ab335aa66547d54c08c878b8b70300f405f1ac9c5119afb43af8502

See more details on using hashes here.

Provenance

The following attestation bundles were made for dataview_tui-0.3.0-py3-none-any.whl:

Publisher: release.yml on lyne7-sc/dataview-tui

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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