visidata 3.1__py3-none-any.whl → 3.1.1__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.
visidata/__init__.py CHANGED
@@ -1,6 +1,6 @@
1
1
  'VisiData: a curses interface for exploring and arranging tabular data'
2
2
 
3
- __version__ = '3.1'
3
+ __version__ = '3.1.1'
4
4
  __version_info__ = 'VisiData v' + __version__
5
5
  __author__ = 'Saul Pwanson <vd@saul.pw>'
6
6
  __status__ = 'Production/Stable'
visidata/main.py CHANGED
@@ -2,7 +2,7 @@
2
2
  # Usage: $0 [<options>] [<input> ...]
3
3
  # $0 [<options>] --play <cmdlog> [--batch] [-w <waitsecs>] [-o <output>] [field=value ...]
4
4
 
5
- __version__ = '3.1'
5
+ __version__ = '3.1.1'
6
6
  __version_info__ = 'saul.pw/VisiData v' + __version__
7
7
 
8
8
  from copy import copy
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: visidata
3
- Version: 3.1
3
+ Version: 3.1.1
4
4
  Summary: terminal interface for exploring and arranging tabular data
5
5
  Home-page: https://visidata.org
6
- Download-URL: https://github.com/saulpw/visidata/tarball/3.1
6
+ Download-URL: https://github.com/saulpw/visidata/tarball/3.1.1
7
7
  Author: Saul Pwanson
8
8
  Author-email: visidata@saul.pw
9
9
  License: GPLv3
@@ -1,4 +1,4 @@
1
- visidata/__init__.py,sha256=Dyd3Q-wRC08TX0uHtbJlZPfLgdioN1ikpoX8D4-XcmY,4571
1
+ visidata/__init__.py,sha256=yUo-zFk3y3XmWuiF-qfR0dBCdnAB9_XpITIEOAPOTeE,4573
2
2
  visidata/__main__.py,sha256=0j8M0MpINzX0XXcVj1lSDpDfol1qexKU2xZ6qiRoE_U,35
3
3
  visidata/_input.py,sha256=S5GVdMbTa67Nqtu-wPr5wQ2SrN1WomAM09CV0dM3kxQ,23231
4
4
  visidata/_open.py,sha256=t5cZIwb-5RkcE5sNnh21rfe3-dmwDKvjQTacHKlbSCA,6659
@@ -35,7 +35,7 @@ visidata/interface.py,sha256=PZRyTmmWFapiJJKiv39Ss0ry1kPPlUMDoMr0okvayg0,4336
35
35
  visidata/keys.py,sha256=u_Z-ApRUvfOXBwpzkpRu4W7Rur2R7rPTeoPJgsop4QU,2620
36
36
  visidata/macos.py,sha256=bqH73E27j8qDRtXsHPcUyQNFTAzD5Ki5QU6LjSUnnOI,3339
37
37
  visidata/macros.py,sha256=DR51CVqMjTDGTsSqil3MFVygS6cZd8lyi6UTaWUGGJE,4778
38
- visidata/main.py,sha256=4q9_5YY5ob_U5VHXwNYqT-jm6KAojdpmMt-3eDeNQPg,13384
38
+ visidata/main.py,sha256=LJgtvtHpPSoVA_Yy80qKpIyJtcbclvPtLbk8T3Wa-Z4,13386
39
39
  visidata/mainloop.py,sha256=EYt5DOs3FyxO6-8XyF6szmIVXt5pvcAle9age7FDgUs,10155
40
40
  visidata/memory.py,sha256=CXYpZ0eoR_c9LZwhp1B9Jd0C7O3RMi72OBKuodamg28,1378
41
41
  visidata/menu.py,sha256=WZ-Ba8-MCV61iVkJVCE8HRu-_5wk7jdYKDI6cnzsBJg,16791
@@ -60,7 +60,6 @@ visidata/sidebar.py,sha256=JVei9lQ0PFcyq8OwRWCli-YLXBzKlgvuhYji3oH8Jjg,7319
60
60
  visidata/sort.py,sha256=TwAmVGDX6pe1xdKnDeS1qs3WzK-r_DqxgzObrECQX4k,3925
