Metadata-Version: 2.4
Name: ballista-sdk
Version: 0.1.0
Summary: Ballista.build SDK for Python
Project-URL: GitHub, https://github.com/ballista-build/ballista-sdk
Author-email: August Bigelow <dev@atbigelow.com>
License-Expression: MIT
License-File: LICENSE
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: 3.15
Classifier: Typing :: Typed
Requires-Python: >=3.12
Requires-Dist: aiohttp>=3.13.5
Requires-Dist: kubernetes>=32.0
Requires-Dist: openapi-pydantic>=0.5.1
Requires-Dist: pydantic>=2
Requires-Dist: python-dotenv>=1.2.1
Requires-Dist: pyyaml>=6.0
Requires-Dist: semver>=3.0
Requires-Dist: ty>=0.0.1a32
Requires-Dist: urllib3<3.0.0,>=1.25
Provides-Extra: fastapi
Requires-Dist: fastapi; extra == 'fastapi'
Description-Content-Type: text/markdown

# Ballista Python SDK

Create Python systems that implement the Ballista.build capabilities.

## Big Mega Still In-Development Warning

Highly volatile and in heavy development. Probably do not want to use this yet.

## Prerequisites

- uv
- just

## Glossary

See [GLOSSARY](docs/GLOSSARY.md)

## Repo commands

Common repository commands provided by `just`. Run `just` to get a list of them.

# Architecture

## Infrastructure Adapters

Artifacts are executed and resource lifecycles are maintained by `InfrastructureAdapter` implementations.

### Docker Compose

Uses Docker Compose for Bolt execution. See [DockerCompose](docs/DOCKER_COMPOSE.md) for implementation details.

### Kubernetes API

Uses direct Kubernetes API calls for Bolt execution. See [Kubernetes](docs/KUBERNETESmd) for implementation details.

## Resource Providers

InfrastructureAdapter -> transport method (HTTP, GRPC, etc.) -> ResourceProvider protocol implementation

Lifecycle Interpretations

- Large change to resource (not sure what that means yet)
  - `copy_resource` copies existing resource A to new resource B
  - `get_resource_status` waits for copy to complete (maybe?)
  - something swaps from resource A to B
  - `destroy_resource` destroys resource A
- Small change to resource
  - `update_resource` on resource A
