Metadata-Version: 2.4
Name: dasf
Version: 1.0.1
Summary: python module wrapper for the data analytics software framework DASF
Author: Mike Sips, Doris Dransch
Author-email: Daniel Eggert <daniel.eggert@gfz-potsdam.de>, "Philipp S. Sommer" <philipp.sommer@hereon.de>
Maintainer-email: "Philipp S. Sommer" <philipp.sommer@hereon.de>
Project-URL: Homepage, https://codebase.helmholtz.cloud/dasf/dasf-messaging-python
Project-URL: Documentation, https://dasf.readthedocs.io/en/latest/
Project-URL: Source, https://codebase.helmholtz.cloud/dasf/dasf-messaging-python
Project-URL: Tracker, https://codebase.helmholtz.cloud/dasf/dasf-messaging-python/issues/
Keywords: digital-earth,dasf,gfz,hzg,hereon,hgf,helmholtz,remote procedure call,rpc,django,python,websocket
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
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.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Typing :: Typed
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSES/Apache-2.0.txt
License-File: LICENSES/CC-BY-4.0.txt
License-File: LICENSES/CC0-1.0.txt
Requires-Dist: websocket-client<1.8,>=1.5
Requires-Dist: docstring_parser
Requires-Dist: pydantic<3.0,>=2.12
Requires-Dist: pydantic-settings
Requires-Dist: typing_extensions
Requires-Dist: jinja2>=3.1.2
Requires-Dist: jsonschema>=3.2
Requires-Dist: PyYAML>=4.2b
Requires-Dist: windows-curses; platform_system == "Windows"
Provides-Extra: backend
Requires-Dist: isort>=5.10.1; extra == "backend"
Requires-Dist: black>=22.3.0; extra == "backend"
Requires-Dist: autoflake>=2.0.0; extra == "backend"
Provides-Extra: openai
Requires-Dist: openai; extra == "openai"
Provides-Extra: mcp
Requires-Dist: mcp[cli]>=2.3.0; extra == "mcp"
Provides-Extra: broker
Requires-Dist: dasf-broker-django[drf]>=1.0.0; extra == "broker"
Requires-Dist: daphne; extra == "broker"
Provides-Extra: testsite
Requires-Dist: dasf[backend,broker,mcp,openai]; extra == "testsite"
Requires-Dist: tox; extra == "testsite"
Requires-Dist: isort==7.0.0; extra == "testsite"
Requires-Dist: black==25.9.0; extra == "testsite"
Requires-Dist: blackdoc==0.4.6; extra == "testsite"
Requires-Dist: flake8==7.3.0; extra == "testsite"
Requires-Dist: pre-commit; extra == "testsite"
Requires-Dist: mypy==1.18.2; extra == "testsite"
Requires-Dist: dasf-broker-django[pytest]>=1.0.0; extra == "testsite"
Requires-Dist: types-PyYAML; extra == "testsite"
Requires-Dist: django-rest-framework; extra == "testsite"
Requires-Dist: pytest-django; extra == "testsite"
Requires-Dist: pytest-cov; extra == "testsite"
Requires-Dist: reuse==6.2.0; extra == "testsite"
Requires-Dist: xarray; sys_platform != "win32" and extra == "testsite"
Requires-Dist: scipy; sys_platform != "win32" and extra == "testsite"
Provides-Extra: docs
Requires-Dist: dasf[backend,broker,mcp,openai]; extra == "docs"
Requires-Dist: xarray; sys_platform != "win32" and extra == "docs"
Requires-Dist: autodocsumm; extra == "docs"
Requires-Dist: sphinx-rtd-theme; extra == "docs"
Requires-Dist: hereon-netcdf-sphinxext; extra == "docs"
Requires-Dist: sphinx-argparse; extra == "docs"
Requires-Dist: sphinx-design; extra == "docs"
Requires-Dist: myst_parser; extra == "docs"
Provides-Extra: dev
Requires-Dist: dasf[testsite]; extra == "dev"
Requires-Dist: dasf[docs]; extra == "dev"
Requires-Dist: reuse-shortcuts>=1.0.1; extra == "dev"
Requires-Dist: types-PyYAML; extra == "dev"
Dynamic: license-file

<!--
SPDX-FileCopyrightText: 2019-2026 Helmholtz Centre Potsdam GFZ German Research Centre for Geosciences
SPDX-FileCopyrightText: 2020-2021 Helmholtz-Zentrum Geesthacht GmbH
SPDX-FileCopyrightText: 2021-2026 Helmholtz-Zentrum hereon GmbH

SPDX-License-Identifier: CC-BY-4.0
-->

