github saulpw/visidata v2.0.1
VisiData v2.0.1

latest releases: v3.1.1, v3.1, v3.0.2...
4 years ago

VisiData 2.0.1

major changes since 1.5.2 (last official release)

  1. Plugin API
  2. Undo/Redo
  3. Deferred changes
  4. Split Window

highlighted features added since 1.5.2

  • [iota] add i family of commands (iota/increment)
  • [unfurl-col] zM, which does row-wise expansion of iterables in a column
  • [join] add merge jointype (thanks @sfranky for feature request #405)
  • [freq/pivot] range binning for numeric columns
  • [options] options parsing rewrite allows for per-sheet options
  • [cli] stdout pipe/redirect
  • more visibility for long values, with multi-line rows and offset scrolling
  • add Alt/Esc as prefix for user keybindings
  • [input] Ctrl+Y paste from cell clipboard and other improvements

new loaders since 1.5.2

  • MIME (.eml) (2.-5)
  • recutils (.rec) (2.-5)
  • VCard (.vcf) (2.-5)
  • IMAP (email)
  • MySQL (thanks @p3k)
  • PDF (text only)
  • numPY (.npy/.npz)
  • Unicode Separated Value (.usv)
  • Excel 2007-2010 binary fomat (.xlsb) (suggested by @woutervdijke #246)
  • feather, gbq, orc, parquet, pickle, sas, stata via pandas (thanks @khughitt for bug report #460)
  • postgres support for connecting directly to rds (thanks @danielcynerio for PR #536)

For the full list, see below along with release notes from previous pre-releases, or view the CHANGELOG

changes since pre-release v2.-4

  • Additions and Improvements

    • [aggregators] allow custom aggregators in plugins/visidatarc (thanks @geekscrapy for the feature request #651)
    • [loaders xlsx] automatically clean sheet name when saving; warn if sheet name changes (thanks @geekscrapy for the request #594)
    • [columns] unhide height attribute by default (thanks @frosencrantz for feature request #660)
    • add .vcf (VCard) loader
    • [sqlite] remove name of db from an SqliteSheet's name, only tablename
    • [syspaste] make syspaste- replayable and undoable (note that syspaste- value will be recorded in CommandLog)
    • [savers] many text saver filetypes via tabulate library (thanks @jsvine for original vdtabulate plugin)
    • [calc] ExprColumn no longer cached by default
    • [loaders rec] add new .rec file loader and multisheet saver (recutils)
    • [savers] implemented multisheet saver for both json and jsonl
    • [loaders eml] add new .eml file loader for email files with attachments
  • Options

    • add options.incr_base (thanks @chocolateboy for the suggestion #647)
    • (former) options.force_valid_colnames renamed to options.clean_names
      • applies to Sheets and Columns now (thanks @geekscrapy for the request #594)
    • for --X=Y, do not replace - with _ in Y (thanks @forensicdave for bug report #657)
    • add options.default_height for visibility toggle (thanks @frosencrantz for feature request #660)
    • add support for -- option-ending option on CLI.
    • [input] default now fancy_chooser = True
      • when fancy_chooser enabled, aggregators and jointype are chosen with a ChoiceSheet.
      • s to select, Enter to choose current row, g Enter to choose selected rows, q to not choose any
    • numeric_binning is now True by default (enables numeric binning on PivotSheet and FreqTable for numeric columns
  • Command changes and additions
    - (former) setcol-range (gz=) renamed to setcol-iter
    - (former) addcol-range-step (i) renamed to addcol-incr-step
    - (former) setcol-range (gi) renamed to setcol-incr
    - (former) addcol-range-step (zi) renamed to addcol-incr-step
    - (former) setcol-range-step (gzi) renamed to setcol-incr-step
    - add scroll-cells-* to scroll display of cells while remaining in a Column; bind to [g]z{hjkl}
    - (former) unbind z{hjkl} from scroll-col (thanks @geekscrapy for feature request #662)
    - add type-floatsi bound to z% (#661)
    - reload-selected now reloads all Sheets if none selected (thanks @geekscrapy for PR #685)
    - add customdate with fixed fmtstr for parsing (use z@ and input a fmtstr compatible with strptime (thanks @suntzuisafterU for feature request #677)

  • Bugfixes

    • [DirSheet] use changed ext as filetype when loading files (thanks @frosencrantz for bug report #645)
    • [slide] several major improvements to column sliding; key column sliding now works (thanks much to @geekscrapy for bug hunting #640)
    • [open-row] Sheets Sheet should be removed from stack upon open-row (thanks @cwarden for the bug report)
    • [cli] re-add --version (thanks @mlawren for bug report #674)
    • [open-config] fix gO (thanks @geekscrapy for bug report #676)
    • [splitwin] handle swap case for single sheet (thanks @geekscrapy for bug report #679)
    • [loaders xlsx] handle None column names for all Sequence Sheet loaders (thanks @jsvine for bug report #680)
    • [settings] retrieve from cache for top sheet if obj is None (thanks @aborruso for the bug report #675)
    • [settings] check if option is set on specific sheet before falling back to override
    • [describe] have DescribeSheet use source column's sheet's options.null_value to calculate its null column (thanks @aborruso for the bug report #675)
    • [undo] ensure that undos for complex commands (like expand-cols) are set more frequently (thanks @frosencrantz for the bug report #668)
      • it is still possible to find race conditions if the user presses commands fast enough, however they should happen far less frequently
    • [vlen] fix numeric binning for vlen() (thanks @frosencrantz for bug report #690)
    • [pivot] fix pivot case where no aggregator is set
    • [pyobj] fix filtering for PyobjSheet
    • [DirSheet] fix sorting for directory column of DirSheet (thanks @frosencrantz for bug report #691)
    • [json] fix bug saving cells with nested date values (thanks @ajkerrigan for PR #709)
    • [input] fix Ctrl+W bug when erasing word at beginning of line
    • [plugins] import .visidata/plugins by default
    • [pandas] use a safer reset_index() to avoid losing data when updating a pandas index (thanks @ajkerrigan for PR #710)
    • [threads] disable add-row on ThreadsSheet (thanks @geekscrapy for bug report #713)
  • deprecated

    • complete removal of status and statuses from deprecated (thanks @frosencrantz for bug report #621)
      • longnames are now open-status and show-status
    • remove cursorColIndex
  • API and Interface

    • Sheet(*names, **kwargs) autojoins list of name parts
    • openSource(), aggregator(), and aggregators are now part of vdobj
    • set_option is now setOption
    • move isError to Column.isError
    • deprecate load_pyobj, now PyobjSheet
    • add .getall('foo_') which returns all options prefixed with 'foo_'; deprecated options('foo_')
    • nSelected is now nSelectedRows
    • make Column.width property, so setting is same as Column.setWidth
    • evalexpr is now evalExpr
    • format is now formatValue
    • SettableColumn.cache is now ._store
    • vdtype() is now vd.addType()
    • add addColumnAtCursor (thanks @geekscrapy for bug report #714)
  • Plugins

    • update sparkline (thanks @layertwo #696)
    • plugin dependencies now install into plugins-deps (former plugin-deps)
  • Dev niceties

Don't miss a new visidata release

NewReleases is sending notifications on new releases.