anemoi-datasets 0.5.28__tar.gz → 0.5.29__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.
Files changed (411) hide show
  1. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/.github/workflows/downstream-ci-hpc.yml +2 -0
  2. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/.github/workflows/python-pull-request.yml +1 -1
  3. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/.gitignore +0 -5
  4. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/.pre-commit-config.yaml +23 -29
  5. anemoi_datasets-0.5.29/.release-please-manifest.json +3 -0
  6. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/CHANGELOG.md +27 -0
  7. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/CONTRIBUTORS.md +2 -2
  8. {anemoi_datasets-0.5.28/src/anemoi_datasets.egg-info → anemoi_datasets-0.5.29}/PKG-INFO +7 -7
  9. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/README.md +18 -4
  10. anemoi_datasets-0.5.29/docs/building/sources/accumulate.rst +158 -0
  11. anemoi_datasets-0.5.29/docs/building/sources/yaml/accumulations-from-previous-step-mars-era5-1.yaml +12 -0
  12. anemoi_datasets-0.5.29/docs/building/sources/yaml/accumulations-from-previous-step-mars-era5-2.yaml +16 -0
  13. anemoi_datasets-0.5.29/docs/building/sources/yaml/accumulations-from-previous-step-mars-era5-3.yaml +14 -0
  14. anemoi_datasets-0.5.29/docs/building/sources/yaml/accumulations-from-start-mars-ecmwf-operational-forecast-1.yaml +12 -0
  15. anemoi_datasets-0.5.29/docs/building/sources/yaml/accumulations-from-start-mars-ecmwf-operational-forecast-2.yaml +16 -0
  16. anemoi_datasets-0.5.29/docs/building/sources/yaml/accumulations-from-start-mars-ecmwf-operational-forecast-3.yaml +14 -0
  17. anemoi_datasets-0.5.29/docs/building/sources/yaml/accumulations-grib-index.yaml +7 -0
  18. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/sources.rst +1 -1
  19. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/howtos/create/01-grib-data.rst +20 -5
  20. anemoi_datasets-0.5.29/docs/howtos/create/05-create-accumulations.rst +129 -0
  21. anemoi_datasets-0.5.29/docs/howtos/create/yaml/grib-recipe6.yaml +13 -0
  22. anemoi_datasets-0.5.29/docs/howtos/create/yaml/grib-recipe7.yaml +13 -0
  23. anemoi_datasets-0.5.29/docs/howtos/create/yaml/recipe-accumulate-era.yaml +17 -0
  24. anemoi_datasets-0.5.29/docs/howtos/create/yaml/recipe-accumulate-gribindex.yaml +18 -0
  25. anemoi_datasets-0.5.29/docs/howtos/create/yaml/recipe-accumulation-era.yaml +14 -0
  26. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/using/combining.rst +4 -4
  27. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/using/grids.rst +19 -0
  28. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/pyproject.toml +7 -7
  29. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/_version.py +3 -3
  30. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/__init__.py +4 -12
  31. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/config.py +50 -53
  32. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/input/result/field.py +1 -3
  33. anemoi_datasets-0.5.29/src/anemoi/datasets/create/sources/accumulate.py +517 -0
  34. anemoi_datasets-0.5.29/src/anemoi/datasets/create/sources/accumulate_utils/__init__.py +8 -0
  35. anemoi_datasets-0.5.29/src/anemoi/datasets/create/sources/accumulate_utils/covering_intervals.py +221 -0
  36. anemoi_datasets-0.5.29/src/anemoi/datasets/create/sources/accumulate_utils/field_to_interval.py +149 -0
  37. anemoi_datasets-0.5.29/src/anemoi/datasets/create/sources/accumulate_utils/interval_generators.py +321 -0
  38. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/sources/grib_index.py +64 -20
  39. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/sources/mars.py +56 -27
  40. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/sources/xarray_support/__init__.py +1 -0
  41. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/sources/xarray_support/coordinates.py +1 -4
  42. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/sources/xarray_support/flavour.py +2 -2
  43. anemoi_datasets-0.5.29/src/anemoi/datasets/create/sources/xarray_support/patch.py +305 -0
  44. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/data/complement.py +26 -17
  45. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/data/dataset.py +6 -0
  46. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/data/masked.py +74 -13
  47. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/data/missing.py +5 -0
  48. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29/src/anemoi_datasets.egg-info}/PKG-INFO +7 -7
  49. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi_datasets.egg-info/SOURCES.txt +30 -8
  50. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi_datasets.egg-info/requires.txt +5 -3
  51. anemoi_datasets-0.5.29/tests/create/accumulate-mars-ea-enda.yaml +30 -0
  52. anemoi_datasets-0.5.29/tests/create/accumulate-mars-ea-oper-2.yaml +33 -0
  53. anemoi_datasets-0.5.29/tests/create/accumulate-mars-ea-oper.yaml +25 -0
  54. anemoi_datasets-0.5.29/tests/create/accumulate-mars-ecland.yaml +28 -0
  55. anemoi_datasets-0.5.29/tests/create/accumulate-mars-l5-oper.yaml +27 -0
  56. anemoi_datasets-0.5.29/tests/create/accumulate-mars-od-oper.yaml +31 -0
  57. anemoi_datasets-0.5.29/tests/create/accumulate-mars-reset.yaml +56 -0
  58. anemoi_datasets-0.5.29/tests/create/accumulate-mars-rr-oper.yaml +35 -0
  59. anemoi_datasets-0.5.29/tests/create/concat.yaml +35 -0
  60. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tests/create/join.yaml +11 -5
  61. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tests/create/missing.yaml +3 -0
  62. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tests/create/nan.yaml +3 -0
  63. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tests/create/pipe.yaml +10 -3
  64. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tests/create/recentre.yaml +20 -9
  65. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tests/create/regrid.yaml +3 -0
  66. anemoi_datasets-0.5.29/tests/create/repeated-dates.yaml +31 -0
  67. anemoi_datasets-0.5.29/tests/create/test_covering_intervals.py +351 -0
  68. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tests/create/test_create.py +21 -14
  69. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tests/create/test_sources.py +182 -6
  70. anemoi_datasets-0.5.29/tests/create/utils/checks.py +343 -0
  71. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tests/create/utils/create.py +1 -4
  72. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tests/test_data.py +62 -0
  73. anemoi_datasets-0.5.28/.release-please-manifest.json +0 -3
  74. anemoi_datasets-0.5.28/docs/building/sources/accumulations.rst +0 -67
  75. anemoi_datasets-0.5.28/docs/building/sources/yaml/accumulations1.yaml +0 -6
  76. anemoi_datasets-0.5.28/docs/building/sources/yaml/accumulations2.yaml +0 -6
  77. anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/accumulations.py +0 -1042
  78. anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/accumulations2.py +0 -618
  79. anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/tendencies.py +0 -171
  80. anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/xarray_support/patch.py +0 -132
  81. anemoi_datasets-0.5.28/tests/create/accumulation.yaml +0 -20
  82. anemoi_datasets-0.5.28/tests/create/concat.yaml +0 -32
  83. anemoi_datasets-0.5.28/tests/create/utils/compare.py +0 -227
  84. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/.gitattributes +0 -0
  85. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/.github/CODEOWNERS +0 -0
  86. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  87. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/.github/ci-hpc-config.yml +0 -0
  88. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/.github/dependabot.yml +0 -0
  89. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/.github/labeler.yml +0 -0
  90. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/.github/pull_request_template.md +0 -0
  91. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/.github/workflows/pr-conventional-commit.yml +0 -0
  92. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/.github/workflows/pr-label-ats.yml +0 -0
  93. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/.github/workflows/pr-label-conventional-commits.yml +0 -0
  94. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/.github/workflows/pr-label-file-based.yml +0 -0
  95. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/.github/workflows/pr-label-public.yml +0 -0
  96. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/.github/workflows/push-to-private.yml +0 -0
  97. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/.github/workflows/python-publish.yml +0 -0
  98. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/.github/workflows/readthedocs-pr-update.yml +0 -0
  99. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/.github/workflows/release-please.yml +0 -0
  100. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/.readthedocs.yaml +0 -0
  101. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/.release-please-config.json +0 -0
  102. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/.vscode/spellright.dict +0 -0
  103. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/LICENSE +0 -0
  104. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/Makefile +0 -0
  105. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/_static/2t_map_example.png +0 -0
  106. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/_static/area-1.png +0 -0
  107. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/_static/concat.png +0 -0
  108. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/_static/cutout-1.png +0 -0
  109. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/_static/cutout-2.png +0 -0
  110. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/_static/cutout-3.png +0 -0
  111. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/_static/cutout-4.png +0 -0
  112. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/_static/cutout-5.png +0 -0
  113. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/_static/cutout-6.png +0 -0
  114. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/_static/join.png +0 -0
  115. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/_static/logo.png +0 -0
  116. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/_static/overlay.png +0 -0
  117. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/_static/schemas/matrix.excalidraw +0 -0
  118. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/_static/schemas/matrix.png +0 -0
  119. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/_static/schemas/overview.excalidraw +0 -0
  120. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/_static/schemas/overview.png +0 -0
  121. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/_static/schemas/recipe.excalidraw +0 -0
  122. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/_static/schemas/recipe.png +0 -0
  123. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/_static/skip-missing.png +0 -0
  124. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/_static/style.css +0 -0
  125. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/_static/thinning-after.png +0 -0
  126. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/_static/thinning-before.png +0 -0
  127. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/_templates/.gitkeep +0 -0
  128. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/_templates/apidoc/package.rst.jinja +0 -0
  129. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/adr/adr-1.md +0 -0
  130. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/apply-fmt.sh +0 -0
  131. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/advanced-options.rst +0 -0
  132. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/filters.rst +0 -0
  133. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/handling-missing-dates.rst +0 -0
  134. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/handling-missing-values.rst +0 -0
  135. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/incremental.rst +0 -0
  136. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/introduction.rst +0 -0
  137. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/naming-conventions.rst +0 -0
  138. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/naming-variables.rst +0 -0
  139. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/operations.rst +0 -0
  140. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/sources/anemoi-dataset.rst +0 -0
  141. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/sources/cds.rst +0 -0
  142. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/sources/eccc-fstd.rst +0 -0
  143. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/sources/forcings.rst +0 -0
  144. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/sources/grib-index.rst +0 -0
  145. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/sources/grib.rst +0 -0
  146. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/sources/hindcasts.rst +0 -0
  147. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/sources/mars.rst +0 -0
  148. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/sources/netcdf.rst +0 -0
  149. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/sources/opendap.rst +0 -0
  150. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/sources/recentre.rst +0 -0
  151. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/sources/repeated-dates.rst +0 -0
  152. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/sources/xarray-based.rst +0 -0
  153. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/sources/xarray-kerchunk.py +0 -0
  154. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/sources/xarray-kerchunk.rst +0 -0
  155. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/sources/xarray-zarr.rst +0 -0
  156. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/sources/yaml/anemoi-dataset.yaml +0 -0
  157. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/sources/yaml/anemoi-zarr-dataset.yaml +0 -0
  158. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/sources/yaml/eccc-fstd.yaml +0 -0
  159. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/sources/yaml/forcings.yaml +0 -0
  160. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/sources/yaml/grib1.yaml +0 -0
  161. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/sources/yaml/grib2.yaml +0 -0
  162. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/sources/yaml/grib3.yaml +0 -0
  163. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/sources/yaml/grib4.yaml +0 -0
  164. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/sources/yaml/hindcasts.yaml +0 -0
  165. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/sources/yaml/mars-cds.yaml +0 -0
  166. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/sources/yaml/mars1.yaml +0 -0
  167. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/sources/yaml/mars2.yaml +0 -0
  168. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/sources/yaml/netcdf.yaml +0 -0
  169. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/sources/yaml/opendap.yaml +0 -0
  170. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/sources/yaml/recentre.yaml +0 -0
  171. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/sources/yaml/repeated-dates1.yaml +0 -0
  172. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/sources/yaml/repeated-dates2.yaml +0 -0
  173. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/sources/yaml/repeated-dates3.yaml +0 -0
  174. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/sources/yaml/repeated-dates4.yaml +0 -0
  175. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/sources/yaml/xarray-based.yaml +0 -0
  176. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/sources/yaml/xarray-kerchunk.yaml +0 -0
  177. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/sources/yaml/xarray-zarr.yaml +0 -0
  178. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/sources/yaml/zenodo.yaml +0 -0
  179. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/sources/zenodo.rst +0 -0
  180. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/statistics.rst +0 -0
  181. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/building/syntax.yaml +0 -0
  182. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/check-index.sh +0 -0
  183. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/cli/compare-lam.rst +0 -0
  184. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/cli/compare.rst +0 -0
  185. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/cli/copy.rst +0 -0
  186. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/cli/create.rst +0 -0
  187. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/cli/grib-index.rst +0 -0
  188. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/cli/inspect.rst +0 -0
  189. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/cli/introduction.rst +0 -0
  190. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/cli/patch.rst +0 -0
  191. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/cli/scan.rst +0 -0
  192. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/cli/validate.rst +0 -0
  193. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/conf.py +0 -0
  194. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/dev/contributing.rst +0 -0
  195. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/howtos/create/00-redo-sample-dataset.rst +0 -0
  196. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/howtos/create/02-cf-data.rst +0 -0
  197. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/howtos/create/03-constant-fields.rst +0 -0
  198. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/howtos/create/04-create-with-filter.rst +0 -0
  199. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/howtos/create/yaml/aifs-ea-an-oper-0001-mars-o48-2020-2021-6h-v1.yaml +0 -0
  200. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/howtos/create/yaml/grib-flavour1.yaml +0 -0
  201. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/howtos/create/yaml/grib-flavour2.yaml +0 -0
  202. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/howtos/create/yaml/grib-flavour3.yaml +0 -0
  203. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/howtos/create/yaml/grib-flavour4.yaml +0 -0
  204. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/howtos/create/yaml/grib-recipe1.yaml +0 -0
  205. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/howtos/create/yaml/grib-recipe2.yaml +0 -0
  206. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/howtos/create/yaml/grib-recipe3.yaml +0 -0
  207. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/howtos/create/yaml/grib-recipe4.yaml +0 -0
  208. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/howtos/create/yaml/grib-recipe5.yaml +0 -0
  209. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/howtos/create/yaml/netcdf1.yaml +0 -0
  210. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/howtos/create/yaml/opendap1.yaml +0 -0
  211. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/howtos/create/yaml/recipe-filter1.yaml +0 -0
  212. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/howtos/create/yaml/recipe-filter2.yaml +0 -0
  213. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/howtos/create/yaml/xarray-flavour1.yaml +0 -0
  214. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/howtos/create/yaml/xarray-patch1.yaml +0 -0
  215. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/howtos/create/yaml/xarray-patch2.yaml +0 -0
  216. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/howtos/create/yaml/zarr1.yaml +0 -0
  217. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/howtos/create/yaml/zarr2.yaml +0 -0
  218. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/howtos/introduction.rst +0 -0
  219. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/howtos/using/01-interpolate-step-dataset-combination.rst +0 -0
  220. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/howtos/using/02-coutout-complement-combination.rst +0 -0
  221. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/howtos/using/code/cutout-complement1.py +0 -0
  222. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/howtos/using/code/interpolate1.py +0 -0
  223. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/howtos/using/code/interpolate2.py +0 -0
  224. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/howtos/using/yaml/cutout-complement1.yaml +0 -0
  225. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/howtos/using/yaml/interpolate1.yaml +0 -0
  226. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/howtos/using/yaml/interpolate2.yaml +0 -0
  227. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/index.rst +0 -0
  228. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/installing.rst +0 -0
  229. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/modules/dataset.rst +0 -0
  230. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/overview.rst +0 -0
  231. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/pptx/images.pptx +0 -0
  232. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/scripts/Makefile +0 -0
  233. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/scripts/api_build.sh +0 -0
  234. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/using/code/trimedge1_.py +0 -0
  235. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/using/configuration.rst +0 -0
  236. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/using/configuration.toml +0 -0
  237. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/using/ensembles.rst +0 -0
  238. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/using/introduction.rst +0 -0
  239. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/using/matching.rst +0 -0
  240. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/using/methods.rst +0 -0
  241. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/using/miscellaneous.rst +0 -0
  242. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/using/missing.rst +0 -0
  243. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/using/opening.rst +0 -0
  244. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/using/other.rst +0 -0
  245. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/using/selecting.rst +0 -0
  246. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/using/statistics.rst +0 -0
  247. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/using/subsetting.rst +0 -0
  248. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/using/zip.rst +0 -0
  249. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/yaml/Makefile +0 -0
  250. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/yaml/building1.txt +0 -0
  251. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/yaml/building1.yaml +0 -0
  252. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/yaml/building2.txt +0 -0
  253. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/yaml/building2.yaml +0 -0
  254. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/yaml/building3.txt +0 -0
  255. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/yaml/building3.yaml +0 -0
  256. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/yaml/concat.yaml +0 -0
  257. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/yaml/hindcasts.yaml +0 -0
  258. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/yaml/input.yaml +0 -0
  259. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/yaml/missing_dates.yaml +0 -0
  260. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/yaml/nan.yaml +0 -0
  261. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/docs/yaml/pipe.yaml +0 -0
  262. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/setup.cfg +0 -0
  263. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/__init__.py +0 -0
  264. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/__main__.py +0 -0
  265. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/check.py +0 -0
  266. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/commands/__init__.py +0 -0
  267. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/commands/check.py +0 -0
  268. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/commands/cleanup.py +0 -0
  269. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/commands/compare-lam.py +0 -0
  270. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/commands/compare.py +0 -0
  271. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/commands/copy.py +0 -0
  272. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/commands/create.py +0 -0
  273. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/commands/finalise-additions.py +0 -0
  274. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/commands/finalise.py +0 -0
  275. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/commands/grib-index.py +0 -0
  276. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/commands/init-additions.py +0 -0
  277. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/commands/init.py +0 -0
  278. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/commands/inspect.py +0 -0
  279. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/commands/load-additions.py +0 -0
  280. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/commands/load.py +0 -0
  281. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/commands/patch.py +0 -0
  282. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/commands/publish.py +0 -0
  283. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/commands/recipe/__init__.py +0 -0
  284. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/commands/recipe/format.py +0 -0
  285. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/commands/recipe/migrate.py +0 -0
  286. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/commands/scan.py +0 -0
  287. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/commands/validate.py +0 -0
  288. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/compute/__init__.py +0 -0
  289. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/compute/recentre.py +0 -0
  290. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/check.py +0 -0
  291. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/chunks.py +0 -0
  292. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/input/__init__.py +0 -0
  293. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/input/action.py +0 -0
  294. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/input/context/__init__.py +0 -0
  295. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/input/context/field.py +0 -0
  296. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/input/data_sources.py +0 -0
  297. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/input/misc.py +0 -0
  298. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/input/repeated_dates.py +0 -0
  299. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/input/result/__init__.py +0 -0
  300. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/input/trace.py +0 -0
  301. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/patch.py +0 -0
  302. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/persistent.py +0 -0
  303. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/size.py +0 -0
  304. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/source.py +0 -0
  305. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/sources/__init__.py +0 -0
  306. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/sources/anemoi_dataset.py +0 -0
  307. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/sources/constants.py +0 -0
  308. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/sources/eccc_fstd.py +0 -0
  309. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/sources/empty.py +0 -0
  310. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/sources/fdb.py +0 -0
  311. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/sources/forcings.py +0 -0
  312. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/sources/grib.py +0 -0
  313. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/sources/hindcasts.py +0 -0
  314. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/sources/legacy.py +0 -0
  315. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/sources/netcdf.py +0 -0
  316. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/sources/opendap.py +0 -0
  317. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/sources/patterns.py +0 -0
  318. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/sources/planetary_computer.py +0 -0
  319. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/sources/recentre.py +0 -0
  320. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/sources/repeated_dates.py +0 -0
  321. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/sources/source.py +0 -0
  322. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/sources/xarray.py +0 -0
  323. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/sources/xarray_kerchunk.py +0 -0
  324. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/sources/xarray_support/README.md +0 -0
  325. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/sources/xarray_support/field.py +0 -0
  326. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/sources/xarray_support/fieldlist.py +0 -0
  327. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/sources/xarray_support/grid.py +0 -0
  328. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/sources/xarray_support/metadata.py +0 -0
  329. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/sources/xarray_support/time.py +0 -0
  330. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/sources/xarray_support/variable.py +0 -0
  331. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/sources/xarray_zarr.py +0 -0
  332. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/sources/zenodo.py +0 -0
  333. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/statistics/__init__.py +0 -0
  334. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/statistics/summary.py +0 -0
  335. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/testing.py +0 -0
  336. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/typing.py +0 -0
  337. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/utils.py +0 -0
  338. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/writer.py +0 -0
  339. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/create/zarr.py +0 -0
  340. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/data/__init__.py +0 -0
  341. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/data/concat.py +0 -0
  342. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/data/debug.css +0 -0
  343. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/data/debug.py +0 -0
  344. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/data/ensemble.py +0 -0
  345. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/data/fill_missing.py +0 -0
  346. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/data/forwards.py +0 -0
  347. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/data/grids.py +0 -0
  348. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/data/indexing.py +0 -0
  349. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/data/interpolate.py +0 -0
  350. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/data/join.py +0 -0
  351. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/data/merge.py +0 -0
  352. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/data/misc.py +0 -0
  353. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/data/observations/__init__.py +0 -0
  354. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/data/observations/legacy_obs_dataset.py +0 -0
  355. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/data/observations/multi.py +0 -0
  356. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/data/padded.py +0 -0
  357. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/data/records/__init__.py +0 -0
  358. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/data/records/backends/__init__.py +0 -0
  359. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/data/rescale.py +0 -0
  360. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/data/rolling_average.py +0 -0
  361. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/data/select.py +0 -0
  362. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/data/statistics.py +0 -0
  363. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/data/stores.py +0 -0
  364. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/data/subset.py +0 -0
  365. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/data/unchecked.py +0 -0
  366. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/data/xy.py +0 -0
  367. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/dates/__init__.py +0 -0
  368. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/dates/groups.py +0 -0
  369. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/dumper.py +0 -0
  370. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/grids.py +0 -0
  371. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/schemas/recipe.json +0 -0
  372. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/testing.py +0 -0
  373. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi/datasets/validate.py +0 -0
  374. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi_datasets.egg-info/dependency_links.txt +0 -0
  375. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi_datasets.egg-info/entry_points.txt +0 -0
  376. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/src/anemoi_datasets.egg-info/top_level.txt +0 -0
  377. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tests/conftest.py +0 -0
  378. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tests/create/__init__.py +0 -0
  379. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tests/create/run.sh +0 -0
  380. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tests/create/utils/__init__.py +0 -0
  381. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tests/create/utils/mock_sources.py +0 -0
  382. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tests/create-perturbations-full.yaml +0 -0
  383. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tests/create-shift.yaml +0 -0
  384. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tests/test_chunks.py +0 -0
  385. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tests/test_data_gridded.py +0 -0
  386. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tests/test_dates.py +0 -0
  387. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tests/test_indexing.py +0 -0
  388. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tests/test_records.py +0 -0
  389. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tests/test_validate.py +0 -0
  390. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tests/xarray/test_flavour.py +0 -0
  391. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tests/xarray/test_netcdf.py +0 -0
  392. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tests/xarray/test_opendap.py +0 -0
  393. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tests/xarray/test_variable.py +0 -0
  394. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tests/xarray/test_zarr.py +0 -0
  395. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tools/.gitignore +0 -0
  396. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tools/build-obs.py +0 -0
  397. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tools/check-obs.py +0 -0
  398. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tools/examples/Makefile +0 -0
  399. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tools/examples/an-oper-2023-2023-2p5-6h-v1.yaml +0 -0
  400. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tools/grids/Makefile +0 -0
  401. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tools/grids/grids.ipynb +0 -0
  402. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tools/grids/grids1.yaml +0 -0
  403. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tools/grids/grids2.yaml +0 -0
  404. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tools/grids/grids3.yaml +0 -0
  405. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tools/grids/grids4.yaml +0 -0
  406. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tools/grids/grids5.yaml +0 -0
  407. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tools/grids/grids6.yaml +0 -0
  408. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tools/grids/grids7.yaml +0 -0
  409. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tools/grids/grids_multilam.ipynb +0 -0
  410. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tools/make-sample-dataset.py +0 -0
  411. {anemoi_datasets-0.5.28 → anemoi_datasets-0.5.29}/tools/upload-sample-dataset.py +0 -0
