dataframe-textual 2.3.0__tar.gz → 2.4.1__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 (18) hide show
  1. {dataframe_textual-2.3.0 → dataframe_textual-2.4.1}/PKG-INFO +18 -15
  2. {dataframe_textual-2.3.0 → dataframe_textual-2.4.1}/README.md +17 -14
  3. {dataframe_textual-2.3.0 → dataframe_textual-2.4.1}/pyproject.toml +1 -1
  4. {dataframe_textual-2.3.0 → dataframe_textual-2.4.1}/src/dataframe_textual/common.py +7 -10
  5. {dataframe_textual-2.3.0 → dataframe_textual-2.4.1}/uv.lock +1 -1
  6. {dataframe_textual-2.3.0 → dataframe_textual-2.4.1}/.gitignore +0 -0
  7. {dataframe_textual-2.3.0 → dataframe_textual-2.4.1}/1811.csv.gz +0 -0
  8. {dataframe_textual-2.3.0 → dataframe_textual-2.4.1}/LICENSE +0 -0
  9. {dataframe_textual-2.3.0 → dataframe_textual-2.4.1}/large_malformed.tsv.gz +0 -0
  10. {dataframe_textual-2.3.0 → dataframe_textual-2.4.1}/main.py +0 -0
  11. {dataframe_textual-2.3.0 → dataframe_textual-2.4.1}/src/dataframe_textual/__init__.py +0 -0
  12. {dataframe_textual-2.3.0 → dataframe_textual-2.4.1}/src/dataframe_textual/__main__.py +0 -0
  13. {dataframe_textual-2.3.0 → dataframe_textual-2.4.1}/src/dataframe_textual/data_frame_help_panel.py +0 -0
  14. {dataframe_textual-2.3.0 → dataframe_textual-2.4.1}/src/dataframe_textual/data_frame_table.py +0 -0
  15. {dataframe_textual-2.3.0 → dataframe_textual-2.4.1}/src/dataframe_textual/data_frame_viewer.py +0 -0
  16. {dataframe_textual-2.3.0 → dataframe_textual-2.4.1}/src/dataframe_textual/sql_screen.py +0 -0
  17. {dataframe_textual-2.3.0 → dataframe_textual-2.4.1}/src/dataframe_textual/table_screen.py +0 -0
  18. {dataframe_textual-2.3.0 → dataframe_textual-2.4.1}/src/dataframe_textual/yes_no_screen.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dataframe-textual
3
- Version: 2.3.0
3
+ Version: 2.4.1
4
4
  Summary: Interactive terminal viewer/editor for tabular data
5
5
  Project-URL: Homepage, https://github.com/need47/dataframe-textual
6
6
  Project-URL: Repository, https://github.com/need47/dataframe-textual.git
@@ -39,7 +39,7 @@ Description-Content-Type: text/markdown
39
39
 
40
40
  # DataFrame Textual
41
41
 
