Metadata-Version: 2.4
Name: orche
Version: 0.5.0
Summary: A simple, lightweight Python orchestrator for Docker Compose stacks
Project-URL: Homepage, https://github.com/pietroagazzi/orche
Project-URL: Repository, https://github.com/pietroagazzi/orche
Project-URL: Documentation, https://pietroagazzi.github.io/orche
Project-URL: Issues, https://github.com/pietroagazzi/orche/issues
Author-email: Pietro Agazzi <pietro.agazzi@prconsulting.eu>
License-Expression: MIT
License-File: LICENSE
Keywords: containers,devops,docker,docker-compose,orchestration
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Software Development :: Build Tools
Classifier: Topic :: System :: Systems Administration
Classifier: Typing :: Typed
Requires-Python: <4,>=3.10
Requires-Dist: click>=8.1.0
Requires-Dist: gitpython>=3.1.0
Requires-Dist: python-on-whales<1.0.0,>=0.80.0
Requires-Dist: pyyaml>=6.0
Requires-Dist: rich>=13.0.0
Provides-Extra: dev
Requires-Dist: mypy>=1.8.0; extra == 'dev'
Requires-Dist: pre-commit>=4.0.0; extra == 'dev'
Requires-Dist: pytest-cov>=5.0.0; extra == 'dev'
Requires-Dist: pytest-mock>=3.14.0; extra == 'dev'
Requires-Dist: pytest-timeout>=2.3.0; extra == 'dev'
Requires-Dist: pytest>=8.0.0; extra == 'dev'
Requires-Dist: ruff>=0.2.0; extra == 'dev'
Requires-Dist: types-pygments>=2.19.0; extra == 'dev'
Requires-Dist: types-pyyaml>=6.0; extra == 'dev'
Provides-Extra: docs
Requires-Dist: mkdocs-material>=9.5.0; extra == 'docs'
Requires-Dist: mkdocs>=1.6.0; extra == 'docs'
Requires-Dist: mkdocstrings[python]>=0.25.0; extra == 'docs'
Description-Content-Type: text/markdown

# Orche

[![CI](https://github.com/pietroagazzi/orche/actions/workflows/ci.yml/badge.svg)](https://github.com/pietroagazzi/orche/actions/workflows/ci.yml)

A simple, lightweight Python orchestrator for Docker Compose stacks.

Define your stack logic in an `orchefile.py`, register commands with decorators, and run everything through the `orche` CLI.

> [!IMPORTANT]
> Orche is a **thin orchestration layer** on top of Docker Compose.
> It does not replace Docker — it coordinates what happens around it.

## Installation

```bash
pip install orche
```

## Quick Start

Create an `orchefile.py` in your project root:

```python
from orche import Stack

stack = Stack(
    name="myapp",
    compose_files=["docker-compose.yml"],
)

@stack.commands.up
def up():
    stack.build().up()

@stack.commands.down
def down():
    stack.down(volumes=True)
```

Then run:

```bash
orche up
orche down

# Chain commands with commas
orche build, up
```

## Documentation

Full documentation is available [here](https://pietroagazzi.github.io/orche/):

- [Installation](https://pietroagazzi.github.io/orche/installation/)
- [Quick Start](https://pietroagazzi.github.io/orche/quickstart/)
- [CLI Reference](https://pietroagazzi.github.io/orche/cli-reference/)
- **Guides:** [Hooks](https://pietroagazzi.github.io/orche/guides/hooks/) · [Services](https://pietroagazzi.github.io/orche/guides/services/)
- **API:** [Stack](https://pietroagazzi.github.io/orche/api/stack/) · [Command Registry](https://pietroagazzi.github.io/orche/api/command-registry/) · [Built-in Utilities](https://pietroagazzi.github.io/orche/api/builtin/) · [Exceptions](https://pietroagazzi.github.io/orche/api/exceptions/)

## Requirements

- Python >= 3.10
- Docker and Docker Compose installed on the system

## Development

```bash
pip install -e ".[dev]"
pytest
mypy orche
ruff check orche
```
