Metadata-Version: 2.4
Name: earthkit-transforms
Version: 1.0.0
Summary: Aggregation tools for meteorological and climate data.
License-Expression: Apache-2.0
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
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: Topic :: Scientific/Engineering
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: xarray>=2022.3.0
Requires-Dist: numpy>=1.18
Requires-Dist: earthkit-utils~=1.0
Provides-Extra: all
Requires-Dist: earthkit-data~=1.0; extra == "all"
Requires-Dist: geopandas; extra == "all"
Requires-Dist: rasterio; extra == "all"
Provides-Extra: ci
Requires-Dist: earthkit-transforms[all]; extra == "ci"
Requires-Dist: pre-commit; extra == "ci"
Requires-Dist: mypy; extra == "ci"
Requires-Dist: pytest; extra == "ci"
Requires-Dist: pytest-cov; extra == "ci"
Requires-Dist: pandas-stubs; extra == "ci"
Requires-Dist: types-PyYAML; extra == "ci"
Provides-Extra: docs
Requires-Dist: earthkit-transforms[ci]; extra == "docs"
Requires-Dist: ipykernel; extra == "docs"
Requires-Dist: Pygments>=2.6.1; extra == "docs"
Requires-Dist: Sphinx; extra == "docs"
Requires-Dist: docutils; extra == "docs"
Requires-Dist: entrypoints; extra == "docs"
Requires-Dist: filelock; extra == "docs"
Requires-Dist: furo; extra == "docs"
Requires-Dist: sphinx-design; extra == "docs"
Requires-Dist: nbconvert; extra == "docs"
Requires-Dist: nbsphinx; extra == "docs"
Requires-Dist: myst-parser; extra == "docs"
Requires-Dist: tqdm; extra == "docs"
Requires-Dist: pandoc; extra == "docs"
Requires-Dist: pypandoc-binary; extra == "docs"
Requires-Dist: PyYAML; extra == "docs"
Requires-Dist: setuptools; extra == "docs"
Requires-Dist: statsmodels; extra == "docs"
Requires-Dist: reverse-geocode; extra == "docs"
Requires-Dist: earthkit-plots~=1.0; extra == "docs"
Dynamic: license-file

<p align="center">
  <picture>
    <source srcset="https://github.com/ecmwf/logos/raw/refs/heads/main/logos/earthkit/earthkit-transforms-dark.svg" media="(prefers-color-scheme: dark)">
    <img src="https://github.com/ecmwf/logos/raw/refs/heads/main/logos/earthkit/earthkit-transforms-light.svg" height="120">
  </picture>
</p>

<p align="center">
  <a href="https://github.com/ecmwf/codex/raw/refs/heads/main/ESEE">
    <img src="https://github.com/ecmwf/codex/raw/refs/heads/main/ESEE/foundation_badge.svg" alt="ECMWF Software EnginE">
  </a>
  <a href="https://github.com/ecmwf/codex/raw/refs/heads/main/Project Maturity">
    <img src="https://github.com/ecmwf/codex/raw/refs/heads/main/Project Maturity/graduated_badge.svg" alt="Maturity Level">
  </a>
  <a href="https://codecov.io/gh/ecmwf/earthkit-transforms">
    <img src="https://codecov.io/gh/ecmwf/earthkit-transforms/branch/main/graph/badge.svg" alt="Code Coverage">
  </a>
  <a href="https://opensource.org/licenses/apache-2-0">
    <img src="https://img.shields.io/badge/Licence-Apache 2.0-blue.svg" alt="Licence">
  </a>
  <a href="https://github.com/ecmwf/earthkit-transforms/releases">
    <img src="https://img.shields.io/github/v/release/ecmwf/earthkit-transforms?color=purple&label=Release" alt="Latest Release">
  </a>
  <a href="https://earthkit-transforms.readthedocs.io/en/latest/?badge=latest">
    <img src="https://readthedocs.org/projects/earthkit-transforms/badge/?version=latest" alt="Documentation Status">
  </a>
</p>

<p align="center">
  <a href="#quick-start">Quick Start</a>
  •
  <a href="#installation">Installation</a>
  •
  <a href="https://earthkit-transforms.readthedocs.io/en/latest/">Documentation</a>
</p>

> [!IMPORTANT]
> This software is **Graduated** and subject to ECMWF's guidelines on [Software Maturity](https://github.com/ecmwf/codex/raw/refs/heads/main/Project%20Maturity).

**earthkit-transforms** is a library of software tools to support people working with climate and meteorology data.

**earthkit-transforms** is made up of sub-modules which contains methods for transforming data in specific domains.
For example, the temporal module contains methods for aggregation and statistics analysis accross time dimensions/coordinates.

It has been designed following the philosphy of [earthkit](https://github.com/ecmwf/earthkit), hence the methods should be interoperable with any
data object understood by earthkit-data.

## Installation

```bash
pip install earthkit-transforms
```

## Quick Start

```python
import earthkit.transforms as ekt

daily_mean = ekt.temporal.daily_mean(MY_DATA)
```

## Detailed documentation

Please refer the [earthkit-transforms readthedocs page](https://earthkit-transforms.readthedocs.io) for more detailed documentation, example notebooks and the API reference guide.

## Workflow for developers/contributors

For best experience create a new environment with latest stable version of Python. The Makefile provides
commands for creating a development environment with all dependencies installed in editable mode, plus
pre-commit hooks. Choose the option that matches your preferred tooling:

**Using pip + venv:**

```bash
make clean-pip-env
. .venv/bin/activate
```

**Using uv:**

```bash
make clean-uv-env
. .venv/bin/activate
```

**Using conda:**

```bash
make clean-conda-env
conda activate ./.conda
```

Once your environment is active, common development tasks are also available via the Makefile:

```bash
make qa            # run pre-commit checks on all files
make unit-tests    # run the test suite with coverage
make type-check    # run mypy type checking
make docs-build    # build the documentation
```

## Licence

```
Copyright 2026, European Centre for Medium Range Weather Forecasts.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

In applying this licence, ECMWF does not waive the privileges and immunities
granted to it by virtue of its status as an intergovernmental organisation
nor does it submit to any jurisdiction.
```
