Metadata-Version: 2.4
Name: rs-dpr-service
Version: 1.0a15
Summary: Copernicus Sentinel rs-server, DPR as a service.
License: Apache-2.0
Keywords: stac,copernicus,sentinel,processing
Author: ESA under contract with Airbus and CS
Author-email: ops_coprs@airbus.com
Classifier: Development Status :: 3 - Alpha
Classifier: Framework :: FastAPI
Classifier: Framework :: OpenTelemetry
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
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 :: 3.15
Classifier: Topic :: Scientific/Engineering :: GIS
Classifier: Topic :: Scientific/Engineering :: Image Processing
Requires-Dist: SQLAlchemy (>=2.0.37,<3.0.0)
Requires-Dist: bandit (>=1.8.3,<2.0.0)
Requires-Dist: dask-gateway (==2026.3.0)
Requires-Dist: dask[distributed]
Requires-Dist: fastapi (>=0.123.0,<0.155)
Requires-Dist: flake8-pyproject (>=1.2.3,<2.0.0)
Requires-Dist: flask (>=3.1.1,<4.0.0)
Requires-Dist: geoalchemy2 (>=0.18.0)
Requires-Dist: httpx (>=0.28.1,<0.29.0)
Requires-Dist: jsonpatch (>=1.33,<2.0)
Requires-Dist: mypy (>=2.4.0,<3.0.0)
Requires-Dist: openapi-core (>=0.22.0)
Requires-Dist: opentelemetry-distro (>=0.66b1,<0.67)
Requires-Dist: opentelemetry-exporter-otlp (>=1.45.1,<2.0.0)
Requires-Dist: psycopg2 (>=2.9.11,<3.0.0)
Requires-Dist: pygeoapi (>=0.21,<0.22)
Requires-Dist: s3fs (>=2026.9.0)
Requires-Dist: starlette (>=1.4.1)
Requires-Dist: tornado (>=6.5,<7.0)
Requires-Dist: uvicorn (>=0.35.0)
Project-URL: Documentation, https://home.rs-python.eu/rs-documentation/rs-dpr-service/docs/doc/
Project-URL: Homepage, https://home.rs-python.eu/
Project-URL: Repository, https://github.com/RS-PYTHON/rs-dpr-service
Description-Content-Type: text/markdown

# rs-dpr-service

The web service of [RS-Python](https://home.rs-python.eu/), the Copernicus Reference System Python, that runs the
[EOPF](https://eopf.copernicus.eu/) DPR processors (the re-engineered Sentinel processors) on the RS-Python
[Dask](https://www.dask.org/) clusters, with an [OGC API - Processes](https://ogcapi.ogc.org/processes/) interface.

## Overview

- `GET /dpr/processes/{processor}` returns the [task table](https://cpm.pages.eopf.copernicus.eu/eopf-cpm/main/processor-orchestration-guide/tasktables.html)
  of a processor. The task tables, in the EOPF CPM v3 format, are in the [config](https://github.com/RS-PYTHON/rs-dpr-service/tree/develop/config)
  folder and are validated against the [schemas/TaskTable.schema.json](schemas/TaskTable.schema.json) schema.
- `POST /dpr/processes/{processor}/execution` runs a processor on a Dask cluster, with an EOPF CPM v3 payload file,
  and returns a job identifier.
- `GET /dpr/jobs/{job_id}`, `GET /dpr/jobs/{job_id}/logs` and `DELETE /dpr/jobs/{job_id}` follow, stream the logs of
  and cancel a job.

The processors available are `s1_l0`, `s3_l0`, `s1_ard`, `s3_l1olci`, `s3_l2olci`, plus a `mockup` processor and
the `conv_safe_zarr` conversion of legacy SAFE products to Zarr. The service is called by the processing flows of
the [rs-client-libraries](https://github.com/RS-PYTHON/rs-client-libraries).

## Getting started

- Run the processors from the Prefect flows, see [Customise the DPR processing](https://github.com/RS-PYTHON/rs-client-libraries/blob/develop/docs/doc/advanced/customise-dpr-flow.md).
- Run the service on your computer with the [local mode](https://github.com/RS-PYTHON/rs-demo/blob/develop/docs/local-mode.md)
  of rs-demo.
- Deploy it with the [rs-dpr-service Helm chart](https://github.com/RS-PYTHON/rs-helm/blob/develop/charts/rs-dpr-service/README.md)
  and [rs-server-deployment](https://github.com/RS-PYTHON/rs-server-deployment).
- Develop on it:

    ```shell
    poetry install --with dev
    poetry run pre-commit install
    poetry run pytest -m unit
    ```

    The service must use the same Python and Dask versions as the Dask clusters of the processors, see
    [Dask images](https://github.com/RS-PYTHON/rs-workflow-env/blob/develop/docs/dask_images.md).

## Documentation

- [DPR processors](docs/doc/index.md): role, architecture, deployment
- [Cancel a DPR run](docs/doc/cancel-dpr-run.md)
- [DPR processor integration](docs/doc/processor-integration.md)
- Online documentation of the whole project: <https://home.rs-python.eu/rs-documentation/>

## Related repositories

| Repository | Relationship |
|---|---|
| [rs-client-libraries](https://github.com/RS-PYTHON/rs-client-libraries) | The processing flows that call this service. |
| [rs-workflow-env](https://github.com/RS-PYTHON/rs-workflow-env) | Docker images of the Dask clusters of the processors. |
| [rs-server](https://github.com/RS-PYTHON/rs-server) | The other RS-Python services. |
| [rs-helm](https://github.com/RS-PYTHON/rs-helm), [rs-server-deployment](https://github.com/RS-PYTHON/rs-server-deployment) | Helm chart and deployment. |
| [rs-testmeans](https://github.com/RS-PYTHON/rs-testmeans) | Mockup processor. |
| [rs-documentation](https://github.com/RS-PYTHON/rs-documentation) | Online documentation of the whole project. |

## Contributing

See the [contribution guidelines](https://github.com/RS-PYTHON/rs-documentation/blob/develop/docs/developers/contributing.md).
Report bugs in the [issue tracker](https://github.com/RS-PYTHON/rs-dpr-service/issues). In case of sensitive bugs like
security vulnerabilities, please contact <ops_coprs@airbus.com> directly instead of using the issue tracker.

## Licensing

The code in this project is licensed under the [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0).

---

![](https://raw.githubusercontent.com/RS-PYTHON/.github/refs/heads/main/profile/banner_logo.jpg)

This project is funded by the EU and ESA.

