Metadata-Version: 2.4
Name: snowcap
Version: 1.0.9
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 | SnowDDL | Permifrost |
|---------|---------|-----------|---------|------------|
| Snowflake-native | ✅ | ❌ | ✅ | ✅ |
| No state file | ✅ | ❌ | ✅ | ✅ |
| YAML + Python | ✅ | HCL only | YAML only | YAML only |
| Speed | 50%+ faster | Baseline | Fast | Slow |
| 60+ resource types | ✅ | Most | Most | Grants only |
| Templating / loops | ✅ | ✅ | Limited | ❌ |
| Export existing resources | ✅ | Import only | ❌ | ❌ |
| Actively maintained | ✅ Datacoves | ✅ Snowflake | ⚠️ Single maintainer | ⚠️ Infrequent |

## 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%+ faster than Terraform and Permifrost
- **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/)
- [Why Snowcap?](https://snowcap.datacoves.com/why-snowcap/)

## Background

Snowcap is a fork of [Titan Core](https://github.com/Titan-Systems/titan). The original project appeared unmaintained, so Datacoves forked it to continue active development, fix bugs, and add new features. We're grateful to the Titan Systems team for creating and open-sourcing the original project under the Apache 2.0 license.

## Support

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