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
y Copy 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.4.0.tar.gz (34.7 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.4.0-py3-none-any.whl (32.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: dataview_tui-0.4.0.tar.gz
  • Upload date:
  • Size: 34.7 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.4.0.tar.gz
Algorithm Hash digest
SHA256 01fc08125b58589fd638a847260e022fa25485fba859f6095cc041e15d44c91a
MD5 42451a44a6e52552b7300d1effe5da29
BLAKE2b-256 70a404bd6bfc4df527c0114c0b7b2a6e3d01273054a5a4973a705faeb4e5d830

See more details on using hashes here.

Provenance

The following attestation bundles were made for dataview_tui-0.4.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.4.0-py3-none-any.whl.

File metadata

  • Download URL: dataview_tui-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 32.5 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.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3bec16a29f3529938a5a68aa68272880f8ba3581aef658a16a45b0b8b3ee0bf7
MD5 6ade030e3348419ab47a5920a70ea163
BLAKE2b-256 46b70730b990af4ee40ea245237b25cdf26cd3d26b953b925d6eb22e6ae2e61a

See more details on using hashes here.

Provenance

The following attestation bundles were made for dataview_tui-0.4.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