├── .gitattributes ├── .github ├── CODEOWNERS ├── ci-hpc-config.yml ├── dependabot.yml ├── labeler.yml ├── pull_request_template.md └── workflows │ ├── downstream-ci-hpc.yml │ ├── pr-conventional-commit.yml │ ├── pr-label-ats.yml │ ├── pr-label-conventional-commits.yml │ ├── pr-label-file-based.yml │ ├── pr-label-public.yml │ ├── python-publish.yml │ ├── python-pull-request.yml │ ├── readthedocs-pr-update.yml │ └── release-please.yml ├── .gitignore ├── .pre-commit-config.yaml ├── .readthedocs.yaml ├── .release-please-config.json ├── .release-please-manifest.json ├── CHANGELOG.md ├── CONTRIBUTORS.md ├── LICENSE ├── README.md ├── docs ├── Makefile ├── _static │ ├── logo.png │ └── style.css ├── _templates │ ├── .gitkeep │ └── apidoc │ │ └── package.rst.jinja ├── conf.py ├── index.rst ├── installing.rst ├── modules │ ├── checkpoints.rst │ ├── config.rst │ ├── dates.rst │ ├── grib.rst │ ├── humanize.rst │ ├── provenance.rst │ ├── s3.rst │ ├── testing.rst │ └── text.rst └── scripts │ └── api_build.sh ├── pyproject.toml ├── src └── anemoi │ └── utils │ ├── __init__.py │ ├── __main__.py │ ├── _environment.py │ ├── caching.py │ ├── checkpoints.py │ ├── cli.py │ ├── commands │ ├── __init__.py │ ├── config.py │ ├── metadata.py │ ├── requests.py │ └── transfer.py │ ├── compatibility.py │ ├── config.py │ ├── dates.py │ ├── devtools.py │ ├── grib.py │ ├── grids.py │ ├── hindcasts.py │ ├── humanize.py │ ├── logs.py │ ├── mars │ ├── __init__.py │ ├── mars.yaml │ └── requests.py │ ├── mlflow │ ├── __init__.py │ ├── auth.py │ ├── client.py │ └── utils.py │ ├── provenance.py │ ├── registry.py │ ├── remote │ ├── __init__.py │ ├── s3.py │ └── ssh.py │ ├── rules.py │ ├── s3.py │ ├── sanitise.py │ ├── sanitize.py │ ├── schemas │ ├── __init__.py │ └── errors.py │ ├── testing.py │ ├── text.py │ └── timer.py └── tests ├── test-transfer-data ├── directory │ ├── b │ │ ├── c │ │ │ └── x │ │ └── y │ ├── exotic filename ;^"'[=.,#]()êüçò✅.txt │ └── z └── file ├── test_caching.py ├── test_checkpoints.py ├── test_compatibility.py ├── test_dates.py ├── test_frequency.py ├── test_mlflow_auth.py ├── test_mlflow_client.py ├── test_provenance.py ├── test_registry.py ├── test_remote.py ├── test_s3.py ├── test_sanitise.py └── test_utils.py /.gitattributes: -------------------------------------------------------------------------------- 1 | CHANGELOG.md merge=union 2 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/.github/CODEOWNERS -------------------------------------------------------------------------------- /.github/ci-hpc-config.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/.github/ci-hpc-config.yml -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/.github/dependabot.yml -------------------------------------------------------------------------------- /.github/labeler.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/.github/labeler.yml -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/.github/pull_request_template.md -------------------------------------------------------------------------------- /.github/workflows/downstream-ci-hpc.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/.github/workflows/downstream-ci-hpc.yml -------------------------------------------------------------------------------- /.github/workflows/pr-conventional-commit.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/.github/workflows/pr-conventional-commit.yml -------------------------------------------------------------------------------- /.github/workflows/pr-label-ats.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/.github/workflows/pr-label-ats.yml -------------------------------------------------------------------------------- /.github/workflows/pr-label-conventional-commits.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/.github/workflows/pr-label-conventional-commits.yml -------------------------------------------------------------------------------- /.github/workflows/pr-label-file-based.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/.github/workflows/pr-label-file-based.yml -------------------------------------------------------------------------------- /.github/workflows/pr-label-public.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/.github/workflows/pr-label-public.yml -------------------------------------------------------------------------------- /.github/workflows/python-publish.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/.github/workflows/python-publish.yml -------------------------------------------------------------------------------- /.github/workflows/python-pull-request.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/.github/workflows/python-pull-request.yml -------------------------------------------------------------------------------- /.github/workflows/readthedocs-pr-update.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/.github/workflows/readthedocs-pr-update.yml -------------------------------------------------------------------------------- /.github/workflows/release-please.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/.github/workflows/release-please.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/.gitignore -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/.pre-commit-config.yaml -------------------------------------------------------------------------------- /.readthedocs.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/.readthedocs.yaml -------------------------------------------------------------------------------- /.release-please-config.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/.release-please-config.json -------------------------------------------------------------------------------- /.release-please-manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | ".": "0.4.40" 3 | } 4 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/CHANGELOG.md -------------------------------------------------------------------------------- /CONTRIBUTORS.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/CONTRIBUTORS.md -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/README.md -------------------------------------------------------------------------------- /docs/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/docs/Makefile -------------------------------------------------------------------------------- /docs/_static/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/docs/_static/logo.png -------------------------------------------------------------------------------- /docs/_static/style.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/docs/_static/style.css -------------------------------------------------------------------------------- /docs/_templates/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/_templates/apidoc/package.rst.jinja: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/docs/_templates/apidoc/package.rst.jinja -------------------------------------------------------------------------------- /docs/conf.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/docs/conf.py -------------------------------------------------------------------------------- /docs/index.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/docs/index.rst -------------------------------------------------------------------------------- /docs/installing.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/docs/installing.rst -------------------------------------------------------------------------------- /docs/modules/checkpoints.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/docs/modules/checkpoints.rst -------------------------------------------------------------------------------- /docs/modules/config.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/docs/modules/config.rst -------------------------------------------------------------------------------- /docs/modules/dates.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/docs/modules/dates.rst -------------------------------------------------------------------------------- /docs/modules/grib.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/docs/modules/grib.rst -------------------------------------------------------------------------------- /docs/modules/humanize.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/docs/modules/humanize.rst -------------------------------------------------------------------------------- /docs/modules/provenance.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/docs/modules/provenance.rst -------------------------------------------------------------------------------- /docs/modules/s3.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/docs/modules/s3.rst -------------------------------------------------------------------------------- /docs/modules/testing.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/docs/modules/testing.rst -------------------------------------------------------------------------------- /docs/modules/text.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/docs/modules/text.rst -------------------------------------------------------------------------------- /docs/scripts/api_build.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/docs/scripts/api_build.sh -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/pyproject.toml -------------------------------------------------------------------------------- /src/anemoi/utils/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/src/anemoi/utils/__init__.py -------------------------------------------------------------------------------- /src/anemoi/utils/__main__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/src/anemoi/utils/__main__.py -------------------------------------------------------------------------------- /src/anemoi/utils/_environment.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/src/anemoi/utils/_environment.py -------------------------------------------------------------------------------- /src/anemoi/utils/caching.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/src/anemoi/utils/caching.py -------------------------------------------------------------------------------- /src/anemoi/utils/checkpoints.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/src/anemoi/utils/checkpoints.py -------------------------------------------------------------------------------- /src/anemoi/utils/cli.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/src/anemoi/utils/cli.py -------------------------------------------------------------------------------- /src/anemoi/utils/commands/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/src/anemoi/utils/commands/__init__.py -------------------------------------------------------------------------------- /src/anemoi/utils/commands/config.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/src/anemoi/utils/commands/config.py -------------------------------------------------------------------------------- /src/anemoi/utils/commands/metadata.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/src/anemoi/utils/commands/metadata.py -------------------------------------------------------------------------------- /src/anemoi/utils/commands/requests.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/src/anemoi/utils/commands/requests.py -------------------------------------------------------------------------------- /src/anemoi/utils/commands/transfer.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/src/anemoi/utils/commands/transfer.py -------------------------------------------------------------------------------- /src/anemoi/utils/compatibility.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/src/anemoi/utils/compatibility.py -------------------------------------------------------------------------------- /src/anemoi/utils/config.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/src/anemoi/utils/config.py -------------------------------------------------------------------------------- /src/anemoi/utils/dates.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/src/anemoi/utils/dates.py -------------------------------------------------------------------------------- /src/anemoi/utils/devtools.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/src/anemoi/utils/devtools.py -------------------------------------------------------------------------------- /src/anemoi/utils/grib.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/src/anemoi/utils/grib.py -------------------------------------------------------------------------------- /src/anemoi/utils/grids.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/src/anemoi/utils/grids.py -------------------------------------------------------------------------------- /src/anemoi/utils/hindcasts.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/src/anemoi/utils/hindcasts.py -------------------------------------------------------------------------------- /src/anemoi/utils/humanize.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/src/anemoi/utils/humanize.py -------------------------------------------------------------------------------- /src/anemoi/utils/logs.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/src/anemoi/utils/logs.py -------------------------------------------------------------------------------- /src/anemoi/utils/mars/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/src/anemoi/utils/mars/__init__.py -------------------------------------------------------------------------------- /src/anemoi/utils/mars/mars.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/src/anemoi/utils/mars/mars.yaml -------------------------------------------------------------------------------- /src/anemoi/utils/mars/requests.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/src/anemoi/utils/mars/requests.py -------------------------------------------------------------------------------- /src/anemoi/utils/mlflow/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/src/anemoi/utils/mlflow/__init__.py -------------------------------------------------------------------------------- /src/anemoi/utils/mlflow/auth.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/src/anemoi/utils/mlflow/auth.py -------------------------------------------------------------------------------- /src/anemoi/utils/mlflow/client.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/src/anemoi/utils/mlflow/client.py -------------------------------------------------------------------------------- /src/anemoi/utils/mlflow/utils.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/src/anemoi/utils/mlflow/utils.py -------------------------------------------------------------------------------- /src/anemoi/utils/provenance.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/src/anemoi/utils/provenance.py -------------------------------------------------------------------------------- /src/anemoi/utils/registry.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/src/anemoi/utils/registry.py -------------------------------------------------------------------------------- /src/anemoi/utils/remote/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/src/anemoi/utils/remote/__init__.py -------------------------------------------------------------------------------- /src/anemoi/utils/remote/s3.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/src/anemoi/utils/remote/s3.py -------------------------------------------------------------------------------- /src/anemoi/utils/remote/ssh.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/src/anemoi/utils/remote/ssh.py -------------------------------------------------------------------------------- /src/anemoi/utils/rules.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/src/anemoi/utils/rules.py -------------------------------------------------------------------------------- /src/anemoi/utils/s3.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/src/anemoi/utils/s3.py -------------------------------------------------------------------------------- /src/anemoi/utils/sanitise.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/src/anemoi/utils/sanitise.py -------------------------------------------------------------------------------- /src/anemoi/utils/sanitize.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/src/anemoi/utils/sanitize.py -------------------------------------------------------------------------------- /src/anemoi/utils/schemas/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/src/anemoi/utils/schemas/__init__.py -------------------------------------------------------------------------------- /src/anemoi/utils/schemas/errors.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/src/anemoi/utils/schemas/errors.py -------------------------------------------------------------------------------- /src/anemoi/utils/testing.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/src/anemoi/utils/testing.py -------------------------------------------------------------------------------- /src/anemoi/utils/text.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/src/anemoi/utils/text.py -------------------------------------------------------------------------------- /src/anemoi/utils/timer.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/src/anemoi/utils/timer.py -------------------------------------------------------------------------------- /tests/test-transfer-data/directory/b/c/x: -------------------------------------------------------------------------------- 1 | x 2 | -------------------------------------------------------------------------------- /tests/test-transfer-data/directory/b/y: -------------------------------------------------------------------------------- 1 | y 2 | -------------------------------------------------------------------------------- /tests/test-transfer-data/directory/exotic filename ;^"'[=.,#]()êüçò✅.txt: -------------------------------------------------------------------------------- 1 | exotic 2 | -------------------------------------------------------------------------------- /tests/test-transfer-data/directory/z: -------------------------------------------------------------------------------- 1 | z 2 | -------------------------------------------------------------------------------- /tests/test-transfer-data/file: -------------------------------------------------------------------------------- 1 | file 2 | -------------------------------------------------------------------------------- /tests/test_caching.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/tests/test_caching.py -------------------------------------------------------------------------------- /tests/test_checkpoints.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/tests/test_checkpoints.py -------------------------------------------------------------------------------- /tests/test_compatibility.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/tests/test_compatibility.py -------------------------------------------------------------------------------- /tests/test_dates.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/tests/test_dates.py -------------------------------------------------------------------------------- /tests/test_frequency.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/tests/test_frequency.py -------------------------------------------------------------------------------- /tests/test_mlflow_auth.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/tests/test_mlflow_auth.py -------------------------------------------------------------------------------- /tests/test_mlflow_client.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/tests/test_mlflow_client.py -------------------------------------------------------------------------------- /tests/test_provenance.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/tests/test_provenance.py -------------------------------------------------------------------------------- /tests/test_registry.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/tests/test_registry.py -------------------------------------------------------------------------------- /tests/test_remote.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/tests/test_remote.py -------------------------------------------------------------------------------- /tests/test_s3.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/tests/test_s3.py -------------------------------------------------------------------------------- /tests/test_sanitise.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/tests/test_sanitise.py -------------------------------------------------------------------------------- /tests/test_utils.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ecmwf/anemoi-utils/HEAD/tests/test_utils.py --------------------------------------------------------------------------------