61
61
  visidata/statusbar.py,sha256=cZZhTeaRat_4Gs2-A9BOwpthl7yoAswJjzia20RTXPU,9111
62
62
  visidata/stored_list.py,sha256=HUGixWL77ps_WifIqHxM9XWzoN3JK7QRQI8faWlsiIg,1280
63
- visidata/stored_prop.py,sha256=TNBq1bZuRr5lzxLU9khs-WwZdQdnIKVbmzwHcD6hy9k,1130
64
63
  visidata/text_source.py,sha256=SkiMmOXuCwCrS5vkedzm6wusFPSKL1jOuGqxMdICix4,1649
65
64
  visidata/textsheet.py,sha256=58xIv_tigQaX9ovPNvywvNACGd0viebWUL4qLVDI3TA,3731
66
65
  visidata/theme.py,sha256=v9XoPeRQ-NhAKTux2zSxOiWWDL-FGfez7BPVqKitFGY,1152
@@ -130,7 +129,6 @@ visidata/features/currency_to_usd.py,sha256=BCmhWN5ZmWlgjVZY5CGRpG_iDDnTYk9twIrV
130
129
  visidata/features/customdate.py,sha256=0VL9JzcphaTY8pToN9GizV3jfAIV1xTllFPGeQPmnr8,1191
131
130
  visidata/features/dedupe.py,sha256=NBigolkiqgq3wqCmeVNuGhCd0FIkICyjsSjZjl1hL9U,3586
132
131
  visidata/features/describe.py,sha256=p2b_d7AVpu0Zcaf2eGgTqSEAEj_4BMpuFIuaqYHiZ_s,5065
133
- visidata/features/errors_guide.py,sha256=mkLXQYVcErP6ptRs8Oi_SbGwbYy2zirhbqstQQpIWUk,801
134
132
  visidata/features/expand_cols.py,sha256=d9qm-uTvPrtP6BclHqlMSfJNtJWT8_Yi06i50k59DRw,7588
135
133
  visidata/features/fill.py,sha256=_ZLb-ArfQ6vbcalpuTV8QYHhNEbZsj5cMmukLQ6DW6A,1127
136
134
  visidata/features/freeze.py,sha256=Et-of6xca3sbx110RWwfSeJ5Y4RdnyrPH63jwoUlxm0,2488
@@ -184,14 +182,12 @@ visidata/guides/PivotGuide.md,sha256=mUBZ-3uihOyxrg_rRpgCJ59Zz_uX8T4byOv1WriZl3s
184
182
  visidata/guides/RegexGuide.md,sha256=4R5_jgK0jLzyfbR72jiptVTCrGANlKEbx6w__X--JTw,2839
185
183
  visidata/guides/SelectionGuide.md,sha256=_c4Rd2o3qJZwF-ErDb5oTF_mMsW6lF1oLcbezO2S-1A,1473
186
184
  visidata/guides/SlideGuide.md,sha256=GWwGBiNb-Q6ZiWkmE4n8nKORUB-hcoHyUJyrubJTGa4,494
187
- visidata/guides/SortGuide.md,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
188
185
  visidata/guides/SplitpaneGuide.md,sha256=PYUBQ-qNKpMPqxBLd2Sd2JcoIV8qOZDA98v7BPkUKpE,382
189
186
  visidata/guides/TypesSheet.md,sha256=XLxRCnxYNjb8m4junWhWZkg1Vqi8PT1CMZKHS4gvZpA,1521
190
187
  visidata/guides/XsvGuide.md,sha256=4NbjaYq1Kk0RheXv683cTdOkykK2ofj-VF_DQY2CCJI,1072
191
188
  visidata/loaders/__init__.py,sha256=oN_f4sosOdLzKcPH_KWm8r53g4xdzL9KtsEUAliTZRM,314
