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.
Files changed (17) hide show
  1. {dataframe_textual-0.1.0 → dataframe_textual-0.2.0}/PKG-INFO +59 -32
  2. {dataframe_textual-0.1.0 → dataframe_textual-0.2.0}/README.md +54 -27
  3. {dataframe_textual-0.1.0 → dataframe_textual-0.2.0}/pyproject.toml +5 -5
  4. {dataframe_textual-0.1.0 → dataframe_textual-0.2.0}/uv.lock +2 -2
  5. {dataframe_textual-0.1.0 → dataframe_textual-0.2.0}/.gitignore +0 -0
  6. {dataframe_textual-0.1.0 → dataframe_textual-0.2.0}/.python-version +0 -0
  7. {dataframe_textual-0.1.0 → dataframe_textual-0.2.0}/LICENSE +0 -0
  8. {dataframe_textual-0.1.0 → dataframe_textual-0.2.0}/main.py +0 -0
  9. {dataframe_textual-0.1.0 → dataframe_textual-0.2.0}/screenshot.png +0 -0
  10. {dataframe_textual-0.1.0/src/dataframe_viewer → dataframe_textual-0.2.0/src/dataframe_textual}/__init__.py +0 -0
  11. {dataframe_textual-0.1.0/src/dataframe_viewer → dataframe_textual-0.2.0/src/dataframe_textual}/__main__.py +0 -0
  12. {dataframe_textual-0.1.0/src/dataframe_viewer → dataframe_textual-0.2.0/src/dataframe_textual}/common.py +0 -0
  13. {dataframe_textual-0.1.0/src/dataframe_viewer → dataframe_textual-0.2.0/src/dataframe_textual}/data_frame_help_panel.py +0 -0
  14. {dataframe_textual-0.1.0/src/dataframe_viewer → dataframe_textual-0.2.0/src/dataframe_textual}/data_frame_table.py +0 -0
  15. {dataframe_textual-0.1.0/src/dataframe_viewer → dataframe_textual-0.2.0/src/dataframe_textual}/data_frame_viewer.py +0 -0
  16. {dataframe_textual-0.1.0/src/dataframe_viewer → dataframe_textual-0.2.0/src/dataframe_textual}/table_screen.py +0 -0
  17. {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.1.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-viewer
6
- Project-URL: Repository, https://github.com/need47/dataframe-viewer.git
7
- Project-URL: Documentation, https://github.com/need47/dataframe-viewer#readme
8
- Project-URL: Bug Tracker, https://github.com/need47/dataframe-viewer/issues
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 CSV data directly in your terminal. Now with **multi-file support for simultaneous data comparison**!
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
- ![Screenshot](https://raw.githubusercontent.com/need47/dataframe-viewer/refs/heads/main/screenshot.png)
45
+ ![Screenshot](https://raw.githubusercontent.com/need47/dataframe-textual/refs/heads/main/screenshot.png)
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 uv (recommended)
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-viewer
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
- ### Using pip
101
+ ### Development installation
82
102
 
83
103
  ```bash
84
- pip install polars textual
85
- python main.py <csv_file>
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
- # View a CSV file
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 | python main.py
101
- python main.py < data.csv
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
- python main.py file1.csv file2.csv file3.csv
138
+ dataframe-textual file1.csv file2.csv file3.csv
109
139
 
110
140
  # Open multiple sheets in tabs in an Excel file
111
- python main.py file.xlsx
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
- python main.py data1.csv < data2.csv
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
- python main.py pokemon.csv
441
+ dataframe-textual pokemon.csv
415
442
 
416
443
  # View Titanic dataset with analysis
417
- python main.py titanic.csv
444
+ dataframe-textual titanic.csv
418
445
 
419
446
  # Filter and view specific columns
420
- cut -d',' -f1,2,3 pokemon.csv | python main.py
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 | python main.py
450
+ grep "Fire" pokemon.csv | dataframe-textual
424
451
 
425
452
  # Chain with other commands
426
- cat data.csv | sort -t',' -k2 | python main.py
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
- python main.py pokemon_v1.csv pokemon_v2.csv
460
+ dataframe-textual pokemon_v1.csv pokemon_v2.csv
434
461
 
435
462
  # Side-by-side analysis of related files
436
- python main.py sales_2022.csv sales_2023.csv forecast_2024.csv
463
+ dataframe-textual sales_2022.csv sales_2023.csv forecast_2024.csv
437
464
 
438
465
  # Cross-reference datasets
439
- python main.py customers.csv orders.csv products.csv
466
+ dataframe-textual customers.csv orders.csv products.csv
440
467
 
441
468
  # Start with one file, open others using Ctrl+O
442
- python main.py initial_data.csv
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
- python main.py data.csv filtered.csv
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 CSV data directly in your terminal. Now with **multi-file support for simultaneous data comparison**!
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
- ![Screenshot](https://raw.githubusercontent.com/need47/dataframe-viewer/refs/heads/main/screenshot.png)
5
+ ![Screenshot](https://raw.githubusercontent.com/need47/dataframe-textual/refs/heads/main/screenshot.png)
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 uv (recommended)
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-viewer
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
- ### Using pip
61
+ ### Development installation
42
62
 
43
63
  ```bash
44
- pip install polars textual
45
- python main.py <csv_file>
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
- # View a CSV file
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 | python main.py
61
- python main.py < data.csv
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
- python main.py file1.csv file2.csv file3.csv
98
+ dataframe-textual file1.csv file2.csv file3.csv
69
99
 
70
100
  # Open multiple sheets in tabs in an Excel file
71
- python main.py file.xlsx
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
- python main.py data1.csv < data2.csv
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
- python main.py pokemon.csv
401
+ dataframe-textual pokemon.csv
375
402
 
376
403
  # View Titanic dataset with analysis
377
- python main.py titanic.csv
404
+ dataframe-textual titanic.csv
378
405
 
379
406
  # Filter and view specific columns
380
- cut -d',' -f1,2,3 pokemon.csv | python main.py
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 | python main.py
410
+ grep "Fire" pokemon.csv | dataframe-textual
384
411
 
385
412
  # Chain with other commands
386
- cat data.csv | sort -t',' -k2 | python main.py
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
- python main.py pokemon_v1.csv pokemon_v2.csv
420
+ dataframe-textual pokemon_v1.csv pokemon_v2.csv
394
421
 
395
422
  # Side-by-side analysis of related files
396
- python main.py sales_2022.csv sales_2023.csv forecast_2024.csv
423
+ dataframe-textual sales_2022.csv sales_2023.csv forecast_2024.csv
397
424
 
398
425
  # Cross-reference datasets
399
- python main.py customers.csv orders.csv products.csv
426
+ dataframe-textual customers.csv orders.csv products.csv
400
427
 
401
428
  # Start with one file, open others using Ctrl+O
402
- python main.py initial_data.csv
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
- python main.py data.csv filtered.csv
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.1.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-viewer"
43
- Repository = "https://github.com/need47/dataframe-viewer.git"
44
- Documentation = "https://github.com/need47/dataframe-viewer#readme"
45
- "Bug Tracker" = "https://github.com/need47/dataframe-viewer/issues"
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 = [
@@ -170,8 +170,8 @@ wheels = [
170
170
  ]
171
171
 
172
172
  [[package]]
173
- name = "dataframe-viewer"
174
- version = "0.1.0"
173
+ name = "dataframe-textual"
174
+ version = "0.2.0"
175
175
  source = { editable = "." }
176
176
  dependencies = [
177
177
  { name = "polars" },