![DASF Logo](https://codebase.helmholtz.cloud/dasf/dasf-messaging-python/-/raw/master/docs/_static/dasf_logo.svg)

# Data Analytics Software Framework

[![CI](https://codebase.helmholtz.cloud/dasf/dasf-messaging-python/badges/master/pipeline.svg)](https://codebase.helmholtz.cloud/dasf/dasf-messaging-python/-/pipelines?page=1&scope=all&ref=master)
[![Code coverage](https://codebase.helmholtz.cloud/dasf/dasf-messaging-python/badges/master/coverage.svg)](https://codebase.helmholtz.cloud/dasf/dasf-messaging-python/-/graphs/master/charts)
[![Docs](https://readthedocs.org/projects/dasf-messaging-python/badge/?version=latest)](https://dasf.readthedocs.io/en/latest/)
[![Latest Release](https://codebase.helmholtz.cloud/dasf/dasf-messaging-python/-/badges/release.svg)](https://codebase.helmholtz.cloud/dasf/dasf-messaging-python)
[![PyPI version](https://img.shields.io/pypi/v/dasf.svg)](https://pypi.python.org/pypi/dasf/)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
[![Imports: isort](https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336)](https://pycqa.github.io/isort/)
[![PEP8](https://img.shields.io/badge/code%20style-pep8-orange.svg)](https://www.python.org/dev/peps/pep-0008/)
[![Checked with mypy](http://www.mypy-lang.org/static/mypy_badge.svg)](http://mypy-lang.org/)
[![REUSE status](https://api.reuse.software/badge/codebase.helmholtz.cloud/dasf/dasf-messaging-python)](https://api.reuse.software/info/codebase.helmholtz.cloud/dasf/dasf-messaging-python)
[![DOI](https://img.shields.io/badge/DOI-10.5880%2FGFZ.1.4.2021.005-blue)](https://doi.org/10.5880/GFZ.1.4.2021.005)
[![JOSS](https://joss.theoj.org/papers/e8022c832c1bb6e879b89508a83fa75e/status.svg)](https://joss.theoj.org/papers/e8022c832c1bb6e879b89508a83fa75e)

python module wrapper for the data analytics software framework DASF

## Abstract

`DASF: Messaging Python` is part of the Data Analytics Software Framework (DASF, https://codebase.helmholtz.cloud/dasf),
developed at the GFZ German Research Centre for Geosciences (https://www.gfz-potsdam.de).
It is funded by the Initiative and Networking Fund of the Helmholtz Association through the Digital Earth project
(https://www.digitalearth-hgf.de/).

`DASF: Messaging Python` is a RPC (remote procedure call) wrapper library for the python programming language. As part of the data analytics software framework DASF, it implements the DASF RPC messaging protocol. This message broker based RPC implementation supports the integration of algorithms and methods implemented in python in a distributed environment. It utilizes pydantic (https://pydantic-docs.helpmanual.io/) for data and model validation using python type annotations. DASF distributes messages via a central, django-based message broker: dasf-broker-django. (see also: [Message Broker](https://dasf.readthedocs.io/en/latest/developers/messaging.html#messagebroker))

---

## Documentation

see: https://dasf.readthedocs.io/en/latest/



## Installation

Install this package in a dedicated python environment via

```bash
python -m venv venv
source venv/bin/activate
pip install dasf
```

Optional features come as extras: `backend` (the generation of code), `broker`
(the development message broker that the `runserver` command starts), `openai`
(conversations with an LLM) and `mcp` (MCP servers). Install them in brackets,
e.g. `pip install "dasf[backend,broker]"`.

To use this in a development setup, clone the [source code][source code] from
gitlab, start the development server and make your changes::

```bash
git clone https://codebase.helmholtz.cloud/dasf/dasf-messaging-python
cd dasf-messaging-python
python -m venv venv
source venv/bin/activate
make dev-install
```

The [quickstart][quickstart] shows how to set up a backend module and the
development message broker.


[source code]: https://codebase.helmholtz.cloud/dasf/dasf-messaging-python
[quickstart]: https://dasf.readthedocs.io/en/latest/usage/quickstart.html

## Technical note

This package has been generated from the template
https://codebase.helmholtz.cloud/hcdc/software-templates/python-package-template.git.

See the template repository for instructions on how to update the skeleton for
this package.

### **Source Code Examples**
The [`examples`][examples] directory of the source code has an example backend
module ([`backend_module.py`][example-backend]), the client stub that has been
generated from it, an MCP server, and a script that calls the module via the
client stub ([`client.py`][example-client]). Its [README][examples-readme]
describes how to run them, and how to generate the client stub.

[examples]: https://codebase.helmholtz.cloud/dasf/dasf-messaging-python/-/tree/master/examples
[example-backend]: https://codebase.helmholtz.cloud/dasf/dasf-messaging-python/-/blob/master/examples/backend_module.py
[example-client]: https://codebase.helmholtz.cloud/dasf/dasf-messaging-python/-/blob/master/examples/client.py
[examples-readme]: https://codebase.helmholtz.cloud/dasf/dasf-messaging-python/-/blob/master/examples/README.md


## Recommended Software Citation

`Eggert et al., (2022). DASF: A data analytics software framework for distributed environments. Journal of Open Source Software, 7(78), 4052, https://doi.org/10.21105/joss.04052`


## License information

Copyright © 2019-2026 Helmholtz Centre Potsdam GFZ German Research Centre for Geosciences
Copyright © 2020-2021 Helmholtz-Zentrum Geesthacht
Copyright © 2021-2026 Helmholtz-Zentrum hereon GmbH

Code files in this repository are licensed under the
Apache-2.0, if not stated otherwise in the file.

Documentation files in this repository are licensed under CC-BY-4.0, if not stated otherwise in the file.

Supplementary and configuration files in this repository are licensed
under CC0-1.0, if not stated otherwise
in the file.

Please check the header of the individual files for more detailed
information.

### License management

License management is handled with [``reuse``](https://reuse.readthedocs.io/).
If you have any questions on this, please have a look into the
[contributing guide][contributing] or contact the maintainers of
`dasf-messaging-python`.

[contributing]: https://dasf.readthedocs.io/en/latest/contributing.html


## Contact
Philipp S. Sommer
eMail: <philipp.sommer@hereon.de>


Helmholtz-Zentrum Hereon
Max-Planck-Str. 1
21502 Geesthacht
Germany
