Skip to main content

A TUI paging application with enhanced support for tabular data and real-time streaming

Project description

Nothing-less (nless)

Nless is a TUI paging application (based on the awesome Textual library) with vi-like keybindings. Nless has enhanced functionality for parsing tabular data:

  • inferring file delimiters
  • delimiter swapping on the fly
  • regex-based parsing of raw logs into tabular data using Python's regex engine
  • filtering
  • sorting
  • searching
  • real-time event parsing.

Getting started

Dependencies

  • python>=3.13

Installation

pip install nothing-less

Usage

  • pipe the output of a command to nless to parse the output $COMMAND | nless
  • read a file with nless nless $FILE_NAME
  • redirect a file into nless nless < $FILE_NAME
  • Once output is loaded, press ? to view the keybindings

Demos

Basic functionality

The below demo shows basic functionality:

  • starting with a search /
  • applying that search &
  • filtering the selected column by the value within the selected cell F
  • swapping the delimiter D (raw and ,)

asciicast

Streaming functionality

The below demo showcases some of nless's features for handling streaming input, and interacting with unknown delimitation:

  • The nless view stays up-to-date as new log lines arrive on stdin (allows pipeline commands, or redirecting a file into nless)
  • Showcases using a custom (Python engine) regex, example - {(?P<severity>.*)}\((?P<user>.*)\) - (?P<message>.*) - to parse raw logs into tabular fields.
  • Sorts, filters, and searches on those fields.
  • Flips the delimiter back to raw, sorts, searches, and filters on the raw logs

asciicast

Features & Functionality

Navigation:

  • h - move cursor left
  • l - move cursor right
  • j - move cursor down
  • k - move cursor up
  • 0 - jump to first column
  • $ - jump to final column
  • g - jump to first row
  • G - jump to final row
  • w - move cursor right
  • b - move cursor left

Filtering:

  • f - will filter the current column and prompt for a filter
  • F - will filter the current column by the highlighted cell
  • | - will filter ALL columns and prompt for a filter
  • & - applies the current search as a filter across all columns

Searching:

  • / - will prompt for a search value and jump to the first match
  • * - will search all columns for the current highglighted cell value
  • n - jump to the next match
  • N - jump to previous match
  • p - jump to previous match

Sorting:

  • s - toggles ascending/descending sort on the current column

Delimiter/file parsing:

  • By default, nless will attempt to infer a file delimiter from the first few rows sent through stdin. It uses common delimiters to start - ,, , |, \t, etc.
  • D - you can use D to explicitly swap the delimiter on the fly. Just type in one of the common delimiters above, and the rows will be re-parsed into a tabular format.
  • D - alternatively, you can pass in a regex with named capture groups. Those named groups will become the tabular columns, and each row will be parsed and split across those groups. Example {(?P<severity>.*)}\((?P<user>.*)\) - (?P<message>.*)
  • D - additionally you can just pass the word raw to see the raw lines behind the data. You can still sort, filter, and sarch the raw lines.
  • D - last, you can pass a delimiter value of (two spaces). This will parse text that has been delimited utilizing multiple spaces, while preserving values that have a single space. This is most commonly useful for parsing kubernetes output (kubectl get pods -w), for example.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nothing_less-0.1.5.tar.gz (19.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nothing_less-0.1.5-py3-none-any.whl (20.7 kB view details)

Uploaded Python 3

File details

Details for the file nothing_less-0.1.5.tar.gz.

File metadata

  • Download URL: nothing_less-0.1.5.tar.gz
  • Upload date:
  • Size: 19.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.6

File hashes

Hashes for nothing_less-0.1.5.tar.gz
Algorithm Hash digest
SHA256 1db4a36fbd6de7c56740db9e6c4e351f32a1b98d84f37910a0c4b39b8b1f4a80
MD5 89baa0dba434c5bedb7c7841f0b5ad01
BLAKE2b-256 a8df8d9f98fe3e40446159f8b72f63f605235b5fb8e3f43d98b274771589a915

See more details on using hashes here.

File details

Details for the file nothing_less-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: nothing_less-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 20.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.6

File hashes

Hashes for nothing_less-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 c59c42cdaf50522555e6e490169e95bff319f2192c807b29994b6b84bf486f35
MD5 60b171d70067428090a8c17c478b468c
BLAKE2b-256 d32de7a86ef26be6d2a54dbaacf01a7b7cb926930a08cba133c4735cab74a572

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page