dataframe-textual 0.1.0__tar.gz → 0.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {dataframe_textual-0.1.0 → dataframe_textual-0.2.0}/PKG-INFO +59 -32
- {dataframe_textual-0.1.0 → dataframe_textual-0.2.0}/README.md +54 -27
- {dataframe_textual-0.1.0 → dataframe_textual-0.2.0}/pyproject.toml +5 -5
- {dataframe_textual-0.1.0 → dataframe_textual-0.2.0}/uv.lock +2 -2
- {dataframe_textual-0.1.0 → dataframe_textual-0.2.0}/.gitignore +0 -0
- {dataframe_textual-0.1.0 → dataframe_textual-0.2.0}/.python-version +0 -0
- {dataframe_textual-0.1.0 → dataframe_textual-0.2.0}/LICENSE +0 -0
- {dataframe_textual-0.1.0 → dataframe_textual-0.2.0}/main.py +0 -0
- {dataframe_textual-0.1.0 → dataframe_textual-0.2.0}/screenshot.png +0 -0
- {dataframe_textual-0.1.0/src/dataframe_viewer → dataframe_textual-0.2.0/src/dataframe_textual}/__init__.py +0 -0
- {dataframe_textual-0.1.0/src/dataframe_viewer → dataframe_textual-0.2.0/src/dataframe_textual}/__main__.py +0 -0
- {dataframe_textual-0.1.0/src/dataframe_viewer → dataframe_textual-0.2.0/src/dataframe_textual}/common.py +0 -0
- {dataframe_textual-0.1.0/src/dataframe_viewer → dataframe_textual-0.2.0/src/dataframe_textual}/data_frame_help_panel.py +0 -0
- {dataframe_textual-0.1.0/src/dataframe_viewer → dataframe_textual-0.2.0/src/dataframe_textual}/data_frame_table.py +0 -0
- {dataframe_textual-0.1.0/src/dataframe_viewer → dataframe_textual-0.2.0/src/dataframe_textual}/data_frame_viewer.py +0 -0
- {dataframe_textual-0.1.0/src/dataframe_viewer → dataframe_textual-0.2.0/src/dataframe_textual}/table_screen.py +0 -0
- {dataframe_textual-0.1.0/src/dataframe_viewer → dataframe_textual-0.2.0/src/dataframe_textual}/yes_no_screen.py +0 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dataframe-textual
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0
|
|
4
4
|
Summary: Interactive CSV/Excel viewer for the terminal (Textual TUI)
|
|
5
|
-
Project-URL: Homepage, https://github.com/need47/dataframe-
|
|
6
|
-
Project-URL: Repository, https://github.com/need47/dataframe-
|
|
7
|
-
Project-URL: Documentation, https://github.com/need47/dataframe-
|
|
8
|
-
Project-URL: Bug Tracker, https://github.com/need47/dataframe-
|
|
5
|
+
Project-URL: Homepage, https://github.com/need47/dataframe-textual
|
|
6
|
+
Project-URL: Repository, https://github.com/need47/dataframe-textual.git
|
|
7
|
+
Project-URL: Documentation, https://github.com/need47/dataframe-textual#readme
|
|
8
|
+
Project-URL: Bug Tracker, https://github.com/need47/dataframe-textual/issues
|
|
9
9
|
Author-email: Tiejun Cheng <need47@gmail.com>
|
|
10
10
|
License: MIT
|
|
11
11
|
License-File: LICENSE
|
|
@@ -38,11 +38,11 @@ Requires-Dist: fastexcel>=0.16.0; extra == 'excel'
|
|
|
38
38
|
Requires-Dist: xlsxwriter>=3.2.9; extra == 'excel'
|
|
39
39
|
Description-Content-Type: text/markdown
|
|
40
40
|
|
|
41
|
-
# DataFrame Viewer
|
|
41
|
+
# DataFrame Viewer/Editor
|
|
42
42
|
|
|
43
|
-
A powerful, interactive terminal-based CSV viewer built with Python, Polars, and Textual. Inspired by VisiData, this tool provides smooth keyboard navigation, data manipulation, and a clean interface for exploring
|
|
43
|
+
A powerful, interactive terminal-based CSV/Excel viewer/editor built with Python, Polars, and Textual. Inspired by VisiData, this tool provides smooth keyboard navigation, data manipulation, and a clean interface for exploring tabular data directly in your terminal. Now with **multi-file support for simultaneous data comparison**!
|
|
44
44
|
|
|
45
|
-