42
- A powerful, interactive terminal-based viewer/editor for CSV/TSV/Excel/Parquet/JSON/NDJSON built with Python, [Polars](https://pola.rs/), and [Textual](https://textual.textualize.io/). Inspired by [VisiData](https://www.visidata.org/), this tool provides smooth keyboard navigation, data manipulation, and a clean interface for exploring tabular data directly in terminal with multi-tab support for multiple files!
42
+ A powerful, interactive terminal-based viewer/editor for CSV/TSV/PSV/Excel/Parquet/JSON/NDJSON built with Python, [Polars](https://pola.rs/), and [Textual](https://textual.textualize.io/). Inspired by [VisiData](https://www.visidata.org/), this tool provides smooth keyboard navigation, data manipulation, and a clean interface for exploring tabular data directly in terminal with multi-tab support for multiple files!
43
43
 
44
44
  ![Screenshot](https://raw.githubusercontent.com/need47/dataframe-textual/refs/heads/main/screenshot.png)
45
45
 
@@ -167,28 +167,31 @@ When multiple files are opened:
167
167
  ## Command Line Options
168
168
 
169
169
  ```
170
- usage: dv [-h] [-f {csv,excel,tsv,parquet,json,ndjson}] [-H] [-I] [-E] [-c COMMENT_PREFIX] [-q QUOTE_CHAR] [-l SKIP_LINES] [-a SKIP_ROWS_AFTER_HEADER] [-n NULL [NULL ...]] [files ...]
170
+ usage: dv [-h] [-V] [-f {csv,json,excel,ndjson,psv,parquet,tsv}] [-H] [-I] [-t] [-E] [-c [COMMENT_PREFIX]] [-q [QUOTE_CHAR]] [-l SKIP_LINES] [-a SKIP_ROWS_AFTER_HEADER] [-n NULL [NULL ...]] [files ...]
171
171
 
172
- Interactive terminal based viewer/editor for tabular data (e.g., CSV/TSV/Excel).
172
+ Interactive terminal based viewer/editor for tabular data (e.g., CSV/Excel).
173
173
 
174
174
  positional arguments:
175
- files Input files (or read from stdin)
175
+ files Files to view (or read from stdin)
176
176
 
177
177
  options:
178
178
  -h, --help show this help message and exit
179
- -f, --format {csv,excel,tsv,parquet,json,ndjson}
180
- Specify the format of the input files
181
- -H, --no-header Specify that input files have no header row
182
- -I, --no-inference Do not infer data types when reading CSV/TSV
179
+ -V, --version show program's version number and exit
180
+ -f, --format {csv,json,excel,ndjson,psv,parquet,tsv}
181
+ Specify the format of the input files (csv, excel, tsv etc.)
182
+ -H, --no-header Specify that input files have no header row when reading CSV/TSV
183
+ -I, --no-inference Do not infer data types when reading CSV/TSV
184
+ -t, --truncate-ragged-lines
185
+ Truncate ragged lines when reading CSV/TSV
183
186
  -E, --ignore-errors Ignore errors when reading CSV/TSV
184
- -c, --comment-prefix COMMENT_PREFIX
185
- Comment lines are skipped when reading CSV/TSV (default: skip none)
186
- -q, --quote-char QUOTE_CHAR
187
- Quote character for reading CSV/TSV (default: "; use -q without argument value to disable)
187
+ -c, --comment-prefix [COMMENT_PREFIX]
188
+ Comment lines are skipped when reading CSV/TSV
189
+ -q, --quote-char [QUOTE_CHAR]
190
+ Quote character for reading CSV/TSV
188
191
  -l, --skip-lines SKIP_LINES
189
- Skip lines when reading CSV/TSV (default: 0)
192
+ Skip lines when reading CSV/TSV
190
193
  -a, --skip-rows-after-header SKIP_ROWS_AFTER_HEADER
191
- Skip rows after header when reading CSV/TSV (default: 0)
194
+ Skip rows after header when reading CSV/TSV
192
195
  -n, --null NULL [NULL ...]
193
196
  Values to interpret as null values when reading CSV/TSV
194
197
  ```
@@ -1,6 +1,6 @@
1
1
  # DataFrame Textual
2
2
 
3
- A powerful, interactive terminal-based viewer/editor for CSV/TSV/Excel/Parquet/JSON/NDJSON built with Python, [Polars](https://pola.rs/), and [Textual](https://textual.textualize.io/). Inspired by [VisiData](https://www.visidata.org/), this tool provides smooth keyboard navigation, data manipulation, and a clean interface for exploring tabular data directly in terminal with multi-tab support for multiple files!
3
+ A powerful, interactive terminal-based viewer/editor for CSV/TSV/PSV/Excel/Parquet/JSON/NDJSON built with Python, [Polars](https://pola.rs/), and [Textual](https://textual.textualize.io/). Inspired by [VisiData](https://www.visidata.org/), this tool provides smooth keyboard navigation, data manipulation, and a clean interface for exploring tabular data directly in terminal with multi-tab support for multiple files!
4
4
 
5
5
  ![Screenshot](https://raw.githubusercontent.com/need47/dataframe-textual/refs/heads/main/screenshot.png)
6
6
 
@@ -128,28 +128,31 @@ When multiple files are opened:
128
128
  ## Command Line Options
129
129
 
130
130
  ```
131
- usage: dv [-h] [-f {csv,excel,tsv,parquet,json,ndjson}] [-H] [-I] [-E] [-c COMMENT_PREFIX] [-q QUOTE_CHAR] [-l SKIP_LINES] [-a SKIP_ROWS_AFTER_HEADER] [-n NULL [NULL ...]] [files ...]
131
+ usage: dv [-h] [-V] [-f {csv,json,excel,ndjson,psv,parquet,tsv}] [-H] [-I] [-t] [-E] [-c [COMMENT_PREFIX]] [-q [QUOTE_CHAR]] [-l SKIP_LINES] [-a SKIP_ROWS_AFTER_HEADER] [-n NULL [NULL ...]] [files ...]
132
132
 
133
- Interactive terminal based viewer/editor for tabular data (e.g., CSV/TSV/Excel).
133
+ Interactive terminal based viewer/editor for tabular data (e.g., CSV/Excel).
134
134
 
135
135
  positional arguments:
136
- files Input files (or read from stdin)
136
+ files Files to view (or read from stdin)
137
137
 
138
138
  options:
139
139
  -h, --help show this help message and exit
140
- -f, --format {csv,excel,tsv,parquet,json,ndjson}
141
- Specify the format of the input files
142
- -H, --no-header Specify that input files have no header row
143
- -I, --no-inference Do not infer data types when reading CSV/TSV
140
+ -V, --version show program's version number and exit
141
+ -f, --format {csv,json,excel,ndjson,psv,parquet,tsv}
142
+ Specify the format of the input files (csv, excel, tsv etc.)
143
+ -H, --no-header Specify that input files have no header row when reading CSV/TSV
144
+ -I, --no-inference Do not infer data types when reading CSV/TSV
145
+ -t, --truncate-ragged-lines
146
+ Truncate ragged lines when reading CSV/TSV
144
147
  -E, --ignore-errors Ignore errors when reading CSV/TSV
145
- -c, --comment-prefix COMMENT_PREFIX
146
- Comment lines are skipped when reading CSV/TSV (default: skip none)
147
- -q, --quote-char QUOTE_CHAR
148
- Quote character for reading CSV/TSV (default: "; use -q without argument value to disable)
148
+ -c, --comment-prefix [COMMENT_PREFIX]
149
+ Comment lines are skipped when reading CSV/TSV
150
+ -q, --quote-char [QUOTE_CHAR]
151
+ Quote character for reading CSV/TSV
149
152
  -l, --skip-lines SKIP_LINES
150
- Skip lines when reading CSV/TSV (default: 0)
153
+ Skip lines when reading CSV/TSV
151
154
  -a, --skip-rows-after-header SKIP_ROWS_AFTER_HEADER
152
- Skip rows after header when reading CSV/TSV (default: 0)
155
+ Skip rows after header when reading CSV/TSV
153
156
  -n, --null NULL [NULL ...]
154
157
  Values to interpret as null values when reading CSV/TSV
155
158
  ```
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "dataframe-textual"
7
- version = "2.3.0"
7
+ version = "2.4.1"
8
8
  description = "Interactive terminal viewer/editor for tabular data"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -12,7 +12,7 @@ import polars as pl
12
12
  from rich.text import Text
13
13
 
14
14
  # Supported file formats
15
- SUPPORTED_FORMATS = {"tsv", "tab", "csv", "excel", "xlsx", "xls", "parquet", "json", "ndjson"}
15
+ SUPPORTED_FORMATS = ["tsv", "csv", "psv", "excel", "parquet", "json", "ndjson"]
16
16
 
17
17
 
18
18
  # Boolean string mappings
@@ -529,7 +529,10 @@ def load_dataframe(
529
529
  ext = Path(filename).suffix.lower()
530
530
  if ext == ".gz":
531
531
  ext = Path(filename).with_suffix("").suffix.lower()
532
+
532
533
  fmt = ext.removeprefix(".")
534
+ if fmt in ("xls", "xlsx"):
535
+ fmt = "excel"
533
536
 
534
537
  # Default to TSV
535
538
  if not fmt or fmt not in SUPPORTED_FORMATS:
@@ -668,17 +671,11 @@ def load_file(
668
671
  filename = f"stdin.{file_format}" if isinstance(source, StringIO) else source
669
672
  filepath = Path(filename)
670
673
 
671
- if not file_format:
672
- ext = filepath.suffix.lower()
673
- if ext == ".gz":
674
- ext = Path(filename).with_suffix("").suffix.lower()
675
- file_format = ext.removeprefix(".")
676
-
677
674
  # Load based on file format
678
- if file_format in ("csv", "tsv"):
675
+ if file_format in ("csv", "tsv", "psv"):
679
676
  lf = pl.scan_csv(
680
677
  source,
681
- separator="\t" if file_format == "tsv" else ",",
678
+ separator="\t" if file_format == "tsv" else ("|" if file_format == "psv" else ","),
682
679
  has_header=has_header,
683
680
  infer_schema=infer_schema,
684
681
  comment_prefix=comment_prefix,
@@ -691,7 +688,7 @@ def load_file(
691
688
  truncate_ragged_lines=truncate_ragged_lines,
692
689
  )
693
690
  data.append(Source(lf, filename, filepath.stem))
694
- elif file_format in ("xlsx", "xls", "excel"):
691
+ elif file_format == "excel":
695
692
  if first_sheet:
696
693
  # Read only the first sheet for multiple files
697
694
  lf = pl.read_excel(source).lazy()
@@ -171,7 +171,7 @@ wheels = [
171
171
 
172
172
  [[package]]
173
173
  name = "dataframe-textual"
174
- version = "2.3.0"
174
+ version = "2.4.1"
175
175
  source = { editable = "." }
176
176
  dependencies = [
177
177
  { name = "polars" },