Plugins — overview
A plugin is a Python package on disk that Liberty makes importable at startup. It carries custom callables your Nomaflow python steps reference — the escape hatch for anything declarative steps can't express.
Plugins
Custom Python code called by Liberty Next — where plugin packages live, how a Nomaflow python step and a screen's call_plugin action call a module:function, what the framework injects (connectors, ctx, settings, changesets), how to query connectors and what to return.
Write a callable
The function contract for a python step's callable — signature, auto-injected kwargs (connectors / ctx / settings), return-value normalisation, sync vs async, error and cancellation semantics.
ETL primitives
The liberty.etl toolkit — six async helpers your plugin callables compose into ETL flows: copy_query_to_table, snapshot_rows, delete_rows, truncate_table, insert_audit_record, run_query.
Deploy and debug
The apps repo layout, LIBERTY_APPS_DIR, the dev shell with uvicorn --reload, the production deploy pattern, log lines you'll grep for, and the testing setup.