Metadata-Version: 2.4
Name: stelvio
Version: 0.9.0b5
Summary: Ship Python to AWS in minutes, not days
Project-URL: homepage, https://stelvio.dev/
Project-URL: repository, https://github.com/stelviodev/stelvio
Project-URL: documentation, https://stelvio.dev/docs/
Project-URL: Bug Tracker, https://github.com/stelviodev/stelvio/issues
Author-email: Michal Martinka <michal@stelvio.dev>, Bas Steins <bas@stelvio.dev>
Maintainer-email: Michal <michal@stelvio.dev>, Bas Steins <bas@stelvio.dev>
License: Apache-2.0
License-File: LICENSE
Keywords: aws,cloudflare,infrastructure
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: System :: Systems Administration
Requires-Python: >=3.12
Requires-Dist: awslambdaric<4,>=3.0
Requires-Dist: boto3<2,>=1.0
Requires-Dist: botocore[crt]>=1.42.30
Requires-Dist: click<9,>=8.0
Requires-Dist: platformdirs<5,>=4.5.1
Requires-Dist: pulumi-aws==7.25.0
Requires-Dist: pulumi-cloudflare==6.14.0
Requires-Dist: pulumi==3.230.0
Requires-Dist: requests<3,>=2.33
Requires-Dist: rich<15,>=14.0
Requires-Dist: websockets<17,>=15.0
Description-Content-Type: text/markdown

# Stelvio

[![PyPI](https://img.shields.io/pypi/v/stelvio.svg)](https://pypi.org/project/stelvio/)
[![Python Version](https://img.shields.io/pypi/pyversions/stelvio.svg)](https://pypi.org/project/stelvio/)
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)


## Ship Python to AWS in minutes, not days.

[**Documentation**](https://stelvio.dev/intro/quickstart/) - [**Stelvio Manifesto**](https://stelvio.dev/about/manifesto/) - [**Roadmap**](https://github.com/stelviodev/stelvio/wiki/Roadmap)

Stelvio is an **open-source** framework that lets you build and deploy modern AWS applications using **pure Python**. Forget YAML, complex configuration, or learning new DSLs.

With the `stlv` CLI, you focus on your code, and Stelvio handles the infrastructure.

[![stlv intro video](https://stelvio.dev/intro-video.jpg)](https://stelvio.dev/intro-video)

## Why Stelvio?

- 🐍 **Pure Python**: Define your infrastructure with standard Python code. Use your favorite IDE, linter, and type checker.
- 🧠 **Smart Defaults**: We handle the complex IAM roles, networking, and configuration so you don't have to.
- 🔗 **Automatic Permissions**: Simply pass resources to your functions. Stelvio automatically configures permissions and environment variables.
- ⚡ **Live Dev Mode**: Run `stlv dev` to sync your code changes instantly. No waiting for deployments.
- 🔧 **Full Control**: Logic and infrastructure in one place, with escape hatches to the underlying Pulumi resources.
- 📖 **Open Source**: Built by developers for developers. Apache 2.0 licensed.

## Example

Define your infrastructure and application logic in one file. Stelvio handles the wiring.

```python
from stelvio.aws.api_gateway import Api
from stelvio.aws.cron import Cron
from stelvio.aws.dynamo_db import DynamoTable


@app.run
def run() -> None:

    todos = DynamoTable(
        "todos-table",
        fields={
            "user": "string",
            "date": "string"
        },
        sort_key="date",
        partition_key="user"
    )

    cleanup = Cron(
        "cleanup-cron",
        "rate(1 minute)",
        handler="api/handlers.cleanup",
        links=[todos]
    )

    api = Api("stlv-demo-api")
    api.route("GET", "/hello", handler="api/handlers.hello_world")
    api.route("POST", "/todos", handler="api/handlers.post_todo", links=[todos])
    api.route("GET", "/todos/{user}", handler="api/handlers.list_todos", links=[todos])
```

## Supported Components

Stelvio provides high-level components for the most common AWS services:

- **[Function](https://stelvio.dev/docs/components/aws/lambda/)** (AWS Lambda)
- **[Public API](https://stelvio.dev/docs/components/aws/api-gateway/)** (API Gateway)
- **[Scheduled Tasks](https://stelvio.dev/docs/components/aws/cron/)** (EventBridge Cron)
- **[Object Storage](https://stelvio.dev/docs/components/aws/s3/)** (S3)
- **[NoSQL Database](https://stelvio.dev/docs/components/aws/dynamo-db/)** (DynamoDB)
- **[Message Queues](https://stelvio.dev/docs/components/aws/queues/)** (SQS)
- **[Pub/Sub Topics](https://stelvio.dev/docs/components/aws/topics/)** (SNS)
- **[Email](https://stelvio.dev/docs/components/aws/email/)** (SES)
- **[AppSync](https://stelvio.dev/docs/components/aws/appsync/)** (AWS AppSync Managed GraphQL APIs)
- **[Cognito](https://stelvio.dev/docs/components/aws/cognito/)** (Amazon Cognito User Pools & Identity Pools)

## Give it a try

[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://github.com/codespaces/new?hide_repo_select=true&ref=main&repo=1084563664)

## Quick Start

You can get up and running in less than 2 minutes.

```bash
# 1. Create a new project
uv init my-todo-api && cd my-todo-api

# 2. Add Stelvio
uv add stelvio

# 3. Initialize project structure
uv run stlv init

# 4. Deploy to AWS
uv run stlv deploy
```

See the [Quick Start Guide](https://stelvio.dev/docs/getting-started/quickstart/) for a full walkthrough.

## Community & Contributing

Stelvio is open source and we welcome contributions!

- Check out our [Roadmap](https://github.com/stelviodev/stelvio/wiki/Roadmap) to see what's coming.
- Read the [Stelvio Manifesto](https://stelvio.dev/about/manifesto/) to understand our philosophy.
- Found a bug? Open an [Issue](https://github.com/stelviodev/stelvio/issues).

## License

This project is licensed under the Apache License 2.0 - see the [LICENSE](LICENSE) file for details.
