An open API service indexing awesome lists of open source software.

https://github.com/workfloworchestrator/orchestrator-core

The workflow orchestrator core repository
https://github.com/workfloworchestrator/orchestrator-core

orchestrator python

Last synced: 28 days ago
JSON representation

The workflow orchestrator core repository

Awesome Lists containing this project

README

          

# Orchestrator-Core

[![Downloads](https://pepy.tech/badge/orchestrator-core/month)](https://pepy.tech/project/orchestrator-core)
[![codecov](https://codecov.io/gh/workfloworchestrator/orchestrator-core/branch/main/graph/badge.svg?token=5ANQFI2DHS)](https://codecov.io/gh/workfloworchestrator/orchestrator-core)
[![pypi_version](https://img.shields.io/pypi/v/orchestrator-core?color=%2334D058&label=pypi%20package)](https://pypi.org/project/orchestrator-core)
[![Supported python versions](https://img.shields.io/pypi/pyversions/orchestrator-core.svg?color=%2334D058)](https://pypi.org/project/orchestrator-core)
![Discord](https://img.shields.io/discord/1295834294270558280?style=flat&logo=discord&label=discord&link=https%3A%2F%2Fdiscord.gg%fQkQn5ajFR)

Production ready Orchestration Framework to manage product lifecycle and workflows. Easy to use, built on top of FastAPI and Pydantic

## Documentation

The documentation can be found at [workfloworchestrator.org](https://workfloworchestrator.org/orchestrator-core/).

## Installation (quick start)

Simplified steps to install and use the orchestrator-core.
For more details, read the [Getting started](https://workfloworchestrator.org/orchestrator-core/getting-started/base/) documentation.

### Step 1 - Install the package

Create a virtualenv and install the orchestrator-core.

```shell
python -m venv .venv
source .venv/bin/activate
pip install orchestrator-core
```

### Step 2 - Setup the database

Create a postgres database:

```shell
createuser -sP nwa
createdb orchestrator-core -O nwa # set password to 'nwa'
```

Configure the database URI in your local environment:

```
export DATABASE_URI=postgresql+psycopg://nwa:nwa@localhost:5432/orchestrator-core
```

### Step 3 - Create main.py and wsgi.py

Create a `main.py` file for running the CLI.

```python
from orchestrator.core.cli.main import app as core_cli

if __name__ == "__main__":
core_cli()
```

Create a `wsgi.py` file for running the web server.

```python
from orchestrator.core import OrchestratorCore
from orchestrator.core.settings import AppSettings

app = OrchestratorCore(base_settings=AppSettings())
app.register_graphql()
```

### Step 4 - Run the database migrations

Initialize the migration environment and database tables.

```shell
python main.py db init
python main.py db upgrade heads
```

### Step 5 - Run the app

```shell
export OAUTH2_ACTIVE=False
uvicorn --reload --host 127.0.0.1 --port 8080 wsgi:app
```

Visit the [ReDoc](http://127.0.0.1:8080/api/redoc) or [OpenAPI](http://127.0.0.1:8080/api/docs) page to view and interact with the API.

## Contributing

We use [uv](https://docs.astral.sh/uv/getting-started/installation/) to manage
dependencies. Unit tests need no services; integration tests use
[testcontainers](https://testcontainers-python.readthedocs.io/) to spin up
Postgres + Redis on demand (Docker required).

To get started, follow these steps:

```shell
# on your local machine
git clone https://github.com/workfloworchestrator/orchestrator-core
cd orchestrator-core
just pytest # Run unit tests
just pytest test/integration_tests # Run integration tests (testcontainers)
just pytest -vx # Stop at first failed test
just pytest --last-failed # re-run only failed tests
```

For more details please read the [development docs](https://workfloworchestrator.org/orchestrator-core/contributing/development/).