Metadata-Version: 2.4
Name: bfabric_app_runner
Version: 0.2.0
Summary: Application runner for B-Fabric apps
Author-email: Leonardo Schwarz <leonardo.schwarz@fgcz.ethz.ch>
License: GPL-3.0
Requires-Python: >=3.12
Requires-Dist: bfabric==1.13.28
Requires-Dist: cyclopts>=3.13.0
Requires-Dist: glom
Requires-Dist: mako
Requires-Dist: pandera[polars]>=0.24.0
Requires-Dist: pydantic
Provides-Extra: dev
Requires-Dist: app-runner[doc]; extra == 'dev'
Requires-Dist: bfabric[dev,typing]; extra == 'dev'
Requires-Dist: mypy; extra == 'dev'
Requires-Dist: types-pyyaml; extra == 'dev'
Provides-Extra: doc
Requires-Dist: autodoc-pydantic; extra == 'doc'
Requires-Dist: myst-parser; extra == 'doc'
Requires-Dist: sphinx; extra == 'doc'
Requires-Dist: sphinx-autobuild; extra == 'doc'
Requires-Dist: sphinx-book-theme; extra == 'doc'
Requires-Dist: sphinxcontrib-plantuml; extra == 'doc'
Provides-Extra: test
Requires-Dist: inline-snapshot; extra == 'test'
Requires-Dist: logot; extra == 'test'
Requires-Dist: pyfakefs; extra == 'test'
Requires-Dist: pytest; extra == 'test'
Requires-Dist: pytest-mock; extra == 'test'
Description-Content-Type: text/markdown

The app runner is an experimental tool that standardizes the integration of one-off apps into B-Fabric.

**The API is subject to drastic changes in the next time.**

The main idea is that an app provides a specification of the following steps:

- dispatch -> create `inputs.yml` files and 1 `chunks.yml` file
- process -> process a particular chunk (after inputs have been prepared)
- collect -> collect the results of a chunk and create `outputs.yml` files

The individual app can be in a container environment or a script running in the same environment as the app runner.

To make this possible input and output staging is abstracted and communicated through `inputs.yml` and `outputs.yml`
specification files.
A command is available to stage the inputs or register the outputs respectively then.

## Quick Start

See the [examples/](examples/) directory for templates and detailed instructions on creating new applications. Start with development mode for testing, then build for production after updating the version in `pyproject.toml`.
