Skip to content

CLI

featurizer ships a small CLI for the two things you want before writing code: what primitives exist? and is my config valid?

Terminal window
uv run python -m featurizer --help
usage: featurizer [-h] {list-primitives,lp,validate} ...
Featurizer - Deep Feature Synthesis for PostgreSQL
positional arguments:
{list-primitives,lp,validate}
list-primitives (lp) List available aggregation and transformation primitives
validate Validate a configuration file
Terminal window
uv run python -m featurizer list-primitives [--type agg|transform|all]
[--category] [--show-sql]
flageffect
--type / -tagg, transform, or all (default)
--category / -cgroup by category instead of a flat list
--show-sql / -sinclude an example SQL rendering per primitive

lp is a shorthand alias. Grouped output looks like:

============================================================
AGGREGATION PRIMITIVES (67 available)
============================================================
Temporal (support interval windows):
acf_1 Lag-1 autocorrelation: corr(x_t, x_{t-1})
inputs: numeric
age_in_system Alias of tenure: days since the first observed event
inputs: index
all True if all values are true (boolean AND)
inputs: boolean

The same information, browsable with search, lives in the primitives reference — generated from this registry at every deploy.

validate — check a config before running anything

Section titled “validate — check a config before running anything”
Terminal window
uv run python -m featurizer validate config.yaml
Configuration is valid: examples/01-basic-aggregations/config.yaml

Validation covers structure (required keys, types), values (ISO-8601 intervals, known variable types), semantics (the target exists, relationship endpoints exist, as-of joins have a timestamp to order by), and best-practice warnings (max_depth > 5, more than 10 intervals). Unknown primitive names get a did you mean? suggestion from the registry. Errors report their exact config location — see the configuration reference for every key.

The same validation runs automatically inside Featurizer("config.yaml"); the CLI just gives you the answer without leaving the shell.