visidata: Import visidata-1.5.2 as wip/visidata
A curses interface for exploring and arranging tabular data usable via any remote shell which has Python3 installed. A few interesting commands: - Shift-F pushes a frequency analysis of the current column - = creates a new column from the given Python expression (use column names to refer to their contents) - . creates new columns from the match groups of the given regex Still not working with NetBSD curses(3) due get_wch(3) usage, probably exposes a more general devel/py-curses problem.
This commit is contained in:
parent
765c04ff08
commit
87667c8739
1
Makefile
1
Makefile
|
@ -4926,6 +4926,7 @@ SUBDIR+= virtualjaguar-git
|
||||||
SUBDIR+= virus
|
SUBDIR+= virus
|
||||||
SUBDIR+= vis
|
SUBDIR+= vis
|
||||||
SUBDIR+= vis-editor
|
SUBDIR+= vis-editor
|
||||||
|
SUBDIR+= visidata
|
||||||
SUBDIR+= vista-fonts
|
SUBDIR+= vista-fonts
|
||||||
SUBDIR+= vkeybd
|
SUBDIR+= vkeybd
|
||||||
SUBDIR+= vlevel
|
SUBDIR+= vlevel
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
A curses interface for exploring and arranging tabular data
|
||||||
|
usable via any remote shell which has Python3 installed.
|
||||||
|
|
||||||
|
A few interesting commands:
|
||||||
|
- Shift-F pushes a frequency analysis of the current column
|
||||||
|
- = creates a new column from the given Python expression (use column names to
|
||||||
|
refer to their contents)
|
||||||
|
- . creates new columns from the match groups of the given regex
|
|
@ -0,0 +1,29 @@
|
||||||
|
# $NetBSD$
|
||||||
|
|
||||||
|
DISTNAME= visidata-1.5.2
|
||||||
|
CATEGORIES= textproc
|
||||||
|
MASTER_SITES= ${MASTER_SITE_PYPI:=v/visidata/}
|
||||||
|
|
||||||
|
MAINTAINER= pkgsrc-users@NetBSD.org
|
||||||
|
HOMEPAGE= https://visidata.org/
|
||||||
|
COMMENT= curses interface for exploring and arranging tabular data
|
||||||
|
LICENSE= gnu-gpl-v3
|
||||||
|
|
||||||
|
DEPENDS+= ${PYPKGPREFIX}-curses-[0-9]*:../../devel/py-curses
|
||||||
|
DEPENDS+= ${PYPKGPREFIX}-dateutil-[0-9]*:../../time/py-dateutil
|
||||||
|
DEPENDS+= ${PYPKGPREFIX}-openpyxl-[0-9]*:../../textproc/py-openpyxl
|
||||||
|
|
||||||
|
SUBST_CLASSES+= setuppy
|
||||||
|
SUBST_STAGE.setuppy= pre-configure
|
||||||
|
SUBST_MESSAGE.setuppy= Adjusting hard-coded man path
|
||||||
|
SUBST_FILES.setuppy= setup.py
|
||||||
|
SUBST_SED.setuppy+= -e 's,share/man,${PKGMANDIR},g'
|
||||||
|
|
||||||
|
USE_LANGUAGES= # none
|
||||||
|
|
||||||
|
# Only for Python 3.x
|
||||||
|
PYTHON_VERSIONS_INCOMPATIBLE= 27
|
||||||
|
|
||||||
|
.include "../../lang/python/application.mk"
|
||||||
|
.include "../../lang/python/egg.mk"
|
||||||
|
.include "../../mk/bsd.pkg.mk"
|
|
@ -0,0 +1,193 @@
|
||||||
|
@comment $NetBSD$
|
||||||
|
bin/vd
|
||||||
|
${PYSITELIB}/${EGG_INFODIR}/PKG-INFO
|
||||||
|
${PYSITELIB}/${EGG_INFODIR}/SOURCES.txt
|
||||||
|
${PYSITELIB}/${EGG_INFODIR}/dependency_links.txt
|
||||||
|
${PYSITELIB}/${EGG_INFODIR}/requires.txt
|
||||||
|
${PYSITELIB}/${EGG_INFODIR}/top_level.txt
|
||||||
|
${PYSITELIB}/visidata/__init__.py
|
||||||
|
${PYSITELIB}/visidata/__init__.pyc
|
||||||
|
${PYSITELIB}/visidata/__init__.pyo
|
||||||
|
${PYSITELIB}/visidata/_profile.py
|
||||||
|
${PYSITELIB}/visidata/_profile.pyc
|
||||||
|
${PYSITELIB}/visidata/_profile.pyo
|
||||||
|
${PYSITELIB}/visidata/_types.py
|
||||||
|
${PYSITELIB}/visidata/_types.pyc
|
||||||
|
${PYSITELIB}/visidata/_types.pyo
|
||||||
|
${PYSITELIB}/visidata/aggregators.py
|
||||||
|
${PYSITELIB}/visidata/aggregators.pyc
|
||||||
|
${PYSITELIB}/visidata/aggregators.pyo
|
||||||
|
${PYSITELIB}/visidata/asyncthread.py
|
||||||
|
${PYSITELIB}/visidata/asyncthread.pyc
|
||||||
|
${PYSITELIB}/visidata/asyncthread.pyo
|
||||||
|
${PYSITELIB}/visidata/canvas.py
|
||||||
|
${PYSITELIB}/visidata/canvas.pyc
|
||||||
|
${PYSITELIB}/visidata/canvas.pyo
|
||||||
|
${PYSITELIB}/visidata/clipboard.py
|
||||||
|
${PYSITELIB}/visidata/clipboard.pyc
|
||||||
|
${PYSITELIB}/visidata/clipboard.pyo
|
||||||
|
${PYSITELIB}/visidata/cmdlog.py
|
||||||
|
${PYSITELIB}/visidata/cmdlog.pyc
|
||||||
|
${PYSITELIB}/visidata/cmdlog.pyo
|
||||||
|
${PYSITELIB}/visidata/colors.py
|
||||||
|
${PYSITELIB}/visidata/colors.pyc
|
||||||
|
${PYSITELIB}/visidata/colors.pyo
|
||||||
|
${PYSITELIB}/visidata/commands.tsv
|
||||||
|
${PYSITELIB}/visidata/data.py
|
||||||
|
${PYSITELIB}/visidata/data.pyc
|
||||||
|
${PYSITELIB}/visidata/data.pyo
|
||||||
|
${PYSITELIB}/visidata/describe.py
|
||||||
|
${PYSITELIB}/visidata/describe.pyc
|
||||||
|
${PYSITELIB}/visidata/describe.pyo
|
||||||
|
${PYSITELIB}/visidata/dev.py
|
||||||
|
${PYSITELIB}/visidata/dev.pyc
|
||||||
|
${PYSITELIB}/visidata/dev.pyo
|
||||||
|
${PYSITELIB}/visidata/diff.py
|
||||||
|
${PYSITELIB}/visidata/diff.pyc
|
||||||
|
${PYSITELIB}/visidata/diff.pyo
|
||||||
|
${PYSITELIB}/visidata/errors.py
|
||||||
|
${PYSITELIB}/visidata/errors.pyc
|
||||||
|
${PYSITELIB}/visidata/errors.pyo
|
||||||
|
${PYSITELIB}/visidata/freeze.py
|
||||||
|
${PYSITELIB}/visidata/freeze.pyc
|
||||||
|
${PYSITELIB}/visidata/freeze.pyo
|
||||||
|
${PYSITELIB}/visidata/freqtbl.py
|
||||||
|
${PYSITELIB}/visidata/freqtbl.pyc
|
||||||
|
${PYSITELIB}/visidata/freqtbl.pyo
|
||||||
|
${PYSITELIB}/visidata/graph.py
|
||||||
|
${PYSITELIB}/visidata/graph.pyc
|
||||||
|
${PYSITELIB}/visidata/graph.pyo
|
||||||
|
${PYSITELIB}/visidata/join.py
|
||||||
|
${PYSITELIB}/visidata/join.pyc
|
||||||
|
${PYSITELIB}/visidata/join.pyo
|
||||||
|
${PYSITELIB}/visidata/loaders/__init__.py
|
||||||
|
${PYSITELIB}/visidata/loaders/__init__.pyc
|
||||||
|
${PYSITELIB}/visidata/loaders/__init__.pyo
|
||||||
|
${PYSITELIB}/visidata/loaders/_pandas.py
|
||||||
|
${PYSITELIB}/visidata/loaders/_pandas.pyc
|
||||||
|
${PYSITELIB}/visidata/loaders/_pandas.pyo
|
||||||
|
${PYSITELIB}/visidata/loaders/csv.py
|
||||||
|
${PYSITELIB}/visidata/loaders/csv.pyc
|
||||||
|
${PYSITELIB}/visidata/loaders/csv.pyo
|
||||||
|
${PYSITELIB}/visidata/loaders/fixed_width.py
|
||||||
|
${PYSITELIB}/visidata/loaders/fixed_width.pyc
|
||||||
|
${PYSITELIB}/visidata/loaders/fixed_width.pyo
|
||||||
|
${PYSITELIB}/visidata/loaders/graphviz.py
|
||||||
|
${PYSITELIB}/visidata/loaders/graphviz.pyc
|
||||||
|
${PYSITELIB}/visidata/loaders/graphviz.pyo
|
||||||
|
${PYSITELIB}/visidata/loaders/hdf5.py
|
||||||
|
${PYSITELIB}/visidata/loaders/hdf5.pyc
|
||||||
|
${PYSITELIB}/visidata/loaders/hdf5.pyo
|
||||||
|
${PYSITELIB}/visidata/loaders/html.py
|
||||||
|
${PYSITELIB}/visidata/loaders/html.pyc
|
||||||
|
${PYSITELIB}/visidata/loaders/html.pyo
|
||||||
|
${PYSITELIB}/visidata/loaders/http.py
|
||||||
|
${PYSITELIB}/visidata/loaders/http.pyc
|
||||||
|
${PYSITELIB}/visidata/loaders/http.pyo
|
||||||
|
${PYSITELIB}/visidata/loaders/json.py
|
||||||
|
${PYSITELIB}/visidata/loaders/json.pyc
|
||||||
|
${PYSITELIB}/visidata/loaders/json.pyo
|
||||||
|
${PYSITELIB}/visidata/loaders/markdown.py
|
||||||
|
${PYSITELIB}/visidata/loaders/markdown.pyc
|
||||||
|
${PYSITELIB}/visidata/loaders/markdown.pyo
|
||||||
|
${PYSITELIB}/visidata/loaders/mbtiles.py
|
||||||
|
${PYSITELIB}/visidata/loaders/mbtiles.pyc
|
||||||
|
${PYSITELIB}/visidata/loaders/mbtiles.pyo
|
||||||
|
${PYSITELIB}/visidata/loaders/pcap.py
|
||||||
|
${PYSITELIB}/visidata/loaders/pcap.pyc
|
||||||
|
${PYSITELIB}/visidata/loaders/pcap.pyo
|
||||||
|
${PYSITELIB}/visidata/loaders/png.py
|
||||||
|
${PYSITELIB}/visidata/loaders/png.pyc
|
||||||
|
${PYSITELIB}/visidata/loaders/png.pyo
|
||||||
|
${PYSITELIB}/visidata/loaders/postgres.py
|
||||||
|
${PYSITELIB}/visidata/loaders/postgres.pyc
|
||||||
|
${PYSITELIB}/visidata/loaders/postgres.pyo
|
||||||
|
${PYSITELIB}/visidata/loaders/sas.py
|
||||||
|
${PYSITELIB}/visidata/loaders/sas.pyc
|
||||||
|
${PYSITELIB}/visidata/loaders/sas.pyo
|
||||||
|
${PYSITELIB}/visidata/loaders/shp.py
|
||||||
|
${PYSITELIB}/visidata/loaders/shp.pyc
|
||||||
|
${PYSITELIB}/visidata/loaders/shp.pyo
|
||||||
|
${PYSITELIB}/visidata/loaders/spss.py
|
||||||
|
${PYSITELIB}/visidata/loaders/spss.pyc
|
||||||
|
${PYSITELIB}/visidata/loaders/spss.pyo
|
||||||
|
${PYSITELIB}/visidata/loaders/sqlite.py
|
||||||
|
${PYSITELIB}/visidata/loaders/sqlite.pyc
|
||||||
|
${PYSITELIB}/visidata/loaders/sqlite.pyo
|
||||||
|
${PYSITELIB}/visidata/loaders/tsv.py
|
||||||
|
${PYSITELIB}/visidata/loaders/tsv.pyc
|
||||||
|
${PYSITELIB}/visidata/loaders/tsv.pyo
|
||||||
|
${PYSITELIB}/visidata/loaders/ttf.py
|
||||||
|
${PYSITELIB}/visidata/loaders/ttf.pyc
|
||||||
|
${PYSITELIB}/visidata/loaders/ttf.pyo
|
||||||
|
${PYSITELIB}/visidata/loaders/xlsx.py
|
||||||
|
${PYSITELIB}/visidata/loaders/xlsx.pyc
|
||||||
|
${PYSITELIB}/visidata/loaders/xlsx.pyo
|
||||||
|
${PYSITELIB}/visidata/loaders/xml.py
|
||||||
|
${PYSITELIB}/visidata/loaders/xml.pyc
|
||||||
|
${PYSITELIB}/visidata/loaders/xml.pyo
|
||||||
|
${PYSITELIB}/visidata/loaders/yaml.py
|
||||||
|
${PYSITELIB}/visidata/loaders/yaml.pyc
|
||||||
|
${PYSITELIB}/visidata/loaders/yaml.pyo
|
||||||
|
${PYSITELIB}/visidata/loaders/zip.py
|
||||||
|
${PYSITELIB}/visidata/loaders/zip.pyc
|
||||||
|
${PYSITELIB}/visidata/loaders/zip.pyo
|
||||||
|
${PYSITELIB}/visidata/man/vd.1
|
||||||
|
${PYSITELIB}/visidata/metasheets.py
|
||||||
|
${PYSITELIB}/visidata/metasheets.pyc
|
||||||
|
${PYSITELIB}/visidata/metasheets.pyo
|
||||||
|
${PYSITELIB}/visidata/motd.py
|
||||||
|
${PYSITELIB}/visidata/motd.pyc
|
||||||
|
${PYSITELIB}/visidata/motd.pyo
|
||||||
|
${PYSITELIB}/visidata/movement.py
|
||||||
|
${PYSITELIB}/visidata/movement.pyc
|
||||||
|
${PYSITELIB}/visidata/movement.pyo
|
||||||
|
${PYSITELIB}/visidata/namedlist.py
|
||||||
|
${PYSITELIB}/visidata/namedlist.pyc
|
||||||
|
${PYSITELIB}/visidata/namedlist.pyo
|
||||||
|
${PYSITELIB}/visidata/path.py
|
||||||
|
${PYSITELIB}/visidata/path.pyc
|
||||||
|
${PYSITELIB}/visidata/path.pyo
|
||||||
|
${PYSITELIB}/visidata/pivot.py
|
||||||
|
${PYSITELIB}/visidata/pivot.pyc
|
||||||
|
${PYSITELIB}/visidata/pivot.pyo
|
||||||
|
${PYSITELIB}/visidata/pyobj.py
|
||||||
|
${PYSITELIB}/visidata/pyobj.pyc
|
||||||
|
${PYSITELIB}/visidata/pyobj.pyo
|
||||||
|
${PYSITELIB}/visidata/regex.py
|
||||||
|
${PYSITELIB}/visidata/regex.pyc
|
||||||
|
${PYSITELIB}/visidata/regex.pyo
|
||||||
|
${PYSITELIB}/visidata/search.py
|
||||||
|
${PYSITELIB}/visidata/search.pyc
|
||||||
|
${PYSITELIB}/visidata/search.pyo
|
||||||
|
${PYSITELIB}/visidata/selection.py
|
||||||
|
${PYSITELIB}/visidata/selection.pyc
|
||||||
|
${PYSITELIB}/visidata/selection.pyo
|
||||||
|
${PYSITELIB}/visidata/shell.py
|
||||||
|
${PYSITELIB}/visidata/shell.pyc
|
||||||
|
${PYSITELIB}/visidata/shell.pyo
|
||||||
|
${PYSITELIB}/visidata/slide.py
|
||||||
|
${PYSITELIB}/visidata/slide.pyc
|
||||||
|
${PYSITELIB}/visidata/slide.pyo
|
||||||
|
${PYSITELIB}/visidata/tidydata.py
|
||||||
|
${PYSITELIB}/visidata/tidydata.pyc
|
||||||
|
${PYSITELIB}/visidata/tidydata.pyo
|
||||||
|
${PYSITELIB}/visidata/transpose.py
|
||||||
|
${PYSITELIB}/visidata/transpose.pyc
|
||||||
|
${PYSITELIB}/visidata/transpose.pyo
|
||||||
|
${PYSITELIB}/visidata/urlcache.py
|
||||||
|
${PYSITELIB}/visidata/urlcache.pyc
|
||||||
|
${PYSITELIB}/visidata/urlcache.pyo
|
||||||
|
${PYSITELIB}/visidata/utils.py
|
||||||
|
${PYSITELIB}/visidata/utils.pyc
|
||||||
|
${PYSITELIB}/visidata/utils.pyo
|
||||||
|
${PYSITELIB}/visidata/vdtui.py
|
||||||
|
${PYSITELIB}/visidata/vdtui.pyc
|
||||||
|
${PYSITELIB}/visidata/vdtui.pyo
|
||||||
|
${PYSITELIB}/visidata/vimkeys.py
|
||||||
|
${PYSITELIB}/visidata/vimkeys.pyc
|
||||||
|
${PYSITELIB}/visidata/vimkeys.pyo
|
||||||
|
${PYSITELIB}/visidata/zscroll.py
|
||||||
|
${PYSITELIB}/visidata/zscroll.pyc
|
||||||
|
${PYSITELIB}/visidata/zscroll.pyo
|
||||||
|
man/man1/vd.1
|
|
@ -0,0 +1,6 @@
|
||||||
|
- Running `vd' ends up with a:
|
||||||
|
|
||||||
|
AttributeError: '_curses.window' object has no attribute 'get_wch'
|
||||||
|
|
||||||
|
It seems that curses(3) has a get_wch(3) but py-curses does not recognize it.
|
||||||
|
Investigate further (that's probably a general py-curses problem)!
|
|
@ -0,0 +1,7 @@
|
||||||
|
$NetBSD$
|
||||||
|
|
||||||
|
SHA1 (visidata-1.5.2.tar.gz) = 67ae888ef6f7a385bb5f8bf2bd446252ba9959e8
|
||||||
|
RMD160 (visidata-1.5.2.tar.gz) = fa08b1d1434f1624bbe0789cd5725c0bff20c407
|
||||||
|
SHA512 (visidata-1.5.2.tar.gz) = df236bb74909b3d0bbff012d20b01546ca9058038877a12e94fd2274d7b6465e68c0b652e37776e0b693916070c7185a773d54ead291c996bbb32625897bd4df
|
||||||
|
Size (visidata-1.5.2.tar.gz) = 123785 bytes
|
||||||
|
SHA1 (patch-visidata_vdtui.py) = 714357a9b384329b8527f0d98a469e04afa8303d
|
|
@ -0,0 +1,23 @@
|
||||||
|
$NetBSD$
|
||||||
|
|
||||||
|
- Make curses(3) mouse support optional
|
||||||
|
|
||||||
|
--- visidata/vdtui.py.orig 2019-01-13 00:28:25.000000000 +0000
|
||||||
|
+++ visidata/vdtui.py
|
||||||
|
@@ -2817,9 +2817,13 @@ colors = ColorMaker()
|
||||||
|
def setupcolors(stdscr, f, *args):
|
||||||
|
curses.raw() # get control keys instead of signals
|
||||||
|
curses.meta(1) # allow "8-bit chars"
|
||||||
|
- curses.mousemask(-1) # even more than curses.ALL_MOUSE_EVENTS
|
||||||
|
- curses.mouseinterval(0) # very snappy but does not allow for [multi]click
|
||||||
|
- curses.mouseEvents = {}
|
||||||
|
+
|
||||||
|
+ try:
|
||||||
|
+ curses.mousemask(-1) # even more than curses.ALL_MOUSE_EVENTS
|
||||||
|
+ curses.mouseinterval(0) # very snappy but does not allow for [multi]click
|
||||||
|
+ curses.mouseEvents = {}
|
||||||
|
+ except:
|
||||||
|
+ pass
|
||||||
|
|
||||||
|
for k in dir(curses):
|
||||||
|
if k.startswith('BUTTON') or k == 'REPORT_MOUSE_POSITION':
|
Loading…
Reference in New Issue