192
189
  visidata/loaders/_pandas.py,sha256=bY4bOZhDDsSsb6hddlSRYC4KCNQ1-zhf09Ks3fTk4cY,16293
193
190
  visidata/loaders/api_airtable.py,sha256=OMNicZ56NbkqjWAvhNOcw1ormu4KEvKyS4-Kv2mejjc,2228
194
- visidata/loaders/api_bitio.py,sha256=oWP5ougl6ijAqXNE0ZBtR3ortcNdvcLVSXq2lVgpMT8,3274
195
191
  visidata/loaders/api_matrix.py,sha256=eGIT6fuk1MDdf56Or3df9TNrVvXAcH1YkpBnkAH3UPw,5205
196
192
  visidata/loaders/api_reddit.py,sha256=B76dKwowV1huDRZ8HZJKkq_n-9fESMSGHMJ-abM0nLw,12569
197
193
  visidata/loaders/api_zulip.py,sha256=VQhc3D44DAZag4JS12n5IQMIoHaxLdFQ1jvuUthD8UY,9411
@@ -271,14 +267,14 @@ visidata/themes/ascii8.py,sha256=NQnTGNvBDJiwJPYNHXRdbIKGHDkhTJtguyXXHDUUxZY,250
271
267
  visidata/themes/asciimono.py,sha256=V9qbQzsNuEti8_x-lO3Pw1rs0DpQM6Fk4sxAWs-Tm2Q,2484
272
268
  visidata/themes/light.py,sha256=ciE-CPLalaMjKv-0alIPe4rPU_j-lBxpH9g7W-xNGqk,761
273
269
  visidata/vendor/appdirs.py,sha256=bv3lwBYfZNtNPOva2Kg1hB-p2oyp8XXQnOtAGe662ps,24527
