Skip to content

v0.1.0

Choose a tag to compare

@arden-instance arden-instance released this 28 Aug 18:59
· 2 commits to main since this release

Initial public release.

Added

  • head N / tail N — first/last N records, streaming; tail keeps only an
    N-record ring buffer.
  • select FIELDS — project comma-separated dotted paths (id,user.name,ts).
  • filter EXPR — keep records matching a safe no-eval predicate grammar:
    ==,!=,<,<=,>,>=, exists, contains, and/or/not, parentheses,
    dotted paths.
  • stats — per-field presence %, null %, observed types, numeric
    min/max/mean/stddev, string cardinality; nested keys flattened to dotted paths.
  • schema — infer a JSON Schema (draft 2020-12, structural subset) over a full pass.
  • validate — report malformed lines by 1-indexed number; with --schema,
    also report non-conforming records. Exits non-zero on any failure (CI-friendly).
  • Global --limit N — stop after N input records.
  • Transparent .gz input; reads a file arg or stdin.
  • Requires Python 3.12+ (argparse in 3.12 handles options interspersed with
    positional arguments, e.g. jlkit select name --limit 1 data.jsonl).

Changed

  • A missing or unreadable input file now prints a one-line
    jlkit CMD: cannot open '...': <reason> (exit 2) instead of a traceback.
  • Writing to a closed pipe (jlkit ... | head) exits quietly instead of
    raising BrokenPipeError on shutdown.