|
|
46
46
|
|
|
47
47
|
## Features
|
|
48
48
|
|
|
@@ -68,21 +68,48 @@ A powerful, interactive terminal-based CSV viewer built with Python, Polars, and
|
|
|
68
68
|
|
|
69
69
|
## Installation
|
|
70
70
|
|
|
71
|
-
### Using
|
|
71
|
+
### Using pip
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
# Install from PyPI
|
|
75
|
+
pip install dataframe-textual
|
|
76
|
+
|
|
77
|
+
# With Excel support (fastexcel, xlsxwriter)
|
|
78
|
+
pip install dataframe-textual[excel]
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Then run:
|
|
82
|
+
```bash
|
|
83
|
+
dataframe-textual <csv_file>
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Using uv
|
|
72
87
|
|
|
73
88
|
```bash
|
|
89
|
+
# Quick run using uvx without installation
|
|
90
|
+
uvx https://github.com/need47/dataframe-textual.git <csvfile>
|
|
91
|
+
|
|
74
92
|
# Clone or download the project
|
|
75
|
-
cd dataframe-
|
|
93
|
+
cd dataframe-textual
|
|
76
94
|
|
|
77
95
|
# Run directly with uv
|
|
78
96
|
uv run python main.py <csv_file>
|
|
97
|
+
|
|
98
|
+
#
|
|
79
99
|
```
|
|
80
100
|
|
|
81
|
-
###
|
|
101
|
+
### Development installation
|
|
82
102
|
|
|
83
103
|
```bash
|
|
84
|
-
|
|
85
|
-
|
|
104
|
+
# Clone the repository
|
|
105
|
+
git clone https://github.com/need47/dataframe-textual.git
|
|
106
|
+
cd dataframe-textual
|
|
107
|
+
|
|
108
|
+
# Install from local source
|
|
109
|
+
pip install -e .
|
|
110
|
+
|
|
111
|
+
# Or with development dependencies
|
|
112
|
+
pip install -e ".[excel,dev]"
|
|
86
113
|
```
|
|
87
114
|
|
|
88
115
|
## Usage
|
|
@@ -90,31 +117,31 @@ python main.py <csv_file>
|
|
|
90
117
|
### Basic Usage - Single File
|
|
91
118
|
|
|
92
119
|
```bash
|
|
93
|
-
#
|
|
120
|
+
# After pip install dataframe-textual
|
|
121
|
+
dataframe-textual pokemon.csv
|
|
122
|
+
|
|
123
|
+
# Or if running from source
|
|
94
124
|
python main.py pokemon.csv
|
|
95
125
|
|
|
96
126
|
# Or with uv
|
|
97
127
|
uv run python main.py pokemon.csv
|
|
98
128
|
|
|
99
129
|
# Read from stdin
|
|
100
|
-
cat data.csv |
|
|
101
|
-
|
|
130
|
+
cat data.csv | dataframe-textual
|
|
131
|
+
dataframe-textual < data.csv
|
|
102
132
|
```
|
|
103
133
|
|
|
104
134
|
### Multi-File Usage - Multiple Tabs
|
|
105
135
|
|
|
106
136
|
```bash
|
|
107
137
|
# Open multiple files in tabs
|
|
108
|
-
|
|
138
|
+
dataframe-textual file1.csv file2.csv file3.csv
|
|
109
139
|
|
|
110
140
|
# Open multiple sheets in tabs in an Excel file
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
# Or with uv
|
|
114
|
-
uv run python main.py file1.csv file2.csv file3.csv
|
|
141
|
+
dataframe-textual file.xlsx
|
|
115
142
|
|
|
116
143
|
# Mix files and stdin (file opens first, then read from stdin)
|
|
117
|
-
|
|
144
|
+
dataframe-textual data1.csv < data2.csv
|
|
118
145
|
```
|
|
119
146
|
|
|
120
147
|
When multiple files are opened:
|
|
@@ -411,35 +438,35 @@ Press `c` to copy:
|
|
|
411
438
|
|
|
412
439
|
```bash
|
|
413
440
|
# View Pokemon dataset
|
|
414
|
-
|
|
441
|
+
dataframe-textual pokemon.csv
|
|
415
442
|
|
|
416
443
|
# View Titanic dataset with analysis
|
|
417
|
-
|
|
444
|
+
dataframe-textual titanic.csv
|
|
418
445
|
|
|
419
446
|
# Filter and view specific columns
|
|
420
|
-
cut -d',' -f1,2,3 pokemon.csv |
|
|
447
|
+
cut -d',' -f1,2,3 pokemon.csv | dataframe-textual
|
|
421
448
|
|
|
422
449
|
# View with grep filter (then use | search in viewer)
|
|
423
|
-
grep "Fire" pokemon.csv |
|
|
450
|
+
grep "Fire" pokemon.csv | dataframe-textual
|
|
424
451
|
|
|
425
452
|
# Chain with other commands
|
|
426
|
-
cat data.csv | sort -t',' -k2 |
|
|
453
|
+
cat data.csv | sort -t',' -k2 | dataframe-textual
|
|
427
454
|
```
|
|
428
455
|
|
|
429
456
|
### Multi-File Examples
|
|
430
457
|
|
|
431
458
|
```bash
|
|
432
459
|
# Compare two versions of a dataset
|
|
433
|
-
|
|
460
|
+
dataframe-textual pokemon_v1.csv pokemon_v2.csv
|
|
434
461
|
|
|
435
462
|
# Side-by-side analysis of related files
|
|
436
|
-
|
|
463
|
+
dataframe-textual sales_2022.csv sales_2023.csv forecast_2024.csv
|
|
437
464
|
|
|
438
465
|
# Cross-reference datasets
|
|
439
|
-
|
|
466
|
+
dataframe-textual customers.csv orders.csv products.csv
|
|
440
467
|
|
|
441
468
|
# Start with one file, open others using Ctrl+O
|
|
442
|
-
|
|
469
|
+
dataframe-textual initial_data.csv
|
|
443
470
|
# Then press Ctrl+O to open more files interactively
|
|
444
471
|
```
|
|
445
472
|
|
|
@@ -448,7 +475,7 @@ python main.py initial_data.csv
|
|
|
448
475
|
```bash
|
|
449
476
|
# Start with a filtered file, compare with original
|
|
450
477
|
grep "status=active" data.csv > filtered.csv
|
|
451
|
-
|
|
478
|
+
dataframe-textual data.csv filtered.csv
|
|
452
479
|
# Now compare the full dataset with the filtered version in separate tabs
|
|
453
480
|
|
|
454
481
|
# Multi-step analysis
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
# DataFrame Viewer
|
|
1
|
+
# DataFrame Viewer/Editor
|
|
2
2
|
|
|
3
|
-
A powerful, interactive terminal-based CSV viewer built with Python, Polars, and Textual. Inspired by VisiData, this tool provides smooth keyboard navigation, data manipulation, and a clean interface for exploring
|
|
3
|
+
A powerful, interactive terminal-based CSV/Excel viewer/editor built with Python, Polars, and Textual. Inspired by VisiData, this tool provides smooth keyboard navigation, data manipulation, and a clean interface for exploring tabular data directly in your terminal. Now with **multi-file support for simultaneous data comparison**!
|
|
4
4
|
|
|
5
|
-