274
- visidata-3.1.data/data/share/applications/visidata.desktop,sha256=0AYNevwQhmzguIPskekWPEh94g_blECxdKjtKEwBC04,125
275
- visidata-3.1.data/data/share/man/man1/vd.1,sha256=dWMJZi0u_M81i0dwF1biWPmDyVOqajCZUUjfNQP5IyQ,59117
276
- visidata-3.1.data/data/share/man/man1/visidata.1,sha256=dWMJZi0u_M81i0dwF1biWPmDyVOqajCZUUjfNQP5IyQ,59117
277
- visidata-3.1.data/scripts/vd,sha256=1K_G6-qHOHs5JK6-wfraGXNnAyujDaDJGlw04WXPkQE,86
278
- visidata-3.1.data/scripts/vd2to3.vdx,sha256=NdyyINfa8vvg2LgKfIohMMGcJOCjpx7hqZWv0bUF3EU,183
279
- visidata-3.1.dist-info/LICENSE.gpl3,sha256=jOtLnuWt7d5Hsx6XXB2QxzrSe2sWWh3NgMfFRetluQM,35147
280
- visidata-3.1.dist-info/METADATA,sha256=w0iu_1eD_ylqNx4SOw9ttmww1liPQXIlPaDwQIyIMgs,5312
281
- visidata-3.1.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
282
- visidata-3.1.dist-info/entry_points.txt,sha256=kji--8O48AhK0K4Z74s9b6Ve32kBD-0StD8imzzs12s,50
283
- visidata-3.1.dist-info/top_level.txt,sha256=v2FzJlcgz-eSZeFIviYkZacHZJ8K3fjGbmj2B8QqyNc,9
284
- visidata-3.1.dist-info/RECORD,,
270
+ visidata-3.1.1.data/data/share/applications/visidata.desktop,sha256=0AYNevwQhmzguIPskekWPEh94g_blECxdKjtKEwBC04,125
271
+ visidata-3.1.1.data/data/share/man/man1/vd.1,sha256=dWMJZi0u_M81i0dwF1biWPmDyVOqajCZUUjfNQP5IyQ,59117
272
+ visidata-3.1.1.data/data/share/man/man1/visidata.1,sha256=dWMJZi0u_M81i0dwF1biWPmDyVOqajCZUUjfNQP5IyQ,59117
273
+ visidata-3.1.1.data/scripts/vd,sha256=1K_G6-qHOHs5JK6-wfraGXNnAyujDaDJGlw04WXPkQE,86
274
+ visidata-3.1.1.data/scripts/vd2to3.vdx,sha256=NdyyINfa8vvg2LgKfIohMMGcJOCjpx7hqZWv0bUF3EU,183
275
+ visidata-3.1.1.dist-info/LICENSE.gpl3,sha256=jOtLnuWt7d5Hsx6XXB2QxzrSe2sWWh3NgMfFRetluQM,35147
276
+ visidata-3.1.1.dist-info/METADATA,sha256=gkRVYpo8I8e_pEiVDVbMeGlI9qVyhxsiJCbwoq4Dfpo,5316
277
+ visidata-3.1.1.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
278
+ visidata-3.1.1.dist-info/entry_points.txt,sha256=kji--8O48AhK0K4Z74s9b6Ve32kBD-0StD8imzzs12s,50
279
+ visidata-3.1.1.dist-info/top_level.txt,sha256=v2FzJlcgz-eSZeFIviYkZacHZJ8K3fjGbmj2B8QqyNc,9
280
+ visidata-3.1.1.dist-info/RECORD,,
@@ -1,26 +0,0 @@
1
- from visidata import GuideSheet, vd
2
-
3
- class ErrorsGuide(GuideSheet):
4
- guide_text='''# What was that error?
5
-
6
- Status messages include [:warning]warnings[/] and [:error]errors[/].
7
-
8
- A command may issue a [:warning]warning[/] status and continue running.
9
- A command that [:warning]fails[/] or [:error]errors[/] is aborted.
10
-
11
- ## Investigating errors further
12
-
13
- If a Python Exception like [:error]RuntimeError[/] appears in the sidebar:
14
-
15
- - {help.commands.error_recent}
16
- - {help.commands.errors_all}
17
-
18
- If [:note_type]{vd.options.note_format_exc}[/] or [:error]{vd.options.note_getter_exc}[/] appear inside a cell, it indicates an error happened during calculation, type-conversion, or formatting. When the cursor is on an error cell:
19
-
20
- - {help.commands.error_cell}
21
- '''
22
-
23
-
24
-
25
- vd.addGuide('ErrorsSheet', ErrorsGuide)
26
-
File without changes
@@ -1,102 +0,0 @@
1
-
2
- from visidata import *
3
-
4
- vd.option('bitio_api_key', '', 'API key')
5
-
6
- @VisiData.api
7
- def new_bitio(vd, p):
8
- vd.importExternal('bitdotio')
9
- vd.requireOptions('bitio_api_key', help='https://docs.bit.io/docs/connecting-via-the-api')
10
- return BitioReposSheet(p.name, source=p)
11
-
12
- vd.openhttp_bitio = vd.new_bitio
13
-
14
- @VisiData.lazy_property
15
- def bitio_client(vd):
16
- import bitdotio
17
- return bitdotio.bitdotio(vd.options.bitio_api_key)
18
-
19
- @VisiData.api
20
- def bitio_api(vd, path, method, **kwargs):
21
- t = vd.bitio_client.api_client.call_api(path, method,
22
- header_params={'Accept': 'application/json',
23
- 'Authorization': 'Bearer '+vd.bitio_client.access_token,
24
- 'Content-Type': 'application/json'}, async_req=True, body=kwargs)
25
- if not t.successful():
26
- vd.warning(resp['Reason'])
27
- return t.get()
28
-
29
-
30
- class BitioReposSheet(Sheet):
31
- rowtype = 'repos'
32
- columns = [
33
- AttrColumn('name'),
34
- AttrColumn('creator'),
35
- AttrColumn('owner'),
36
- AttrColumn('bytes', type=int, width=0),
37
- AttrColumn('collaborators'),
38
- AttrColumn('description'),
39
- AttrColumn('documentation'),
40
- AttrColumn('endpoints'),
41
- AttrColumn('is_private'),
42
- AttrColumn('license'),
43
- AttrColumn('query_count'),
44
- AttrColumn('stars'),
45
- AttrColumn('tables'),
46
- AttrColumn('url'),
47
- AttrColumn('watchers'),
48
- ]
49
- defer = True
50
- def iterload(self):
51
- yield from vd.bitio_client.list_repos(self.source.name)
52
-
53
-
54
- @asyncthread
55
- def putChanges(self):
56
- adds, mods, dels = self.getDeferredChanges()
57
- for row in dels.values():
58
- vd.bitio_api(f'/users/{self.source.name}/repos/{row.name}/', 'DELETE')
59
-
60
- for row, rowmods in Progress(list(mods.values()), gerund="updating"):
61
- kwargs = {col.name: val for col, val in rowmods.items()}
62
- vd.bitio_api(f'/users/{self.source.name}/repos/{row.name}/', 'PATCH', **kwargs)
63
-
64
- def openRow(self, row):
65
- return BitioRepoSheet(self.source.name, row.name, source=row)
66
-
67
-
68
- class BitioRepoSheet(Sheet):
69
- rowtype = 'tables'
70
- columns = [
71
- AttrColumn('url'),
72
- AttrColumn('current_name'),
73
- AttrColumn('description'),
74
- AttrColumn('columns'),
75
- AttrColumn('num_records', type=int),
76
- AttrColumn('bytes', type=int),
77
- AttrColumn('repo'),
78
- AttrColumn('documentation'),
79
- ]
80
- def iterload(self):
81
- yield from vd.bitio_client.list_tables(self.source.owner.split('/')[-2], self.source.name)
82
-
83
- def openRow(self, row):
84
- username = row.repo.split('/')[-4]
85
- repo = row.repo.split('/')[-2]
86
- return BitioTable(username, repo, source=row)
87
-
88
-
89
- class BitioTable(Sheet):
90
- def iterload(self):
91
- username = self.source.repo.split('/')[-4]
92
- repo = self.source.repo.split('/')[-2]
93
- conn = vd.bitio_client.get_connection()
94
- with conn.cursor() as cur:
95
- cur.execute(f'SELECT * FROM "{username}/{repo}"."{self.source.current_name}"')
96
- r = cur.fetchone()
97
- if r:
98
- yield r
99
- self.columns = []
100
- for c in vd.postgresGetColumns(cur):
101
- self.addColumn(c)
102
- yield from cur
visidata/stored_prop.py DELETED
@@ -1,38 +0,0 @@
1
- from functools import wraps
2
- import json
3
- import atexit
4
-
5
- from visidata import vd, VisiData, Path
6
-
7
- vd.stored_properties = {}
8
-
9
- @VisiData.class_api
10
- @classmethod
11
- def stored_property(vdcls, f):
12
- def _save_on_exit():
13
- if vd.stored_properties.get(f, None):
14
- p = Path(vd.options.visidata_dir)/(f.__name__ + '.json')
15
- with p.open(mode='w', encoding='utf-8') as fp:
16
- fp.write(json.dumps(vd.stored_properties[f]))
17
-
18
- @property
19
- @wraps(f)
20
- def _decorator(*args, **kwargs):
21
- 'Read persisted value from filesystem if available; otherwise call the decorated function to create a new instance.'
22
- value = vd.stored_properties.get(f, None)
23
- if value is not None:
24
- return value
25
-
26
- p = Path(vd.options.visidata_dir)/(f.__name__ + '.json')
27
- if p.exists():
28
- value = json.loads(p.open(encoding='utf-8-sig').read())
29
-
30
- if value is None:
31
- value = f(*args, **kwargs)
32
-
33
- vd.stored_properties[f] = value
34
- return value
35
-
36
- atexit.register(_save_on_exit)
37
- setattr(vdcls, f.__name__, _decorator)
38
- return _decorator
File without changes