Metadata-Version: 2.5
Name: kajenn-orchestra
Version: 0.1.0
Summary: Orchestration for kajenn: SPA application, worker pool, sticky routing, freeze and reassignment
Project-URL: Homepage, https://kajenn.org
Project-URL: Repository, https://github.com/kajenn-org/kajenn-orchestra
Project-URL: Bug Tracker, https://github.com/kajenn-org/kajenn-orchestra/issues
Author-email: Genropy Team <info@softwell.it>
License: Apache-2.0
License-File: LICENSE
License-File: NOTICE
Keywords: asgi,async,http,server,web
Classifier: Development Status :: 3 - Alpha
Classifier: Framework :: AsyncIO
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.11
Requires-Dist: genro-bag>=0.22.0
Requires-Dist: genro-builders>=0.23.0
Requires-Dist: genro-routes>=0.30.0
Requires-Dist: genro-toolbox>=0.14.0
Requires-Dist: genro-tytx>=0.15.0
Requires-Dist: kajenn>=0.1.0
Requires-Dist: psutil>=6.0
Provides-Extra: dev
Requires-Dist: genro-tytx[msgpack]>=0.15.0; extra == 'dev'
Requires-Dist: httpx>=0.27; extra == 'dev'
Requires-Dist: mkdocs-material>=9.6; extra == 'dev'
Requires-Dist: mkdocs>=1.6; extra == 'dev'
Requires-Dist: mypy>=1.0; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
Requires-Dist: pytest-cov>=4.0; extra == 'dev'
Requires-Dist: pytest>=7.0; extra == 'dev'
Requires-Dist: ruff>=0.1.0; extra == 'dev'
Requires-Dist: websockets>=13.0; extra == 'dev'
Provides-Extra: docs
Requires-Dist: myst-parser>=2.0; extra == 'docs'
Requires-Dist: sphinx-autodoc-typehints>=2.0; extra == 'docs'
Requires-Dist: sphinx-rtd-theme>=2.0; extra == 'docs'
Requires-Dist: sphinx>=7.0; extra == 'docs'
Provides-Extra: internals
Requires-Dist: mkdocs-material>=9.6; extra == 'internals'
Requires-Dist: mkdocs>=1.6; extra == 'internals'
Provides-Extra: test
Requires-Dist: genro-tytx[msgpack]>=0.15.0; extra == 'test'
Requires-Dist: httpx>=0.27; extra == 'test'
Requires-Dist: mkdocs-material>=9.6; extra == 'test'
Requires-Dist: mkdocs>=1.6; extra == 'test'
Requires-Dist: pytest-asyncio>=0.23; extra == 'test'
Requires-Dist: pytest-cov>=4.0; extra == 'test'
Requires-Dist: pytest>=7.0; extra == 'test'
Requires-Dist: websockets>=13.0; extra == 'test'
Description-Content-Type: text/markdown

# kajenn-orchestra

**Status**: Alpha · version 0.1.0.

Orchestration for [kajenn](https://github.com/kajenn-org/kajenn): the SPA front
(`SpaApplication`), the commander and its worker groups, sticky routing of a user to one
worker process, freeze and reassignment, the commander-owned global store, the registers,
the configuration profiles and the pool inspector.

`kajenn_orchestra` imports `kajenn`; `kajenn` never imports `kajenn_orchestra`. The core
loads the front by class reference from the configuration recipe. The modules of `kajenn`
this package may import are listed in `kajenn_imports.txt` and checked by
`tools/import_graph.py` in the pre-commit hook.

Based on genropy history and genro-modules.

## Installation

```
pip install kajenn-orchestra
```

kajenn is installed with it. Beside a kajenn checkout, `[tool.uv.sources]` in
`pyproject.toml` points at `../kajenn`:

```
uv venv .venv
uv pip install -p .venv/bin/python -e ".[dev,internals]"
```

## Project

- Documentation: https://kajenn.org
- Internals dossier: `internals/`, read with `mkdocs serve`
- Organization: https://github.com/kajenn-org

## License

Apache License 2.0, copyright Softwell S.r.l.
