Metadata-Version: 2.4
Name: cdo-toolkit
Version: 0.1.0
Summary: CDO-based NetCDF regridding with chunking, parallel workers, and optional CMIP filename helpers
Project-URL: Repository, https://github.com/orlando-code/cdo-toolkit
Project-URL: Documentation, https://github.com/orlando-code/cdo-toolkit#readme
Project-URL: Issues, https://github.com/orlando-code/cdo-toolkit/issues
Author-email: Orlando Timmerman <rt582@cam.ac.uk>
License: BSD-3-Clause
License-File: LICENSE
Keywords: cdo,climate,netcdf,regridding,xarray
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: BSD License
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: Topic :: Scientific/Engineering
Requires-Python: >=3.10
Requires-Dist: cdo>=1.6.1
Requires-Dist: numpy>=1.24.0
Requires-Dist: psutil>=7.2.2
Requires-Dist: rich>=12.6.0
Requires-Dist: xarray>=2023.1.0
Provides-Extra: dev
Requires-Dist: pytest>=8.3.3; extra == 'dev'
Description-Content-Type: text/markdown

# cdo-toolkit

CDO-based NetCDF regridding toolkit: weight caching, time-chunked processing, parallel workers, Rich progress UI, and optional surface/seafloor level extraction.

Works with **general NetCDF files**. CMIP6 filename helpers (`tos_Omon_...` variable filtering, `nominal_resolution` metadata) live in `cdo_toolkit.cmip` but are optional.

## Requirements

- Python ≥ 3.10
- [CDO](https://code.mpimet.mpg.de/projects/cdo) binary on `PATH` (e.g. `conda install -c conda-forge cdo`)

## Install

```bash
pip install cdo-toolkit
# editable from source
pip install -e .
```

## CLI

```bash
cdo-toolkit /path/to/data -o /path/to/out -r 1.0 1.0 -w 4
python -m cdo_toolkit /path/to/file.nc --extract-surface
```

## Python API

```python
from pathlib import Path
from cdo_toolkit import CDORegridPipeline, regrid_directory, regrid_single_file

regrid_directory(Path("data/"), target_resolution=(1.0, 1.0), max_workers=8)
```

## Package layout

| Module | Role |
|--------|------|
| `pipeline` | `CDORegridPipeline` core |
| `api` | High-level `regrid_directory`, `regrid_single_file`, … |
| `workers` | Process-pool worker entrypoints |
| `ui` | Rich progress bars |
| `cmip` | Optional CMIP6 filename/metadata helpers |
| `paths` | Weight-cache and intermediate-file path helpers |

## License

BSD-3-Clause
