Metadata-Version: 2.4
Name: orche
Version: 0.4.4
Summary: A simple, lightweight Python orchestrator for Docker Compose stacks
License-Expression: MIT
License-File: LICENSE
Keywords: docker,docker-compose,orchestration,devops,containers
Author: Pietro Agazzi
Author-email: pietro.agazzi@prconsulting.eu
Requires-Python: >=3.10,<4
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
Provides-Extra: dev
Provides-Extra: docs
Requires-Dist: GitPython (>=3.1.0)
Requires-Dist: PyYAML (>=6.0)
Requires-Dist: click (>=8.1.0)
Requires-Dist: mkdocs (>=1.6.0) ; extra == "docs"
Requires-Dist: mkdocs-material (>=9.5.0) ; extra == "docs"
Requires-Dist: mkdocstrings[python] (>=0.25.0) ; extra == "docs"
Requires-Dist: mypy (>=1.8.0) ; extra == "dev"
Requires-Dist: pre-commit (>=4.0.0) ; extra == "dev"
Requires-Dist: pytest (>=8.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: python-on-whales (>=0.80.0,<1.0.0)
Requires-Dist: rich (>=13.0.0)
Requires-Dist: ruff (>=0.2.0) ; extra == "dev"
Requires-Dist: types-PyYAML (>=6.0) ; extra == "dev"
Requires-Dist: types-pygments (>=2.19.0) ; extra == "dev"
Project-URL: Documentation, https://pietroagazzi.github.io/orche
Project-URL: Homepage, https://github.com/pietroagazzi/orche
Project-URL: Issues, https://github.com/pietroagazzi/orche/issues
Project-URL: Repository, https://github.com/pietroagazzi/orche
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
```

## 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
```

