Metadata-Version: 2.4
Name: snowcap
Version: 1.0.6
Summary: Snowcap: Snowflake infrastructure as code
Home-page: https://github.com/datacoves/snowcap
Author: Datacoves
Project-URL: Homepage, https://github.com/datacoves/snowcap
Classifier: Development Status :: 4 - Beta
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: SQL
Classifier: Topic :: Database
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: rich-click==1.8.9
Requires-Dist: click<8.2
Requires-Dist: inflection==0.5.1
Requires-Dist: pyparsing==3.0.9
Requires-Dist: pyyaml
Requires-Dist: snowflake-connector-python>=3.12.3
Requires-Dist: snowflake-snowpark-python>=1.24.0
Requires-Dist: pyOpenSSL>=22.1.0
Requires-Dist: jinja2
Requires-Dist: pathspec
Provides-Extra: dev
Requires-Dist: black; extra == "dev"
Requires-Dist: build; extra == "dev"
Requires-Dist: codespell==2.2.6; extra == "dev"
Requires-Dist: mypy; extra == "dev"
Requires-Dist: pytest-cov; extra == "dev"
Requires-Dist: pytest-profiling!=1.8.0; extra == "dev"
Requires-Dist: pytest-xdist; extra == "dev"
Requires-Dist: pytest>=6.0; extra == "dev"
Requires-Dist: python-dotenv; extra == "dev"
Requires-Dist: ruff; extra == "dev"
Requires-Dist: tabulate; extra == "dev"
Requires-Dist: twine!=5.1.0; extra == "dev"
Requires-Dist: types-pytz; extra == "dev"
Requires-Dist: types-pyyaml; extra == "dev"
Dynamic: author
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: license-file
Dynamic: project-url
Dynamic: provides-extra
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# `snowcap` - Snowflake infrastructure as code

[![PyPI](https://img.shields.io/pypi/v/snowcap)](https://pypi.org/project/snowcap/)
[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
[![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)

## Brought to you by Datacoves

<a href="https://datacoves.com">
  <picture>
    <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/datacoves/snowcap/main/images/datacoves-dark.png">
    <img alt="Datacoves" src="https://raw.githubusercontent.com/datacoves/snowcap/main/images/datacoves-light.png" width="150">
  </picture>
</a>

Snowcap helps you provision, deploy, and secure resources in Snowflake. Datacoves takes it further: a managed DataOps platform for dbt and Airflow where governance and best practices are built into every layer.

- **Private cloud or SaaS** – your data, your choice
- **Managed dbt + Airflow** – production-ready from day one
- **In-browser VS Code** – onboard developers in minutes
- **Bring your own tools** – integrates with your existing stack, no lock-in
- **AI-assisted development** – connect your organization's approved LLM (Anthropic, OpenAI, Azure, Gemini, and more)
- **Built-in governance** – CI/CD, guardrails, and best practices included

Snowcap is the power tools. Datacoves is the workshop.

[Explore the platform →](https://datacoves.com)

---

## Why Snowcap?

Snowcap replaces Terraform, Schemachange, or Permifrost with a single, purpose-built tool for Snowflake.

| Feature | Snowcap | Terraform | Permifrost |
|---------|---------|-----------|------------|
| Snowflake-native | Yes | No | Yes |
| State file | No | Yes | No |
| YAML + Python | Yes | HCL only | YAML only |
| Speed | 50-90% faster | Baseline | Medium |
| All resource types | Yes | Most | Roles/grants only |
| `for_each` templating | Yes | Yes | No |
| Export existing resources | Yes | Import only | No |

## Key Features

- **Declarative** — Generates the right SQL to make your config match your account
- **Comprehensive** — 60+ Snowflake resource types supported
- **Flexible** — Write configuration in YAML or Python
- **Fast** — 50-90% faster than Terraform
- **Migration-friendly** — Export existing resources with the CLI

## Quick Start

```sh
pip install snowcap
```

Create `snowcap.yml`:

```yaml
warehouses:
  - name: analytics
    warehouse_size: xsmall
    auto_suspend: 60
```

Run:

```sh
# Set credentials
export SNOWFLAKE_ACCOUNT=my-account
export SNOWFLAKE_USER=my-user
export SNOWFLAKE_PASSWORD=my-password
export SNOWFLAKE_ROLE=SYSADMIN

# Preview changes
snowcap plan --config snowcap.yml

# Apply changes
snowcap apply --config snowcap.yml
```

## Documentation

Full documentation, examples, and resource reference at **[snowcap.datacoves.com](https://snowcap.datacoves.com)**

- [Getting Started](https://snowcap.datacoves.com/getting-started/)
- [YAML Configuration](https://snowcap.datacoves.com/yaml-configuration/)
- [Role-Based Access Control](https://snowcap.datacoves.com/role-based-access-control/)
- [Resource Reference](https://snowcap.datacoves.com/resources/database/)

## Support

- [Documentation](https://snowcap.datacoves.com)
- [GitHub Issues](https://github.com/datacoves/snowcap/issues)
