Metadata-Version: 2.4
Name: orchestrator-core
Version: 5.0.0rc3
Summary: This is the orchestrator workflow engine.
Author: SURF
Author-email: SURF <automation-beheer@surf.nl>
License-Expression: Apache-2.0
License-File: LICENSE
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: Framework :: AsyncIO
Classifier: Framework :: FastAPI
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: System Administrators
Classifier: Intended Audience :: Telecommunications Industry
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python
Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Internet
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Software Development
Classifier: Typing :: Typed
Requires-Dist: alembic==1.18.4
Requires-Dist: anyio>=3.7.0
Requires-Dist: apscheduler>=3.11.0
Requires-Dist: click==8.*
Requires-Dist: deepmerge==2.0
Requires-Dist: deprecated>=1.2.18
Requires-Dist: fastapi~=0.136.0
Requires-Dist: fastapi-etag==0.4.0
Requires-Dist: itsdangerous>=2.2.0
Requires-Dist: jinja2==3.1.6
Requires-Dist: more-itertools~=11.0.1
Requires-Dist: nwa-stdlib~=1.11.0
Requires-Dist: oauth2-lib>=2.6.1
Requires-Dist: orjson==3.11.8
Requires-Dist: pgvector>=0.4.1
Requires-Dist: prometheus-client==0.25.0
Requires-Dist: psycopg[binary]>=3.3.3
Requires-Dist: pydantic-forms>=2.4.0
Requires-Dist: pydantic-settings~=2.14.0
Requires-Dist: pydantic[email]~=2.13.0
Requires-Dist: python-dateutil==2.9.0.post0
Requires-Dist: python-rapidjson>=1.23,<1.24
Requires-Dist: pytz>=2025
Requires-Dist: redis==7.4.0
Requires-Dist: semver==3.0.4
Requires-Dist: sentry-sdk[fastapi]>=2.29.1
Requires-Dist: sqlalchemy==2.0.49
Requires-Dist: sqlalchemy-utils==0.42.1
Requires-Dist: strawberry-graphql>=0.311.3
Requires-Dist: structlog>=25.4.0
Requires-Dist: tabulate==0.10.0
Requires-Dist: typer==0.24.2
Requires-Dist: uvicorn[standard]~=0.46.0
Requires-Dist: litellm>=1.80.0
Requires-Dist: celery~=5.6.0 ; extra == 'celery'
Requires-Python: >=3.11, <3.15
Project-URL: Documentation, https://workfloworchestrator.org/orchestrator-core
Project-URL: Homepage, https://workfloworchestrator.org/orchestrator-core
Project-URL: Source, https://github.com/workfloworchestrator/orchestrator-core
Provides-Extra: celery
Description-Content-Type: text/markdown

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

<p style="text-align: center"><em>Production ready Orchestration Framework to manage product lifecycle and workflows. Easy to use, built on top of FastAPI and Pydantic</em></p>

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

=== "`orchestrator-core` ≥ 5.0"

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

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

=== "`orchestrator-core` < 5.0"

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

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

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

=== "`orchestrator-core` ≥ 5.0"

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

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

=== "`orchestrator-core` < 5.0"

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

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

### 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 and [docker compose](https://docs.docker.com/compose/) to provide services required for unit tests (redis, postgresql)

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 -vx  # Stop at first failed test
just pytest --last-failed  # re-run only failed tests
just pytest --failed-first  # run tests starting with tests that failed
```

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