anemoi-datasets 0.5.13__tar.gz → 0.5.15__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.15/.github/workflows/python-publish.yml +27 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/.pre-commit-config.yaml +1 -1
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/CHANGELOG.md +2 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/PKG-INFO +8 -8
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/pyproject.toml +7 -7
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/_version.py +2 -2
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/commands/create.py +4 -2
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/__init__.py +14 -2
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/sources/accumulations.py +6 -2
- anemoi_datasets-0.5.15/src/anemoi/datasets/create/functions/sources/eccc_fstd.py +16 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/sources/mars.py +5 -1
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/input/result.py +1 -1
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/statistics/__init__.py +5 -2
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/data/dataset.py +1 -1
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/data/misc.py +24 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/grids.py +6 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi_datasets.egg-info/PKG-INFO +8 -8
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi_datasets.egg-info/SOURCES.txt +2 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi_datasets.egg-info/requires.txt +7 -7
- anemoi_datasets-0.5.15/tests/create/regrid.yaml +31 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/tests/test_data.py +45 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/tests/xarray/test_opendap.py +6 -0
- anemoi_datasets-0.5.13/.github/workflows/python-publish.yml +0 -28
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/.gitattributes +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/.github/CODEOWNERS +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/.github/ci-config.yml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/.github/ci-hpc-config.yml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/.github/workflows/changelog-pr-update.yml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/.github/workflows/changelog-release-update.yml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/.github/workflows/ci.yml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/.github/workflows/label-public-pr.yml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/.github/workflows/push-to-private.yml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/.github/workflows/python-pull-request.yml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/.github/workflows/readthedocs-pr-update.yml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/.gitignore +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/.readthedocs.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/.vscode/spellright.dict +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/CONTRIBUTORS.md +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/LICENSE +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/README.md +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/Makefile +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/_static/logo.png +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/_static/style.css +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/_templates/.gitkeep +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/apply-fmt.sh +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/advanced-options.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/filters/empty.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/filters/noop.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/filters/orog_to_z.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/filters/rename.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/filters/rotate_winds.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/filters/select.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/filters/sum.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/filters/unrotate_winds.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/filters/wz_to_w.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/filters/yaml/orog_to_z.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/filters/yaml/rename.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/filters/yaml/sum.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/filters/yaml/wz_to_w.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/filters.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/handling-missing-dates.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/handling-missing-values.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/incremental.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/introduction.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/naming-variables.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/operations.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/sources/accumulations.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/sources/forcings.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/sources/grib.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/sources/hindcasts.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/sources/mars.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/sources/netcdf.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/sources/opendap.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/sources/recentre.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/sources/repeated_dates.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/sources/xarray-based.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/sources/xarray-kerchunk.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/sources/xarray-kerchunk.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/sources/xarray-zarr.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/sources/yaml/accumulations1.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/sources/yaml/accumulations2.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/sources/yaml/forcings.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/sources/yaml/grib1.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/sources/yaml/grib2.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/sources/yaml/grib3.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/sources/yaml/grib4.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/sources/yaml/hindcasts.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/sources/yaml/mars1.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/sources/yaml/mars2.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/sources/yaml/netcdf.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/sources/yaml/opendap.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/sources/yaml/recentre.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/sources/yaml/repeated_dates1.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/sources/yaml/repeated_dates2.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/sources/yaml/repeated_dates3.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/sources/yaml/repeated_dates4.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/sources/yaml/xarray-based.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/sources/yaml/xarray-kerchunk.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/sources/yaml/xarray-zarr.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/sources/yaml/zenodo.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/sources/zenodo.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/sources.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/statistics.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/syntax.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/yaml/Makefile +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/yaml/building1.txt +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/yaml/building1.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/yaml/building2.txt +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/yaml/building2.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/yaml/building3.txt +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/yaml/building3.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/yaml/concat.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/yaml/hindcasts.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/yaml/input.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/yaml/missing_dates.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/yaml/nan.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/building/yaml/pipe.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/check-index.sh +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/cli/compare.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/cli/copy.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/cli/create.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/cli/inspect.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/cli/introduction.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/cli/scan.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/conf.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/images.pptx +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/index.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/installing.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/naming_conventions.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/overview.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/overview_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/schemas/matrix.excalidraw +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/schemas/matrix.png +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/schemas/overview.excalidraw +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/schemas/overview.png +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/schemas/recipe.excalidraw +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/schemas/recipe.png +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/area1_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/area2_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/chain_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/combine_example.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/complement1_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/complement2_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/complement3_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/concat1.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/cutout_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/drop_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/end_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/ensembles1_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/fill_missing_dates1_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/fill_missing_dates2_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/fill_missing_gaps_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/frequency1_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/frequency2_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/grids1_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/iterating_missing_dates1_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/iterating_missing_dates2_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/iterating_missing_dates3_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/join1.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/matching0_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/matching1_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/matching2_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/matching3_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/matching4_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/misc1.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/misc2.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/missing_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/number1_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/number2_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/open_cloud.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/open_combine1_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/open_combine2_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/open_complex.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/open_dict_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/open_first_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/open_list_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/open_name.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/open_other.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/open_path.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/open_yaml_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/rename_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/reorder1_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/reorder2_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/rescale_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/select1_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/select2_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/set_missing_dates_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/shuffle_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/some_attributes_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/start_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/statistics_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/subset_example.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/thinning_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/xy1_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/xy2_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/zip1_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/zip2_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/code/zip_xy_.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/combining.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/configuration.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/configuration.toml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/ensembles.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/grids.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/images/area-1.png +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/images/concat.png +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/images/cutout-1.png +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/images/cutout-2.png +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/images/cutout-3.png +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/images/cutout-4.png +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/images/cutout-5.png +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/images/cutout-6.png +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/images/join.png +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/images/overlay.png +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/images/skip-missing.png +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/images/thinning-after.png +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/images/thinning-before.png +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/introduction.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/matching.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/methods.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/miscellaneous.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/missing.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/opening.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/other.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/selecting.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/statistics.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/subsetting.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/docs/using/zip.rst +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/setup.cfg +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/__init__.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/__main__.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/commands/__init__.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/commands/cleanup.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/commands/compare.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/commands/copy.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/commands/finalise-additions.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/commands/finalise.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/commands/init-additions.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/commands/init.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/commands/inspect.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/commands/load-additions.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/commands/load.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/commands/patch.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/commands/publish.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/commands/scan.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/compute/__init__.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/compute/recentre.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/check.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/chunks.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/config.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/__init__.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/filters/__init__.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/filters/empty.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/filters/noop.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/filters/orog_to_z.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/filters/pressure_level_relative_humidity_to_specific_humidity.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/filters/pressure_level_specific_humidity_to_relative_humidity.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/filters/rename.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/filters/rotate_winds.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/filters/single_level_dewpoint_to_relative_humidity.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/filters/single_level_relative_humidity_to_dewpoint.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/filters/single_level_relative_humidity_to_specific_humidity.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/filters/single_level_specific_humidity_to_relative_humidity.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/filters/speeddir_to_uv.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/filters/sum.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/filters/unrotate_winds.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/filters/uv_to_speeddir.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/filters/wz_to_w.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/sources/__init__.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/sources/constants.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/sources/empty.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/sources/forcings.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/sources/grib.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/sources/hindcasts.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/sources/netcdf.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/sources/opendap.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/sources/recentre.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/sources/source.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/sources/tendencies.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/sources/xarray/__init__.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/sources/xarray/coordinates.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/sources/xarray/field.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/sources/xarray/fieldlist.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/sources/xarray/flavour.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/sources/xarray/grid.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/sources/xarray/metadata.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/sources/xarray/patch.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/sources/xarray/time.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/sources/xarray/variable.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/sources/xarray_kerchunk.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/sources/xarray_zarr.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/functions/sources/zenodo.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/input/__init__.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/input/action.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/input/concat.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/input/context.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/input/data_sources.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/input/empty.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/input/filter.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/input/function.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/input/join.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/input/misc.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/input/pipe.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/input/repeated_dates.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/input/step.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/input/template.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/input/trace.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/patch.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/persistent.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/size.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/statistics/summary.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/utils.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/writer.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/zarr.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/data/__init__.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/data/complement.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/data/concat.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/data/debug.css +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/data/debug.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/data/ensemble.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/data/fill_missing.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/data/forwards.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/data/grids.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/data/indexing.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/data/interpolate.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/data/join.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/data/masked.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/data/merge.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/data/missing.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/data/rescale.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/data/select.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/data/statistics.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/data/stores.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/data/subset.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/data/unchecked.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/data/xy.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/dates/__init__.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/dates/groups.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/testing.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/utils/__init__.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/utils/fields.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi_datasets.egg-info/dependency_links.txt +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi_datasets.egg-info/entry_points.txt +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi_datasets.egg-info/top_level.txt +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/tests/create/concat.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/tests/create/join.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/tests/create/missing.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/tests/create/nan.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/tests/create/pipe.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/tests/create/recentre.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/tests/create/run.sh +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/tests/create/test_create.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/tests/create-perturbations-full.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/tests/create-shift.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/tests/test_chunks.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/tests/test_dates.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/tests/test_indexing.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/tests/xarray/test_kerchunk.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/tests/xarray/test_netcdf.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/tests/xarray/test_samples.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/tests/xarray/test_zarr.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/tools/.gitignore +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/tools/examples/Makefile +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/tools/examples/an-oper-2023-2023-2p5-6h-v1.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/tools/grids/Makefile +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/tools/grids/grids.ipynb +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/tools/grids/grids1.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/tools/grids/grids2.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/tools/grids/grids3.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/tools/grids/grids4.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/tools/grids/grids5.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/tools/grids/grids6.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/tools/grids/grids7.yaml +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/tools/grids/grids_multilam.ipynb +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/tools/make-sample-dataset.py +0 -0
- {anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/tools/upload-sample-dataset.py +0 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# This workflow will upload a Python Package using Twine when a release is created
|
|
2
|
+
# For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries
|
|
3
|
+
|
|
4
|
+
name: Upload Python Package
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
release:
|
|
8
|
+
types: [created]
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
# quality:
|
|
12
|
+
# if: ${{ !contains(github.repository, 'private') }}
|
|
13
|
+
# uses: ecmwf-actions/reusable-workflows/.github/workflows/qa-precommit-run.yml@v2
|
|
14
|
+
# with:
|
|
15
|
+
# skip-hooks: "no-commit-to-branch"
|
|
16
|
+
|
|
17
|
+
# checks:
|
|
18
|
+
# strategy:
|
|
19
|
+
# matrix:
|
|
20
|
+
# python-version: ["3.9", "3.10", "3.11", "3.12"]
|
|
21
|
+
# uses: ecmwf-actions/reusable-workflows/.github/workflows/qa-pytest-pyproject.yml@v2
|
|
22
|
+
# with:
|
|
23
|
+
# python-version: ${{ matrix.python-version }}
|
|
24
|
+
|
|
25
|
+
deploy:
|
|
26
|
+
uses: ecmwf-actions/reusable-workflows/.github/workflows/cd-pypi.yml@v2
|
|
27
|
+
secrets: inherit
|
|
@@ -18,6 +18,8 @@ Keep it human-readable, your future self will thank you!
|
|
|
18
18
|
- Use cKDTree instead of KDTree
|
|
19
19
|
- Implement 'complement' feature
|
|
20
20
|
- Add ability to patch xarrays (#160)
|
|
21
|
+
- Add support of ECCC file formats (fstd)
|
|
22
|
+
- Add `use_cdsapi_dataset` option to mars and accumulations
|
|
21
23
|
|
|
22
24
|
### Added
|
|
23
25
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: anemoi-datasets
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.15
|
|
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
|
|
@@ -224,8 +224,8 @@ Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
|
224
224
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
225
225
|
Requires-Python: >=3.9
|
|
226
226
|
License-File: LICENSE
|
|
227
|
-
Requires-Dist: anemoi-transform>=0.1
|
|
228
|
-
Requires-Dist: anemoi-utils[provenance]>=0.4.
|
|
227
|
+
Requires-Dist: anemoi-transform>=0.1.1
|
|
228
|
+
Requires-Dist: anemoi-utils[provenance]>=0.4.11
|
|
229
229
|
Requires-Dist: cfunits
|
|
230
230
|
Requires-Dist: numpy
|
|
231
231
|
Requires-Dist: pyyaml
|
|
@@ -235,12 +235,12 @@ Requires-Dist: zarr<=2.17
|
|
|
235
235
|
Provides-Extra: all
|
|
236
236
|
Requires-Dist: anemoi-datasets[create,remote,xarray]; extra == "all"
|
|
237
237
|
Provides-Extra: create
|
|
238
|
-
Requires-Dist: earthkit-data[mars]>=0.
|
|
239
|
-
Requires-Dist: earthkit-geo>=0.
|
|
240
|
-
Requires-Dist: earthkit-meteo; extra == "create"
|
|
241
|
-
Requires-Dist: eccodes>=2.
|
|
238
|
+
Requires-Dist: earthkit-data[mars]>=0.12; extra == "create"
|
|
239
|
+
Requires-Dist: earthkit-geo>=0.3; extra == "create"
|
|
240
|
+
Requires-Dist: earthkit-meteo>=0.3; extra == "create"
|
|
241
|
+
Requires-Dist: eccodes>=2.39.1; extra == "create"
|
|
242
242
|
Requires-Dist: entrypoints; extra == "create"
|
|
243
|
-
Requires-Dist: pyproj; extra == "create"
|
|
243
|
+
Requires-Dist: pyproj>=3; extra == "create"
|
|
244
244
|
Provides-Extra: dev
|
|
245
245
|
Requires-Dist: anemoi-datasets[all,docs,tests]; extra == "dev"
|
|
246
246
|
Provides-Extra: docs
|
|
@@ -49,8 +49,8 @@ dynamic = [
|
|
|
49
49
|
"version",
|
|
50
50
|
]
|
|
51
51
|
dependencies = [
|
|
52
|
-
"anemoi-transform>=0.1",
|
|
53
|
-
"anemoi-utils[provenance]>=0.4.
|
|
52
|
+
"anemoi-transform>=0.1.1",
|
|
53
|
+
"anemoi-utils[provenance]>=0.4.11",
|
|
54
54
|
"cfunits",
|
|
55
55
|
"numpy",
|
|
56
56
|
"pyyaml",
|
|
@@ -64,12 +64,12 @@ optional-dependencies.all = [
|
|
|
64
64
|
]
|
|
65
65
|
|
|
66
66
|
optional-dependencies.create = [
|
|
67
|
-
"earthkit-data[mars]>=0.
|
|
68
|
-
"earthkit-geo>=0.
|
|
69
|
-
"earthkit-meteo",
|
|
70
|
-
"eccodes>=2.
|
|
67
|
+
"earthkit-data[mars]>=0.12",
|
|
68
|
+
"earthkit-geo>=0.3",
|
|
69
|
+
"earthkit-meteo>=0.3",
|
|
70
|
+
"eccodes>=2.39.1",
|
|
71
71
|
"entrypoints",
|
|
72
|
-
"pyproj",
|
|
72
|
+
"pyproj>=3",
|
|
73
73
|
]
|
|
74
74
|
|
|
75
75
|
optional-dependencies.dev = [
|
|
@@ -83,11 +83,12 @@ class Create(Command):
|
|
|
83
83
|
task("load", options)
|
|
84
84
|
task("finalise", options)
|
|
85
85
|
|
|
86
|
-
task("patch", options)
|
|
87
|
-
|
|
88
86
|
task("init_additions", options)
|
|
89
87
|
task("run_additions", options)
|
|
90
88
|
task("finalise_additions", options)
|
|
89
|
+
|
|
90
|
+
task("patch", options)
|
|
91
|
+
|
|
91
92
|
task("cleanup", options)
|
|
92
93
|
task("verify", options)
|
|
93
94
|
|
|
@@ -153,6 +154,7 @@ class Create(Command):
|
|
|
153
154
|
|
|
154
155
|
with ExecutorClass(max_workers=1) as executor:
|
|
155
156
|
executor.submit(task, "finalise-additions", options).result()
|
|
157
|
+
executor.submit(task, "patch", options).result()
|
|
156
158
|
executor.submit(task, "cleanup", options).result()
|
|
157
159
|
executor.submit(task, "verify", options).result()
|
|
158
160
|
|
|
@@ -79,7 +79,10 @@ def json_tidy(o):
|
|
|
79
79
|
)
|
|
80
80
|
return o.isoformat()
|
|
81
81
|
|
|
82
|
-
|
|
82
|
+
if isinstance(o, (np.float32, np.float64)):
|
|
83
|
+
return float(o)
|
|
84
|
+
|
|
85
|
+
raise TypeError(f"{repr(o)} is not JSON serializable {type(o)}")
|
|
83
86
|
|
|
84
87
|
|
|
85
88
|
def build_statistics_dates(dates, start, end):
|
|
@@ -596,6 +599,8 @@ class Load(Actor, HasRegistryMixin, HasStatisticTempMixin, HasElementForDataMixi
|
|
|
596
599
|
# There is one cube to load for each result.
|
|
597
600
|
dates = list(result.group_of_dates)
|
|
598
601
|
|
|
602
|
+
LOG.debug(f"Loading cube for {len(dates)} dates")
|
|
603
|
+
|
|
599
604
|
cube = result.get_cube()
|
|
600
605
|
shape = cube.extended_user_shape
|
|
601
606
|
dates_in_data = cube.user_coords["valid_datetime"]
|
|
@@ -642,12 +647,14 @@ class Load(Actor, HasRegistryMixin, HasStatisticTempMixin, HasElementForDataMixi
|
|
|
642
647
|
indexes = dates_to_indexes(self.dates, dates_in_data)
|
|
643
648
|
|
|
644
649
|
array = ViewCacheArray(self.data_array, shape=shape, indexes=indexes)
|
|
650
|
+
LOG.info(f"Loading array shape={shape}, indexes={len(indexes)}")
|
|
645
651
|
self.load_cube(cube, array)
|
|
646
652
|
|
|
647
653
|
stats = compute_statistics(array.cache, self.variables_names, allow_nans=self._get_allow_nans())
|
|
648
654
|
self.tmp_statistics.write(indexes, stats, dates=dates_in_data)
|
|
649
|
-
|
|
655
|
+
LOG.info("Flush data array")
|
|
650
656
|
array.flush()
|
|
657
|
+
LOG.info("Flushed data array")
|
|
651
658
|
|
|
652
659
|
def _get_allow_nans(self):
|
|
653
660
|
config = self.main_config
|
|
@@ -740,6 +747,11 @@ class AdditionsMixin:
|
|
|
740
747
|
if not self.delta.total_seconds() % frequency.total_seconds() == 0:
|
|
741
748
|
LOG.debug(f"Delta {self.delta} is not a multiple of frequency {frequency}. Skipping.")
|
|
742
749
|
return True
|
|
750
|
+
|
|
751
|
+
if self.dataset.zarr_metadata.get("build", {}).get("additions", None) is False:
|
|
752
|
+
LOG.warning(f"Additions are disabled for {self.path} in the recipe.")
|
|
753
|
+
return True
|
|
754
|
+
|
|
743
755
|
return False
|
|
744
756
|
|
|
745
757
|
@cached_property
|
|
@@ -253,6 +253,7 @@ def _compute_accumulations(
|
|
|
253
253
|
data_accumulation_period=None,
|
|
254
254
|
patch=_identity,
|
|
255
255
|
base_times=None,
|
|
256
|
+
use_cdsapi_dataset=None,
|
|
256
257
|
):
|
|
257
258
|
adjust_step = isinstance(user_accumulation_period, int)
|
|
258
259
|
|
|
@@ -311,7 +312,9 @@ def _compute_accumulations(
|
|
|
311
312
|
|
|
312
313
|
requests.append(patch(r))
|
|
313
314
|
|
|
314
|
-
ds = mars(
|
|
315
|
+
ds = mars(
|
|
316
|
+
context, dates, *requests, request_already_using_valid_datetime=True, use_cdsapi_dataset=use_cdsapi_dataset
|
|
317
|
+
)
|
|
315
318
|
|
|
316
319
|
accumulations = {}
|
|
317
320
|
for a in [AccumulationClass(out, frequency=frequency, **r) for r in requests]:
|
|
@@ -366,7 +369,7 @@ def _scda(request):
|
|
|
366
369
|
return request
|
|
367
370
|
|
|
368
371
|
|
|
369
|
-
def accumulations(context, dates, **request):
|
|
372
|
+
def accumulations(context, dates, use_cdsapi_dataset=None, **request):
|
|
370
373
|
_to_list(request["param"])
|
|
371
374
|
class_ = request.get("class", "od")
|
|
372
375
|
stream = request.get("stream", "oper")
|
|
@@ -395,6 +398,7 @@ def accumulations(context, dates, **request):
|
|
|
395
398
|
dates,
|
|
396
399
|
request,
|
|
397
400
|
user_accumulation_period=user_accumulation_period,
|
|
401
|
+
use_cdsapi_dataset=use_cdsapi_dataset,
|
|
398
402
|
**kwargs,
|
|
399
403
|
)
|
|
400
404
|
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# (C) Copyright 2025 Anemoi contributors.
|
|
2
|
+
#
|
|
3
|
+
# This software is licensed under the terms of the Apache Licence Version 2.0
|
|
4
|
+
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
|
|
5
|
+
#
|
|
6
|
+
# In applying this licence, ECMWF does not waive the privileges and immunities
|
|
7
|
+
# granted to it by virtue of its status as an intergovernmental organisation
|
|
8
|
+
# nor does it submit to any jurisdiction.
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
from .xarray import load_many
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def execute(context, dates, path, *args, **kwargs):
|
|
15
|
+
options = {"engine": "fstd"}
|
|
16
|
+
return load_many("🍁", context, dates, path, *args, options=options, **kwargs)
|
|
@@ -246,6 +246,7 @@ def mars(
|
|
|
246
246
|
*requests,
|
|
247
247
|
request_already_using_valid_datetime=False,
|
|
248
248
|
date_key="date",
|
|
249
|
+
use_cdsapi_dataset=None,
|
|
249
250
|
**kwargs,
|
|
250
251
|
):
|
|
251
252
|
|
|
@@ -305,7 +306,10 @@ def mars(
|
|
|
305
306
|
f"⚠️ Unknown key {k}={v} in MARS request. Did you mean '{did_you_mean(k, MARS_KEYS)}' ?"
|
|
306
307
|
)
|
|
307
308
|
try:
|
|
308
|
-
|
|
309
|
+
if use_cdsapi_dataset:
|
|
310
|
+
ds = ds + from_source("cds", use_cdsapi_dataset, r)
|
|
311
|
+
else:
|
|
312
|
+
ds = ds + from_source("mars", **r)
|
|
309
313
|
except Exception as e:
|
|
310
314
|
if "File is empty:" not in str(e):
|
|
311
315
|
raise
|
{anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/input/result.py
RENAMED
|
@@ -459,7 +459,7 @@ class Result:
|
|
|
459
459
|
if self.group_of_dates is not None:
|
|
460
460
|
dates = f" {len(self.group_of_dates)} dates"
|
|
461
461
|
dates += " ("
|
|
462
|
-
dates += "/".join(d.strftime("%Y-%m-%
|
|
462
|
+
dates += "/".join(d.strftime("%Y-%m-%dT%H:%M") for d in self.group_of_dates)
|
|
463
463
|
if len(dates) > 100:
|
|
464
464
|
dates = dates[:100] + "..."
|
|
465
465
|
dates += ")"
|
{anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/src/anemoi/datasets/create/statistics/__init__.py
RENAMED
|
@@ -18,6 +18,7 @@ import shutil
|
|
|
18
18
|
import socket
|
|
19
19
|
|
|
20
20
|
import numpy as np
|
|
21
|
+
import tqdm
|
|
21
22
|
from anemoi.utils.provenance import gather_provenance_info
|
|
22
23
|
|
|
23
24
|
from ..check import check_data_values
|
|
@@ -134,7 +135,7 @@ def check_variance(x, variables_names, minimum, maximum, mean, count, sums, squa
|
|
|
134
135
|
|
|
135
136
|
def compute_statistics(array, check_variables_names=None, allow_nans=False):
|
|
136
137
|
"""Compute statistics for a given array, provides minimum, maximum, sum, squares, count and has_nans as a dictionary."""
|
|
137
|
-
|
|
138
|
+
LOG.info(f"Computing statistics for {array.shape} array")
|
|
138
139
|
nvars = array.shape[1]
|
|
139
140
|
|
|
140
141
|
LOG.debug(f"Stats {nvars}, {array.shape}, {check_variables_names}")
|
|
@@ -149,7 +150,7 @@ def compute_statistics(array, check_variables_names=None, allow_nans=False):
|
|
|
149
150
|
maximum = np.zeros(stats_shape, dtype=np.float64)
|
|
150
151
|
has_nans = np.zeros(stats_shape, dtype=np.bool_)
|
|
151
152
|
|
|
152
|
-
for i, chunk in enumerate(array):
|
|
153
|
+
for i, chunk in tqdm.tqdm(enumerate(array), delay=1, total=array.shape[0], desc="Computing statistics"):
|
|
153
154
|
values = chunk.reshape((nvars, -1))
|
|
154
155
|
|
|
155
156
|
for j, name in enumerate(check_variables_names):
|
|
@@ -166,6 +167,8 @@ def compute_statistics(array, check_variables_names=None, allow_nans=False):
|
|
|
166
167
|
count[i] = np.sum(~np.isnan(values), axis=1)
|
|
167
168
|
has_nans[i] = np.isnan(values).any()
|
|
168
169
|
|
|
170
|
+
LOG.info(f"Statistics computed for {nvars} variables.")
|
|
171
|
+
|
|
169
172
|
return {
|
|
170
173
|
"minimum": minimum,
|
|
171
174
|
"maximum": maximum,
|
|
@@ -168,7 +168,7 @@ class Dataset:
|
|
|
168
168
|
bbox = kwargs.pop("area")
|
|
169
169
|
return Cropping(self, bbox)._subset(**kwargs).mutate()
|
|
170
170
|
|
|
171
|
-
if "number" in kwargs or "numbers" or "member" in kwargs or "members" in kwargs:
|
|
171
|
+
if "number" in kwargs or "numbers" in kwargs or "member" in kwargs or "members" in kwargs:
|
|
172
172
|
from .ensemble import Number
|
|
173
173
|
|
|
174
174
|
members = {}
|
|
@@ -103,6 +103,30 @@ def _as_date(d, dates, last):
|
|
|
103
103
|
|
|
104
104
|
if isinstance(d, str):
|
|
105
105
|
|
|
106
|
+
def isfloat(s):
|
|
107
|
+
try:
|
|
108
|
+
float(s)
|
|
109
|
+
return True
|
|
110
|
+
except ValueError:
|
|
111
|
+
return False
|
|
112
|
+
|
|
113
|
+
if d.endswith("%") and isfloat(d[:-1]):
|
|
114
|
+
x = float(d[:-1])
|
|
115
|
+
if not 0 <= x <= 100:
|
|
116
|
+
raise ValueError(f"Invalid date: {d}")
|
|
117
|
+
i_float = x * len(dates) / 100
|
|
118
|
+
|
|
119
|
+
epsilon = 2 ** (-30)
|
|
120
|
+
if len(dates) > 1 / epsilon:
|
|
121
|
+
LOG.warning("Too many dates to use percentage, one date may be lost in rounding")
|
|
122
|
+
|
|
123
|
+
if last:
|
|
124
|
+
index = int(i_float + epsilon) - 1
|
|
125
|
+
else:
|
|
126
|
+
index = int(i_float - epsilon)
|
|
127
|
+
index = max(0, min(len(dates) - 1, index))
|
|
128
|
+
return dates[index]
|
|
129
|
+
|
|
106
130
|
if "-" in d and ":" in d:
|
|
107
131
|
date, time = d.replace(" ", "T").split("T")
|
|
108
132
|
year, month, day = [int(_) for _ in date.split("-")]
|
|
@@ -62,6 +62,8 @@ def plot_mask(path, mask, lats, lons, global_lats, global_lons):
|
|
|
62
62
|
plt.savefig(path + "-global-zoomed.png")
|
|
63
63
|
|
|
64
64
|
|
|
65
|
+
# TODO: Use the one from anemoi.utils.grids instead
|
|
66
|
+
# from anemoi.utils.grids import ...
|
|
65
67
|
def xyz_to_latlon(x, y, z):
|
|
66
68
|
return (
|
|
67
69
|
np.rad2deg(np.arcsin(np.minimum(1.0, np.maximum(-1.0, z)))),
|
|
@@ -69,6 +71,8 @@ def xyz_to_latlon(x, y, z):
|
|
|
69
71
|
)
|
|
70
72
|
|
|
71
73
|
|
|
74
|
+
# TODO: Use the one from anemoi.utils.grids instead
|
|
75
|
+
# from anemoi.utils.grids import ...
|
|
72
76
|
def latlon_to_xyz(lat, lon, radius=1.0):
|
|
73
77
|
# https://en.wikipedia.org/wiki/Geographic_coordinate_conversion#From_geodetic_to_ECEF_coordinates
|
|
74
78
|
# We assume that the Earth is a sphere of radius 1 so N(phi) = 1
|
|
@@ -380,6 +384,8 @@ def serialise_mask(mask):
|
|
|
380
384
|
|
|
381
385
|
|
|
382
386
|
def nearest_grid_points(source_latitudes, source_longitudes, target_latitudes, target_longitudes):
|
|
387
|
+
# TODO: Use the one from anemoi.utils.grids instead
|
|
388
|
+
# from anemoi.utils.grids import ...
|
|
383
389
|
from scipy.spatial import cKDTree
|
|
384
390
|
|
|
385
391
|
source_xyz = latlon_to_xyz(source_latitudes, source_longitudes)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: anemoi-datasets
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.15
|
|
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
|
|
@@ -224,8 +224,8 @@ Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
|
224
224
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
225
225
|
Requires-Python: >=3.9
|
|
226
226
|
License-File: LICENSE
|
|
227
|
-
Requires-Dist: anemoi-transform>=0.1
|
|
228
|
-
Requires-Dist: anemoi-utils[provenance]>=0.4.
|
|
227
|
+
Requires-Dist: anemoi-transform>=0.1.1
|
|
228
|
+
Requires-Dist: anemoi-utils[provenance]>=0.4.11
|
|
229
229
|
Requires-Dist: cfunits
|
|
230
230
|
Requires-Dist: numpy
|
|
231
231
|
Requires-Dist: pyyaml
|
|
@@ -235,12 +235,12 @@ Requires-Dist: zarr<=2.17
|
|
|
235
235
|
Provides-Extra: all
|
|
236
236
|
Requires-Dist: anemoi-datasets[create,remote,xarray]; extra == "all"
|
|
237
237
|
Provides-Extra: create
|
|
238
|
-
Requires-Dist: earthkit-data[mars]>=0.
|
|
239
|
-
Requires-Dist: earthkit-geo>=0.
|
|
240
|
-
Requires-Dist: earthkit-meteo; extra == "create"
|
|
241
|
-
Requires-Dist: eccodes>=2.
|
|
238
|
+
Requires-Dist: earthkit-data[mars]>=0.12; extra == "create"
|
|
239
|
+
Requires-Dist: earthkit-geo>=0.3; extra == "create"
|
|
240
|
+
Requires-Dist: earthkit-meteo>=0.3; extra == "create"
|
|
241
|
+
Requires-Dist: eccodes>=2.39.1; extra == "create"
|
|
242
242
|
Requires-Dist: entrypoints; extra == "create"
|
|
243
|
-
Requires-Dist: pyproj; extra == "create"
|
|
243
|
+
Requires-Dist: pyproj>=3; extra == "create"
|
|
244
244
|
Provides-Extra: dev
|
|
245
245
|
Requires-Dist: anemoi-datasets[all,docs,tests]; extra == "dev"
|
|
246
246
|
Provides-Extra: docs
|
|
@@ -260,6 +260,7 @@ src/anemoi/datasets/create/functions/filters/wz_to_w.py
|
|
|
260
260
|
src/anemoi/datasets/create/functions/sources/__init__.py
|
|
261
261
|
src/anemoi/datasets/create/functions/sources/accumulations.py
|
|
262
262
|
src/anemoi/datasets/create/functions/sources/constants.py
|
|
263
|
+
src/anemoi/datasets/create/functions/sources/eccc_fstd.py
|
|
263
264
|
src/anemoi/datasets/create/functions/sources/empty.py
|
|
264
265
|
src/anemoi/datasets/create/functions/sources/forcings.py
|
|
265
266
|
src/anemoi/datasets/create/functions/sources/grib.py
|
|
@@ -347,6 +348,7 @@ tests/create/missing.yaml
|
|
|
347
348
|
tests/create/nan.yaml
|
|
348
349
|
tests/create/pipe.yaml
|
|
349
350
|
tests/create/recentre.yaml
|
|
351
|
+
tests/create/regrid.yaml
|
|
350
352
|
tests/create/run.sh
|
|
351
353
|
tests/create/test_create.py
|
|
352
354
|
tests/xarray/test_kerchunk.py
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
anemoi-transform>=0.1
|
|
2
|
-
anemoi-utils[provenance]>=0.4.
|
|
1
|
+
anemoi-transform>=0.1.1
|
|
2
|
+
anemoi-utils[provenance]>=0.4.11
|
|
3
3
|
cfunits
|
|
4
4
|
numpy
|
|
5
5
|
pyyaml
|
|
@@ -11,12 +11,12 @@ zarr<=2.17
|
|
|
11
11
|
anemoi-datasets[create,remote,xarray]
|
|
12
12
|
|
|
13
13
|
[create]
|
|
14
|
-
earthkit-data[mars]>=0.
|
|
15
|
-
earthkit-geo>=0.
|
|
16
|
-
earthkit-meteo
|
|
17
|
-
eccodes>=2.
|
|
14
|
+
earthkit-data[mars]>=0.12
|
|
15
|
+
earthkit-geo>=0.3
|
|
16
|
+
earthkit-meteo>=0.3
|
|
17
|
+
eccodes>=2.39.1
|
|
18
18
|
entrypoints
|
|
19
|
-
pyproj
|
|
19
|
+
pyproj>=3
|
|
20
20
|
|
|
21
21
|
[dev]
|
|
22
22
|
anemoi-datasets[all,docs,tests]
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
|
|
2
|
+
dates:
|
|
3
|
+
start: 2020-12-30 00:00:00
|
|
4
|
+
end: 2021-01-03 12:00:00
|
|
5
|
+
frequency: 12h
|
|
6
|
+
|
|
7
|
+
input:
|
|
8
|
+
join:
|
|
9
|
+
- mars:
|
|
10
|
+
expver: "0001"
|
|
11
|
+
class: ea
|
|
12
|
+
grid: o48
|
|
13
|
+
param: [2t]
|
|
14
|
+
levtype: sfc
|
|
15
|
+
stream: oper
|
|
16
|
+
type: an
|
|
17
|
+
- pipe:
|
|
18
|
+
- mars:
|
|
19
|
+
expver: "0001"
|
|
20
|
+
class: ea
|
|
21
|
+
grid: o32
|
|
22
|
+
param: [q]
|
|
23
|
+
levtype: pl
|
|
24
|
+
level: [50]
|
|
25
|
+
stream: oper
|
|
26
|
+
type: an
|
|
27
|
+
- regrid:
|
|
28
|
+
# method: linear
|
|
29
|
+
method: nearest
|
|
30
|
+
in_grid: o32
|
|
31
|
+
out_grid: o48
|
|
@@ -880,6 +880,51 @@ def test_dates_using_list():
|
|
|
880
880
|
assert as_last_date("2021", dates) == np.datetime64("2021-12-31T06:00:00")
|
|
881
881
|
|
|
882
882
|
|
|
883
|
+
@mockup_open_zarr
|
|
884
|
+
def test_dates_using_list_2():
|
|
885
|
+
dates = [np.datetime64("2021-01-01T00:00:00") + i * np.timedelta64(24, "h") for i in range(0, 10)]
|
|
886
|
+
assert len(dates) == 10
|
|
887
|
+
|
|
888
|
+
assert dates[0] == as_first_date("0%", dates)
|
|
889
|
+
assert dates[0] == as_last_date("0%", dates)
|
|
890
|
+
|
|
891
|
+
assert dates[0] == as_first_date("0.01%", dates)
|
|
892
|
+
assert dates[0] == as_last_date("0.01%", dates)
|
|
893
|
+
|
|
894
|
+
assert dates[0] == as_first_date("9.99%", dates)
|
|
895
|
+
assert dates[0] == as_last_date("9.99%", dates)
|
|
896
|
+
|
|
897
|
+
assert dates[0] == as_first_date("10%", dates)
|
|
898
|
+
assert dates[0] == as_last_date("10%", dates)
|
|
899
|
+
|
|
900
|
+
assert dates[1] == as_first_date("10.01%", dates)
|
|
901
|
+
assert dates[0] == as_last_date("10.01%", dates)
|
|
902
|
+
|
|
903
|
+
assert dates[1] == as_first_date("19.99%", dates)
|
|
904
|
+
assert dates[0] == as_last_date("19.99%", dates)
|
|
905
|
+
|
|
906
|
+
assert dates[1] == as_first_date("20%", dates)
|
|
907
|
+
assert dates[1] == as_last_date("20%", dates)
|
|
908
|
+
|
|
909
|
+
assert dates[2] == as_first_date("20.01%", dates)
|
|
910
|
+
assert dates[1] == as_last_date("20.01%", dates)
|
|
911
|
+
|
|
912
|
+
assert dates[-2] == as_first_date("89.99%", dates)
|
|
913
|
+
assert dates[-3] == as_last_date("89.99%", dates)
|
|
914
|
+
|
|
915
|
+
assert dates[-2] == as_first_date("90%", dates)
|
|
916
|
+
assert dates[-2] == as_last_date("90%", dates)
|
|
917
|
+
|
|
918
|
+
assert dates[-1] == as_first_date("90.01%", dates)
|
|
919
|
+
assert dates[-2] == as_last_date("90.01%", dates)
|
|
920
|
+
|
|
921
|
+
assert dates[-1] == as_first_date("99.99%", dates)
|
|
922
|
+
assert dates[-2] == as_last_date("99.99%", dates)
|
|
923
|
+
|
|
924
|
+
assert dates[-1] == as_first_date("100%", dates)
|
|
925
|
+
assert dates[-1] == as_last_date("100%", dates)
|
|
926
|
+
|
|
927
|
+
|
|
883
928
|
@mockup_open_zarr
|
|
884
929
|
def test_slice_1():
|
|
885
930
|
test = DatasetTester("test-2021-2021-6h-o96-abcd")
|
|
@@ -7,12 +7,18 @@
|
|
|
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
|
+
import os
|
|
11
|
+
|
|
12
|
+
import pytest
|
|
10
13
|
import xarray as xr
|
|
11
14
|
|
|
12
15
|
from anemoi.datasets.create.functions.sources.xarray import XarrayFieldList
|
|
13
16
|
from anemoi.datasets.testing import assert_field_list
|
|
14
17
|
|
|
15
18
|
|
|
19
|
+
# when the opendap server is under maintainance, this test will fail
|
|
20
|
+
# it is skipped by default, and is only run when the SLOW_TESTS env var is set
|
|
21
|
+
@pytest.mark.skipif(not os.environ.get("SLOW_TESTS"), reason="No SLOW_TESTS env var")
|
|
16
22
|
def test_opendap():
|
|
17
23
|
|
|
18
24
|
ds = xr.open_dataset(
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
# This workflow will upload a Python Package using Twine when a release is created
|
|
2
|
-
# For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries
|
|
3
|
-
|
|
4
|
-
name: Upload Python Package
|
|
5
|
-
|
|
6
|
-
on:
|
|
7
|
-
release:
|
|
8
|
-
types: [created]
|
|
9
|
-
|
|
10
|
-
jobs:
|
|
11
|
-
quality:
|
|
12
|
-
if: ${{ !contains(github.repository, 'private') }}
|
|
13
|
-
uses: ecmwf-actions/reusable-workflows/.github/workflows/qa-precommit-run.yml@v2
|
|
14
|
-
with:
|
|
15
|
-
skip-hooks: "no-commit-to-branch"
|
|
16
|
-
|
|
17
|
-
checks:
|
|
18
|
-
strategy:
|
|
19
|
-
matrix:
|
|
20
|
-
python-version: ["3.9", "3.10", "3.11", "3.12"]
|
|
21
|
-
uses: ecmwf-actions/reusable-workflows/.github/workflows/qa-pytest-pyproject.yml@v2
|
|
22
|
-
with:
|
|
23
|
-
python-version: ${{ matrix.python-version }}
|
|
24
|
-
|
|
25
|
-
deploy:
|
|
26
|
-
needs: [checks, quality]
|
|
27
|
-
uses: ecmwf-actions/reusable-workflows/.github/workflows/cd-pypi.yml@v2
|
|
28
|
-
secrets: inherit
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/.github/workflows/changelog-release-update.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{anemoi_datasets-0.5.13 → anemoi_datasets-0.5.15}/.github/workflows/readthedocs-pr-update.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|