Metadata-Version: 2.4
Name: open-climate-service
Version: 0.1.0
Summary: Climate and Earth Observation data API
Keywords: dhis2,climate,zarr,stac,geospatial
Author: University of Oslo
Author-email: University of Oslo <climate@dhis2.org>
License-Expression: BSD-3-Clause
License-File: LICENSE
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Scientific/Engineering :: GIS
Requires-Dist: httpx>=0.28.1
Requires-Dist: pystac>=1.10,<2
Requires-Dist: fastapi>=0.100.0 ; extra == 'server'
Requires-Dist: jinja2>=3.1 ; extra == 'server'
Requires-Dist: starlette>=0.27.0 ; extra == 'server'
Requires-Dist: uvicorn>=0.41.0 ; extra == 'server'
Requires-Dist: python-dotenv>=1.0.1 ; extra == 'server'
Requires-Dist: geojson-pydantic>=2.1.0 ; extra == 'server'
Requires-Dist: metpy>=1.7,<2 ; extra == 'server'
Requires-Dist: xstac>=1.0,<2 ; extra == 'server'
Requires-Dist: xarray>=2025.12.0 ; extra == 'server'
Requires-Dist: zarr>=3.1.6,<4 ; extra == 'server'
Requires-Dist: icechunk>=2.0,<3 ; extra == 'server'
Requires-Dist: geozarr-toolkit==0.1.* ; extra == 'server'
Requires-Dist: topozarr>=0.0.91,<0.1 ; extra == 'server'
Requires-Dist: rioxarray>=0.17 ; extra == 'server'
Requires-Dist: portalocker>=3.2.0 ; extra == 'server'
Requires-Dist: dhis2eo>=1.2.1 ; extra == 'server'
Requires-Dist: openeo-pg-parser-networkx>=2026.3.3 ; extra == 'server'
Requires-Dist: openeo-processes-dask>=2026.6.3 ; extra == 'server'
Requires-Dist: dask-geopandas>=0.4 ; extra == 'server'
Requires-Dist: odc-geo>=0.4.1 ; extra == 'server'
Requires-Dist: odc-stac>=0.3.9 ; extra == 'server'
Requires-Dist: planetary-computer>=0.5.1 ; extra == 'server'
Requires-Dist: pystac-client>=0.6.1 ; extra == 'server'
Requires-Dist: stac-validator>=3.3.1 ; extra == 'server'
Requires-Dist: xvec>=0.3 ; extra == 'server'
Requires-Dist: python-multipart>=0.0.29 ; extra == 'server'
Requires-Dist: xclim>=0.61.1 ; extra == 'server'
Requires-Dist: xarray>=2025.12.0 ; extra == 'xarray'
Requires-Dist: zarr>=3.1.6,<4 ; extra == 'xarray'
Requires-Dist: fsspec>=2024.6.0 ; extra == 'xarray'
Requires-Dist: aiohttp>=3.10 ; extra == 'xarray'
Requires-Python: >=3.12
Project-URL: Repository, https://github.com/dhis2/open-climate-service
Project-URL: Documentation, https://github.com/dhis2/open-climate-service/tree/main/docs
Project-URL: Bug Tracker, https://github.com/dhis2/open-climate-service/issues
Project-URL: Changelog, https://github.com/dhis2/open-climate-service/releases
Provides-Extra: server
Provides-Extra: xarray
Description-Content-Type: text/markdown

# Open Climate Service

An open-source platform that integrates data from many different sources to produce tailored climate services — to help make informed decisions, manage risks, and adapt to climate change.

> **Status: under active development.** APIs and data models may change without notice.

📖 **Documentation: <https://dhis2.github.io/open-climate-service/>**

Each instance is configured for a specific country or region: it scopes all data extraction, processing, and storage to that spatial extent, draws from sources such as CHIRPS, ERA5, and WorldPop, stores outputs as GeoZarr, and exposes them through open standards (STAC, Zarr over HTTP, openEO). It runs independently of DHIS2 and can be deployed on local, cloud-hosted, or sovereign country infrastructure.

## Install

```bash
pip install open-climate-service            # client only — talk to an instance over HTTP
pip install open-climate-service[xarray]    # + open published datasets as xarray
pip install open-climate-service[server]    # full server stack — run your own instance
```

> **Running a server?** The recommended ways to run an instance are **uv** or **Docker** — see [Run a server](#run-a-server), the [quick start](https://dhis2.github.io/open-climate-service/setup_guide/) (try it locally), and the [instance guide](https://dhis2.github.io/open-climate-service/instance_guide/) (operational deployments). The `[server]` extra installs with `pip` on Linux x86-64; on macOS or ARM, use uv or Docker. The client and `[xarray]` extras work on any platform.

## Quick start (client)

```python
from open_climate_service import ClimateService

service = ClimateService("https://my-instance.example.org")
datasets = service.datasets()                  # discover published collections
ds = service.open_dataset(datasets[0]["id"])   # open as xarray (needs the [xarray] extra)
```

## Run a server

To try it locally, see the [quick start](https://dhis2.github.io/open-climate-service/setup_guide/); for an operational deployment, see the [instance guide](https://dhis2.github.io/open-climate-service/instance_guide/). In short:

```bash
uv sync --extra server
uv run uvicorn open_climate_service.main:app --reload
```

## Documentation

- [Quick start](https://dhis2.github.io/open-climate-service/setup_guide/) — try it locally and ingest data
- [Instance guide](https://dhis2.github.io/open-climate-service/instance_guide/) — run a service for your country (recommended)
- [Using the web interface](https://dhis2.github.io/open-climate-service/web_interface/) — manage ingestion, sync, and the map viewer
- [Accessing data](https://dhis2.github.io/open-climate-service/user_guide/) — the Python client, STAC, and xarray
- [openEO](https://dhis2.github.io/open-climate-service/openeo/) — process graphs, workflows, and exports
- [API reference](https://dhis2.github.io/open-climate-service/managed_data_api_guide/)
- [Roadmap](https://dhis2.github.io/open-climate-service/roadmap/) · [Team](https://dhis2.github.io/open-climate-service/team/)

## Development

```bash
make sync   # install all dependencies (client + server + xarray)
make run    # start the dev server with hot reload
make lint   # ruff + mypy + pyright
make test   # pytest
```

## License

BSD-3-Clause.
