Skip to content

Features & roadmap — pinky-tools

Update date : 2026-05-31 12:10

MVP — status: stable / planned

Command Status Notes
pinky run planned Migrate from legacy scripts/run_local_runner.py as-is
pinky readme planned Migrate lib_ast_parser.py + run_generate_readme.py
pinky regression planned Migrate run_regression.py as-is, no employer-specific logic to remove
pinky validate-name planned New — pure Python, no Snowflake dep

pinky run

pinky run resources/procedure/my_sp.py
pinky run resources/procedure/my_sp.py --connection MY_CONNECTION

Use connections.toml default or --connection flag. No hardcoded defaults.

pinky readme

pinky readme
pinky readme --project-dir ../my-repo --force

pinky regression

pinky regression out_v1.csv out_v2.csv
pinky regression report_v1.xlsx report_v2.xlsx --sheet ALL

pinky validate-name

pinky validate-name "financial__workday_to_datawarehouse__compensation"
# → schema: FINANCIAL__WORKDAY_TO_DATAWAREHOUSE__COMPENSATION
# → dag:    FINANCIAL__WORKDAY_TO_DATAWAREHOUSE__COMPENSATION__DAG
# → tags:   domain=financial, source=workday, target=datawarehouse

Format: {DOMAIN}__{SOURCE}_TO_{TARGET}__{SUBJECT} / _REPORT / _ANALYTIC / _ADMIN__APP__.


Post-MVP — ordered by priority

pinky new-app <name>

pinky new-app financial__workday_to_datawarehouse__compensation
pinky new-app cse_crm__sirene --with-app

Generates a full repo structure from templates: resources/ tree, manifest.yml, pyproject.toml, pre-commit config. Runs validate-name before generating. --with-app adds a SiS app stub from pinky-streamlit demo as canonical source.

pinky generate-udf <module>:<function>

pinky generate-udf pinky_core.xml:xml_path       # → inline DDL
pinky generate-udf pinky_core.validate:validate_siret  # → staged DDL

Introspects the function signature → generates CREATE OR REPLACE FUNCTION DDL. Two modes auto-detected from deps: inline (zero external dep) or staged (PyPI deps). Replaces hand-maintained .sql.j2 templates.

pinky generate-semantic <table>

pinky generate-semantic MY_TABLE

Introspects INFORMATION_SCHEMA.COLUMNS → writes resources/semantic_view/<table>_semantic.yml. Auto-classifies: NUMBER/FLOAT → FACTS; VARCHAR/BOOLEAN/DATE → DIMENSIONS; metadata columns (_LOADED_AT, BUG_REASON, IS_TEST_DATA) → excluded.

pinky errors <table>

pinky errors MY_TABLE
pinky errors MY_TABLE --hard
pinky errors MY_TABLE --dmf-only
pinky errors MY_TABLE --since 24h --fix

No Cortex. Unifies 4 error layers: CHECK CONSTRAINT rejects, soft BUG_REASON, DMF PASS/FAIL, functional error codes.

pinky export

pinky export --env SANDBOX --resource procedure
pinky export --env SANDBOX

Reads live Snowflake objects → writes .yml files for pinky-provider. Bootstrap path for teams migrating from handcrafted SQL setup scripts.


Backlog

  • Migration modules (Airflow → pinky, dbt → pinky) — pinky-tools generates, pinky-provider deploys. See pinky-provider docs for the mapping tables.
  • pinky capture-versions — captures active Snowpark runtime version to snowpark_versions.txt. Low priority until CI pipeline is established.
  • grip dev dep — local GitHub-flavored Markdown preview. Add to pyproject.toml dev extras.

Out of scope

  • run_leanix_sync.py — enterprise-specific, not migrated