Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

pinky-provider

Declarative, idempotent IaC engine for Snowflake.

Part of the pinky-and-co suite.


Why pinky?

The modern data stack was built on a good idea — best of breed. One tool for ingestion, one for transformation, one for orchestration, one for observability.

The reality: more licenses, same delivery time, and most of your energy goes into the glue.

Snowflake collapsed the stack. Pinky makes it operational.

Do it right, and the credits follow.

Rationalized costs · Pure Python · Snowflake Native First


Install

pip install pinky-provider

Quick start

pinky-provider init  --scope schema --target MY_DATABASE.MAIN
pinky-provider plan  --env SANDBOX
pinky-provider apply --env SANDBOX

Step by step: First apply tutorial.

  Scope: MY_DATABASE.MAIN

  +  stage/my_stage               CREATE
  ~  procedure/my_sp              ALTER    (packages updated)
  =  task/my_task                 UNCHANGED

Documentation

Explanation

API reference

Decisions

Structure

Show the directory tree
pinky-provider/
├── _repro/
│   ├── eai-secrets-serialization/
│   │   ├── bug.md
│   │   └── repro.py
│   ├── table-kind-enum/
│   │   ├── bug.md
│   │   └── repro.ipynb
│   ├── live_valid_sdk.ipynb
│   └── send_test_emails.py
├── examples/
│   ├── queries/
│   │   └── companies_enriched.sql
│   ├── resources/
│   │   ├── procedure/
│   │   │   └── hello_sp.yml
│   │   └── warehouse/
│   │       └── wh_compute.yml
│   ├── vars/
│   │   ├── PRODUCTION.yml
│   │   └── SANDBOX.yml
│   ├── example_query_compile.py
│   ├── example_reconcile_comments.py
│   ├── manifest.yml
│   ├── manifest_query.yml
│   └── manifest_sp_demo.yml
├── scripts/
│   └── hooks/
├── src/
│   └── pinky_provider/
│       ├── cli/
│       │   ├── __init__.py
│       │   ├── main.py
│       │   └── scaffold.py
│       ├── core/
│       │   ├── __init__.py
│       │   ├── conflict.py
│       │   ├── deps.py
│       │   ├── diff.py
│       │   ├── manifest.py
│       │   ├── orphans.py
│       │   ├── parallel.py
│       │   ├── reconcile.py
│       │   ├── schema_collections.py
│       │   ├── schemas.py
│       │   └── session.py
│       ├── dag/
│       │   ├── wrappers/
│       │   │   ├── __init__.py
│       │   │   ├── errors.py
│       │   │   ├── feed_loop.py
│       │   │   ├── finalize_wrapper.py
│       │   │   ├── install.py
│       │   │   ├── modes.py
│       │   │   ├── poll_and_dispatch.py
│       │   │   ├── render.py
│       │   │   ├── root_task_wrapper.py
│       │   │   ├── runtime.py
│       │   │   └── task_wrapper.py
│       │   ├── __init__.py
│       │   ├── condition.py
│       │   ├── dag.py
│       │   ├── deploy.py
│       │   ├── models.py
│       │   ├── names.py
│       │   └── notifications.py
│       ├── resources/
│       │   ├── account/
│       │   │   ├── __init__.py
│       │   │   ├── api_integration.py
│       │   │   ├── catalog_integration.py
│       │   │   ├── compute_pool.py
│       │   │   ├── database.py
│       │   │   ├── external_access_integration.py
│       │   │   ├── external_volume.py
│       │   │   ├── network_policy.py
│       │   │   ├── network_rule.py
│       │   │   ├── notification_integration.py
│       │   │   ├── role.py
│       │   │   ├── secret.py
│       │   │   ├── tag.py
│       │   │   ├── user.py
│       │   │   └── warehouse.py
│       │   ├── database/
│       │   │   ├── __init__.py
│       │   │   ├── database_role.py
│       │   │   ├── grant.py
│       │   │   └── schema.py
│       │   ├── schema/
│       │   │   ├── query/
│       │   │   │   ├── __init__.py
│       │   │   │   ├── provider.py
│       │   │   │   ├── query_engine.py
│       │   │   │   └── query_resource.py
│       │   │   ├── __init__.py
│       │   │   ├── _governed.py
│       │   │   ├── _relation.py
│       │   │   ├── alert.py
│       │   │   ├── dynamic_table.py
│       │   │   ├── event_table.py
│       │   │   ├── iceberg_table.py
│       │   │   ├── procedure.py
│       │   │   ├── quota.py
│       │   │   ├── secret.py
│       │   │   ├── stage.py
│       │   │   ├── storage_lifecycle_policy.py
│       │   │   ├── stream.py
│       │   │   ├── streamlit.py
│       │   │   ├── table.py
│       │   │   ├── tag.py
│       │   │   ├── task.py
│       │   │   ├── user_defined_function.py
│       │   │   └── view.py
│       │   ├── __init__.py
│       │   └── base.py
│       ├── __init__.py
│       └── provider.py
├── tests/
│   ├── fixtures/
│   │   └── notification_body.html
│   ├── live/
│   │   ├── live_valid_adr0014_gaps.py
│   │   ├── live_valid_all_modes.py
│   │   ├── live_valid_contact_purpose_case.py
│   │   ├── live_valid_ddl.py
│   │   ├── live_valid_drop_orphans_dag_names.py
│   │   ├── live_valid_drop_orphans_retention_order.py
│   │   ├── live_valid_email_notification.py
│   │   ├── live_valid_expected_schedule_deploy.py
│   │   ├── live_valid_finalize_deployed.py
│   │   ├── live_valid_finalize_sees_graph_state.py
│   │   ├── live_valid_get_contacts.py
│   │   ├── live_valid_install_wrappers.py
│   │   ├── live_valid_notifications_session_call.py
│   │   ├── live_valid_orphan_need.py
│   │   ├── live_valid_orphans_ownership_guard.py
│   │   ├── live_valid_orphans_schema_types.py
│   │   ├── live_valid_poll_and_dispatch_classification.py
│   │   ├── live_valid_recipient_atomicity.py
│   │   ├── live_valid_root_return_value_key.py
│   │   ├── live_valid_slack_webhook.py
│   │   ├── live_valid_stage_create_or_alter.py
│   │   ├── live_valid_transient_lifecycle.py
│   │   ├── live_valid_user_recipient.py
│   │   └── live_valid_v1_types.py
│   ├── conftest.py
│   ├── test_account_schema_stored.py
│   ├── test_alert.py
│   ├── test_api_integration_compute_pool.py
│   ├── test_base.py
│   ├── test_catalog_integration.py
│   ├── test_cli.py
│   ├── test_comment_reconcile.py
│   ├── test_conflict.py
│   ├── test_dag.py
│   ├── test_dag_condition.py
│   ├── test_dag_errors.py
│   ├── test_dag_finalize_wrapper.py
│   ├── test_dag_frequency_live.py
│   ├── test_dag_notifications.py
│   ├── test_dag_output_registry.py
│   ├── test_dag_output_registry_live.py
│   ├── test_dag_owned_names.py
│   ├── test_dag_render.py
│   ├── test_dag_task_wrapper.py
│   ├── test_dag_timeout_bounds.py
│   ├── test_dag_wrappers.py
│   ├── test_database.py
│   ├── test_deps.py
│   ├── test_diff.py
│   ├── test_dynamic_table.py
│   ├── test_event_table.py
│   ├── test_external_access_integration.py
│   ├── test_external_volume.py
│   ├── test_grant.py
│   ├── test_iceberg_table.py
│   ├── test_iceberg_table_live.py
│   ├── test_init.py
│   ├── test_live_probes.py
│   ├── test_manifest.py
│   ├── test_network_policy.py
│   ├── test_network_rule.py
│   ├── test_network_rule_policy_apply.py
│   ├── test_notification_integration.py
│   ├── test_orphans.py
│   ├── test_parallel.py
│   ├── test_procedure.py
│   ├── test_procedure_secrets_reconcile.py
│   ├── test_query.py
│   ├── test_query_provider.py
│   ├── test_quota.py
│   ├── test_roles.py
│   ├── test_schema.py
│   ├── test_schema_relations.py
│   ├── test_schemas.py
│   ├── test_secret.py
│   ├── test_secret_scan_guard.py
│   ├── test_stage.py
│   ├── test_storage_lifecycle_policy.py
│   ├── test_stream.py
│   ├── test_streamlit.py
│   ├── test_streamlit_live.py
│   ├── test_substitute_env.py
│   ├── test_table.py
│   ├── test_tag.py
│   ├── test_task.py
│   ├── test_type_contract.py
│   ├── test_user.py
│   ├── test_user_defined_function.py
│   ├── test_validate_sql_live.py
│   ├── test_view.py
│   ├── test_warehouse.py
│   ├── test_warehouse_adaptive_live.py
│   └── test_wrapper_install.py
├── AGENTS.md
├── CLAUDE.md
├── LICENSE
├── pyproject.toml
├── README.md
└── uv.lock

