listpick 0.1.15.19__py3-none-any.whl → 0.1.16.17__py3-none-any.whl
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.
- listpick/listpick_app.py +1235 -660
- listpick/pane/get_data.py +20 -0
- listpick/pane/left_pane_functions.py +198 -0
- listpick/pane/pane_functions.py +45 -5
- listpick/pane/pane_functions_1.py +175 -0
- listpick/pane/pane_utils.py +3 -3
- listpick/ui/build_help.py +37 -12
- listpick/ui/draw_screen.py +0 -0
- listpick/ui/footer.py +3 -3
- listpick/ui/input_field.py +1 -20
- listpick/ui/keys.py +16 -10
- listpick/ui/picker_colours.py +55 -0
- listpick/utils/generate_data.py +45 -2
- listpick/utils/generate_data_multiprocessing.py +10 -0
- listpick/utils/generate_data_multithreaded.py +234 -0
- listpick/utils/generate_data_utils.py +43 -0
- listpick/utils/user_input.py +7 -1
- listpick/utils/utils.py +17 -15
- {listpick-0.1.15.19.dist-info → listpick-0.1.16.17.dist-info}/METADATA +31 -42
- listpick-0.1.16.17.dist-info/RECORD +43 -0
- listpick-0.1.15.19.dist-info/RECORD +0 -37
- {listpick-0.1.15.19.dist-info → listpick-0.1.16.17.dist-info}/WHEEL +0 -0
- {listpick-0.1.15.19.dist-info → listpick-0.1.16.17.dist-info}/entry_points.txt +0 -0
- {listpick-0.1.15.19.dist-info → listpick-0.1.16.17.dist-info}/licenses/LICENSE.txt +0 -0
- {listpick-0.1.15.19.dist-info → listpick-0.1.16.17.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: listpick
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.16.17
|
|
4
4
|
Summary: Listpick is a powerful TUI data tool for creating TUI apps or viewing/comparing tabulated data.
|
|
5
5
|
Home-page: https://github.com/grimandgreedy/listpick
|
|
6
6
|
Author: Grim
|
|
@@ -43,23 +43,19 @@ Dynamic: summary
|
|
|
43
43
|
|
|
44
44
|
# listpick
|
|
45
45
|
|
|
46
|
-
listpick is a TUI tool
|
|
47
|
-
|
|
48
|
-
Rows of data can be viewed, selected, generated, saved, loaded, refreshed, modified or copied to the clipboard. Easy to integrate into your project by creating a `menu = Picker(stdscr, items:list[list[str]])` and then the menu will be displayed by running `menu.run()`.
|
|
49
|
-
|
|
50
|
-
It works great as the backend for a TUI application and can also be used as a standalone data viewer.
|
|
46
|
+
listpick is a powerful TUI data tool for viewing, editing and operating upon tabulated data; can be used to build TUI applications, generate data columns, or function as a command-line utility.
|
|
51
47
|
|
|
52
48
|
**NOTE**: listpick is still in development.
|
|
53
49
|
|
|
54
50
|
# Quickstart
|
|
55
51
|
|
|
56
|
-
Install listpick
|
|
52
|
+
Install listpick:
|
|
57
53
|
|
|
58
54
|
```
|
|
59
55
|
python -m pip installl "listpick[full]"
|
|
60
56
|
```
|
|
61
57
|
|
|
62
|
-
Create a
|
|
58
|
+
Create a Picker:
|
|
63
59
|
|
|
64
60
|
```
|
|
65
61
|
from listpick.listpick_app import Picker, start_curses, close_curses
|
|
@@ -72,18 +68,13 @@ x = Picker(
|
|
|
72
68
|
["row zero column zero", "row zero column one"],
|
|
73
69
|
["row one column zero", "row one column one"]
|
|
74
70
|
],
|
|
75
|
-
header=["H0", "H1"]
|
|
71
|
+
header=["H0", "H1"],
|
|
72
|
+
cell_cursor=True,
|
|
76
73
|
)
|
|
77
74
|
x.run()
|
|
78
75
|
|
|
79
76
|
close_curses(stdscr)
|
|
80
77
|
|
|
81
|
-
```
|
|
82
|
-
Use the listpick binary to generate and display rows based on a list of commands:
|
|
83
|
-
|
|
84
|
-
```
|
|
85
|
-
wget https://raw.githubusercontent.com/grimandgreedy/listpick/refs/heads/master/examples/data_generation/list_files.toml
|
|
86
|
-
listpick -g list_files.py
|
|
87
78
|
```
|
|
88
79
|
|
|
89
80
|
## Overview
|
|
@@ -102,31 +93,42 @@ The application allows you to:
|
|
|
102
93
|
## Examples
|
|
103
94
|
|
|
104
95
|
|
|
105
|
-
###
|
|
106
|
-
|
|
107
|
-
listpick -
|
|
96
|
+
### listpick as a command-line tool
|
|
97
|
+
|
|
98
|
+
listpick can be used as a command-line tool for tabulating command outputs:
|
|
99
|
+
```bash
|
|
100
|
+
df -h | listpick --stdin
|
|
108
101
|
```
|
|
109
|
-
- From the list of commands in the toml file we generate the properties we will use to identify the duplicates.
|
|
110
102
|
|
|
111
|
-
|
|
103
|
+
<div align="center"> <img src="assets/listpick_df_example.png" alt="lpfman" width="90%"> </div>
|
|
112
104
|
|
|
105
|
+
### Applications
|
|
113
106
|
|
|
114
|
-
|
|
107
|
+
#### Aria2TUI
|
|
108
|
+
|
|
109
|
+
[Aria2TUI](https://github.com/grimandgreedy/Aria2TUI): TUI client for the aria2c download utility.
|
|
110
|
+
|
|
111
|
+
<div align="center"> <img src="assets/aria2tui_graph_screenshot.png" alt="Aria2TUI" width="90%"> </div>
|
|
112
|
+
|
|
113
|
+
#### lpfman
|
|
114
|
+
[lpfman](https://github.com/grimandgreedy/lpfman): Terminal file manager with extensive column support.
|
|
115
115
|
|
|
116
|
-
<div align="center"> <img src="assets/
|
|
116
|
+
<div align="center"> <img src="https://github.com/grimandgreedy/lpfman/blob/master/assets/lpfman_02.png?raw=true" alt="lpfman" width="90%"> </div>
|
|
117
117
|
|
|
118
118
|
|
|
119
|
-
###
|
|
119
|
+
### Data generation from toml file
|
|
120
120
|
|
|
121
|
-
|
|
121
|
+
```python
|
|
122
|
+
listpick -g ./listpick/examples/data_generation/video_duplicates.toml
|
|
123
|
+
```
|
|
124
|
+
- From the list of commands in the toml file we generate the properties we will use to identify the duplicates.
|
|
122
125
|
|
|
123
|
-
|
|
126
|
+
- In the example file we set the directory and get the files with a simle `eza` (`ls`) command. We could also use `find` or `cat` from a list of files.
|
|
124
127
|
|
|
125
|
-
### lpfman
|
|
126
|
-
[lpfman](https://github.com/grimandgreedy/lpfman) is a basic file manager created for the purposes of illustrating how easy TUI apps can be developed with the use of listpick. In 20 minutes and <100 lines of code we made a very basic file manager.
|
|
127
128
|
|
|
128
|
-
|
|
129
|
+
- We get the SHA1 hash to identify identical files; we also get the size, duration, resolution, and bitrate so that we can identify a video duplicate that may have the same duration but a lower resolution.
|
|
129
130
|
|
|
131
|
+
<div align="center"> <img src="assets/file_compare.png" alt="Video Compare" width="90%"> </div>
|
|
130
132
|
|
|
131
133
|
|
|
132
134
|
## Description
|
|
@@ -134,7 +136,7 @@ listpick -g ./examples/data_generation/video_duplicates.toml
|
|
|
134
136
|
### Key Features:
|
|
135
137
|
1. **File Input Support:**
|
|
136
138
|
```python
|
|
137
|
-
listpick -i ~/
|
|
139
|
+
listpick -i ~/items.csv
|
|
138
140
|
```
|
|
139
141
|
- Text files (TSV, CSV)
|
|
140
142
|
- JSON
|
|
@@ -206,19 +208,6 @@ listpick -g ./examples/data_generation/video_duplicates.toml
|
|
|
206
208
|
- Opening files with a specific application `xargs -d \n -I{} mpv {}` will open the files in mpv
|
|
207
209
|
- Dumping data. `xargs -d \n -I{} echo {} > ~/stuff.txt`
|
|
208
210
|
|
|
209
|
-
## Overview
|
|
210
|
-
|
|
211
|
-
The application allows you to:
|
|
212
|
-
- Select multiple items from different file types and input streams
|
|
213
|
-
- Navigate between selected items with arrow keys
|
|
214
|
-
- Delete individual items
|
|
215
|
-
- Highlight specific items for quick selection
|
|
216
|
-
- Perform complex filtering operations
|
|
217
|
-
- Sort data based on specified columns
|
|
218
|
-
- Persistent save/load of selections
|
|
219
|
-
- Copy/paste selections to clipboard
|
|
220
|
-
|
|
221
|
-
|
|
222
211
|
## Support and Feedback
|
|
223
212
|
|
|
224
213
|
Feel free to request features. Please report any errors you encounter with appropriate context.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
listpick/__init__.py,sha256=ExXc97-bibodH--wlwpQivl0zCNR5D1hvpvrf7OBofU,154
|
|
2
|
+
listpick/__main__.py,sha256=wkCjDdqw093W27yWwnlC3nG_sMRKaIad7hHHWy0RBgY,193
|
|
3
|
+
listpick/listpick_app.py,sha256=MHe0-HWbby5SNotbozL_7hcR0lrMYy5jujFoRoPiSuo,222741
|
|
4
|
+
listpick/pane/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
|
+
listpick/pane/get_data.py,sha256=l12mHIb6qoZWIfW5zZZY8K8EqNcyIcRiHgtRaM2CVGs,2735
|
|
6
|
+
listpick/pane/left_pane_functions.py,sha256=SVIW4Ef8uNPBQRk4hL67mEFL3pfgChSFZSMRz06CVzw,5543
|
|
7
|
+
listpick/pane/pane_functions.py,sha256=_dL9jHpd3sT0enL9H_bMcUsBlMELXdtP9dtKFSC2KPQ,5117
|
|
8
|
+
listpick/pane/pane_functions_1.py,sha256=_dL9jHpd3sT0enL9H_bMcUsBlMELXdtP9dtKFSC2KPQ,5117
|
|
9
|
+
listpick/pane/pane_utils.py,sha256=cnuzBH52wdWoKrHR6iMBF4N-uhwpXYpHDnrglk21pqg,2539
|
|
10
|
+
listpick/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
11
|
+
listpick/ui/build_help.py,sha256=wSGeE3tUVWP7D709mb1cDyRU2M0QKVg0mRyTFmcR3fo,11720
|
|
12
|
+
listpick/ui/draw_screen.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
13
|
+
listpick/ui/footer.py,sha256=NcdH1uO_ma91m0qCczyQZ3zGrexfkiEnwDf5E4tHSMk,15089
|
|
14
|
+
listpick/ui/help_screen.py,sha256=zbfGIgb-IXtATpl4_Sx7nPbsnRXZ7eiMYlCKGS9EFmw,5608
|
|
15
|
+
listpick/ui/input_field.py,sha256=1GUuzMl7P-uw5ijYUOQONMhAzAKoYXRax0-332OroLE,29971
|
|
16
|
+
listpick/ui/keys.py,sha256=7QpG8xEp7kBH9tObTzL-Cmw7i5HTvN6amA3Dd4FmMpE,14077
|
|
17
|
+
listpick/ui/picker_colours.py,sha256=PYWtJEbBCsiM-Gbm83vJiFoIwfKuJuP4SGKxpozszKY,15159
|
|
18
|
+
listpick/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
19
|
+
listpick/utils/clipboard_operations.py,sha256=ORdNm2kgGbfs51xJSvgJPERgoSmBgT11axuMkvSoP9A,3133
|
|
20
|
+
listpick/utils/config.py,sha256=MEnAZg2Rhfl38XofEIN0uoVAOY7I0ftc79Evk3fOiVw,1654
|
|
21
|
+
listpick/utils/dump.py,sha256=60YVIMNtBoYvWhmzfTJOsNGcetOvcCB3_T7yv-bYTPQ,3838
|
|
22
|
+
listpick/utils/filtering.py,sha256=59_YIEYRV0ovnjF4iyuShq276FMAx5gBD9m3mE9IqJg,1237
|
|
23
|
+
listpick/utils/generate_data.py,sha256=TCGwDrN49Xx33AdURpQRGi6Xi2uwjt96rEeWWYS8mFE,4649
|
|
24
|
+
listpick/utils/generate_data_multiprocessing.py,sha256=B797wFm7bSpoe0wb5C_q1J96ffVp3JCB5Lu4Rly8K8M,178
|
|
25
|
+
listpick/utils/generate_data_multithreaded.py,sha256=jI9kWgWegnumegQOnKxrJg854lGw59cOXm-IyzdpjQ8,7631
|
|
26
|
+
listpick/utils/generate_data_utils.py,sha256=Aw1uL4Feqm6-23K-PhQg232N5dQZ16RGNIF_dvTPbtQ,1009
|
|
27
|
+
listpick/utils/graphing.py,sha256=ugjAH8js_iH7hulg4SySxb_W_f8B6GhTaceN5i7DID4,6954
|
|
28
|
+
listpick/utils/keycodes.py,sha256=ZGkw1-4szxPnP81wj80r92L6_neIOlBBjQltEieCwnk,2696
|
|
29
|
+
listpick/utils/options_selectors.py,sha256=fQqTCAqRsrMhZwXUtsPBm47svkaUaeJqWsMW7Q4JTYY,3083
|
|
30
|
+
listpick/utils/paste_operations.py,sha256=7wDXLPlxUgA3CA99gwsm47juWGO2YQ9EJghW06yo9vI,1242
|
|
31
|
+
listpick/utils/picker_log.py,sha256=SW6GmjxpI7YrSf72fSr4O8Ux0fY_OzaSXUgTFdz6Xo4,805
|
|
32
|
+
listpick/utils/search_and_filter_utils.py,sha256=XxGfkyDVXO9OAKcftPat8IReMTFIuTH-jorxI4o84tg,3239
|
|
33
|
+
listpick/utils/searching.py,sha256=Xk5UIqamNHL2L90z3ACB_Giqdpi9iRKoAJ6pKaqaD7Q,3093
|
|
34
|
+
listpick/utils/sorting.py,sha256=WZZiVlVA3Zkcpwji3U5SNFlQ14zVEk3cZJtQirBkecQ,5329
|
|
35
|
+
listpick/utils/table_to_list_of_lists.py,sha256=XBj7eGBDF15BRME-swnoXyOfZWxXCxrXp0pzsBfcJ5g,12224
|
|
36
|
+
listpick/utils/user_input.py,sha256=L3ylI7nnuFM_TP1XKwpiKpxUSkNb2W5cr7mJjTmv_6E,4582
|
|
37
|
+
listpick/utils/utils.py,sha256=gwonigqPd8nSQBvN6lLDB68kwUzXqWALesZBja-cehU,13956
|
|
38
|
+
listpick-0.1.16.17.dist-info/licenses/LICENSE.txt,sha256=2mP-MRHJptADDNE9VInMNg1tE-C6Qv93Z4CCQKrpg9w,1061
|
|
39
|
+
listpick-0.1.16.17.dist-info/METADATA,sha256=_NIFHFBvzMzRwNXlPJG7CZa_PG0DmiL9D__ylQ_wJYQ,7144
|
|
40
|
+
listpick-0.1.16.17.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
41
|
+
listpick-0.1.16.17.dist-info/entry_points.txt,sha256=-QCf_BKIkUz35Y9nkYpjZWs2Qg0KfRna2PAs5DnF6BE,43
|
|
42
|
+
listpick-0.1.16.17.dist-info/top_level.txt,sha256=5mtsGEz86rz3qQDe0D463gGjAfSp6A3EWg4J4AGYr-Q,9
|
|
43
|
+
listpick-0.1.16.17.dist-info/RECORD,,
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
listpick/__init__.py,sha256=ExXc97-bibodH--wlwpQivl0zCNR5D1hvpvrf7OBofU,154
|
|
2
|
-
listpick/__main__.py,sha256=wkCjDdqw093W27yWwnlC3nG_sMRKaIad7hHHWy0RBgY,193
|
|
3
|
-
listpick/listpick_app.py,sha256=BlP61QjTueluizKMslb6Ir8SBXtpqKdAdlBI7s2ggNA,201685
|
|
4
|
-
listpick/pane/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
|
-
listpick/pane/get_data.py,sha256=21PTDXt9HP-4vZV4QUM8sidTqDEaKnKCDshl3-cSRCo,2255
|
|
6
|
-
listpick/pane/pane_functions.py,sha256=Hpc6wSFeiTmQTyO6n13muenarZMvzFw0OCmjJJy2lTY,3910
|
|
7
|
-
listpick/pane/pane_utils.py,sha256=tMp8KlFng6ZQgNjd8iFrl1zWZLPXMH_Y1A_QeuQYAk0,2537
|
|
8
|
-
listpick/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
|
-
listpick/ui/build_help.py,sha256=IpN4tX4U8ET3icRoTlF389VqVjVcPAon617vgstlPAc,10750
|
|
10
|
-
listpick/ui/footer.py,sha256=OH27JLGvvq9TlUsI30ODG6cHvjm7NTGSbXvF6lN1qiY,15089
|
|
11
|
-
listpick/ui/help_screen.py,sha256=zbfGIgb-IXtATpl4_Sx7nPbsnRXZ7eiMYlCKGS9EFmw,5608
|
|
12
|
-
listpick/ui/input_field.py,sha256=ylf3fiLXdAD4pueHWfzIrlwaRb9f5zm8f1UGkEPBxgM,30539
|
|
13
|
-
listpick/ui/keys.py,sha256=1NCsOPFxhNuVPbO5vflcArNZ1jbBBerPQ3oZUAZDyPs,13682
|
|
14
|
-
listpick/ui/picker_colours.py,sha256=FFsyny_q0mGO6u7B1n7anuReBtP7Jw6LrgX5ycN-MRM,13413
|
|
15
|
-
listpick/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
16
|
-
listpick/utils/clipboard_operations.py,sha256=ORdNm2kgGbfs51xJSvgJPERgoSmBgT11axuMkvSoP9A,3133
|
|
17
|
-
listpick/utils/config.py,sha256=MEnAZg2Rhfl38XofEIN0uoVAOY7I0ftc79Evk3fOiVw,1654
|
|
18
|
-
listpick/utils/dump.py,sha256=60YVIMNtBoYvWhmzfTJOsNGcetOvcCB3_T7yv-bYTPQ,3838
|
|
19
|
-
listpick/utils/filtering.py,sha256=59_YIEYRV0ovnjF4iyuShq276FMAx5gBD9m3mE9IqJg,1237
|
|
20
|
-
listpick/utils/generate_data.py,sha256=7sv6JRhk0-Gcj4kOlkzx4qPNBJZ-GFWg9vM77GktzpI,3073
|
|
21
|
-
listpick/utils/graphing.py,sha256=ugjAH8js_iH7hulg4SySxb_W_f8B6GhTaceN5i7DID4,6954
|
|
22
|
-
listpick/utils/keycodes.py,sha256=ZGkw1-4szxPnP81wj80r92L6_neIOlBBjQltEieCwnk,2696
|
|
23
|
-
listpick/utils/options_selectors.py,sha256=fQqTCAqRsrMhZwXUtsPBm47svkaUaeJqWsMW7Q4JTYY,3083
|
|
24
|
-
listpick/utils/paste_operations.py,sha256=7wDXLPlxUgA3CA99gwsm47juWGO2YQ9EJghW06yo9vI,1242
|
|
25
|
-
listpick/utils/picker_log.py,sha256=SW6GmjxpI7YrSf72fSr4O8Ux0fY_OzaSXUgTFdz6Xo4,805
|
|
26
|
-
listpick/utils/search_and_filter_utils.py,sha256=XxGfkyDVXO9OAKcftPat8IReMTFIuTH-jorxI4o84tg,3239
|
|
27
|
-
listpick/utils/searching.py,sha256=Xk5UIqamNHL2L90z3ACB_Giqdpi9iRKoAJ6pKaqaD7Q,3093
|
|
28
|
-
listpick/utils/sorting.py,sha256=WZZiVlVA3Zkcpwji3U5SNFlQ14zVEk3cZJtQirBkecQ,5329
|
|
29
|
-
listpick/utils/table_to_list_of_lists.py,sha256=XBj7eGBDF15BRME-swnoXyOfZWxXCxrXp0pzsBfcJ5g,12224
|
|
30
|
-
listpick/utils/user_input.py,sha256=oyJZPAwA7UGAclPhdPL44tKnPIVNHWhX-tZEnCdBKC0,4318
|
|
31
|
-
listpick/utils/utils.py,sha256=QptLnqT15Z3G7xoq-6Q8e4-aZRFClTdb3h0l42di11s,13810
|
|
32
|
-
listpick-0.1.15.19.dist-info/licenses/LICENSE.txt,sha256=2mP-MRHJptADDNE9VInMNg1tE-C6Qv93Z4CCQKrpg9w,1061
|
|
33
|
-
listpick-0.1.15.19.dist-info/METADATA,sha256=DEC_4b14QQUzZ-GF7Kh2llXoArGf3uk6sZKX4iVkt-A,8132
|
|
34
|
-
listpick-0.1.15.19.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
35
|
-
listpick-0.1.15.19.dist-info/entry_points.txt,sha256=-QCf_BKIkUz35Y9nkYpjZWs2Qg0KfRna2PAs5DnF6BE,43
|
|
36
|
-
listpick-0.1.15.19.dist-info/top_level.txt,sha256=5mtsGEz86rz3qQDe0D463gGjAfSp6A3EWg4J4AGYr-Q,9
|
|
37
|
-
listpick-0.1.15.19.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|