|
|
6
6
|
|
|
7
7
|
## Features
|
|
8
8
|
|
|
@@ -28,21 +28,48 @@ A powerful, interactive terminal-based CSV viewer built with Python, Polars, and
|
|
|
28
28
|
|
|
29
29
|
## Installation
|
|
30
30
|
|
|
31
|
-
### Using
|
|
31
|
+
### Using pip
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# Install from PyPI
|
|
35
|
+
pip install dataframe-textual
|
|
36
|
+
|
|
37
|
+
# With Excel support (fastexcel, xlsxwriter)
|
|
38
|
+
pip install dataframe-textual[excel]
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Then run:
|
|
42
|
+
```bash
|
|
43
|
+
dataframe-textual <csv_file>
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Using uv
|
|
32
47
|
|
|
33
48
|
```bash
|
|
49
|
+
# Quick run using uvx without installation
|
|
50
|
+
uvx https://github.com/need47/dataframe-textual.git <csvfile>
|
|
51
|
+
|
|
34
52
|
# Clone or download the project
|
|
35
|
-
cd dataframe-
|
|
53
|
+
cd dataframe-textual
|
|
36
54
|
|
|
37
55
|
# Run directly with uv
|
|
38
56
|
uv run python main.py <csv_file>
|
|
57
|
+
|
|
58
|
+
#
|
|
39
59
|
```
|
|
40
60
|
|
|
41
|
-
###
|
|
61
|
+
### Development installation
|
|
42
62
|
|
|
43
63
|
```bash
|
|
44
|
-
|
|
45
|
-
|
|
64
|
+
# Clone the repository
|
|
65
|
+
git clone https://github.com/need47/dataframe-textual.git
|
|
66
|
+
cd dataframe-textual
|
|
67
|
+
|
|
68
|
+
# Install from local source
|
|
69
|
+
pip install -e .
|
|
70
|
+
|
|
71
|
+
# Or with development dependencies
|
|
72
|
+
pip install -e ".[excel,dev]"
|
|
46
73
|
```
|
|
47
74
|
|
|
48
75
|
## Usage
|
|
@@ -50,31 +77,31 @@ python main.py <csv_file>
|
|
|
50
77
|
### Basic Usage - Single File
|
|
51
78
|
|
|
52
79
|
```bash
|
|
53
|
-
#
|
|
80
|
+
# After pip install dataframe-textual
|
|
81
|
+
dataframe-textual pokemon.csv
|
|
82
|
+
|
|
83
|
+
# Or if running from source
|
|
54
84
|
python main.py pokemon.csv
|
|
55
85
|
|
|
56
86
|
# Or with uv
|
|
57
87
|
uv run python main.py pokemon.csv
|
|
58
88
|
|
|
59
89
|
# Read from stdin
|
|
60
|
-
cat data.csv |
|
|
61
|
-
|
|
90
|
+
cat data.csv | dataframe-textual
|
|
91
|
+
dataframe-textual < data.csv
|
|
62
92
|
```
|
|
63
93
|
|
|
64
94
|
### Multi-File Usage - Multiple Tabs
|
|
65
95
|
|
|
66
96
|
```bash
|
|
67
97
|
# Open multiple files in tabs
|
|
68
|
-
|
|
98
|
+
dataframe-textual file1.csv file2.csv file3.csv
|
|
69
99
|
|
|
70
100
|
# Open multiple sheets in tabs in an Excel file
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
# Or with uv
|
|
74
|
-
uv run python main.py file1.csv file2.csv file3.csv
|
|
101
|
+
dataframe-textual file.xlsx
|
|
75
102
|
|
|
76
103
|
# Mix files and stdin (file opens first, then read from stdin)
|
|
77
|
-
|
|
104
|
+
dataframe-textual data1.csv < data2.csv
|
|
78
105
|
```
|
|
79
106
|
|
|
80
107
|
When multiple files are opened:
|
|
@@ -371,35 +398,35 @@ Press `c` to copy:
|
|
|
371
398
|
|
|
372
399
|
```bash
|
|
373
400
|
# View Pokemon dataset
|
|
374
|
-
|
|
401
|
+
dataframe-textual pokemon.csv
|
|
375
402
|
|
|
376
403
|
# View Titanic dataset with analysis
|
|
377
|
-
|
|
404
|
+
dataframe-textual titanic.csv
|
|
378
405
|
|
|
379
406
|
# Filter and view specific columns
|
|
380
|
-
cut -d',' -f1,2,3 pokemon.csv |
|
|
407
|
+
cut -d',' -f1,2,3 pokemon.csv | dataframe-textual
|
|
381
408
|
|
|
382
409
|
# View with grep filter (then use | search in viewer)
|
|
383
|
-
grep "Fire" pokemon.csv |
|
|
410
|
+
grep "Fire" pokemon.csv | dataframe-textual
|
|
384
411
|
|
|
385
412
|
# Chain with other commands
|
|
386
|
-
cat data.csv | sort -t',' -k2 |
|
|
413
|
+
cat data.csv | sort -t',' -k2 | dataframe-textual
|
|
387
414
|
```
|
|
388
415
|
|
|
389
416
|
### Multi-File Examples
|
|
390
417
|
|
|
391
418
|
```bash
|
|
392
419
|
# Compare two versions of a dataset
|
|
393
|
-
|
|
420
|
+
dataframe-textual pokemon_v1.csv pokemon_v2.csv
|
|
394
421
|
|
|
395
422
|
# Side-by-side analysis of related files
|
|
396
|
-
|
|
423
|
+
dataframe-textual sales_2022.csv sales_2023.csv forecast_2024.csv
|
|
397
424
|
|
|
398
425
|
# Cross-reference datasets
|
|
399
|
-
|
|
426
|
+
dataframe-textual customers.csv orders.csv products.csv
|
|
400
427
|
|
|
401
428
|
# Start with one file, open others using Ctrl+O
|
|
402
|
-
|
|
429
|
+
dataframe-textual initial_data.csv
|
|
403
430
|
# Then press Ctrl+O to open more files interactively
|
|
404
431
|
```
|
|
405
432
|
|
|
@@ -408,7 +435,7 @@ python main.py initial_data.csv
|
|
|
408
435
|
```bash
|
|
409
436
|
# Start with a filtered file, compare with original
|
|
410
437
|
grep "status=active" data.csv > filtered.csv
|
|
411
|
-
|
|
438
|
+
dataframe-textual data.csv filtered.csv
|
|
412
439
|
# Now compare the full dataset with the filtered version in separate tabs
|
|
413
440
|
|
|
414
441
|
# Multi-step analysis
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "dataframe-textual"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.2.0"
|
|
8
8
|
description = "Interactive CSV/Excel viewer for the terminal (Textual TUI)"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.11"
|
|
@@ -39,10 +39,10 @@ dependencies = [
|
|
|
39
39
|
]
|
|
40
40
|
|
|
41
41
|
[project.urls]
|
|
42
|
-
Homepage = "https://github.com/need47/dataframe-
|
|
43
|
-
Repository = "https://github.com/need47/dataframe-
|
|
44
|
-
Documentation = "https://github.com/need47/dataframe-
|
|
45
|
-
"Bug Tracker" = "https://github.com/need47/dataframe-
|
|
42
|
+
Homepage = "https://github.com/need47/dataframe-textual"
|
|
43
|
+
Repository = "https://github.com/need47/dataframe-textual.git"
|
|
44
|
+
Documentation = "https://github.com/need47/dataframe-textual#readme"
|
|
45
|
+
"Bug Tracker" = "https://github.com/need47/dataframe-textual/issues"
|
|
46
46
|
|
|
47
47
|
[project.optional-dependencies]
|
|
48
48
|
excel = [
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|