@@ -48,6 +48,8 @@ jobs:
48
48
  gnu@rocky-8.6
49
49
  clang@rocky-8.6
50
50
  gnu@ubuntu-22.04
51
+ python_versions: |+
52
+ - '3.11'
51
53
  secrets: inherit
52
54
 
53
55
  # # Build downstream packages on HPC
@@ -19,7 +19,7 @@ jobs:
19
19
  checks:
20
20
  strategy:
21
21
  matrix:
22
- python-version: ["3.10", "3.11", "3.12"]
22
+ python-version: ["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 }}
@@ -141,11 +141,6 @@ _version.py
141
141
  *.to_upload
142
142
  tempCodeRunnerFile.python
143
143
  Untitled-*.py
144
- *.zip
145
- *.json
146
- *.db
147
- *.tgz
148
- _api/
149
144
  trace.txt
150
145
  ?/
151
146
  *.prof
@@ -20,19 +20,19 @@ repos:
20
20
  - id: no-commit-to-branch # Prevent committing to main / master
21
21
  - id: check-added-large-files # Check for large files added to git
22
22
  - id: check-merge-conflict # Check for files that contain merge conflict
23
- - repo: https://github.com/pre-commit/pygrep-hooks
24
- rev: v1.10.0 # Use the ref you want to point at
25
- hooks:
26
- - id: python-use-type-annotations # Check for missing type annotations
27
- - id: python-check-blanket-noqa # Check for # noqa: all
28
- - id: python-no-log-warn # Check for log.warn
23
+ - repo: https://github.com/pre-commit/pygrep-hooks
24
+ rev: v1.10.0 # Use the ref you want to point at
25
+ hooks:
26
+ - id: python-use-type-annotations # Check for missing type annotations
27
+ - id: python-check-blanket-noqa # Check for # noqa: all
28
+ - id: python-no-log-warn # Check for log.warn
29
29
  - repo: https://github.com/psf/black-pre-commit-mirror
30
- rev: 25.9.0
30
+ rev: 25.12.0
31
31
  hooks:
32
32
  - id: black
33
33
  args: [--line-length=120]
34
34
  - repo: https://github.com/pycqa/isort
35
- rev: 6.1.0
35
+ rev: 7.0.0
36
36
  hooks:
37
37
  - id: isort
38
38
  args:
@@ -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.13.3
44
+ rev: v0.14.10
45
45
  hooks:
46
46
  - id: ruff
47
47
  args:
@@ -50,36 +50,30 @@ repos:
50
50
  - --exit-non-zero-on-fix
51
51
  - --exclude=docs/**/*_.py
52
52
  - repo: https://github.com/sphinx-contrib/sphinx-lint
53
- rev: v1.0.0
53
+ rev: v1.0.2
54
54
  hooks:
55
55
  - id: sphinx-lint
56
- # For now, we use it. But it does not support a lot of sphinx features
57
- - repo: https://github.com/dzhu/rstfmt
58
- rev: v0.0.14
59
- hooks:
60
- - id: rstfmt
61
- exclude: '(cli|schemas)/.*' # Because we use argparse and pydantic sphinx directives
62
56
  - repo: https://github.com/b8raoult/pre-commit-docconvert
63
57
  rev: "0.1.5"
64
58
  hooks:
65
59
  - id: docconvert
66
60
  args: ["numpy"]
67
61
  - repo: https://github.com/tox-dev/pyproject-fmt
68
- rev: "v2.7.0"
62
+ rev: "v2.11.1"
69
63
  hooks:
70
64
  - id: pyproject-fmt
71
- - repo: https://github.com/jshwi/docsig # Check docstrings against function sig
72
- rev: v0.71.0
73
- hooks:
74
- - id: docsig
75
- args:
76
- - --ignore-no-params # Allow docstrings without parameters
77
- - --check-dunders # Check dunder methods
78
- - --check-overridden # Check overridden methods
79
- - --check-protected # Check protected methods
80
- - --check-class # Check class docstrings
81
- - --disable=SIG101,SIG102 # Disable empty docstrings
82
-
65
+ args: ["--max-supported-python", "3.12"]
66
+ - repo: https://github.com/jshwi/docsig # Check docstrings against function sig
67
+ rev: v0.74.0
68
+ hooks:
69
+ - id: docsig
70
+ args:
71
+ - --ignore-no-params # Allow docstrings without parameters
72
+ - --check-dunders # Check dunder methods
73
+ - --check-overridden # Check overridden methods
74
+ - --check-protected # Check protected methods
75
+ - --check-class # Check class docstrings
76
+ - --disable=SIG101,SIG102,SIG305 # Disable empty docstrings
83
77
  ci:
84
78
  autoupdate_schedule: monthly
85
79
  autoupdate_commit_msg: "chore(deps): pre-commit.ci autoupdate"
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.5.29"
3
+ }
@@ -8,6 +8,33 @@ 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.29](https://github.com/ecmwf/anemoi-datasets/compare/0.5.28...0.5.29) (2026-01-28)
12
+
13
+
14
+ ### Features
15
+
16
+ * Abstracting accumulation ([#326](https://github.com/ecmwf/anemoi-datasets/issues/326)) ([57a2895](https://github.com/ecmwf/anemoi-datasets/commit/57a2895c30a7752c96dc2bf7d93de0262693dab6))
17
+ * Add id and location for point data ([#500](https://github.com/ecmwf/anemoi-datasets/issues/500)) ([8cf8a10](https://github.com/ecmwf/anemoi-datasets/commit/8cf8a10a8986d89d115fe87bcb9600f18c682d5e))
18
+ * Add xarray patches for changing time dimension and summing variables ([#494](https://github.com/ecmwf/anemoi-datasets/issues/494)) ([7c44d99](https://github.com/ecmwf/anemoi-datasets/commit/7c44d99329aba869022504d15e746f5ef25abd31))
19
+ * **apply mask:** Apply a boolean mask when opening a dataset ([#496](https://github.com/ecmwf/anemoi-datasets/issues/496)) ([820eb39](https://github.com/ecmwf/anemoi-datasets/commit/820eb39ce48124d274b5fe60c2c12235790fc456))
20
+
21
+
22
+ ### Bug Fixes
23
+
24
+ * '--test' changes grid/number ([#386](https://github.com/ecmwf/anemoi-datasets/issues/386)) ([71238c6](https://github.com/ecmwf/anemoi-datasets/commit/71238c69d307f2266e495f5c39f60d36fe9dcc76))
25
+ * Complement with max distance ([#469](https://github.com/ecmwf/anemoi-datasets/issues/469)) ([a8666fa](https://github.com/ecmwf/anemoi-datasets/commit/a8666fa26f97d32ccc43eb0a729c4773f5369523))
26
+ * Coordinate (multiple) indexing - check indices before comparison ([#506](https://github.com/ecmwf/anemoi-datasets/issues/506)) ([859ed19](https://github.com/ecmwf/anemoi-datasets/commit/859ed194a9a9e0171bd1260e9c6b45d304f9ca5b))
27
+ * Grids for masked datasets, field_shape thinning ([#504](https://github.com/ecmwf/anemoi-datasets/issues/504)) ([e7b8d58](https://github.com/ecmwf/anemoi-datasets/commit/e7b8d58adb83f9764b2df96280ab41e3facb6147))
28
+ * Issue [#477](https://github.com/ecmwf/anemoi-datasets/issues/477) ([#478](https://github.com/ecmwf/anemoi-datasets/issues/478)) ([42b9e27](https://github.com/ecmwf/anemoi-datasets/commit/42b9e27c621be292cea77358c738a6c90590a2a9))
29
+ * Pin min version of ruamel-yaml ([#514](https://github.com/ecmwf/anemoi-datasets/issues/514)) ([e6037b0](https://github.com/ecmwf/anemoi-datasets/commit/e6037b0fa759fb75dc28be79f419e1977010d222))
30
+ * Update README to reflect project maturity status ([#465](https://github.com/ecmwf/anemoi-datasets/issues/465)) ([ec8a15e](https://github.com/ecmwf/anemoi-datasets/commit/ec8a15eac36743502d8850070ce8f1d892a40ef0))
31
+
32
+
33
+ ### Documentation
34
+
35
+ * Document the option to specify types when selecting a GRIB message ([#466](https://github.com/ecmwf/anemoi-datasets/issues/466)) ([8940839](https://github.com/ecmwf/anemoi-datasets/commit/8940839ed6f2b7f606e20465f45dbad0c68e2096))
36
+ * Fix interpolate to interpolation key in combining page ([#461](https://github.com/ecmwf/anemoi-datasets/issues/461)) ([990a5c3](https://github.com/ecmwf/anemoi-datasets/commit/990a5c3f54706aacd8252b832ad45b598c7252b2))
37
+
11
38
  ## [0.5.28](https://github.com/ecmwf/anemoi-datasets/compare/0.5.27...0.5.28) (2025-10-30)
12
39
 
13
40
 
@@ -1,6 +1,6 @@
1
1
  ## How to Contribute
2
2
 
3
- Please see the [read the docs](https://anemoi.readthedocs.io/en/latest/dev/contributing.html).
3
+ Please see the [read the docs](https://anemoi.readthedocs.io/en/latest/contributing/contributing.html).
4
4
 
5
5
 
6
6
  ## Contributors
@@ -10,4 +10,4 @@ Thank you to all the wonderful people who have contributed to Anemoi. Contributi
10
10
 
11
11
  ## Contributing Organisations
12
12
 
13
- Significant contributions have been made by the following organisations: [DWD](https://www.dwd.de/), [FMI](https://www.ilmatieteenlaitos.fi/), [KNMI](https://www.knmi.nl), [MET Norway](https://www.met.no/), [MeteoSwiss](https://www.meteoswiss.admin.ch/), [RMI](https://www.meteo.be/) & [ECMWF](https://www.ecmwf.int/)
13
+ Significant contributions have been made by the following organisations: [DMI](https://www.dmi.dk/), [DWD](https://www.dwd.de/), [FMI](https://www.ilmatieteenlaitos.fi/), [KNMI](https://www.knmi.nl), [MET Norway](https://www.met.no/), [MeteoSwiss](https://www.meteoswiss.admin.ch/), [RMI](https://www.meteo.be/), [Met Office](https://www.metoffice.gov.uk/), [Météo-France](https://meteofrance.com/) & [ECMWF](https://www.ecmwf.int/)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: anemoi-datasets
3
- Version: 0.5.28
3
+ Version: 0.5.29
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,23 +216,23 @@ 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.10
220
219
  Classifier: Programming Language :: Python :: 3.11
221
220
  Classifier: Programming Language :: Python :: 3.12
222
- Classifier: Programming Language :: Python :: 3.13
223
221
  Classifier: Programming Language :: Python :: Implementation :: CPython
224
222
  Classifier: Programming Language :: Python :: Implementation :: PyPy
225
- Requires-Python: >=3.10
223
+ Requires-Python: >=3.11
226
224
  License-File: LICENSE
227
- Requires-Dist: anemoi-transform>=0.1.10
228
- Requires-Dist: anemoi-utils[provenance]>=0.4.38
225
+ Requires-Dist: anemoi-transform>=0.1.12
226
+ Requires-Dist: anemoi-utils>=0.4.26
229
227
  Requires-Dist: cfunits
230
228
  Requires-Dist: glom
231
229
  Requires-Dist: jsonschema
232
230
  Requires-Dist: numcodecs<0.16
233
231
  Requires-Dist: numpy
232
+ Requires-Dist: pytest>=8.4.1
233
+ Requires-Dist: pytest-xdist>=3.7
234
234
  Requires-Dist: pyyaml
235
- Requires-Dist: ruamel-yaml
235
+ Requires-Dist: ruamel-yaml>=0.16
236
236
  Requires-Dist: semantic-version
237
237
  Requires-Dist: tqdm
238
238
  Requires-Dist: zarr<=2.18.4
@@ -1,9 +1,19 @@
1
1
  # anemoi-datasets
2
2
 
3
- **DISCLAIMER**
4
- This project is **BETA** and will be **Experimental** for the foreseeable future.
5
- Interfaces and functionality are likely to change, and the project itself may be scrapped.
6
- **DO NOT** use this software in any project/software that is operational.
3
+ <p align="center">
4
+ <a href="https://github.com/ecmwf/codex/raw/refs/heads/main/Project Maturity">
5
+ <img src="https://github.com/ecmwf/codex/raw/refs/heads/main/Project Maturity/incubating_badge.svg" alt="Maturity Level">
6
+ </a>
7
+ <a href="https://opensource.org/licenses/apache-2-0">
8
+ <img src="https://img.shields.io/badge/Licence-Apache 2.0-blue.svg" alt="Licence">
9
+ </a>
10
+ <a href="https://github.com/ecmwf/anemoi-datasets/releases">
11
+ <img src="https://img.shields.io/github/v/release/ecmwf/anemoi-datasets?color=purple&label=Release" alt="Latest Release">
12
+ </a>
13
+ </p>
14
+
15
+ > \[!IMPORTANT\]
16
+ > This software is **Incubating** and subject to ECMWF's guidelines on [Software Maturity](https://github.com/ecmwf/codex/raw/refs/heads/main/Project%20Maturity).
7
17
 
8
18
 
9
19
 
@@ -11,6 +21,10 @@ Interfaces and functionality are likely to change, and the project itself may be
11
21
 
12
22
  The documentation can be found at https://anemoi-datasets.readthedocs.io/.
13
23
 
24
+ ## Contributing
25
+
26
+ You can find information about contributing to Anemoi at our [Contribution page](https://anemoi.readthedocs.io/en/latest/contributing/contributing.html).
27
+
14
28
  ## Install
15
29
 
16
30
  Install via `pip` with:
@@ -0,0 +1,158 @@
1
+ ###############
2
+ accumulate
3
+ ###############
4
+
5
+ .. note::
6
+
7
+ The ``accumulate`` source was previously named ``accumulations``.
8
+ The API has changed in the following ways:
9
+
10
+ - The parameter ``accumulation_period`` has been renamed to ``period``.
11
+ - The source can be now different from ``mars`` (e.g., ``mars``, ``grib-index``)
12
+ it must now be explicitly specified as a nested dictionary under the ``source`` key.
13
+ - The (optional) available accumulation intervals can now be specified using the ``availability`` key.
14
+
15
+ Accumulations and flux variables, such as precipitation, are often
16
+ forecast fields, which are archived for a given base date (or reference
17
+ time) and a forecast time (or step). These fields are valid at the
18
+ forecast time and are accumulated over a given period of time, with the
19
+ relation: :math:`valid\_date = base\_date + step`.
20
+
21
+ Because the package builds datasets according to the valid date of the
22
+ fields, it must be able to reconstruct the requested accumulation period
23
+ from the available data in the source dataset. Furthermore, some fields
24
+ are accumulated since the beginning of the forecast (e.g. ECMWF
25
+ operational forecast), while others are accumulated since the last time
26
+ step (e.g. ERA5).
27
+
28
+ The ``accumulate`` source requires the following parameters:
29
+
30
+ - **period**: The requested accumulation period (e.g., ``6h``, ``12h``, ``24h``, ``1d``).
31
+ This can be specified as a string with units ``"6h"``.
32
+ Periods shorter than one hour such as ``"30min"`` are not supported yet.
33
+ - **source**: The data source configuration. Currently only ``mars`` and ``grib-index`` sources are supported.
34
+ - **availability**: Information about how accumulations are stored in
35
+ the data source. This allows the package to determine which intervals to use
36
+ for reconstructing the requested accumulation period (see below).
37
+ - **patch** (optional): Patches to apply to fields returned by the source to fix metadata issues.
38
+ Default patching is to set ``startStep`` to ``0`` when ``startStep==endStep``.
39
+
40
+ .. warning::
41
+
42
+ If the data provided by the source does not match the definition provided
43
+ in the ``availability`` parameter, the package will attempt to check the
44
+ metadata of the source dataset and fail if the accumulation periods cannot
45
+ be reconstructed.
46
+ Defining the period to use to reconstruct the request accumulation period and
47
+ checking the validity of the accumulation and relies on the metadata provided by the data source.
48
+ **If the metadata is incomplete or inconsistent, the package may produce incorrect results.**
49
+
50
+
51
+ Specifying the ``availability`` of accumulation intervals
52
+ =========================================================
53
+
54
+ Data accumulation methods differ between datasets. Two common methods are to
55
+ accumulate data either from the start of the forecast or from the previous time step.
56
+
57
+ - For ECMWF operational forecasts, the data is accumulated from the
58
+ beginning of the forecast. For example, if the accumulation period is
59
+ 6h and the valid date is 2020-01-01 00:00, the source will use the
60
+ forecast [1]_ of 2019-12-31 18:00 at step 6h.
61
+
62
+ - For ERA5, the data is accumulated since the last time step (hourly
63
+ accumulations), and forecasts are only available at 06Z and 18Z. For a
64
+ 6h accumulation with valid date 2020-01-01 13:00, the source will sum
65
+ the fields from the forecast of 2020-01-01 06:00 at steps 1-2h, 2-3h,
66
+ 3-4h, 4-5h, 5-6h, and 6-7h.
67
+
68
+ There are multiple ways to specify the ``availability`` parameter:
69
+
70
+ - `Option 1: Type-based availability`_
71
+ - `Option 2: Availability over fixed periods`_
72
+ - `Option 3: Automatic detection for well-known datasets`_
73
+ - `Option 4: Finer control using explicit list of interval`_
74
+
75
+
76
+ Option 1: Type-based availability
77
+ ---------------------------------
78
+
79
+ For more explicit control, use the **type** parameter with ``accumulated-from-start``
80
+ or ``accumulated-from-previous-step``, along with **basetime**, **frequency**, and **last_step**.
81
+
82
+ .. list-table::
83
+ :widths: 50 50
84
+ :header-rows: 1
85
+
86
+ * - ECMWF operational (accumulated from start)
87
+ - ERA5 (accumulated from previous step)
88
+ * - .. literalinclude:: yaml/accumulations-from-start-mars-ecmwf-operational-forecast-2.yaml
89
+ :language: yaml
90
+ - .. literalinclude:: yaml/accumulations-from-previous-step-mars-era5-2.yaml
91
+ :language: yaml
92
+
93
+ Option 2: Availability over fixed periods
94
+ -----------------------------------------
95
+
96
+ If the source provides data accumulated over a fixed period, such as
97
+ ``availability: "1h"`` for hourly accumulated data, ``"3h"`` for
98
+ 3-hourly accumulated data, etc.
99
+
100
+ This approach should be used when all accumulation intervals for the fixed period are available
101
+ for all base times.
102
+
103
+ Additionally, the period provided in ``availability`` must be compatible with the requested accumulation period,
104
+ i.e., it must be a divisor of the requested period in ``period``.
105
+
106
+ .. literalinclude:: yaml/accumulations-grib-index.yaml
107
+ :language: yaml
108
+
109
+ Option 3: Automatic detection for well-known datasets
110
+ -----------------------------------------------------
111
+
112
+ The simplest approach is to use ``availability: auto``. The package will try to
113
+ infer the availability from the ``mars`` source parameters (class, stream, origin).
114
+ Supported combinations are:
115
+
116
+ - ERA5 reanalysis (class ``ea``, stream ``oper``)
117
+ - ERA5 ensemble data assimilation (class ``ea``, stream ``enda``)
118
+ - ECMWF operational forecasts (class ``od``, stream ``oper``)
119
+ - ECMWF operational ensemble data assimilation (class ``od``, stream ``elda``)
120
+ - Regional reanalysis (class ``rr``, stream ``oper``, origin ``se-al-ec``).
121
+ - ERA5-Land (class ``l5``, stream ``oper``)
122
+
123
+ Automatic detection is not supported for the ``grib-index`` source.
124
+
125
+ .. list-table::
126
+ :widths: 50 50
127
+ :header-rows: 1
128
+
129
+ * - ECMWF operational (accumulated from start)
130
+ - ERA5 (accumulated from previous step)
131
+ * - .. literalinclude:: yaml/accumulations-from-start-mars-ecmwf-operational-forecast-1.yaml
132
+ :language: yaml
133
+ - .. literalinclude:: yaml/accumulations-from-previous-step-mars-era5-1.yaml
134
+ :language: yaml
135
+
136
+
137
+ Option 4: Finer control using explicit list of interval
138
+ -------------------------------------------------------
139
+
140
+ For full control, provide an explicit list of ``(basetime, steps)`` pairs.
141
+
142
+ .. list-table::
143
+ :widths: 50 50
144
+ :header-rows: 1
145
+
146
+ * - ECMWF operational (accumulated from start)
147
+ - ERA5 (accumulated from previous step)
148
+ * - .. literalinclude:: yaml/accumulations-from-start-mars-ecmwf-operational-forecast-3.yaml
149
+ :language: yaml
150
+ - .. literalinclude:: yaml/accumulations-from-previous-step-mars-era5-3.yaml
151
+ :language: yaml
152
+
153
+ These two examples are equivalent to those shown in Option 1 above.
154
+
155
+ .. [1]
156
+
157
+ For ECMWF forecasts, the forecasts at 00Z and 12Z are from the stream
158
+ ``oper`` while the forecasts at 06Z and 18Z are from the stream ``scda``.
@@ -0,0 +1,12 @@
1
+ accumulate:
2
+ period: 6h
3
+ availability: auto
4
+ source:
5
+ mars:
6
+ expver: "0001"
7
+ class: ea
8
+ stream: oper
9
+ type: fc
10
+ grid: 20./20.
11
+ levtype: sfc
12
+ param: [tp, cp]
@@ -0,0 +1,16 @@
1
+ accumulate:
2
+ period: 6h
3
+ availability:
4
+ type: accumulated-from-previous-step
5
+ basetime: [6, 18]
6
+ frequency: 1h
7
+ last_step: 18
8
+ source:
9
+ mars:
10
+ expver: "0001"
11
+ class: ea
12
+ stream: oper
13
+ type: fc
14
+ grid: 20./20.
15
+ levtype: sfc
16
+ param: [tp, cp]
@@ -0,0 +1,14 @@
1
+ accumulate:
2
+ period: 6h
3
+ availability:
4
+ - [6, "0-1/1-2/2-3/3-4/4-5/5-6/6-7/7-8/8-9/9-10/10-11/11-12/12-13/13-14/14-15/15-16/16-17/17-18"]
5
+ - [18, "0-1/1-2/2-3/3-4/4-5/5-6/6-7/7-8/8-9/9-10/10-11/11-12/12-13/13-14/14-15/15-16/16-17/17-18"]
6
+ source:
7
+ mars:
8
+ expver: "0001"
9
+ class: ea
10
+ stream: oper
11
+ type: fc
12
+ grid: 20./20.
13
+ levtype: sfc
14
+ param: [tp, cp]
@@ -0,0 +1,12 @@
1
+ accumulate:
2
+ period: 6h
3
+ availability: auto
4
+ source:
5
+ mars:
6
+ expver: "0001"
7
+ class: od
8
+ stream: oper
9
+ type: fc
10
+ grid: 20./20.
11
+ levtype: sfc
12
+ param: [tp, cp]
@@ -0,0 +1,16 @@
1
+ accumulate:
2
+ period: 6h
3
+ availability:
4
+ type: accumulated-from-start
5
+ basetime: [0, 12]
6
+ frequency: 6h
7
+ last_step: 18
8
+ source:
9
+ mars:
10
+ expver: "0001"
11
+ class: od
12
+ stream: oper
13
+ type: fc
14
+ grid: 20./20.
15
+ levtype: sfc
16
+ param: [tp, cp]
@@ -0,0 +1,14 @@
1
+ accumulate:
2
+ period: 6h
3
+ availability:
4
+ - [0, "0-6/0-12/0-18"]
5
+ - [12, "0-6/0-12/0-18"]
6
+ source:
7
+ mars:
8
+ expver: "0001"
9
+ class: od
10
+ stream: oper
11
+ type: fc
12
+ grid: 20./20.
13
+ levtype: sfc
14
+ param: [tp, cp]
@@ -0,0 +1,7 @@
1
+ accumulate:
2
+ period: 6h
3
+ availability: 1h
4
+ grib-index:
5
+ index-db: /path/to/grib/index.db
6
+ param: [ tp, cp, sf ]
7
+ levtype: sfc
@@ -19,7 +19,7 @@ The following `sources` are currently available:
19
19
  .. toctree::
20
20
  :maxdepth: 1
21
21
 
22
- sources/accumulations
22
+ sources/accumulate
23
23
  sources/anemoi-dataset
24
24
  sources/cds
25
25
  sources/eccc-fstd
@@ -92,14 +92,15 @@ after that, the parameters are the same as for the `grib` source.
92
92
  Selecting GRIB messages
93
93
  *************************
94
94
 
95
- You can select GRIB messages using the MARS language. For example, to
96
- select all the GRIB messages with a specific parameter, you can use the
97
- ``param`` keyword. For example, to select all the GRIB messages with the
98
- parameters ``2t``, ``10u`` and ``10v``, you can use the following:
95
+ You can select GRIB messages using the MARS language and eccodes_ keys.
96
+ For example, to select all the GRIB messages with a specific parameter,
97
+ you can use the ``param`` keyword. For example, to select all the GRIB
98
+ messages with the parameters ``2t``, ``10u`` and ``10v``, you can use
99
+ the following:
99
100
 
100
101
  .. literalinclude:: yaml/grib-recipe4.yaml
101
102
 
102
- It is recommended to have several sources to differentiate between
103
+ It is recommended to join several sources to differentiate between
103
104
  single-level and multi-level fields.
104
105
 
105
106
  .. literalinclude:: yaml/grib-recipe5.yaml
@@ -110,6 +111,20 @@ single-level and multi-level fields.
110
111
  using an index, the keys must be present in the index file, and
111
112
  should have been provided at index creation time.
112
113
 
114
+ For example, to select variables by their non-integer ``topLevel``
115
+ value, ``topLevel:d`` can be used. This instructs eccodes_ to retrieve
116
+ ``topLevel`` as a double instead of the default integer type.
117
+
118
+ The ``build.variable_naming`` option or the ``rename`` filter (see
119
+ :ref:`anemoi-transform <anemoi-transform:list-of-filters>`) can be used
120
+ to include the exact ``topLevel`` value in the anemoi-dataset variable
121
+ name. (Be cautious with exact matching of float values when using
122
+ ``:d``.)
123
+
124
+ .. literalinclude:: yaml/grib-recipe6.yaml
125
+
126
+ .. literalinclude:: yaml/grib-recipe7.yaml
127
+
113
128
  .. _grib_flavour:
114
129
 
115
130
  *******************