Interactive JSONL browser with rich rendering
Project description
seej
seej is an interactive terminal JSONL (JSON Lines) browser with rich rendering. It helps you step through .jsonl files record by record, with pluggable renderers for complex data.
Features
- Interactive navigation — keyboard-driven browsing through JSONL records
- Rich output — formatting via the
richlibrary - Per-field renderers — map fields to renderers (messages, tables, nested structures, etc.)
- Filtering — keep rows that match a safe Python expression
- Plugins — extend rendering via Python entry points
- View modes — switch between rich and plain-text rendering
Installation
pip install seej
From a git checkout:
git clone https://github.com/<owner>/seej.git
cd seej
pip install .
Quick start
# Basic usage
seej path/to/file.jsonl
# Start at a given record index
seej path/to/file.jsonl -I 10
# Plain text instead of rich rendering
seej path/to/file.jsonl --raw
(-R is a short alias for --raw.)
Custom field renderers
Map JSON fields to named renderers:
# Render specific fields as chat-style messages
seej data.jsonl -r messages=chat,conversation
# Multiple mappings
seej data.jsonl -r text=description -r messages=messages
# List registered renderers
seej --list-renderers
Built-in renderers
messages— chat / role–content style payloadstext(aliases:str,string) — general texteye— minimal / raw-style dump
Filtering
Use -c / --condition with an expression evaluated per record (variable ex is the current object):
seej data.jsonl -c 'ex["type"] == "chat"'
seej data.jsonl -c 'len(ex["messages"]) > 5'
seej data.jsonl -c 'ex["type"] == "chat"' -c 'len(ex["messages"]) > 3'
Quote expressions so your shell does not rewrite them.
Plugins
Plugins register extra renderers under the seej.plugins entry-point group.
Example: nested structures
pip install seej-plugin-nested
That plugin adds renderers such as:
nested— pick a reasonable view (tree for dicts, table for lists)nested_dict/nested_tree— tree viewsnested_list/nested_table— tabular viewsjson— highlighted JSON with line numberscompact— single-line compact form
Usage:
seej data.jsonl -r nested=config,metadata
seej data.jsonl -r nested_table=records
seej data.jsonl -r nested_tree=settings
seej data.jsonl -r nested_table=items
More examples
seej data.jsonl
seej data.jsonl -I 5
seej data.jsonl -c 'ex["status"] == "active"'
seej data.jsonl -r messages=conversation -r text=description
seej data.jsonl -r nested=complex_data
seej data.jsonl --no-plugins
seej --list-renderers
Keyboard shortcuts
While browsing:
- Down or Right — next record
- Up or Left — previous record
- Q or X — quit
- T — toggle rich vs raw rendering
Writing plugins
Plugins expose renderers through entry points. For a full walkthrough (including a guide in Chinese), see the seej-plugin-nested repository and its plugin documentation.
License
MIT
Contact
- Email: jason.yang98@foxmail.com
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 seej-0.2.0.tar.gz.
File metadata
- Download URL: seej-0.2.0.tar.gz
- Upload date:
- Size: 20.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0005ad7352dbce7d490eac770b8bf235c4a46c0a4b2663485c2d06ff31f90a86
|
|
| MD5 |
6aedd9600f097016422116633b99b5e4
|
|
| BLAKE2b-256 |
014fe7fc501b1e0693c38fe95078388afe678a789bb46308b9bb2d96ab106a91
|
Provenance
The following attestation bundles were made for seej-0.2.0.tar.gz:
Publisher:
python-publish.yaml on Hambaobao/seej
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
seej-0.2.0.tar.gz -
Subject digest:
0005ad7352dbce7d490eac770b8bf235c4a46c0a4b2663485c2d06ff31f90a86 - Sigstore transparency entry: 1143243298
- Sigstore integration time:
-
Permalink:
Hambaobao/seej@d8761313d99e434f2fbf977b152a22d5f84ca8d0 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/Hambaobao
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yaml@d8761313d99e434f2fbf977b152a22d5f84ca8d0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file seej-0.2.0-py3-none-any.whl.
File metadata
- Download URL: seej-0.2.0-py3-none-any.whl
- Upload date:
- Size: 20.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ae909e204f4b7bdf2b8baffd1ef8126caa600b1d9cffed6a92bb4c2a2378e1d2
|
|
| MD5 |
b77cbb6a4b48b49b86c6a34bbcf0dbc0
|
|
| BLAKE2b-256 |
3c5d5775b4d73bcaa5bf94e97f1197d8947733b207b5970a1e46ace9ca1090bc
|
Provenance
The following attestation bundles were made for seej-0.2.0-py3-none-any.whl:
Publisher:
python-publish.yaml on Hambaobao/seej
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
seej-0.2.0-py3-none-any.whl -
Subject digest:
ae909e204f4b7bdf2b8baffd1ef8126caa600b1d9cffed6a92bb4c2a2378e1d2 - Sigstore transparency entry: 1143243386
- Sigstore integration time:
-
Permalink:
Hambaobao/seej@d8761313d99e434f2fbf977b152a22d5f84ca8d0 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/Hambaobao
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yaml@d8761313d99e434f2fbf977b152a22d5f84ca8d0 -
Trigger Event:
push
-
Statement type: