Visidata

Latest version: v3.1.1

Safety actively analyzes 681844 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 11

3.1

Not secure
- drop support for Python 3.7 2231
- [vdsql] bump ibis dep to v8
- [test] fix minimum pandas version to 1.5.3

Improvements

- [sidebar] Ctrl+G to cycle sidebar (including off) in both main and input modes 2202
- [sidebar help] rightmost statusline ({vd.sidebarStatus}) shows number of help sidebars (clickable to toggle sidebar)
- [sheet tabs] left statusline sheet tabs (clickable to jump to sheet) 2030
- [aggregators] immediate async summary of column aggregators on bottom rows 2209
- [graph] reflines at user-defined x or y 2487
- [guides] add several guides (thanks to thejud reagle ajkerrigan anjakefala)
- [expressions] much cleanup
- `row["colname"]` to refer to a specific column by name, without needing to be a valid identifier 2539
- `_row` is underlying row object
- support curcol in g= and select and search expressions 2524
- $curcol for addcol-sh
- globals include most symbols from math by default; also datetime and date both as the vd.date subclass
- [input] memory variables included as autocomplete keys 2509

Tweaks

- [window] pad windows with None so all are same size 2279
- [history] create visidata_dir (default ~/.visidata/) if not exists to enable input history by default 2298
- [cli] "-p -" replays stdin as a .vdj file
- [guide] allow front matter in guide .md files; "sheettype" metadata to associate with a sheet
- [cmdpalette] do not fuzzymatch keys that start with _
- [interface] hidden columns minutely visible past right of sheet; `_` to re-expand 2394
- [interface] record all commands in macro (even replay=False); add status indicator when recording 2435
- [interface] clickable cell error symbol
- [interface] default theme color improvements, including a slight bg glow for cursor column
- [aggregators] add keymin; handle corner cases 2308
- many small interface improvements: error messages, clarifications, edge cases, guardrails. (thanks to midichef for many of these)

Options

- max_rows to stop loading early 2356
- [xlsx] add xlsx_color_cells (default: True); set to False to disable xlsx cell colorizers
- regex_skip is now replayable
- disp_multiline_focus to only expand cursor row when multiline enabled 2205
- disp_expert (int); set to 1 to enable advanced interface elements and unhide advanced columns by default; set to 5 (or greater) to disable input palette and help sidebars
- pass disp_wrap_* to textwrap for multiline display 2506
- rename note_* to disp_note_* 2381
- separate color_longname into color_longname_status and color_longname_guide

Commands

- addcol-histogram to make histogram from any numeric column 2208
- exec-longname-simple for single-line (non-palette) input
- go-col-name to go to a column by name
- [dir] open-row-filetype to open row using the given filetype
- [graph] plot-source-selected on ColumnsSheet 2424
- [experimental] sort-selected-asc/desc 2295
- deprecate view-cell 2381
- unfurl finishes with column cursor on unfurled column

API

- [command] addCommand(..., replay=False) to not add to cmdlog
- [sort] add Sheet.ordering property as list[tuple[Column,bool]] 2295
- [path] note nonstandard behavior of RepeatFile.read()
- [input] allow different record kwarg for different fields in inputMultiple

Loaders

- [msgpack] new loader 2419
- [grep] new loader for output of grep/ripgrep 2443

- [csv] display loading/saving progress
- [csv] handle more dialect parameters from Sniffer
- [csv tsv] remove default regex_skip of hash lines 2458
- [eml] save email parts without filenames 2376
- [fixed] skip separating space in fixed_width loader 2255
- [json] remove column type inference 2475 2131
- [json] warn if some cols/sheets were not saved 2199
- [markdown] use col_href as link for col
- [ods] strip empty cells/rows from end 2440
- [rec] roundtrippable
- [sas] allow edits to source sheet
- [save] derived null in text formats should be empty string 2476
- [save] handle empty delimiter when options.safety_first
- [text] do not strip lines of whitespace 2328
- [tsv] allow empty regex_skip
- [tsv] allow saving with NUL delimiters
- [tsv] if field or row delimiter is NUL, disable regex skipping
- [vds] allow sheets with no rows 2342
- [xml] save XML as utf-8 instead of utf-8-sig 2520

Bugfixes

- [command] addcol-sh: ensure arguments are properly quoted 2415
- [selection] make toggle thread-safe for FreqTableSheet 1671
- [undo] prevent undo of command that created sheet 2244
- [undo] cmdlog always use rowidx, not rowkey 2246
- [cliptext] fix onclick url 2466
- [mouse] fix mouse-disable 2379
- [sort] do not modify Sheet._ordering 2254
- [bindings] do not re-prettykeys; call prettykeys for all bindkey() too 2247
- [terminal] add no-op for ANSI focus-in and focus-in 2247
- [sort] add _ordering to Sheet class instead of __init__ 2190
- [transpose] allow to set values 2548
- [sheet] make 20 tabs clickable 2030
- [macro] do not record macro inner steps 2531
- [filetype] use correct case for file extension determination 2263
- [replay] stop stderr batch progress when interactive 2251
- [replay] wait for replay to start before stderr progress 2251
- [replay] fix rare duplication of replay cmds 2392
- and many more

3.0.2

Not secure
Fixes and minor improvements

- [cli] add `--guides` to open the guide index
- [cmdpalette] only first 10 suggestions should have shortcut keys 2242
- [draw] use default bg on col hdr sep
- [input] draw help sidebar on top of sheet/updater 2241
- [graph] sort by x and y columns when diving (PR by midichef 2226)
- [guides] improve formatting of command and options in sidebar + guides
- [replay] stop stderr batch progress when entering interactive mode 2251
- [shell] clean up DirSheet sidebar
- [sidebar] grab user's keystroke of sidebar-toggle for helpstring 2250
- [sort] a better fix for maintaining sort ordering on sheet copies 2190 2254
- [tests] add "test" extras for installing PyPI packages needed to run tests

3.0.1

Not secure
Fixes and minor improvements

- [color] add `color_longname` to use instead of `color_keystrokes` 2219
- [columns] add `displayer` attribute to saved column state
- [cmdpalette] Enter executes first row, if partially typed out 2219
- [cmdpalette] add sidebar for longname and aggregator palette 2219
- [guide] add `show-command-info` to display command info for a keystroke 2228
- [keys] add `*BtnUp` pretty keys for `BUTTON_RELEASED` 2219

- [dup-selected] dup-selected should unselect all rows in copied sheet 2225
- [expr] fix KeyError crash with invalid inputs in `expr` for Python 3.12 2179
- [help] fix columns sheet sidebar
- [loaders html] ignore parsing exceptions on invalid urls 2227
- [sheets] limit end separators to rightmost visible column of sheet (PR by midichef 2237)
- [sidebar] fix fmtstr for case where source is BaseSheet 2239
- [sort] maintain ordering on sheet copies 2190
- [test] update unit tests to use packaged sample.tsv and benchmark.csv 2218
- [threads] do not try to cancel already finished thread 2235

- [tests] add `assert-expr` and `assert-expr-row` to evaluate Python expressions, and assert result is truthy
- [tests] parametrize feature tests (PR by ajkerrigan 2230)

3.0

Not secure
- [reorg] move independent modules into visidata/{features|experimental|themes}
- [sidebar] add sidebar 2064
- 1733 for full description/discussion
- will contain a stack list of status messages
- color syntax is [:bold]footext[/]
- supports `[:code]`, `[:bold]`, `[:italic]`, `[:underline]`, `[:onclick]` (makes a clickable link), `[heading]`
- [:] at terminal clears; [/] at terminal pops
- supports basic markdown for colouring
- toggle with `sidebar-toggle` (bound to `b`)
- make bottom msg entirely clickable
- make dedent and header parsing standard
- add `options.disp_sidebar`
- make sheet name clickable to open **Sheets Stack**
- make options clickable
- add `open-sidebar` (bound to `gb`) to open sidebar in new sheet
- display sheet and feature help documentation in sidebar
- added bundles of Guide Sheets
- open Guide Sheets into a full VisiData sheet with `Enter`
- added `options.disp_help` (default: 2), an integer and to set novice/expert mode. (1961)
When `disp_help` is:
- -1: status messages aren't shown
- 0: no help is shown
- 1: sidebar sheet help is shown
- 2: help is shown for the input widget on the sidebar (this was condensed and moved from the former input help panel) 2085 1961
- put input help on sidebar; `disp_help` from -1 to 3
- mark options to be excluded if `disp_help` greater than `option.max_help`
- add contextual help while editing options in **OptionsSheet**
- `Ctrl+G` cycles input help sidebar
- [guide] add GuideIndex toc and open-guide-index
- add guides for macros, selection, errors
- [filetype] add guesser to sniff filetype from data 130 1759 1881 1880 1883 1978
- add support for Python 3.12 1934
- migrate pkg_resources to importlib_resources (PR by zormit and anjakefala 1968 1911)
- [threads] no new threads while prev cmd still running 1148
- [batch] add progress every half second to batch mode 1182
- [replay] implemented a single-thread replay mechanism 1575 2102
- much simpler architecturally, but loses the ability to pause/resume, and show 1/N progress (now just shows number of queued commands remaining).
- replay in general should be more stable and possibly faster.
- Ctrl+N is now no-op for similar functionality to replay-advance
- replay-advance command itself is removed
- removed options.replay_movement and its functionality
- options.replay_wait (-w on CLI) now works by setting the curses timeout, which will affect the display update frequency for all async commands. previously was hard-coded. try -w 0.001 while loading a big file to see a very rapid update.
- add options.overwrite='n' mode 1805
- replace `options.confirm_overwrite` with `options.overwrite`, which can be
'n' (no/never), 'y' (yes/always), 'c' (confirm)
- add vd.confirmOverwrite()
- inputPath/inputFilename will not suggest the existing value or complete filenames if overwrite not y or c
- add --ro/--readonly cli flag (opposite of existing -y)
- add [RO] readonly marker on right status after [M] modified
- add command palette (PR by moritz 2059 247)
- press Space to exec command by longname and bring up command palette
- type to match by longname and/or description
- uses fzf's fuzzymatch algo
- press Tab/Shift+Tab to cycle through commands 2154
- Enter to execute highlighted command
- 0-9 to execute numbered command
- `options.disp_cmdpal_max` for number of suggestions
- `options.color_cmdpalette` for base color
- `chooseAggregators` and `jointype` also use palette 1027 2195
- chooseAggregators still allows selection of multiple aggregators
- `options.color_match` is color for matching chars in palette chooser
- convert input history to use StoredList 2142
- rename lastInputs.jsonl to input_history.jsonl 2142
- remove `options.input_history`
- will automatically record if `options.visidata_dir` exists
- convert macros to use StoredList 2142
- cannot save macros if `options.visidata_dir` does not exist
- rename `options.visidata_dir`/macros.tsv' to `options.visidata_dir`/macros.jsonl'
- add vd2to3.vdx script to port from 2.x macros to 3.x macros

- [aggregators] sum uses start value from type of first value for Python 3.8+ 1996 1999 2009
- [build] add a .desktop for VisiData 1738
- [choose] add type for join/aggregators history 2075
- [cli] add `-i` to run interactive mode after batch 1714
- [clipboard] implement a more universal paste that uses positional columns 1377
- [columns] add `setcol-precision-more` and `-less` 1609 1650
- works on float, floatsi, currency, date columns
- [commands] allow space-seperated keystrokes 2067
- [confirm] make yes/no buttons clickable 1740 2075
- [cosmetic] standardize `__repr__` for sheets and columns (PR by cool-RR 2091 1757)
- [describe] default width=10 for describe columns
- [dir] set name of '.' to current dir name 1775
- [dir] set name relative to previously loaded directory 1775
- [dir] get default save name from sheet name 1775
- [dir] rename `options.dir_recurse:bool` to `options.dir_depth:int` 1715
- [display] add `resize-height-input` (`zv`) and `resize-height-max` (`gzv`) 1307
- [encoding] use `options.save_encoding` for lsv, geojson, texttable savers
- [encoding] change default options.encoding to utf-8-sig to detect/remove BOM 200 908 909 1711
- [expand] change default depth of expand-col(s)-depth to 0 (PR by cool-RR 1809)
- [expand] change sampling warning to aside 1054 2066
- [expand] ignore non-cursor types in mixed-type columns
- [features] procmgr to view/manage processes, memory/cpu stats
- [features] ping to traceroute a hostip
- [features] add `addcol-histogram` 2052
- display a histogram-like column for any column of ints
- [features] add `contract-cols-depth` etc (bound to `g)`, `z)`, `gz)` 1695
- [features] add contract-source-cols bound to ) 1702
- [features] reload-modified calls `reload_rows`, adding support for tail 1686
- [features] add `addcol-audiometadata` from vmutagen plugin
- adds metadata column for audio files
- [features] to **DirSheet** add `sysopen-mailcap`
- opens using mailcap entry for current row, guessing mimetype
- [features] add `addcol-source` to add current column to source sheet 988
- [features] incorporate dedupe plugin by jsvine
- `select-duplicate-rows` selects each row in current sheet that is a duplicate of a prior row
- `dedupe-rows` pushes a new sheet with only non-duplicate rows of current sheet
- [features] incorporate normcol (by jsvine)
- `normalize-col-names` normalizes the names of all *non-hidden* columns
- [features] add server to listen for commands on `options.server_addr` and `options.server_port` (if set)
- [features] add Sheet.knownCols to preconfigure of columns by name 1488

Sheet.knownCols.timestamp.type = date
DirSheet.knownCols.directory.width = 0

- [freq] add select-first command
- [freq] base histogram width on column width 1807
- [freq] set default disp_histogram to U+25A0 BLACK SQUARE (■)) (PR by daviewales 1949 1807)
- [themes] ascii8 disp_histogram to *
- [freq] add `open-preview` for split pane of soure rows at cursor 1086
- [graph] colorbrewer palette chooser (thanks er1kb)
- [graph] add commands to open external graph with matplotlib 1056
- [help] remove `Enter` binding for **HelpSheet** to `exec-command`
- [history] remove cmdlog_histfile
- [input] change `Ctrl+G` to toggle `options.disp_help`
- [input] add `Ctrl+N` to insert prettykeys of literal keystroke
- [input] allow percentage of starting value for input into commands
- [input] `inputMultiple` saves/remembers dict input
- [input] `Tab`/`Shift+Tab` move left/right in edit-mode like excel 2169
- [join] allow selecting of join columns from all columns sheet 1224
- unbind `&` for **ColumnsSheet** `join-cols`
- [join] join now works with typed values, not display values 2015
- [join] improve warning for typing source key columns before joining 2117
- [join] clarify ensureLoaded status message 2137
- [keys] add shifted function prettykeys (Ctrl+Shift+F1 etc)
- [layout] stop errors: hide-col on empty sheet, inputMultiple (PR by midichef 1963)
- [linux] change default system clipboard cmd to wl-copy if the user is using wayland (PR by rj1 1763)
- [loaders] add `options.regex_skip` for text formats to allow e.g. comment skipping 1559
- Added default values for `regex_skip` to existing source sheets like tsv/csv/lsv/json/jsonla.
- Use --regex-skip='' (or otherwise set the option to '') to disable this behavior.
- [loaders] add mailbox formats mbox/maildir/mmdf/babyl/mh loader (as supported by Python mailbox stdlib)
- [loaders] .jrnl format (jrnl.sh) loader+saver
- [loaders] add reddit API loader
- [loaders] add matrix API loader
- [loaders] add orgmode loader
- [loaders] add scraper
- table of HTML elements as parsed by `beautifulsoup4`
- [loaders] add Parquet writer (PR by mr-majkel 2053 2044)
- [loaders] add s3 loader (built by ajkerrigan)
- open Amazon S3 paths and objects
- [loaders] add support for jsonla (JSONL arrays) format (PR by daviewales 1730) 1726
- [loaders] add zulip API loader
- [loaders] add airtable API loader
- [loaders] add .fec loader by jsvine
- [loaders] add f5log loader by bitwisecook
- [loaders] add a toml loader (PR by ajkerrigan 1894 1580 1587)
- [loaders] add .conll loader by polm
- [loaders html] display title/aria-label/caption/summary (PR by midichef 2146)
- [loaders http] replace requests with urllib 1808 1704
- [loaders http] guess filetype based on magic bytes 1760
- [loaders jsonl] allow slash comments (PR by geekscrapy 2025)
- [loaders jsonl] deduce numeric column as float, not int 2131 1698
- [loaders png] use 2x2 unicode blocks instead of braille
- [loaders shell] allow deleting of directories unless `options.safety_first=True` 1965
- [loaders sqlite] save list/dict as json 1589
- [loaders sqlite] add `exec-sql` command to input query 1719
- [loaders xlsx] add cell colorizers from source 1718
- [loaders xlsx] add `column_letter` to meta columns
- [loaders xml] ignore comments
- [macros] allow deleting of macro with commit on **MacrosSheet** 1569
- [macros] add longname/keystrokes to **MacrosSheet** 1569 1741
- [macros] add help sidebar to end macro input 1569 1741
- [menu] move Edit>Add-rows to Row>Add
- [menu] add `go-row-number` to menu 1766
- [menu] move commit-sheet under File>Save
- [menu] add resize-cols-input to Columns -> Resize (PR by njthomas 1887)
- [modules] include module name in Option/Command sheets
- [motd] default motd is "Support VisiData" instead of blank
- [mouse] onclick with url launches $BROWSER with url; add `displayer_url` 2031
- [open] try using options.filetype for path 1710
- useful for configuring default filetype when reading from stdin
- [open] add `reopen-last-closed` which reopens the most recently closed sheet (PR by cool-RR 1813) 1811
- [open-syspaste] create new table from system clipboard 1680
- [open-syspaste] enable filetype selection (PR by daviewales 1717)
- [options] add `option.json_ensure_ascii` (default: True) (PR by joaosousa1 1776) 1772
- option for non-ASCII characters to be saved to JSON, on False will encode to utf-8
- [path] change most uses of Path.name to Path.base_stem 2188
- Path.name is the same as .base_stem for now
- [plugins] remove external Plugins Sheet; only show installed plugins
- [profile] dump profile to cwd when profiling enabled
- [forms] provide help text for color, encoding, encoding errors, and regex 1961
- [reload] support tail with `reload-modified` 1686
- [reload] add `reload-rows` which preserves existing columns + cursor position 1655 1683 1663
- [melt] refactor to support `reload-rows` 2101
- [regex] use inputMultiple to allow changing regex_flags 1925
- [regex] use `inputRegex` (which has regex help) for all regex commands
- [rename-col] add `options.rename_cascade` 2088
- if True, columns renames are cascaded into expressions
- [replay] has been refactored to be sync, instead of a seperate async process 1773 1714
- [save] add `options.save_encoding (default: 'utf-8') to differentiate from `options.encoding` when saving a file 1708
- [save] add saver for STATA files (PR by raffaem 1563)
- [save] keep headers in txt as tsv if only one sheet and more than a single column 2173
- [save] add status when save finished 2157
- [selected] add `onclick` to "selection status" to quickly `dup-selected`
- [sheet] add `select-equal-selected` (unbound) to select rows with values in current column in already selected rows 1327
- [sheet] add `clean-names` (unbound) to set options.clean_names on sheet and clean visible column names
- [sheet] remove left-click for sheets-stack 2030 1656
- [sheet] add `open-source` (bound to backtick) to open source sheet
- [setcol-fake] add `setcol-fake` (unbound) adds a column of Faker generated 'faketypes'
- [sparkline] add `addcol-sparkline` (unbound): adds a sparkline of all numeric columns
- [status] downgrade sheet "finished loading" to debug
- [tests] call all test_func(vd) defined in modules during pytest
- [tests] run all unit tests in CI
- [tests] add test for loading a directory 1798
- [themes] add options.theme and visidata/themes directory of additional themes (light, ascii8, asciimono) 1682 1691
- [themes] keystrokes/code now with gray bg
- [types] add `ipaddr` and `ipnet` types`. add `type-ipaddr` and `type-ipnet` commands (unbound) (PR by ajkerrigan 1946 1782 1910)
- also add `select-supernets` (unbound) which selects rows where the CIDR block value includes the input address space
- [types] add `type-url` and `open-url` 2031
- [types] add `type-datetime` 1572 1380 397
- [ui] change menu, status, and other colors to be more visible
- [ui] add `options.disp_scroll_context` to keep *n* more lines above/below cursor on screen
- [ui] add version to menu status
- [undo] options.undo can only be set globally
- [usd] provide USD(s) function to convert string like '£300' or '205 AUD' to equivalent US$ as float
- [windows] change default system clipboard command to clip.exe
- [zip] add `sysopen-row` (`Ctrl+O`) to open file in `$EDITOR` 1708

experimental features (must be imported manually)

- [diff] got moved to experimental
- [inplace] optional replacement commands which update the new Column live as you write the expression
- [livesearch] add `dup-search` and `dup-search-cols` which search for regex forwards, creating a duplicate sheet with maching rows live
- [mark] mark rows to more easily move cursor to them
- [noahs] add basic structure for Noah's Tapestry data game
- [rownum] addcol-rownum and addcol-delta
- [slide-cells] shift cells in cursor row to the right
- add loaders gdrive and gsheets

deprecated

- [dev] deprecate `col.setValueSafe` and `sheet.checkCursorNoExceptions`
- [regex] deprecate `addcol-subst` and `setcol-subst`
- `addcol-regex-subst` and `setcol-regex-subst` use inputMultiple, instead of more fragile search/replace one-line input
- [regex] deprecate `split-col` and `capture-col`
- [keys] change ScrollWheelUp to ScrollUp etc
- [multiline] rename `visibility-sheet` to `toggle-multiline`
- [utils] deprecate `onExit` context manager

bugfixes

- [aggregators] use statistics.median for more correct median 1914
- [aggregators] fix cancelling of long-running aggregators 1036
- [canvas] fix clicks on labels and unplotted canvs (PR by midichef 1984)
- [canvas] put a max limit on y-axis label width (PR by midichef 2177)
- [chooser] choose only exactly matching strings (PR by daviewales 1902)
- [cli] support `options.encoding_errors` for stdin 2047
- [clipboard] warn when pasting before copying (PR by midichef 1793)
- [clipboard] improve error when deleting row on empty sheet (PR by midichef 2006)
- [clipboard] save to tempfile, do not confirm
- [clipboard] save as given filetype
- [cliptext] fix double-width char display 1918
- [cliptext] do not crash with x<0 2138
- [cliptext] do not crash with miniscule widths 2138
- [cmdlog] check for empty cursor column when adding a column (PR by midichef 1783)
- [cmdlog] ensure record of global options in all cmdlogs
- [cmdlog] do not log undos for non-loggable commands 1827
- [colorizers] fix custom colorizers showing in sheet context 1225
- [columns] speed up getMaxWidth for wide columns (PR by midichef 1747) 1728
- [columns] fix allColumnsSheet to ignore non-TableSheet
- [confirm] remove flicker in alacritty 2040
- [confirm] commit on sheet without source should always confirm
- [currency] fix currency_neg option
- [curses] ignore early keys pressed before curses is initialised if Esc present 1993
- [cursor] cursorColIndex now returns None if empty 1803
- [deps] add requests-cache submodule to root visidata 1748
- [dir] support '..' and resolve dirname relative to CWD 1801
- if user uses `open-dir-parent` outside of the CWD, switch to absolute paths
- [display] fix visibility with col.height>1
- [expr] more informative 'column not modifiable' error message 1764
- [extensible] do not copy over existing attribute 2190
- [fill] allow filling with values that are logically false (PR by midichef 1794)
- [freq] fix names for openRow 1777
- [freq] correctly group null/error values for `options.numeric_binning` 1410
- [graph] fix graph ranges for xmax, ymax < 1 (PR by midichef 1752) 1673 1697
- [graph] fix data on edges being drawn offscreen (PR by midichef 1850)
- [graph] fix graph legend drawn too early (PR by midichef 1980)
- [graph] fixes to various graphing edge cases (PR by midichef 1896)
- [graph] fix top margin location and simplify y-coordinate calculation (PR by midichef 1915)
- [graph] labels: add tick symbol, int precision, right margin (PR by midichef 1931)
- [graph] fix legend display of full-width characters (PR by midichef 1958)
- [graph] widen left margin to hold y-axis labels (PR by midichef 1998)
- [graph] update fixPoint() to use inverted-y coordinates (PR by midichef 2139 2111)
- [index] add longname for g< and g> 2011
- [input] fix Ctrl+T swap on empty string 1684
- [input] fix Ctrl+V with special keystrokes 1799
- [input] erase status bar after prompt 1947
- [input] fix toggle input help 1971 1994
- [input] include history for unfocused items 1947
- [inputsingle-] loop until keystroke (do not timeout)
- [join] fail if differing number of keycols 1678
- [join] fix join-merge (PR by yphillip 1923 1843)
- [jsonl] include all columns in first row, even if null
- [keystrokes] only check duplicate prefixes from allPrefixes 1829
- [keys] add `Shift+Tab`
- [layout] fail if `hide-col` on empty sheet
- [loaders fixed] use maxWidth for saving if larger than column width 1849
- [loaders fixed] don't truncate wide columns with fixed width saver (PR by daviewales 1890)
- [loaders http] add `options.http_ssl_verify` to replace `options.http_req_verify` 1939
- [loaders http] fix parsing link header (PR by Midichef 1924 1898)
- [loaders html] fix failure from colspan with only td tags (PR by midichef 2002)
- [loaders html] prevent error when parsing an empty table (PR by midichef 2140)
- [loaders imap] enable imap and fix folder name extraction (PR by justin2004 1917)
- [loaders json] include null columns in first row, in more cases (PR by midichef 2109)
- [loaders jsonl] save None as null 2183
- [loaders mysql] unquote password before sending to client (PR by dufferzafar 1933)
- [loaders pandas] handle read methods that produce a list of dataframes (PR by ajkerrigan 1990 1986)
- [loaders parquet] stringify source to handle both URLs and local paths (PR by ajkerrigan 1913)
- [loaders parquet] show string value for Parquet `large_string` (PR by daviewales 2018 2003)
- [loaders parquet] fix parquet reading from zip or s3 (PR by takacsd 2133)
- [loaders parquet] handle parquet directories (PR by mr-majkel 2160 2159)
- [loaders pivot] fix missing anytype import
- [loaders postgres] quote schema and table name (PR by isosphere 2129)
- [loaders pyobj] similar sheet names for dive-/open- and pyobj- 1988
- [loaders pyobj] do not skip properties that raise
- [loaders png] fix `rgb_to_attr` to return str colornum
- [loaders rec] support %sort; continue loading on exception 2022
- [loaders sav] use fork of `savReaderWriter` for the sake of Python 3.10+ support 1867
- [loaders sqlite] prevent creation of ./- file when reading from stdin (PR by midichef 1945)
- [loaders sqlite] explicitly fail when file is not on disk
- [loaders tsv] use options.encoding for reading files
- [loaders ttf] implement `closePath()` to draw missing lines (PR by midichef 1979)
- [loaders vds] save hidden columns also (PR by pacien 2093 2089)
- [loaders vds] fix 'keyerror: exprcolumn' for .vds (PR by pacien 2036 2045)
- [loaders vds] fix .csv to .vds conversion 2037
- [loaders xlsx] saver now replaces illegal characters instead of aborting 1402
- [loaders xml] silence FutureWarning from lxml (PR by midichef 2149)
- [loaders xml] fix file loading (PR by midichef 2148)
- [loaders yaml] support tuples in YAML files (PR by cool-RR 1824) 1822
- [loaders zip] fix loading and extracting files locally + remotely 2127
- [macos] do not bind empty string to anything
- [macros] add prompt for cancelling macro 1810 1812
- [macros] specify a clearer message 1810
- [macros] append newline to macros.tsv if necessary 1569
- [macros] save file as longname/keystroke 2084
- [main] print version string once, not twice (PR by midichef 1837)
- [main] remove forced unload before interactive mode 1943
- [menu] use "Alt+x" keybinding instead of "^[x"
- [metasheets] do not use options.encoding for internal sheet saving
- [misc] remove trailing commas from addCommand (PR by midichef 1962)
- [modify] do not call saveSheets on commit
- [modify] commitMods do not call putValue for changes to added/deleted rows
- also fix ItemColumn.putValue and AttrColumn.putValue to call parent
Column.putValue before setting the value on the row
- [modify] confirm() overwrite on root sheet source path
- [modify] always set col.defer
- [modify] do not fail on Column.putValue if no setter
- [mouse] fix mouse-click on bottom pane
- [open] silence ResourceWarnings for unclosed files (PR by midichef 2152)
- [options] disable adding rows (PR by midichef 1944)
- [options] fix option editing
- [options] fix helpstr display when editing
- [paste] add new rows to sheet if necessary
- [path] set name to '.' for givenpath of '.' 1768
- [path] fix progress bar for compression formats 1175 1255
- [path] fix open() using both binary and text mode (PR by midichef 1955)
- [path] binary mode does not take newline argument
- [pyobj] fix pyobj-cell 2001
- [regex] issue warning when no columns to add 1778
- [regex] check for regex capture group 1778
- [rename-col] skip gratuitous rewrites when undoing (PR by pacien 2092)
- [replay] turn off confirm dialogs during replay
- [replay] clearCaches before moving cursor 1773
- [replay] enable confirm in interactive batch mode (PR by midichef 1751)
- [replay] do not push sheet if not already pushed 1681
- [save] handle saving 0 sheets 1720
- [save] fix confirm message on commit 2090
- [scroll-cells] do not error scrolling offscreen column 1908
- [search] handle no rows and invalid regex (PR by midichef 2125)
- [settings] clear cache correctly before set
- [sheets] fix NameError for mincolidx 1672
- [sheets] add confirm for `quit-sheet-free` (PR by midichef 1755)
- [sheets] make sure addColumn called on all columns
- not just dynamically-created columns
- addColumn is needed to set .sheet and .defer, among other things
- [sheets] fix reload() for tsv sheets with key columns (PR by midichef 1997)
- [sheets] fix recursion crash of Python >= 3.8, <3.9.10 (PR by midichef
1722) 1696
- [sheets] pop columns kwarg so raw list not set via final update() in
constructor
- [sheets] fix slowness from adding rows during getMaxWidth (PR by midichef
1982)
- [sheets] no longer insert column in draw() in debug mode (PR by midichef
1995)
- [sheets] fix errors on sheets with no columns (PR by midichef 2124)
- [sheets] fix splitcell to handle attribute/text pairs (PR by ajkerrigan 2020)
- [sheets] recreate sort columns for copied sheet (PR by midichef 2192 2190)
- [shell] fix copying of a directory 1970
- [status] fix Alt+Shift+Shift+X 1828
- [status] update right status before exec 996
- [status] add caller/module to statuses, and print on --debug 2037
- [status] catch all exceptions during drawing 2174
- [sort] show sort arrow for sort columns described by name (PR by midichef 1876)
- [syscopy] always copy as utf-8
- [term] allow non-color term like vt102
- [threads] allow AsyncThread funcs to have status kwarg
- [threads] remove non-sheet threads from unfinishedThreads (do not sync on them)
- [quit-sheet-free] re-entering a subsheet left using quit-sheet-free should reload the subsheet 1679
- [ui] integrate scrollfix from geekscrapy 1441
- [undo] ensure undo is sheet-specific for duped/copied sheets 1780
- [undo] fix undo for first modification on a sheet-specific HelpSheet 1820
- [undo] fix the removal of [M] (modified mark) after undo 1800
- [undo] remove last matching cmdlog row, instead of first (PR by midichef 2010)
- [unzip-http] fix recursion error when fetching remote zipfile (PR by midichef 2116 2110)
- [vdx] fix save error
- [windows] add Alt+ keybindings for powershell 1630
- [windows] limit windows-curses version to 2.3.0 (PR by bartbroere 1901 1841)
- asottile noticed this was a regression in the last windows-curses release
in this issue: zephyrproject-rtos/windows-curses41
- [windows] update windows-curses version to support Python 3.11 2062
- [windows] fix syspaste (PR by midichef 1921 1920)
- [windows] fallback to `scr.getch` if no `scr.get_wch` 192
- handles `AttributeError: '_curses.curses window' object has no attribute 'get_wch'`
- [windows] tempfiles must be closed before reopening 2118
- [zsh] fix zsh completion (PR by dbaynard 1960 1959)

performance

- [startup] delay import of `urllib.request`, `pkg_resources`, and
`dateutil`
- [startup] remove `unittest.mock`
- [draw] `drawcache` make_formatter
- [test] use lambda instead of Mock for addstr
- [] `Column.formatValue` inline fmtstr
- [settings] `lru_cache` sheet obj in `SettingsMgr._mappings`
- fastpath getitemdeep
- fallback to getattrdeep if len(row) < index
- [sort] move `addProgress` outside of sortkey
- [parquet] cache large strings and cap at 1MB 2003 1068
- [modify] check col/row before isChanged
- [status] move getStatusSource into features to improve startup perf


api

- [cli] printout gone; use `builtins.print`
- [color] use `ColorAttr` throughout 2061 2017
- seperate out fg/bg
- allow bg and fg to take precedence independently
- fixes issues with forced bg=black on sidebar for warning, and statusbar for working
- [guides] add API for getting and adding guides
- add vd,getGuide and vd.addGuide
- add Helpers for formatting commands and options
- [help] add HelpSheet to globals
- [hint] add hint mechanism to find best `Sheet.hint_function`
- add hints for types
- [input] add vd.injectInput and vd.getCommandInput
- [keys] use prettykeys for allPrefixes 1592
- [menu] vd.addMenuItems with convenient string syntax
- [modify] Sheet.commitAddRow and Sheet.commitDeleteRow
- [modules] vd.importModule, vd.importSubmodules, vd.importExternal, vd.setPersistentOptions
- add importExternal for most loaders and features 1739 1765
- [path] filesize can taken any Path-like
- [pivot freq] re-add FreqTableSheet and PivotSheet to globals 1731
- [sheet] add vd.addCommand as alias for BaseSheet.addCommand
- [tests] add vd.resetVisiData
- [vdx] runvdx() to execute vdx strings
- rename vd.draw_sheet to vd.drawSheet
- change order of parameters for vd.subwindow to (x,y,w,h)
- change order of args to onMouse to x,y
- add vd.aside for a silent status message
- add GlobalsSheetsSheet to globals
- vd.queueCommand can take input,sheet,row,col kwargs 1681
- add `visidata.stored_property` to persist property

2.11.1

Not secure
- [tests] fix tests for Python >=3.11
- [path] update for Python 3.12 API (reported by QuLogic 1934)

Improvements and bugfixes

- [chooser] choose only exactly matching strings in chooser (PR by daviewales 1902)
- [columns] speed up `getMaxWidth()` for wide columns, and correct some edge cases (PR by midichef 1747)
- [freqtbl] Default `disp_histogram` to U+25A0 BLACK SQUARE (■)) (PR by daviewales 1949)
- [loaders fixed] do not truncate wide columns with fixed-width saver (PR by daviewales 1890)

- add missing import `copy`
- [graph] fix graph ranges for xmax, ymax < 1 (PR by midichef 1752)
- [graph] fix data on edges being drawn offscreen (PR by midichef 1850)
- [input] fix `Ctrl+T` swap on empty input (reported by gfrmin 1684)
- [inputsingle] loop until keystroke (do not timeout)
- [fill] allow filling with values that are logically false (PR by midichef 1794)
- [macos] do not bind empty string to any keybinding
- [paste] add new rows to sheet if insufficient rows
- [path Dirsheet] set name to '.' for givenpath of '.' (reported by geekscrapy 1768)
- [path] fix progress for compressed files (reported by bitwisecook 1255 1175)
- [replay] clearCaches before moving cursor (reported by mokalan 1773)
- [save] handle saving 0 sheets (reported by reagle 1266 1720)
- [settings] clear cache correctly before set
- [undo] fix so that undo is Sheet-specific on copied sheets (reported by geekscrapy 1780)
- [undo] undoing `zd` now removes `[M]` (modification mark) (reported by Freed-Wu 1800)

2.11

Not secure
- [ci] drop support for Python 3.6 (related to https://github.com/actions/setup-python/issues/543)
- [ci] add support for Python 3.11 (1585)

- [dirsheet] add `open-dir-parent` (bound to backtick)
- [join] add new "concat" jointype to behave similar to "append" but keeps first sheet type and columns (requested by frosencrantz 1598)
- [zip] add multisave for `.zip` (save each sheet in options.save_filetype format into given .zip file)
- [sysedit] add `sysedit-selected` (bound to `g Ctrl+O`) (requested by Delapouite 1596)
- edit cells in multiple rows in `$EDITOR`
- only handles cell modifications, not added or deleted rows


Improvements

- [aggregators] add 95 and 99 percentile (p95 and p99)
- [fill-col] speed up `fill-col` for sheets with many empty cells (PR by midichef 1657)
- [loaders hdf5] add support for arrays of scalars (requested by linwaytin 1602)
- [graph] fail if no numeric xcols are given
- [open-cell-file] warn when file or url in cell does not exist (requested by geekscrapy 1540)
- [sqlite] add passthrough options (reported by cwarden 1622)
- [sqlite] add options.sqlite_onconnect to be executed before running any statement (requested by cwarden 1622)
- [xml] add passthrough options for xml_parser; default xml_parser_huge_tree=True (PR by midichef 1668)

Bugfixes

- [columns] `dup-sheet` now carries over attributes of columns added by `add-column`
- [columns] **SettableColumn** should not be deferred (reported by frosencrantz 1568)
- [customdate] recognise type-customdate as numeric (requested by tdussa 1613)
- [describe] fix custom describe aggregators (reported by edupont 1574)
- [dirsheet] fix incorrect filename with multiple extensions (reported by kunliugithub 1571)
- [display] show `disp_oddspace` for surrogate escapes (reported by geekscrapy 1544)
- [graph] fix div-by-zero with only one y-value (reported by midichef 1673)
- [install] ensure setuptools files have appropriate permissions (reported by icp1994 1591)
- [install] update data files in setup.py based on PEP 420 (reported by Oblomov 1675)
- [keystrokes] add `kDN` and `kUP` to translation table (reported by djpohly 1336)
- [loaders html] fix loading of relative links in html table (reported by frosencrantz 1599)
- [loaders xlsx] store `None` as empty string in `save_xlsx` (reported and PR by dbaynard 1626 1629)
- [macros] override CLI parsing options for MacrosSheet (reported by frosencrantz 1607)
- [macros] query again for keystroke if used by existing macro (1658)
- [macros] do not include `nonLogged` commands in macro (reported by geekscrapy 1569)
- [macros] add reload for **MacroSheet** (reported by geekscrapy 1569)
- [menu] 2x ESC should exit menu
- [mouse] fix mouse-clicks on statusbar when splitpane is off (reported by frosencrantz 1625)
- [numpy] fix loader
- [open_txt] fix Exception with `open-config` when no `~/.visidatarc` (reported by gunchev 1611)
- [pdb] fix entering of pdb breakpoints for Python 3.9+ (reported by jasonwirth 1317)
- [sheets] sort all sheets on global **Sheets Sheet** (reported by franzhuang 1620)
- [types] format int/vlen as true int (reported by xlucn 1674)
- [unzip-http] fix file extraction (`x`) on remote zip file
- [unzip-http] handle files smaller than 64K (reported by frosencrantz 1567)
- [zsh-completion] fixed (reported by pigmonkey 1583; PR by Freed-Wu 1646)

API

- raise Exception from causes in utils.py (PR by cool-RR 1633)
- add `HistogramColumn` to allow overrides (requested by andycraig 1621)
- easier external numeric types with `vd.numericType()` decorator (inspired by s1291 1394)

- [frequency table] `dive-rows` renamed to `dive-selected`

Page 1 of 11

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.