anemoi-datasets 0.5.26__tar.gz → 0.5.27__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- anemoi_datasets-0.5.27/.github/workflows/pr-label-ats.yml +66 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/.github/workflows/python-pull-request.yml +1 -1
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/.pre-commit-config.yaml +3 -3
- anemoi_datasets-0.5.27/.release-please-manifest.json +3 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/CHANGELOG.md +30 -0
- {anemoi_datasets-0.5.26/src/anemoi_datasets.egg-info → anemoi_datasets-0.5.27}/PKG-INFO +4 -4
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/cli/introduction.rst +1 -0
- anemoi_datasets-0.5.27/docs/cli/validate.rst +45 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/conf.py +2 -2
- anemoi_datasets-0.5.27/docs/howtos/create/04-create-with-filter.rst +117 -0
- anemoi_datasets-0.5.27/docs/howtos/create/yaml/recipe-filter1.yaml +31 -0
- anemoi_datasets-0.5.27/docs/howtos/create/yaml/recipe-filter2.yaml +35 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/howtos/introduction.rst +1 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/index.rst +1 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/pyproject.toml +4 -3
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/__init__.py +1 -2
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/_version.py +16 -3
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/commands/check.py +1 -1
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/commands/copy.py +1 -2
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/commands/create.py +1 -1
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/commands/inspect.py +27 -35
- anemoi_datasets-0.5.27/src/anemoi/datasets/commands/validate.py +59 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/compute/recentre.py +3 -6
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/__init__.py +22 -25
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/check.py +10 -12
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/chunks.py +1 -2
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/config.py +3 -6
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/filter.py +1 -2
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/input/__init__.py +1 -2
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/input/action.py +3 -5
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/input/concat.py +5 -8
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/input/context.py +3 -6
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/input/data_sources.py +5 -8
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/input/empty.py +1 -2
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/input/filter.py +2 -3
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/input/function.py +1 -2
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/input/join.py +4 -5
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/input/misc.py +4 -6
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/input/repeated_dates.py +13 -18
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/input/result.py +29 -33
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/input/step.py +4 -8
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/input/template.py +3 -4
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/input/trace.py +1 -1
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/patch.py +1 -2
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/persistent.py +3 -5
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/size.py +1 -3
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/accumulations.py +47 -52
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/accumulations2.py +4 -8
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/constants.py +1 -3
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/empty.py +1 -2
- anemoi_datasets-0.5.27/src/anemoi/datasets/create/sources/fdb.py +133 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/forcings.py +1 -2
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/grib.py +6 -10
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/grib_index.py +13 -15
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/hindcasts.py +2 -5
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/legacy.py +1 -1
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/mars.py +17 -21
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/netcdf.py +1 -2
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/opendap.py +1 -3
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/patterns.py +4 -6
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/recentre.py +8 -11
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/source.py +3 -6
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/tendencies.py +2 -5
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/xarray.py +4 -6
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/xarray_support/__init__.py +12 -13
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/xarray_support/coordinates.py +8 -12
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/xarray_support/field.py +16 -12
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/xarray_support/fieldlist.py +11 -15
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/xarray_support/flavour.py +42 -42
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/xarray_support/grid.py +15 -9
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/xarray_support/metadata.py +19 -128
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/xarray_support/patch.py +4 -6
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/xarray_support/time.py +10 -13
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/xarray_support/variable.py +21 -21
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/xarray_zarr.py +1 -2
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/zenodo.py +3 -5
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/statistics/__init__.py +3 -6
- anemoi_datasets-0.5.27/src/anemoi/datasets/create/testing.py +4 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/typing.py +1 -2
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/utils.py +1 -2
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/zarr.py +7 -2
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/__init__.py +15 -6
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/complement.py +7 -12
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/concat.py +5 -8
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/dataset.py +42 -47
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/debug.py +7 -9
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/ensemble.py +4 -6
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/fill_missing.py +7 -10
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/forwards.py +22 -26
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/grids.py +12 -16
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/indexing.py +9 -12
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/interpolate.py +7 -15
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/join.py +8 -12
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/masked.py +6 -11
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/merge.py +5 -9
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/misc.py +41 -45
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/missing.py +11 -16
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/observations/__init__.py +8 -14
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/padded.py +3 -5
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/records/backends/__init__.py +2 -2
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/rescale.py +5 -12
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/select.py +13 -16
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/statistics.py +4 -7
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/stores.py +16 -21
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/subset.py +8 -11
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/unchecked.py +7 -11
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/xy.py +25 -21
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/dates/__init__.py +13 -18
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/dates/groups.py +7 -10
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/grids.py +5 -9
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/testing.py +93 -7
- anemoi_datasets-0.5.27/src/anemoi/datasets/validate.py +598 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27/src/anemoi_datasets.egg-info}/PKG-INFO +4 -4
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi_datasets.egg-info/SOURCES.txt +11 -3
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi_datasets.egg-info/requires.txt +2 -1
- anemoi_datasets-0.5.27/tests/create/run.sh +22 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tests/create/test_create.py +4 -2
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tests/create/test_sources.py +1 -2
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tests/create/utils/compare.py +1 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tests/create/utils/create.py +4 -8
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tests/test_data.py +38 -81
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tests/test_data_gridded.py +9 -12
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tests/test_dates.py +1 -2
- anemoi_datasets-0.5.27/tests/test_validate.py +234 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tests/xarray/test_flavour.py +1 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tests/xarray/test_opendap.py +2 -2
- anemoi_datasets-0.5.27/tests/xarray/test_variable.py +83 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tests/xarray/test_zarr.py +6 -1
- anemoi_datasets-0.5.26/.release-please-manifest.json +0 -3
- anemoi_datasets-0.5.26/03-constant-fields.rst +0 -3
- anemoi_datasets-0.5.26/src/anemoi/datasets/utils/__init__.py +0 -8
- anemoi_datasets-0.5.26/tests/create/run.sh +0 -20
- anemoi_datasets-0.5.26/tests/xarray/test_samples.py +0 -88
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/.gitattributes +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/.github/CODEOWNERS +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/.github/ci-hpc-config.yml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/.github/dependabot.yml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/.github/labeler.yml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/.github/pull_request_template.md +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/.github/workflows/downstream-ci-hpc.yml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/.github/workflows/pr-conventional-commit.yml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/.github/workflows/pr-label-conventional-commits.yml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/.github/workflows/pr-label-file-based.yml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/.github/workflows/pr-label-public.yml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/.github/workflows/push-to-private.yml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/.github/workflows/python-publish.yml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/.github/workflows/readthedocs-pr-update.yml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/.github/workflows/release-please.yml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/.gitignore +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/.readthedocs.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/.release-please-config.json +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/.vscode/spellright.dict +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/CONTRIBUTORS.md +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/LICENSE +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/README.md +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/Makefile +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/_static/2t_map_example.png +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/_static/area-1.png +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/_static/concat.png +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/_static/cutout-1.png +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/_static/cutout-2.png +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/_static/cutout-3.png +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/_static/cutout-4.png +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/_static/cutout-5.png +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/_static/cutout-6.png +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/_static/join.png +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/_static/logo.png +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/_static/overlay.png +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/_static/schemas/matrix.excalidraw +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/_static/schemas/matrix.png +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/_static/schemas/overview.excalidraw +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/_static/schemas/overview.png +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/_static/schemas/recipe.excalidraw +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/_static/schemas/recipe.png +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/_static/skip-missing.png +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/_static/style.css +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/_static/thinning-after.png +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/_static/thinning-before.png +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/_templates/.gitkeep +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/_templates/apidoc/package.rst.jinja +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/adr/adr-1.md +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/apply-fmt.sh +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/check-index.sh +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/cli/compare-lam.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/cli/compare.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/cli/copy.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/cli/create.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/cli/grib-index.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/cli/inspect.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/cli/patch.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/cli/scan.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/advanced-options.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/handling-missing-dates.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/handling-missing-values.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/incremental.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/introduction.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/naming-conventions.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/naming-variables.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/operations.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/accumulations.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/anemoi-dataset.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/cds.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/eccc-fstd.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/forcings.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/grib-index.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/grib.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/hindcasts.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/mars.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/netcdf.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/opendap.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/recentre.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/repeated-dates.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/xarray-based.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/xarray-kerchunk.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/xarray-kerchunk.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/xarray-zarr.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/accumulations1.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/accumulations2.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/anemoi-dataset.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/anemoi-zarr-dataset.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/eccc-fstd.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/forcings.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/grib1.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/grib2.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/grib3.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/grib4.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/hindcasts.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/mars-cds.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/mars1.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/mars2.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/netcdf.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/opendap.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/recentre.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/repeated-dates1.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/repeated-dates2.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/repeated-dates3.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/repeated-dates4.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/xarray-based.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/xarray-kerchunk.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/xarray-zarr.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/zenodo.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/zenodo.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/sources.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/statistics.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/building/syntax.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/introduction.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/using/combining.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/using/configuration.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/using/configuration.toml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/using/ensembles.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/using/grids.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/using/introduction.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/using/matching.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/using/methods.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/using/miscellaneous.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/using/missing.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/using/opening.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/using/other.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/using/selecting.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/using/statistics.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/using/subsetting.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/using/zip.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/yaml/Makefile +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/yaml/building1.txt +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/yaml/building1.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/yaml/building2.txt +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/yaml/building2.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/yaml/building3.txt +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/yaml/building3.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/yaml/concat.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/yaml/hindcasts.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/yaml/input.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/yaml/missing_dates.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/yaml/nan.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/datasets/yaml/pipe.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/dev/contributing.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/howtos/create/01-grib-data.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/howtos/create/02-cf-data.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/howtos/create/03-constant-fields.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/howtos/create/yaml/grib-flavour1.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/howtos/create/yaml/grib-flavour2.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/howtos/create/yaml/grib-flavour3.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/howtos/create/yaml/grib-flavour4.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/howtos/create/yaml/grib-recipe1.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/howtos/create/yaml/grib-recipe2.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/howtos/create/yaml/grib-recipe3.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/howtos/create/yaml/grib-recipe4.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/howtos/create/yaml/grib-recipe5.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/howtos/create/yaml/netcdf1.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/howtos/create/yaml/opendap1.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/howtos/create/yaml/xarray-flavour1.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/howtos/create/yaml/xarray-patch1.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/howtos/create/yaml/xarray-patch2.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/howtos/create/yaml/zarr1.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/howtos/create/yaml/zarr2.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/howtos/usage/01-interpolate-step-dataset-combination.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/howtos/usage/02-coutout-complement-combination.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/howtos/usage/code/cutout-complement1.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/howtos/usage/code/interpolate1.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/howtos/usage/code/interpolate2.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/howtos/usage/yaml/cutout-complement1.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/howtos/usage/yaml/interpolate1.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/howtos/usage/yaml/interpolate2.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/installing.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/modules/dataset.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/modules/filters.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/modules/sources.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/overview.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/pptx/images.pptx +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/scripts/api_build.sh +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/usage/getting_started.rst +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/usage/yaml/aifs-ea-an-oper-0001-mars-o48-2020-2021-6h-v1.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/docs/using/code/trimedge1_.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/setup.cfg +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/__main__.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/check.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/commands/__init__.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/commands/cleanup.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/commands/compare-lam.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/commands/compare.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/commands/finalise-additions.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/commands/finalise.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/commands/grib-index.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/commands/init-additions.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/commands/init.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/commands/load-additions.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/commands/load.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/commands/patch.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/commands/publish.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/commands/scan.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/compute/__init__.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/input/pipe.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/source.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/__init__.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/anemoi_dataset.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/eccc_fstd.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/planetary_computer.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/xarray_kerchunk.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/xarray_support/README.md +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/statistics/summary.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/writer.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/debug.css +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/observations/legacy_obs_dataset.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/observations/multi.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/records/__init__.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi_datasets.egg-info/dependency_links.txt +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi_datasets.egg-info/entry_points.txt +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/src/anemoi_datasets.egg-info/top_level.txt +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tests/conftest.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tests/create/__init__.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tests/create/accumulation.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tests/create/concat.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tests/create/join.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tests/create/missing.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tests/create/nan.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tests/create/pipe.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tests/create/recentre.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tests/create/regrid.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tests/create/utils/__init__.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tests/create/utils/mock_sources.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tests/create-perturbations-full.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tests/create-shift.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tests/test_chunks.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tests/test_indexing.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tests/test_records.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tests/xarray/test_netcdf.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tools/.gitignore +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tools/build-obs.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tools/check-obs.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tools/examples/Makefile +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tools/examples/an-oper-2023-2023-2p5-6h-v1.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tools/grids/Makefile +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tools/grids/grids.ipynb +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tools/grids/grids1.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tools/grids/grids2.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tools/grids/grids3.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tools/grids/grids4.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tools/grids/grids5.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tools/grids/grids6.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tools/grids/grids7.yaml +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tools/grids/grids_multilam.ipynb +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tools/make-sample-dataset.py +0 -0
- {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.27}/tools/upload-sample-dataset.py +0 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# This workflow checks that the appropriate ATS labels are applied to a pull request:
|
|
2
|
+
# - "ATS Approval Not Needed": pass
|
|
3
|
+
# - "ATS Approved": pass
|
|
4
|
+
# - "ATS Approval Needed": fail
|
|
5
|
+
# - Missing ATS label: fail
|
|
6
|
+
|
|
7
|
+
name: "[PR] ATS labels"
|
|
8
|
+
|
|
9
|
+
on:
|
|
10
|
+
pull_request:
|
|
11
|
+
types:
|
|
12
|
+
- opened
|
|
13
|
+
- edited
|
|
14
|
+
- reopened
|
|
15
|
+
- labeled
|
|
16
|
+
- unlabeled
|
|
17
|
+
- synchronize
|
|
18
|
+
|
|
19
|
+
permissions:
|
|
20
|
+
pull-requests: read
|
|
21
|
+
|
|
22
|
+
jobs:
|
|
23
|
+
check:
|
|
24
|
+
runs-on: ubuntu-latest
|
|
25
|
+
steps:
|
|
26
|
+
- name: Get PR details
|
|
27
|
+
uses: actions/github-script@v7
|
|
28
|
+
id: check-pr
|
|
29
|
+
with:
|
|
30
|
+
script: |
|
|
31
|
+
const pr = await github.rest.pulls.get({
|
|
32
|
+
owner: context.repo.owner,
|
|
33
|
+
repo: context.repo.repo,
|
|
34
|
+
pull_number: context.payload.pull_request.number,
|
|
35
|
+
});
|
|
36
|
+
const labels = pr.data.labels.map(label => label.name);
|
|
37
|
+
core.setOutput('labels', JSON.stringify(labels));
|
|
38
|
+
core.setOutput('author', context.payload.pull_request.user.login);
|
|
39
|
+
|
|
40
|
+
- name: Evaluate ATS labels
|
|
41
|
+
run: |
|
|
42
|
+
AUTHOR='${{ steps.check-pr.outputs.author }}'
|
|
43
|
+
if [ "$AUTHOR" == "DeployDuck" ] || [ "$AUTHOR" == "pre-commit-ci[bot]" ]; then
|
|
44
|
+
echo "Bot PR, skipping."
|
|
45
|
+
exit 0
|
|
46
|
+
fi
|
|
47
|
+
LABELS=$(echo '${{ steps.check-pr.outputs.labels }}' | jq -r '.[]')
|
|
48
|
+
echo "Labels found:"
|
|
49
|
+
echo -e "$LABELS\n"
|
|
50
|
+
echo "Result:"
|
|
51
|
+
if echo "$LABELS" | grep -qi "ATS approval not needed"; then
|
|
52
|
+
echo "ATS approval not needed. Passing."
|
|
53
|
+
EXIT_CODE=0
|
|
54
|
+
elif echo "$LABELS" | grep -qi "ATS approved"; then
|
|
55
|
+
echo "ATS Approved. Passing."
|
|
56
|
+
EXIT_CODE=0
|
|
57
|
+
elif echo "$LABELS" | grep -qi "ATS approval needed"; then
|
|
58
|
+
echo "ATS Approval Needed. Failing."
|
|
59
|
+
EXIT_CODE=1
|
|
60
|
+
else
|
|
61
|
+
echo "No ATS approval labels found. Please assign the appropriate ATS label. Failing."
|
|
62
|
+
EXIT_CODE=1
|
|
63
|
+
fi
|
|
64
|
+
echo -e "\nFor more information on ATS labels, see:"
|
|
65
|
+
echo "https://anemoi.readthedocs.io/en/latest/contributing/guidelines.html#labelling-guidelines"
|
|
66
|
+
exit $EXIT_CODE
|
|
@@ -19,7 +19,7 @@ jobs:
|
|
|
19
19
|
checks:
|
|
20
20
|
strategy:
|
|
21
21
|
matrix:
|
|
22
|
-
python-version: ["3.
|
|
22
|
+
python-version: ["3.10", "3.11", "3.12"]
|
|
23
23
|
uses: ecmwf/reusable-workflows/.github/workflows/qa-pytest-pyproject.yml@v2
|
|
24
24
|
with:
|
|
25
25
|
python-version: ${{ matrix.python-version }}
|
|
@@ -10,7 +10,7 @@ repos:
|
|
|
10
10
|
entry: jupyter nbconvert --ClearOutputPreprocessor.enabled=True --inplace
|
|
11
11
|
additional_dependencies: [jupyter]
|
|
12
12
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
13
|
-
rev:
|
|
13
|
+
rev: v6.0.0
|
|
14
14
|
hooks:
|
|
15
15
|
- id: check-yaml # Check YAML files for syntax errors only
|
|
16
16
|
args: [--unsafe, --allow-multiple-documents]
|
|
@@ -41,7 +41,7 @@ repos:
|
|
|
41
41
|
- --profile black
|
|
42
42
|
- --project anemoi
|
|
43
43
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
44
|
-
rev: v0.11
|
|
44
|
+
rev: v0.12.11
|
|
45
45
|
hooks:
|
|
46
46
|
- id: ruff
|
|
47
47
|
args:
|
|
@@ -69,7 +69,7 @@ repos:
|
|
|
69
69
|
hooks:
|
|
70
70
|
- id: pyproject-fmt
|
|
71
71
|
- repo: https://github.com/jshwi/docsig # Check docstrings against function sig
|
|
72
|
-
rev: v0.
|
|
72
|
+
rev: v0.71.0
|
|
73
73
|
hooks:
|
|
74
74
|
- id: docsig
|
|
75
75
|
args:
|
|
@@ -8,6 +8,36 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
8
8
|
Please add your functional changes to the appropriate section in the PR.
|
|
9
9
|
Keep it human-readable, your future self will thank you!
|
|
10
10
|
|
|
11
|
+
## [0.5.27](https://github.com/ecmwf/anemoi-datasets/compare/0.5.26...0.5.27) (2025-10-06)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Features
|
|
15
|
+
|
|
16
|
+
* Add 'model_level_number' to coordinate guesser (ecmwf/anemoi-datasets[#402](https://github.com/ecmwf/anemoi-datasets/issues/402)) ([#403](https://github.com/ecmwf/anemoi-datasets/issues/403)) ([fa0b7e8](https://github.com/ecmwf/anemoi-datasets/commit/fa0b7e809740d918cddb98596a9178181fe900d2))
|
|
17
|
+
* Extend xarray Variable.sel to handle scalar variables ([#381](https://github.com/ecmwf/anemoi-datasets/issues/381)) ([1306d62](https://github.com/ecmwf/anemoi-datasets/commit/1306d62d0c7e2be627460e35ba8a6780b0b26db7))
|
|
18
|
+
* Improve conftest types ([#395](https://github.com/ecmwf/anemoi-datasets/issues/395)) ([bd8143d](https://github.com/ecmwf/anemoi-datasets/commit/bd8143d4baf94a5243c023632e62838226ae8fd4))
|
|
19
|
+
* Remove python 3.9 from pyproject.toml. ([#392](https://github.com/ecmwf/anemoi-datasets/issues/392)) ([7f3a250](https://github.com/ecmwf/anemoi-datasets/commit/7f3a250cddf35bba7c83867933236587a1b48572))
|
|
20
|
+
* **sources:** Add FDB source ([#405](https://github.com/ecmwf/anemoi-datasets/issues/405)) ([9222d59](https://github.com/ecmwf/anemoi-datasets/commit/9222d59280cafaf99f1471a028069fd6043522c9))
|
|
21
|
+
* Validate dataset ([#330](https://github.com/ecmwf/anemoi-datasets/issues/330)) ([34d06df](https://github.com/ecmwf/anemoi-datasets/commit/34d06df5b8ea40568f1a413b30904a103d26acb9))
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
### Bug Fixes
|
|
25
|
+
|
|
26
|
+
* Allow multiple options to be provided to anemoi-datasets inspect ([#372](https://github.com/ecmwf/anemoi-datasets/issues/372)) ([dea680e](https://github.com/ecmwf/anemoi-datasets/commit/dea680e54a4daa43ce15400ff49adb2a29c39380))
|
|
27
|
+
* Anemoi inspect wrong message ([#429](https://github.com/ecmwf/anemoi-datasets/issues/429)) ([984ccef](https://github.com/ecmwf/anemoi-datasets/commit/984ccef5561245a2a64b6e9b3c0543764b817664))
|
|
28
|
+
* Better handling of xarray metadata ([#322](https://github.com/ecmwf/anemoi-datasets/issues/322)) ([4304cb4](https://github.com/ecmwf/anemoi-datasets/commit/4304cb40a6d6956492b5246a56f4af1a914d7cab))
|
|
29
|
+
* Cleaning _build when building datasets ([#413](https://github.com/ecmwf/anemoi-datasets/issues/413)) ([046a7eb](https://github.com/ecmwf/anemoi-datasets/commit/046a7eb992653df34ba1c7550e38489e3df4d227))
|
|
30
|
+
* Define the missing forwards_subclass_metadata_specific method in the ZipBase class ([#377](https://github.com/ecmwf/anemoi-datasets/issues/377)) ([2816314](https://github.com/ecmwf/anemoi-datasets/commit/28163143a76cec618e74a2b85d86a7d0d31168f5))
|
|
31
|
+
* Remove config_path in Config ([#431](https://github.com/ecmwf/anemoi-datasets/issues/431)) ([2bf674f](https://github.com/ecmwf/anemoi-datasets/commit/2bf674fd966ce2a0c19cb72185173c999ae1c6af))
|
|
32
|
+
* Remove-obsolete-code-and-rename ([#423](https://github.com/ecmwf/anemoi-datasets/issues/423)) ([ab3da59](https://github.com/ecmwf/anemoi-datasets/commit/ab3da591c9d7f809e21da8e354afff07b97cc490))
|
|
33
|
+
* Save_dataset ([#383](https://github.com/ecmwf/anemoi-datasets/issues/383)) ([05b8f51](https://github.com/ecmwf/anemoi-datasets/commit/05b8f51f1b7c60cc3bc2695ccc274c149af2b9cf))
|
|
34
|
+
* Support for sources with already opened datasets ([#417](https://github.com/ecmwf/anemoi-datasets/issues/417)) ([9bc2d17](https://github.com/ecmwf/anemoi-datasets/commit/9bc2d1736d457c09c042e8db45ac587c94e75218))
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
### Documentation
|
|
38
|
+
|
|
39
|
+
* Reference filters transform ([#389](https://github.com/ecmwf/anemoi-datasets/issues/389)) ([4e5d278](https://github.com/ecmwf/anemoi-datasets/commit/4e5d2785db5bb644d20a90e6cb1d3aa17e412718))
|
|
40
|
+
|
|
11
41
|
## [0.5.26](https://github.com/ecmwf/anemoi-datasets/compare/0.5.25...0.5.26) (2025-07-11)
|
|
12
42
|
|
|
13
43
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: anemoi-datasets
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.27
|
|
4
4
|
Summary: A package to hold various functions to support training of ML models on ECMWF data.
|
|
5
5
|
Author-email: "European Centre for Medium-Range Weather Forecasts (ECMWF)" <software.support@ecmwf.int>
|
|
6
6
|
License: Apache License
|
|
@@ -216,17 +216,16 @@ Classifier: Intended Audience :: Developers
|
|
|
216
216
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
217
217
|
Classifier: Operating System :: OS Independent
|
|
218
218
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
219
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
220
219
|
Classifier: Programming Language :: Python :: 3.10
|
|
221
220
|
Classifier: Programming Language :: Python :: 3.11
|
|
222
221
|
Classifier: Programming Language :: Python :: 3.12
|
|
223
222
|
Classifier: Programming Language :: Python :: 3.13
|
|
224
223
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
225
224
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
226
|
-
Requires-Python: >=3.
|
|
225
|
+
Requires-Python: >=3.10
|
|
227
226
|
License-File: LICENSE
|
|
228
227
|
Requires-Dist: anemoi-transform>=0.1.10
|
|
229
|
-
Requires-Dist: anemoi-utils[provenance]>=0.4.
|
|
228
|
+
Requires-Dist: anemoi-utils[provenance]>=0.4.32
|
|
230
229
|
Requires-Dist: cfunits
|
|
231
230
|
Requires-Dist: numcodecs<0.16
|
|
232
231
|
Requires-Dist: numpy
|
|
@@ -262,6 +261,7 @@ Requires-Dist: requests; extra == "remote"
|
|
|
262
261
|
Provides-Extra: tests
|
|
263
262
|
Requires-Dist: anemoi-datasets[xarray]; extra == "tests"
|
|
264
263
|
Requires-Dist: pytest; extra == "tests"
|
|
264
|
+
Requires-Dist: pytest-skip-slow; extra == "tests"
|
|
265
265
|
Requires-Dist: pytest-xdist; extra == "tests"
|
|
266
266
|
Provides-Extra: xarray
|
|
267
267
|
Requires-Dist: adlfs; extra == "xarray"
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
.. _validate_command:
|
|
2
|
+
|
|
3
|
+
Validate Command
|
|
4
|
+
============
|
|
5
|
+
|
|
6
|
+
Use this command to validate a zarr dataset, or a class that implements the
|
|
7
|
+
:class:`anemoi.datasets.Dataset` interface.
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
This command has two modes of operation:
|
|
11
|
+
|
|
12
|
+
1. Validate a local zarr dataset by specifying its path.
|
|
13
|
+
2. Validate a dataset class by providing its fully qualified class name.
|
|
14
|
+
|
|
15
|
+
Example usage
|
|
16
|
+
-------------
|
|
17
|
+
|
|
18
|
+
To validate a local zarr dataset:
|
|
19
|
+
|
|
20
|
+
.. code-block:: bash
|
|
21
|
+
|
|
22
|
+
anemoi-datasets validate /path/to/dataset.zarr
|
|
23
|
+
|
|
24
|
+
To validate a dataset class:
|
|
25
|
+
|
|
26
|
+
.. code-block:: bash
|
|
27
|
+
|
|
28
|
+
anemoi-datasets validate --callable my_package.MyDatasetClass some-args-relevant-to-the-class
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
In the first case, the command will check the compatibility of the zarr dataset using anemoi-datasets own class, in the second case, it will use the class provided by the user.
|
|
32
|
+
|
|
33
|
+
When running the command, emojis are used to categorise the different validation results:
|
|
34
|
+
|
|
35
|
+
* ✅: validation succeeded
|
|
36
|
+
* ⚠️: validation for the attribute/method is not implemented
|
|
37
|
+
* 💣: validation failed because the test does not pass
|
|
38
|
+
* 💥: validation failed because the validation tool is out of date
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
.. argparse::
|
|
42
|
+
:module: anemoi.datasets.__main__
|
|
43
|
+
:func: create_parser
|
|
44
|
+
:prog: anemoi-datasets
|
|
45
|
+
:path: validate
|
|
@@ -40,9 +40,9 @@ year = datetime.datetime.now().year
|
|
|
40
40
|
if year == 2024:
|
|
41
41
|
years = "2024"
|
|
42
42
|
else:
|
|
43
|
-
years = "2024
|
|
43
|
+
years = f"2024-{year}"
|
|
44
44
|
|
|
45
|
-
copyright = "
|
|
45
|
+
copyright = f"{years}, Anemoi contributors"
|
|
46
46
|
|
|
47
47
|
|
|
48
48
|
try:
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
.. _create-with-filter:
|
|
2
|
+
|
|
3
|
+
#################################
|
|
4
|
+
Create a dataset using a filter
|
|
5
|
+
#################################
|
|
6
|
+
|
|
7
|
+
A ``filter`` is a software component that takes as input the output of a
|
|
8
|
+
source or another filter and can modify the fields and/or their
|
|
9
|
+
metadata. For example, typical filters are interpolations, renaming of
|
|
10
|
+
variables, etc. Filters are available as part of ``anemoi-transform``.
|
|
11
|
+
|
|
12
|
+
****************
|
|
13
|
+
Using a filter
|
|
14
|
+
****************
|
|
15
|
+
|
|
16
|
+
In the example below we see a recipe to create a dataset from MARS data
|
|
17
|
+
in which we perform a rename transform to update ``tp`` to be named
|
|
18
|
+
``tp_era5``. To be able to use the transform we just define it as a
|
|
19
|
+
second step of the pipe, after gathering the data.
|
|
20
|
+
|
|
21
|
+
.. literalinclude:: yaml/recipe-filter1.yaml
|
|
22
|
+
|
|
23
|
+
That recipe will generate the following dataset:
|
|
24
|
+
|
|
25
|
+
.. code:: bash
|
|
26
|
+
|
|
27
|
+
Dataset Summary
|
|
28
|
+
===============
|
|
29
|
+
|
|
30
|
+
📦 Path : recipe1.zarr
|
|
31
|
+
🔢 Format version: 0.30.0
|
|
32
|
+
|
|
33
|
+
📅 Start : 2020-12-12 00:00
|
|
34
|
+
📅 End : 2020-12-13 12:00
|
|
35
|
+
⏰ Frequency : 12h
|
|
36
|
+
🚫 Missing : 0
|
|
37
|
+
🌎 Resolution : 20.0
|
|
38
|
+
🌎 Field shape: [9, 18]
|
|
39
|
+
|
|
40
|
+
📐 Shape : 4 × 9 × 1 × 162 (22.8 KiB)
|
|
41
|
+
💽 Size : 40.7 KiB (40.7 KiB)
|
|
42
|
+
📁 Files : 48
|
|
43
|
+
|
|
44
|
+
Index │ Variable │ Min │ Max │ Mean │ Stdev
|
|
45
|
+
──────┼──────────┼─────────────┼─────────────┼──────────────┼────────────
|
|
46
|
+
0 │ 2t │ 226.496 │ 309.946 │ 278.03 │ 19.2561
|
|
47
|
+
1 │ cp │ 0 │ 0.00739765 │ 0.00014582 │ 0.000527194
|
|
48
|
+
2 │ q_100 │ 1.38935e-06 │ 4.20381e-06 │ 2.68779e-06 │ 5.59043e-07
|
|
49
|
+
3 │ q_50 │ 1.26881e-06 │ 3.20919e-06 │ 2.74525e-06 │ 4.35595e-07
|
|
50
|
+
4 │ t_100 │ 189.787 │ 226.929 │ 207.052 │ 9.26841
|
|
51
|
+
5 │ t_50 │ 189.14 │ 236.51 │ 212.79 │ 9.5502
|
|
52
|
+
6 │ tp_era5 │ 0 │ 0.00823116 │ 0.000326814 │ 0.00078008
|
|
53
|
+
7 │ w_100 │ -0.0114685 │ 0.0129402 │ -0.000355278 │ 0.00448272
|
|
54
|
+
8 │ w_50 │ -0.00815806 │ 0.0126816 │ -0.000267674 │ 0.00331866
|
|
55
|
+
──────┴──────────┴─────────────┴─────────────┴──────────────┴────────────
|
|
56
|
+
🔋 Dataset ready, last update 1 minute ago.
|
|
57
|
+
📊 Statistics ready.
|
|
58
|
+
|
|
59
|
+
***********************
|
|
60
|
+
Creating a new filter
|
|
61
|
+
***********************
|
|
62
|
+
|
|
63
|
+
In order to create a new filter the recommendation is to define it under
|
|
64
|
+
the package ``anemoi-transform``. Available filters can be found in
|
|
65
|
+
``anemoi/transform/filters`` or running the command ``anemoi-transform
|
|
66
|
+
filters list``. For details about how to create a filter please refer to
|
|
67
|
+
the `anemoi-transform
|
|
68
|
+
<https://anemoi.readthedocs.io/projects/transform/en/latest/>`_
|
|
69
|
+
documentation.
|
|
70
|
+
|
|
71
|
+
************************
|
|
72
|
+
Using multiple filters
|
|
73
|
+
************************
|
|
74
|
+
|
|
75
|
+
It's possible to stack multiple filters one after the other. Below you
|
|
76
|
+
can see an updated version of the dataset creation we had where we now
|
|
77
|
+
create a dataset and apply a rename filter and our newly defined
|
|
78
|
+
``VerticalVelocity`` filter.
|
|
79
|
+
|
|
80
|
+
.. literalinclude:: yaml/recipe-filter2.yaml
|
|
81
|
+
|
|
82
|
+
That recipe will generate the following dataset:
|
|
83
|
+
|
|
84
|
+
.. code:: bash
|
|
85
|
+
|
|
86
|
+
Dataset Summary
|
|
87
|
+
===============
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
📦 Path : recipe2.zarr
|
|
91
|
+
🔢 Format version: 0.30.0
|
|
92
|
+
|
|
93
|
+
📅 Start : 2020-12-12 00:00
|
|
94
|
+
📅 End : 2020-12-13 12:00
|
|
95
|
+
⏰ Frequency : 12h
|
|
96
|
+
🚫 Missing : 0
|
|
97
|
+
🌎 Resolution : 20.0
|
|
98
|
+
🌎 Field shape: [9, 18]
|
|
99
|
+
|
|
100
|
+
📐 Shape : 4 × 9 × 1 × 162 (22.8 KiB)
|
|
101
|
+
💽 Size : 41.1 KiB (41.1 KiB)
|
|
102
|
+
📁 Files : 48
|
|
103
|
+
|
|
104
|
+
Index │ Variable │ Min │ Max │ Mean │ Stdev
|
|
105
|
+
──────┼──────────┼─────────────┼─────────────┼─────────────┼────────────
|
|
106
|
+
0 │ 2t │ 226.496 │ 309.946 │ 278.03 │ 19.2561
|
|
107
|
+
1 │ cp │ 0 │ 0.00739765 │ 0.00014582 │ 0.000527194
|
|
108
|
+
2 │ q_100 │ 1.38935e-06 │ 4.20381e-06 │ 2.68779e-06 │ 5.59043e-07
|
|
109
|
+
3 │ q_50 │ 1.26881e-06 │ 3.20919e-06 │ 2.74525e-06 │ 4.35595e-07
|
|
110
|
+
4 │ t_100 │ 189.787 │ 226.929 │ 207.052 │ 9.26841
|
|
111
|
+
5 │ t_50 │ 189.14 │ 236.51 │ 212.79 │ 9.5502
|
|
112
|
+
6 │ tp_era5 │ 0 │ 0.00823116 │ 0.000326814 │ 0.00078008
|
|
113
|
+
7 │ wz_100 │ -0.00798191 │ 0.00721723 │ 0.000224189 │ 0.00277693
|
|
114
|
+
8 │ wz_50 │ -0.01549 │ 0.0103844 │ 0.000341309 │ 0.00417065
|
|
115
|
+
──────┴──────────┴─────────────┴─────────────┴─────────────┴────────────
|
|
116
|
+
🔋 Dataset ready, last update 11 seconds ago.
|
|
117
|
+
📊 Statistics ready.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
dates:
|
|
2
|
+
start: 2020-12-12 00:00:00
|
|
3
|
+
end: 2020-12-14 12:00:00
|
|
4
|
+
frequency: 12h
|
|
5
|
+
|
|
6
|
+
input:
|
|
7
|
+
pipe:
|
|
8
|
+
- join:
|
|
9
|
+
- mars:
|
|
10
|
+
expver: "0001"
|
|
11
|
+
class: ea
|
|
12
|
+
grid: 20./20.
|
|
13
|
+
param: [2t]
|
|
14
|
+
levtype: sfc
|
|
15
|
+
- mars:
|
|
16
|
+
expver: "0001"
|
|
17
|
+
class: ea
|
|
18
|
+
grid: 20./20.
|
|
19
|
+
param: [q, t,w]
|
|
20
|
+
levtype: pl
|
|
21
|
+
level: [50, 100]
|
|
22
|
+
stream: oper
|
|
23
|
+
type: an
|
|
24
|
+
- accumulations:
|
|
25
|
+
expver: "0001"
|
|
26
|
+
class: ea
|
|
27
|
+
grid: 20./20.
|
|
28
|
+
param: [cp, tp]
|
|
29
|
+
- rename:
|
|
30
|
+
param:
|
|
31
|
+
tp: tp_era5
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
dates:
|
|
2
|
+
start: 2020-12-12 00:00:00
|
|
3
|
+
end: 2020-12-14 12:00:00
|
|
4
|
+
frequency: 12h
|
|
5
|
+
|
|
6
|
+
input:
|
|
7
|
+
pipe:
|
|
8
|
+
- join:
|
|
9
|
+
- mars:
|
|
10
|
+
expver: "0001"
|
|
11
|
+
class: ea
|
|
12
|
+
grid: 20./20.
|
|
13
|
+
param: [2t]
|
|
14
|
+
levtype: sfc
|
|
15
|
+
- mars:
|
|
16
|
+
expver: "0001"
|
|
17
|
+
class: ea
|
|
18
|
+
grid: 20./20.
|
|
19
|
+
param: [q, t,w]
|
|
20
|
+
levtype: pl
|
|
21
|
+
level: [50, 100]
|
|
22
|
+
stream: oper
|
|
23
|
+
type: an
|
|
24
|
+
- accumulations:
|
|
25
|
+
expver: "0001"
|
|
26
|
+
class: ea
|
|
27
|
+
grid: 20./20.
|
|
28
|
+
param: [cp, tp]
|
|
29
|
+
- rename:
|
|
30
|
+
param:
|
|
31
|
+
tp: tp_era5
|
|
32
|
+
- w_to_wz:
|
|
33
|
+
w_component: w
|
|
34
|
+
temperature: t
|
|
35
|
+
humidity: q
|
|
@@ -28,7 +28,7 @@ authors = [
|
|
|
28
28
|
{ name = "European Centre for Medium-Range Weather Forecasts (ECMWF)", email = "software.support@ecmwf.int" },
|
|
29
29
|
]
|
|
30
30
|
|
|
31
|
-
requires-python = ">=3.
|
|
31
|
+
requires-python = ">=3.10"
|
|
32
32
|
|
|
33
33
|
classifiers = [
|
|
34
34
|
"Development Status :: 4 - Beta",
|
|
@@ -36,7 +36,6 @@ classifiers = [
|
|
|
36
36
|
"License :: OSI Approved :: Apache Software License",
|
|
37
37
|
"Operating System :: OS Independent",
|
|
38
38
|
"Programming Language :: Python :: 3 :: Only",
|
|
39
|
-
"Programming Language :: Python :: 3.9",
|
|
40
39
|
"Programming Language :: Python :: 3.10",
|
|
41
40
|
"Programming Language :: Python :: 3.11",
|
|
42
41
|
"Programming Language :: Python :: 3.12",
|
|
@@ -50,7 +49,7 @@ dynamic = [
|
|
|
50
49
|
]
|
|
51
50
|
dependencies = [
|
|
52
51
|
"anemoi-transform>=0.1.10",
|
|
53
|
-
"anemoi-utils[provenance]>=0.4.
|
|
52
|
+
"anemoi-utils[provenance]>=0.4.32",
|
|
54
53
|
"cfunits",
|
|
55
54
|
"numcodecs<0.16", # Until we move to zarr3
|
|
56
55
|
"numpy",
|
|
@@ -100,6 +99,7 @@ optional-dependencies.remote = [
|
|
|
100
99
|
optional-dependencies.tests = [
|
|
101
100
|
"anemoi-datasets[xarray]",
|
|
102
101
|
"pytest",
|
|
102
|
+
"pytest-skip-slow",
|
|
103
103
|
"pytest-xdist",
|
|
104
104
|
]
|
|
105
105
|
|
|
@@ -136,6 +136,7 @@ profile = "black"
|
|
|
136
136
|
testpaths = "tests"
|
|
137
137
|
addopts = [
|
|
138
138
|
"--numprocesses=auto",
|
|
139
|
+
"--maxprocesses=16",
|
|
139
140
|
"--strict-config",
|
|
140
141
|
]
|
|
141
142
|
|
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
# granted to it by virtue of its status as an intergovernmental organisation
|
|
8
8
|
# nor does it submit to any jurisdiction.
|
|
9
9
|
|
|
10
|
-
from typing import List
|
|
11
10
|
|
|
12
11
|
from .data import MissingDateError
|
|
13
12
|
from .data import add_dataset_path
|
|
@@ -23,7 +22,7 @@ except ImportError: # pragma: no cover
|
|
|
23
22
|
# Local copy or not installed with setuptools
|
|
24
23
|
__version__ = "999"
|
|
25
24
|
|
|
26
|
-
__all__:
|
|
25
|
+
__all__: list[str] = [
|
|
27
26
|
"add_dataset_path",
|
|
28
27
|
"add_named_dataset",
|
|
29
28
|
"list_dataset_names",
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
# file generated by setuptools-scm
|
|
2
2
|
# don't change, don't track in version control
|
|
3
3
|
|
|
4
|
-
__all__ = [
|
|
4
|
+
__all__ = [
|
|
5
|
+
"__version__",
|
|
6
|
+
"__version_tuple__",
|
|
7
|
+
"version",
|
|
8
|
+
"version_tuple",
|
|
9
|
+
"__commit_id__",
|
|
10
|
+
"commit_id",
|
|
11
|
+
]
|
|
5
12
|
|
|
6
13
|
TYPE_CHECKING = False
|
|
7
14
|
if TYPE_CHECKING:
|
|
@@ -9,13 +16,19 @@ if TYPE_CHECKING:
|
|
|
9
16
|
from typing import Union
|
|
10
17
|
|
|
11
18
|
VERSION_TUPLE = Tuple[Union[int, str], ...]
|
|
19
|
+
COMMIT_ID = Union[str, None]
|
|
12
20
|
else:
|
|
13
21
|
VERSION_TUPLE = object
|
|
22
|
+
COMMIT_ID = object
|
|
14
23
|
|
|
15
24
|
version: str
|
|
16
25
|
__version__: str
|
|
17
26
|
__version_tuple__: VERSION_TUPLE
|
|
18
27
|
version_tuple: VERSION_TUPLE
|
|
28
|
+
commit_id: COMMIT_ID
|
|
29
|
+
__commit_id__: COMMIT_ID
|
|
19
30
|
|
|
20
|
-
__version__ = version = '0.5.
|
|
21
|
-
__version_tuple__ = version_tuple = (0, 5,
|
|
31
|
+
__version__ = version = '0.5.27'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 5, 27)
|
|
33
|
+
|
|
34
|
+
__commit_id__ = commit_id = 'g2b7d13494'
|
|
@@ -77,7 +77,7 @@ class Check(Command):
|
|
|
77
77
|
|
|
78
78
|
recipe_filename = os.path.basename(recipe)
|
|
79
79
|
recipe_name = os.path.splitext(recipe_filename)[0]
|
|
80
|
-
in_recipe_name = yaml.safe_load(open(recipe,
|
|
80
|
+
in_recipe_name = yaml.safe_load(open(recipe, encoding="utf-8"))["name"]
|
|
81
81
|
if recipe_name != in_recipe_name:
|
|
82
82
|
print(f"Recipe name {recipe_name} does not match the name in the recipe file {in_recipe_name}")
|
|
83
83
|
|
|
@@ -14,7 +14,6 @@ import sys
|
|
|
14
14
|
from concurrent.futures import ThreadPoolExecutor
|
|
15
15
|
from concurrent.futures import as_completed
|
|
16
16
|
from typing import Any
|
|
17
|
-
from typing import Optional
|
|
18
17
|
|
|
19
18
|
import tqdm
|
|
20
19
|
from anemoi.utils.remote import Transfer
|
|
@@ -136,7 +135,7 @@ class ZarrCopier:
|
|
|
136
135
|
return zarr.storage.NestedDirectoryStore(path)
|
|
137
136
|
return path
|
|
138
137
|
|
|
139
|
-
def copy_chunk(self, n: int, m: int, source: Any, target: Any, _copy: Any, verbosity: int) ->
|
|
138
|
+
def copy_chunk(self, n: int, m: int, source: Any, target: Any, _copy: Any, verbosity: int) -> slice | None:
|
|
140
139
|
"""Copy a chunk of data from source to target.
|
|
141
140
|
|
|
142
141
|
Parameters
|