License

MIT — see LICENSE.

Metadata

Release files for pinky-provider 0.1.0.dev3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pinky-provider 0.1.0.dev3
File Size Uploaded Provenance Actions
pinky_provider-0.1.0.dev3.tar.gz 697.3 kB With provenance Details for pinky_provider-0.1.0.dev3.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for pinky-provider 0.1.0.dev3
File Interpreter ABI Platform Actions
pinky_provider-0.1.0.dev3-py3-none-any.whl Python 3 none any Details for pinky_provider-0.1.0.dev3-py3-none-any.whl

Total release size: 908.4 kB

Release files / pinky_provider-0.1.0.dev3.tar.gz

Download URL pinky_provider-0.1.0.dev3.tar.gz
Size 697.3 kB
Tags Source
SHA-256 checksum
How to use checksums
016f870ecd1e37245f1a1c6904d9b04d2f6a136503f74c4a012bceb16b59ae97
BLAKE2b-256 checksum
How to use checksums
f9bd30d81d86d056eaea68bca5b5e161d0de8a8265fd97db5b7b538f9e24b92c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.

Transparency log

Release files / pinky_provider-0.1.0.dev3-py3-none-any.whl

Download URL pinky_provider-0.1.0.dev3-py3-none-any.whl
Size 211.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ca7f248e7157440c71bb490623bcea09f8e0c371f6bddc2e7b02ef0e78e21d43
BLAKE2b-256 checksum
How to use checksums
f942427c3bc84893bea1a94eefba37743568ca526ea61c3f72b5f1633d623e0b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.

Transparency log

Security for pinky-provider 0.1.0.dev3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for pinky_provider-0.1.0.dev3.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page