anemoi-datasets 0.5.26__tar.gz → 0.5.28__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 (413) hide show
  1. anemoi_datasets-0.5.28/.github/workflows/pr-label-ats.yml +66 -0
  2. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/.github/workflows/python-pull-request.yml +1 -1
  3. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/.gitignore +10 -0
  4. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/.pre-commit-config.yaml +7 -6
  5. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/.readthedocs.yaml +3 -3
  6. anemoi_datasets-0.5.28/.release-please-manifest.json +3 -0
  7. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/CHANGELOG.md +53 -0
  8. {anemoi_datasets-0.5.26/src/anemoi_datasets.egg-info → anemoi_datasets-0.5.28}/PKG-INFO +7 -4
  9. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/Makefile +1 -1
  10. anemoi_datasets-0.5.28/docs/building/filters.rst +10 -0
  11. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/introduction.rst +1 -1
  12. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/repeated-dates.rst +1 -1
  13. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/cli/create.rst +1 -1
  14. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/cli/grib-index.rst +1 -1
  15. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/cli/inspect.rst +1 -1
  16. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/cli/introduction.rst +4 -3
  17. anemoi_datasets-0.5.28/docs/cli/validate.rst +45 -0
  18. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/conf.py +2 -2
  19. anemoi_datasets-0.5.26/docs/usage/getting_started.rst → anemoi_datasets-0.5.28/docs/howtos/create/00-redo-sample-dataset.rst +4 -4
  20. anemoi_datasets-0.5.28/docs/howtos/create/04-create-with-filter.rst +117 -0
  21. anemoi_datasets-0.5.28/docs/howtos/create/yaml/recipe-filter1.yaml +31 -0
  22. anemoi_datasets-0.5.28/docs/howtos/create/yaml/recipe-filter2.yaml +35 -0
  23. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/howtos/introduction.rst +2 -1
  24. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/index.rst +5 -17
  25. anemoi_datasets-0.5.28/docs/installing.rst +18 -0
  26. anemoi_datasets-0.5.28/docs/modules/dataset.rst +8 -0
  27. anemoi_datasets-0.5.28/docs/scripts/Makefile +8 -0
  28. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/scripts/api_build.sh +1 -1
  29. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/using/combining.rst +9 -9
  30. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/using/grids.rst +3 -3
  31. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/using/missing.rst +1 -1
  32. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/using/opening.rst +1 -1
  33. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/pyproject.toml +8 -4
  34. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/__init__.py +1 -2
  35. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/_version.py +16 -3
  36. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/check.py +1 -1
  37. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/copy.py +1 -2
  38. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/create.py +1 -1
  39. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/inspect.py +27 -35
  40. anemoi_datasets-0.5.28/src/anemoi/datasets/commands/recipe/__init__.py +93 -0
  41. anemoi_datasets-0.5.28/src/anemoi/datasets/commands/recipe/format.py +55 -0
  42. anemoi_datasets-0.5.28/src/anemoi/datasets/commands/recipe/migrate.py +555 -0
  43. anemoi_datasets-0.5.28/src/anemoi/datasets/commands/validate.py +59 -0
  44. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/compute/recentre.py +3 -6
  45. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/__init__.py +64 -26
  46. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/check.py +10 -12
  47. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/chunks.py +1 -2
  48. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/config.py +5 -6
  49. anemoi_datasets-0.5.28/src/anemoi/datasets/create/input/__init__.py +85 -0
  50. anemoi_datasets-0.5.28/src/anemoi/datasets/create/input/action.py +317 -0
  51. anemoi_datasets-0.5.28/src/anemoi/datasets/create/input/context/__init__.py +71 -0
  52. anemoi_datasets-0.5.28/src/anemoi/datasets/create/input/context/field.py +54 -0
  53. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/input/data_sources.py +7 -9
  54. anemoi_datasets-0.5.28/src/anemoi/datasets/create/input/misc.py +57 -0
  55. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/input/repeated_dates.py +11 -130
  56. {anemoi_datasets-0.5.26/src/anemoi/datasets/utils → anemoi_datasets-0.5.28/src/anemoi/datasets/create/input/result}/__init__.py +10 -1
  57. anemoi_datasets-0.5.26/src/anemoi/datasets/create/input/result.py → anemoi_datasets-0.5.28/src/anemoi/datasets/create/input/result/field.py +36 -120
  58. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/input/trace.py +1 -1
  59. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/patch.py +1 -2
  60. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/persistent.py +3 -5
  61. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/size.py +1 -3
  62. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/accumulations.py +120 -145
  63. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/accumulations2.py +20 -53
  64. anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/anemoi_dataset.py +77 -0
  65. anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/constants.py +52 -0
  66. anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/empty.py +40 -0
  67. anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/fdb.py +133 -0
  68. anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/forcings.py +42 -0
  69. anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/grib.py +166 -0
  70. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/grib_index.py +57 -55
  71. anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/hindcasts.py +94 -0
  72. anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/legacy.py +46 -0
  73. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/mars.py +121 -149
  74. anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/netcdf.py +45 -0
  75. anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/opendap.py +45 -0
  76. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/patterns.py +4 -6
  77. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/recentre.py +46 -48
  78. anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/repeated_dates.py +44 -0
  79. anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/source.py +47 -0
  80. anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/tendencies.py +171 -0
  81. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/xarray.py +4 -6
  82. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/xarray_support/__init__.py +40 -36
  83. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/xarray_support/coordinates.py +8 -12
  84. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/xarray_support/field.py +20 -16
  85. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/xarray_support/fieldlist.py +11 -15
  86. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/xarray_support/flavour.py +42 -42
  87. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/xarray_support/grid.py +15 -9
  88. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/xarray_support/metadata.py +19 -128
  89. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/xarray_support/patch.py +4 -6
  90. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/xarray_support/time.py +10 -13
  91. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/xarray_support/variable.py +21 -21
  92. anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/xarray_zarr.py +44 -0
  93. anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/zenodo.py +71 -0
  94. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/statistics/__init__.py +3 -6
  95. anemoi_datasets-0.5.28/src/anemoi/datasets/create/testing.py +4 -0
  96. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/typing.py +1 -2
  97. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/utils.py +0 -43
  98. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/zarr.py +7 -2
  99. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/__init__.py +15 -6
  100. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/complement.py +7 -12
  101. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/concat.py +5 -8
  102. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/dataset.py +48 -47
  103. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/debug.py +7 -9
  104. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/ensemble.py +4 -6
  105. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/fill_missing.py +7 -10
  106. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/forwards.py +22 -26
  107. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/grids.py +12 -168
  108. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/indexing.py +9 -12
  109. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/interpolate.py +7 -15
  110. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/join.py +8 -12
  111. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/masked.py +6 -11
  112. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/merge.py +5 -9
  113. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/misc.py +41 -45
  114. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/missing.py +11 -16
  115. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/observations/__init__.py +8 -14
  116. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/padded.py +3 -5
  117. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/records/backends/__init__.py +2 -2
  118. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/rescale.py +5 -12
  119. anemoi_datasets-0.5.28/src/anemoi/datasets/data/rolling_average.py +141 -0
  120. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/select.py +13 -16
  121. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/statistics.py +4 -7
  122. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/stores.py +22 -29
  123. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/subset.py +8 -11
  124. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/unchecked.py +7 -11
  125. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/xy.py +25 -21
  126. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/dates/__init__.py +15 -18
  127. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/dates/groups.py +7 -10
  128. anemoi_datasets-0.5.28/src/anemoi/datasets/dumper.py +76 -0
  129. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/grids.py +4 -185
  130. anemoi_datasets-0.5.28/src/anemoi/datasets/schemas/recipe.json +131 -0
  131. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/testing.py +93 -7
  132. anemoi_datasets-0.5.28/src/anemoi/datasets/validate.py +598 -0
  133. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28/src/anemoi_datasets.egg-info}/PKG-INFO +7 -4
  134. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi_datasets.egg-info/SOURCES.txt +117 -110
  135. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi_datasets.egg-info/requires.txt +5 -1
  136. anemoi_datasets-0.5.28/tests/create/run.sh +22 -0
  137. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tests/create/test_create.py +18 -2
  138. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tests/create/test_sources.py +1 -2
  139. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tests/create/utils/compare.py +9 -0
  140. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tests/create/utils/create.py +4 -8
  141. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tests/test_data.py +52 -81
  142. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tests/test_data_gridded.py +9 -12
  143. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tests/test_dates.py +1 -2
  144. anemoi_datasets-0.5.28/tests/test_validate.py +234 -0
  145. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tests/xarray/test_flavour.py +1 -0
  146. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tests/xarray/test_opendap.py +2 -2
  147. anemoi_datasets-0.5.28/tests/xarray/test_variable.py +83 -0
  148. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tests/xarray/test_zarr.py +6 -1
  149. anemoi_datasets-0.5.26/.release-please-manifest.json +0 -3
  150. anemoi_datasets-0.5.26/03-constant-fields.rst +0 -3
  151. anemoi_datasets-0.5.26/docs/datasets/introduction.rst +0 -21
  152. anemoi_datasets-0.5.26/docs/installing.rst +0 -85
  153. anemoi_datasets-0.5.26/docs/modules/dataset.rst +0 -10
  154. anemoi_datasets-0.5.26/docs/modules/filters.rst +0 -5
  155. anemoi_datasets-0.5.26/docs/modules/sources.rst +0 -5
  156. anemoi_datasets-0.5.26/src/anemoi/datasets/create/filter.py +0 -48
  157. anemoi_datasets-0.5.26/src/anemoi/datasets/create/input/__init__.py +0 -106
  158. anemoi_datasets-0.5.26/src/anemoi/datasets/create/input/action.py +0 -259
  159. anemoi_datasets-0.5.26/src/anemoi/datasets/create/input/concat.py +0 -164
  160. anemoi_datasets-0.5.26/src/anemoi/datasets/create/input/context.py +0 -89
  161. anemoi_datasets-0.5.26/src/anemoi/datasets/create/input/empty.py +0 -54
  162. anemoi_datasets-0.5.26/src/anemoi/datasets/create/input/filter.py +0 -118
  163. anemoi_datasets-0.5.26/src/anemoi/datasets/create/input/function.py +0 -233
  164. anemoi_datasets-0.5.26/src/anemoi/datasets/create/input/join.py +0 -130
  165. anemoi_datasets-0.5.26/src/anemoi/datasets/create/input/misc.py +0 -130
  166. anemoi_datasets-0.5.26/src/anemoi/datasets/create/input/pipe.py +0 -66
  167. anemoi_datasets-0.5.26/src/anemoi/datasets/create/input/step.py +0 -177
  168. anemoi_datasets-0.5.26/src/anemoi/datasets/create/input/template.py +0 -162
  169. anemoi_datasets-0.5.26/src/anemoi/datasets/create/sources/anemoi_dataset.py +0 -73
  170. anemoi_datasets-0.5.26/src/anemoi/datasets/create/sources/constants.py +0 -53
  171. anemoi_datasets-0.5.26/src/anemoi/datasets/create/sources/empty.py +0 -37
  172. anemoi_datasets-0.5.26/src/anemoi/datasets/create/sources/forcings.py +0 -42
  173. anemoi_datasets-0.5.26/src/anemoi/datasets/create/sources/grib.py +0 -150
  174. anemoi_datasets-0.5.26/src/anemoi/datasets/create/sources/hindcasts.py +0 -96
  175. anemoi_datasets-0.5.26/src/anemoi/datasets/create/sources/legacy.py +0 -98
  176. anemoi_datasets-0.5.26/src/anemoi/datasets/create/sources/netcdf.py +0 -42
  177. anemoi_datasets-0.5.26/src/anemoi/datasets/create/sources/opendap.py +0 -43
  178. anemoi_datasets-0.5.26/src/anemoi/datasets/create/sources/source.py +0 -72
  179. anemoi_datasets-0.5.26/src/anemoi/datasets/create/sources/tendencies.py +0 -201
  180. anemoi_datasets-0.5.26/src/anemoi/datasets/create/sources/xarray_zarr.py +0 -41
  181. anemoi_datasets-0.5.26/src/anemoi/datasets/create/sources/zenodo.py +0 -69
  182. anemoi_datasets-0.5.26/tests/create/run.sh +0 -20
  183. anemoi_datasets-0.5.26/tests/xarray/test_samples.py +0 -88
  184. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/.gitattributes +0 -0
  185. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/.github/CODEOWNERS +0 -0
  186. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  187. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/.github/ci-hpc-config.yml +0 -0
  188. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/.github/dependabot.yml +0 -0
  189. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/.github/labeler.yml +0 -0
  190. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/.github/pull_request_template.md +0 -0
  191. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/.github/workflows/downstream-ci-hpc.yml +0 -0
  192. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/.github/workflows/pr-conventional-commit.yml +0 -0
  193. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/.github/workflows/pr-label-conventional-commits.yml +0 -0
  194. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/.github/workflows/pr-label-file-based.yml +0 -0
  195. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/.github/workflows/pr-label-public.yml +0 -0
  196. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/.github/workflows/push-to-private.yml +0 -0
  197. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/.github/workflows/python-publish.yml +0 -0
  198. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/.github/workflows/readthedocs-pr-update.yml +0 -0
  199. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/.github/workflows/release-please.yml +0 -0
  200. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/.release-please-config.json +0 -0
  201. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/.vscode/spellright.dict +0 -0
  202. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/CONTRIBUTORS.md +0 -0
  203. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/LICENSE +0 -0
  204. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/README.md +0 -0
  205. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/_static/2t_map_example.png +0 -0
  206. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/_static/area-1.png +0 -0
  207. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/_static/concat.png +0 -0
  208. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/_static/cutout-1.png +0 -0
  209. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/_static/cutout-2.png +0 -0
  210. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/_static/cutout-3.png +0 -0
  211. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/_static/cutout-4.png +0 -0
  212. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/_static/cutout-5.png +0 -0
  213. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/_static/cutout-6.png +0 -0
  214. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/_static/join.png +0 -0
  215. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/_static/logo.png +0 -0
  216. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/_static/overlay.png +0 -0
  217. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/_static/schemas/matrix.excalidraw +0 -0
  218. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/_static/schemas/matrix.png +0 -0
  219. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/_static/schemas/overview.excalidraw +0 -0
  220. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/_static/schemas/overview.png +0 -0
  221. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/_static/schemas/recipe.excalidraw +0 -0
  222. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/_static/schemas/recipe.png +0 -0
  223. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/_static/skip-missing.png +0 -0
  224. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/_static/style.css +0 -0
  225. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/_static/thinning-after.png +0 -0
  226. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/_static/thinning-before.png +0 -0
  227. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/_templates/.gitkeep +0 -0
  228. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/_templates/apidoc/package.rst.jinja +0 -0
  229. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/adr/adr-1.md +0 -0
  230. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/apply-fmt.sh +0 -0
  231. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/advanced-options.rst +0 -0
  232. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/handling-missing-dates.rst +0 -0
  233. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/handling-missing-values.rst +0 -0
  234. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/incremental.rst +0 -0
  235. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/naming-conventions.rst +0 -0
  236. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/naming-variables.rst +0 -0
  237. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/operations.rst +0 -0
  238. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/accumulations.rst +0 -0
  239. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/anemoi-dataset.rst +0 -0
  240. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/cds.rst +0 -0
  241. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/eccc-fstd.rst +0 -0
  242. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/forcings.rst +0 -0
  243. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/grib-index.rst +0 -0
  244. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/grib.rst +0 -0
  245. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/hindcasts.rst +0 -0
  246. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/mars.rst +0 -0
  247. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/netcdf.rst +0 -0
  248. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/opendap.rst +0 -0
  249. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/recentre.rst +0 -0
  250. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/xarray-based.rst +0 -0
  251. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/xarray-kerchunk.py +0 -0
  252. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/xarray-kerchunk.rst +0 -0
  253. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/xarray-zarr.rst +0 -0
  254. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/accumulations1.yaml +0 -0
  255. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/accumulations2.yaml +0 -0
  256. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/anemoi-dataset.yaml +0 -0
  257. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/anemoi-zarr-dataset.yaml +0 -0
  258. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/eccc-fstd.yaml +0 -0
  259. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/forcings.yaml +0 -0
  260. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/grib1.yaml +0 -0
  261. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/grib2.yaml +0 -0
  262. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/grib3.yaml +0 -0
  263. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/grib4.yaml +0 -0
  264. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/hindcasts.yaml +0 -0
  265. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/mars-cds.yaml +0 -0
  266. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/mars1.yaml +0 -0
  267. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/mars2.yaml +0 -0
  268. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/netcdf.yaml +0 -0
  269. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/opendap.yaml +0 -0
  270. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/recentre.yaml +0 -0
  271. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/repeated-dates1.yaml +0 -0
  272. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/repeated-dates2.yaml +0 -0
  273. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/repeated-dates3.yaml +0 -0
  274. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/repeated-dates4.yaml +0 -0
  275. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/xarray-based.yaml +0 -0
  276. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/xarray-kerchunk.yaml +0 -0
  277. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/xarray-zarr.yaml +0 -0
  278. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/zenodo.yaml +0 -0
  279. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/zenodo.rst +0 -0
  280. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources.rst +0 -0
  281. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/statistics.rst +0 -0
  282. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/building/syntax.yaml +0 -0
  283. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/check-index.sh +0 -0
  284. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/cli/compare-lam.rst +0 -0
  285. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/cli/compare.rst +0 -0
  286. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/cli/copy.rst +0 -0
  287. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/cli/patch.rst +0 -0
  288. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/cli/scan.rst +0 -0
  289. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/dev/contributing.rst +0 -0
  290. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/howtos/create/01-grib-data.rst +0 -0
  291. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/howtos/create/02-cf-data.rst +0 -0
  292. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/howtos/create/03-constant-fields.rst +0 -0
  293. {anemoi_datasets-0.5.26/docs/usage → anemoi_datasets-0.5.28/docs/howtos/create}/yaml/aifs-ea-an-oper-0001-mars-o48-2020-2021-6h-v1.yaml +0 -0
  294. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/grib-flavour1.yaml +0 -0
  295. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/grib-flavour2.yaml +0 -0
  296. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/grib-flavour3.yaml +0 -0
  297. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/grib-flavour4.yaml +0 -0
  298. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/grib-recipe1.yaml +0 -0
  299. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/grib-recipe2.yaml +0 -0
  300. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/grib-recipe3.yaml +0 -0
  301. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/grib-recipe4.yaml +0 -0
  302. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/grib-recipe5.yaml +0 -0
  303. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/netcdf1.yaml +0 -0
  304. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/opendap1.yaml +0 -0
  305. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/xarray-flavour1.yaml +0 -0
  306. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/xarray-patch1.yaml +0 -0
  307. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/xarray-patch2.yaml +0 -0
  308. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/zarr1.yaml +0 -0
  309. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/zarr2.yaml +0 -0
  310. {anemoi_datasets-0.5.26/docs/howtos/usage → anemoi_datasets-0.5.28/docs/howtos/using}/01-interpolate-step-dataset-combination.rst +0 -0
  311. {anemoi_datasets-0.5.26/docs/howtos/usage → anemoi_datasets-0.5.28/docs/howtos/using}/02-coutout-complement-combination.rst +0 -0
  312. {anemoi_datasets-0.5.26/docs/howtos/usage → anemoi_datasets-0.5.28/docs/howtos/using}/code/cutout-complement1.py +0 -0
  313. {anemoi_datasets-0.5.26/docs/howtos/usage → anemoi_datasets-0.5.28/docs/howtos/using}/code/interpolate1.py +0 -0
  314. {anemoi_datasets-0.5.26/docs/howtos/usage → anemoi_datasets-0.5.28/docs/howtos/using}/code/interpolate2.py +0 -0
  315. {anemoi_datasets-0.5.26/docs/howtos/usage → anemoi_datasets-0.5.28/docs/howtos/using}/yaml/cutout-complement1.yaml +0 -0
  316. {anemoi_datasets-0.5.26/docs/howtos/usage → anemoi_datasets-0.5.28/docs/howtos/using}/yaml/interpolate1.yaml +0 -0
  317. {anemoi_datasets-0.5.26/docs/howtos/usage → anemoi_datasets-0.5.28/docs/howtos/using}/yaml/interpolate2.yaml +0 -0
  318. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/overview.rst +0 -0
  319. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/pptx/images.pptx +0 -0
  320. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/docs/using/code/trimedge1_.py +0 -0
  321. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/using/configuration.rst +0 -0
  322. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/using/configuration.toml +0 -0
  323. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/using/ensembles.rst +0 -0
  324. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/using/introduction.rst +0 -0
  325. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/using/matching.rst +0 -0
  326. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/using/methods.rst +0 -0
  327. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/using/miscellaneous.rst +0 -0
  328. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/using/other.rst +0 -0
  329. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/using/selecting.rst +0 -0
  330. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/using/statistics.rst +0 -0
  331. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/using/subsetting.rst +0 -0
  332. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/using/zip.rst +0 -0
  333. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/yaml/Makefile +0 -0
  334. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/yaml/building1.txt +0 -0
  335. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/yaml/building1.yaml +0 -0
  336. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/yaml/building2.txt +0 -0
  337. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/yaml/building2.yaml +0 -0
  338. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/yaml/building3.txt +0 -0
  339. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/yaml/building3.yaml +0 -0
  340. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/yaml/concat.yaml +0 -0
  341. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/yaml/hindcasts.yaml +0 -0
  342. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/yaml/input.yaml +0 -0
  343. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/yaml/missing_dates.yaml +0 -0
  344. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/yaml/nan.yaml +0 -0
  345. {anemoi_datasets-0.5.26/docs/datasets → anemoi_datasets-0.5.28/docs}/yaml/pipe.yaml +0 -0
  346. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/setup.cfg +0 -0
  347. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/__main__.py +0 -0
  348. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/check.py +0 -0
  349. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/__init__.py +0 -0
  350. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/cleanup.py +0 -0
  351. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/compare-lam.py +0 -0
  352. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/compare.py +0 -0
  353. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/finalise-additions.py +0 -0
  354. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/finalise.py +0 -0
  355. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/grib-index.py +0 -0
  356. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/init-additions.py +0 -0
  357. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/init.py +0 -0
  358. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/load-additions.py +0 -0
  359. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/load.py +0 -0
  360. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/patch.py +0 -0
  361. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/publish.py +0 -0
  362. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/scan.py +0 -0
  363. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/compute/__init__.py +0 -0
  364. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/source.py +0 -0
  365. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/__init__.py +0 -0
  366. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/eccc_fstd.py +0 -0
  367. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/planetary_computer.py +0 -0
  368. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/xarray_kerchunk.py +0 -0
  369. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/xarray_support/README.md +0 -0
  370. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/statistics/summary.py +0 -0
  371. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/writer.py +0 -0
  372. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/debug.css +0 -0
  373. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/observations/legacy_obs_dataset.py +0 -0
  374. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/observations/multi.py +0 -0
  375. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/records/__init__.py +0 -0
  376. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi_datasets.egg-info/dependency_links.txt +0 -0
  377. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi_datasets.egg-info/entry_points.txt +0 -0
  378. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/src/anemoi_datasets.egg-info/top_level.txt +0 -0
  379. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tests/conftest.py +0 -0
  380. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tests/create/__init__.py +0 -0
  381. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tests/create/accumulation.yaml +0 -0
  382. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tests/create/concat.yaml +0 -0
  383. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tests/create/join.yaml +0 -0
  384. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tests/create/missing.yaml +0 -0
  385. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tests/create/nan.yaml +0 -0
  386. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tests/create/pipe.yaml +0 -0
  387. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tests/create/recentre.yaml +0 -0
  388. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tests/create/regrid.yaml +0 -0
  389. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tests/create/utils/__init__.py +0 -0
  390. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tests/create/utils/mock_sources.py +0 -0
  391. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tests/create-perturbations-full.yaml +0 -0
  392. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tests/create-shift.yaml +0 -0
  393. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tests/test_chunks.py +0 -0
  394. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tests/test_indexing.py +0 -0
  395. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tests/test_records.py +0 -0
  396. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tests/xarray/test_netcdf.py +0 -0
  397. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tools/.gitignore +0 -0
  398. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tools/build-obs.py +0 -0
  399. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tools/check-obs.py +0 -0
  400. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tools/examples/Makefile +0 -0
  401. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tools/examples/an-oper-2023-2023-2p5-6h-v1.yaml +0 -0
  402. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tools/grids/Makefile +0 -0
  403. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tools/grids/grids.ipynb +0 -0
  404. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tools/grids/grids1.yaml +0 -0
  405. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tools/grids/grids2.yaml +0 -0
  406. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tools/grids/grids3.yaml +0 -0
  407. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tools/grids/grids4.yaml +0 -0
  408. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tools/grids/grids5.yaml +0 -0
  409. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tools/grids/grids6.yaml +0 -0
  410. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tools/grids/grids7.yaml +0 -0
  411. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tools/grids/grids_multilam.ipynb +0 -0
  412. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tools/make-sample-dataset.py +0 -0
  413. {anemoi_datasets-0.5.26 → anemoi_datasets-0.5.28}/tools/upload-sample-dataset.py +0 -0
@@ -0,0 +1,66 @@
1
+ # This workflow checks that the appropriate ATS labels are applied to a pull request:
2
+ # - "ATS Approval Not Needed": pass
3
+ # - "ATS Approved": pass
4
+ # - "ATS Approval Needed": fail
5
+ # - Missing ATS label: fail
6
+
7
+ name: "[PR] ATS labels"
8
+
9
+ on:
10
+ pull_request:
11
+ types:
12
+ - opened
13
+ - edited
14
+ - reopened
15
+ - labeled
16
+ - unlabeled
17
+ - synchronize
18
+
19
+ permissions:
20
+ pull-requests: read
21
+
22
+ jobs:
23
+ check:
24
+ runs-on: ubuntu-latest
25
+ steps:
26
+ - name: Get PR details
27
+ uses: actions/github-script@v7
28
+ id: check-pr
29
+ with:
30
+ script: |
31
+ const pr = await github.rest.pulls.get({
32
+ owner: context.repo.owner,
33
+ repo: context.repo.repo,
34
+ pull_number: context.payload.pull_request.number,
35
+ });
36
+ const labels = pr.data.labels.map(label => label.name);
37
+ core.setOutput('labels', JSON.stringify(labels));
38
+ core.setOutput('author', context.payload.pull_request.user.login);
39
+
40
+ - name: Evaluate ATS labels
41
+ run: |
42
+ AUTHOR='${{ steps.check-pr.outputs.author }}'
43
+ if [ "$AUTHOR" == "DeployDuck" ] || [ "$AUTHOR" == "pre-commit-ci[bot]" ]; then
44
+ echo "Bot PR, skipping."
45
+ exit 0
46
+ fi
47
+ LABELS=$(echo '${{ steps.check-pr.outputs.labels }}' | jq -r '.[]')
48
+ echo "Labels found:"
49
+ echo -e "$LABELS\n"
50
+ echo "Result:"
51
+ if echo "$LABELS" | grep -qi "ATS approval not needed"; then
52
+ echo "ATS approval not needed. Passing."
53
+ EXIT_CODE=0
54
+ elif echo "$LABELS" | grep -qi "ATS approved"; then
55
+ echo "ATS Approved. Passing."
56
+ EXIT_CODE=0
57
+ elif echo "$LABELS" | grep -qi "ATS approval needed"; then
58
+ echo "ATS Approval Needed. Failing."
59
+ EXIT_CODE=1
60
+ else
61
+ echo "No ATS approval labels found. Please assign the appropriate ATS label. Failing."
62
+ EXIT_CODE=1
63
+ fi
64
+ echo -e "\nFor more information on ATS labels, see:"
65
+ echo "https://anemoi.readthedocs.io/en/latest/contributing/guidelines.html#labelling-guidelines"
66
+ exit $EXIT_CODE
@@ -19,7 +19,7 @@ jobs:
19
19
  checks:
20
20
  strategy:
21
21
  matrix:
22
- python-version: ["3.9", "3.10", "3.11", "3.12"]
22
+ python-version: ["3.10", "3.11", "3.12"]
23
23
  uses: ecmwf/reusable-workflows/.github/workflows/qa-pytest-pyproject.yml@v2
24
24
  with:
25
25
  python-version: ${{ matrix.python-version }}
@@ -141,3 +141,13 @@ _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
+ trace.txt
150
+ ?/
151
+ *.prof
152
+ prof/
153
+ *.gz
@@ -10,7 +10,7 @@ repos:
10
10
  entry: jupyter nbconvert --ClearOutputPreprocessor.enabled=True --inplace
11
11
  additional_dependencies: [jupyter]
12
12
  - repo: https://github.com/pre-commit/pre-commit-hooks
13
- rev: v5.0.0
13
+ rev: v6.0.0
14
14
  hooks:
15
15
  - id: check-yaml # Check YAML files for syntax errors only
16
16
  args: [--unsafe, --allow-multiple-documents]
@@ -27,12 +27,12 @@ repos:
27
27
  - id: python-check-blanket-noqa # Check for # noqa: all
28
28
  - id: python-no-log-warn # Check for log.warn
29
29
  - repo: https://github.com/psf/black-pre-commit-mirror
30
- rev: 25.1.0
30
+ rev: 25.9.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.0.1
35
+ rev: 6.1.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.11.12
44
+ rev: v0.13.3
45
45
  hooks:
46
46
  - id: ruff
47
47
  args:
@@ -65,11 +65,11 @@ repos:
65
65
  - id: docconvert
66
66
  args: ["numpy"]
67
67
  - repo: https://github.com/tox-dev/pyproject-fmt
68
- rev: "v2.6.0"
68
+ rev: "v2.7.0"
69
69
  hooks:
70
70
  - id: pyproject-fmt
71
71
  - repo: https://github.com/jshwi/docsig # Check docstrings against function sig
72
- rev: v0.69.3
72
+ rev: v0.71.0
73
73
  hooks:
74
74
  - id: docsig
75
75
  args:
@@ -79,6 +79,7 @@ repos:
79
79
  - --check-protected # Check protected methods
80
80
  - --check-class # Check class docstrings
81
81
  - --disable=SIG101,SIG102 # Disable empty docstrings
82
+
82
83
  ci:
83
84
  autoupdate_schedule: monthly
84
85
  autoupdate_commit_msg: "chore(deps): pre-commit.ci autoupdate"
@@ -4,9 +4,9 @@ build:
4
4
  os: ubuntu-22.04
5
5
  tools:
6
6
  python: "3.11"
7
- # jobs:
8
- # pre_build:
9
- # - bash docs/scripts/api_build.sh
7
+ jobs:
8
+ pre_build:
9
+ - (cd docs/scripts && make rst)
10
10
 
11
11
  sphinx:
12
12
  configuration: docs/conf.py
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.5.28"
3
+ }
@@ -8,6 +8,59 @@ 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.28](https://github.com/ecmwf/anemoi-datasets/compare/0.5.27...0.5.28) (2025-10-30)
12
+
13
+
14
+ ### Features
15
+
16
+ * Added rolling average on read ([#448](https://github.com/ecmwf/anemoi-datasets/issues/448)) ([5cef720](https://github.com/ecmwf/anemoi-datasets/commit/5cef7207b7900190272d970bf44f35a7011e3708))
17
+ * Fix repeat dates ([#458](https://github.com/ecmwf/anemoi-datasets/issues/458)) ([16b5c83](https://github.com/ecmwf/anemoi-datasets/commit/16b5c836172a37c13b210b35baee1a5e97731e5d))
18
+ * Refactor dataset create ([#379](https://github.com/ecmwf/anemoi-datasets/issues/379)) ([c5408da](https://github.com/ecmwf/anemoi-datasets/commit/c5408dafd34c80bcb4b0cd9623dbebfe00959151))
19
+
20
+
21
+ ### Bug Fixes
22
+
23
+ * Allow grib source to be used for constant data ([#428](https://github.com/ecmwf/anemoi-datasets/issues/428)) ([c1d7ff1](https://github.com/ecmwf/anemoi-datasets/commit/c1d7ff1035848e26d3034903577c267973985c07))
24
+ * Broken source imports ([#450](https://github.com/ecmwf/anemoi-datasets/issues/450)) ([#454](https://github.com/ecmwf/anemoi-datasets/issues/454)) ([d6ed174](https://github.com/ecmwf/anemoi-datasets/commit/d6ed174cf4f6da22464c050d3304b026fc0ae4a3))
25
+ * Ensure missing value indicator in not a valid value in accumulat… ([#316](https://github.com/ecmwf/anemoi-datasets/issues/316)) ([3541a1f](https://github.com/ecmwf/anemoi-datasets/commit/3541a1f7068b54ceeb35dff93c3f94b4b138cb9d))
26
+ * S3 access [#453](https://github.com/ecmwf/anemoi-datasets/issues/453) ([#459](https://github.com/ecmwf/anemoi-datasets/issues/459)) ([2d810e3](https://github.com/ecmwf/anemoi-datasets/commit/2d810e3775ace78ffe2c43cc9bac66d704c0754d))
27
+ * Xarray-zarr filters ([#457](https://github.com/ecmwf/anemoi-datasets/issues/457)) ([5f2973f](https://github.com/ecmwf/anemoi-datasets/commit/5f2973fb7d128a3f6de5ed538e39cc7421eeb5dc))
28
+
29
+
30
+ ### Documentation
31
+
32
+ * Documentation updates ([#419](https://github.com/ecmwf/anemoi-datasets/issues/419)) ([4588175](https://github.com/ecmwf/anemoi-datasets/commit/458817533e805652527945eef4de781c62d3abf9))
33
+
34
+ ## [0.5.27](https://github.com/ecmwf/anemoi-datasets/compare/0.5.26...0.5.27) (2025-10-06)
35
+
36
+
37
+ ### Features
38
+
39
+ * Add 'model_level_number' to coordinate guesser (ecmwf/anemoi-datasets[#402](https://github.com/ecmwf/anemoi-datasets/issues/402)) ([#403](https://github.com/ecmwf/anemoi-datasets/issues/403)) ([fa0b7e8](https://github.com/ecmwf/anemoi-datasets/commit/fa0b7e809740d918cddb98596a9178181fe900d2))
40
+ * Extend xarray Variable.sel to handle scalar variables ([#381](https://github.com/ecmwf/anemoi-datasets/issues/381)) ([1306d62](https://github.com/ecmwf/anemoi-datasets/commit/1306d62d0c7e2be627460e35ba8a6780b0b26db7))
41
+ * Improve conftest types ([#395](https://github.com/ecmwf/anemoi-datasets/issues/395)) ([bd8143d](https://github.com/ecmwf/anemoi-datasets/commit/bd8143d4baf94a5243c023632e62838226ae8fd4))
42
+ * Remove python 3.9 from pyproject.toml. ([#392](https://github.com/ecmwf/anemoi-datasets/issues/392)) ([7f3a250](https://github.com/ecmwf/anemoi-datasets/commit/7f3a250cddf35bba7c83867933236587a1b48572))
43
+ * **sources:** Add FDB source ([#405](https://github.com/ecmwf/anemoi-datasets/issues/405)) ([9222d59](https://github.com/ecmwf/anemoi-datasets/commit/9222d59280cafaf99f1471a028069fd6043522c9))
44
+ * Validate dataset ([#330](https://github.com/ecmwf/anemoi-datasets/issues/330)) ([34d06df](https://github.com/ecmwf/anemoi-datasets/commit/34d06df5b8ea40568f1a413b30904a103d26acb9))
45
+
46
+
47
+ ### Bug Fixes
48
+
49
+ * Allow multiple options to be provided to anemoi-datasets inspect ([#372](https://github.com/ecmwf/anemoi-datasets/issues/372)) ([dea680e](https://github.com/ecmwf/anemoi-datasets/commit/dea680e54a4daa43ce15400ff49adb2a29c39380))
50
+ * Anemoi inspect wrong message ([#429](https://github.com/ecmwf/anemoi-datasets/issues/429)) ([984ccef](https://github.com/ecmwf/anemoi-datasets/commit/984ccef5561245a2a64b6e9b3c0543764b817664))
51
+ * Better handling of xarray metadata ([#322](https://github.com/ecmwf/anemoi-datasets/issues/322)) ([4304cb4](https://github.com/ecmwf/anemoi-datasets/commit/4304cb40a6d6956492b5246a56f4af1a914d7cab))
52
+ * Cleaning _build when building datasets ([#413](https://github.com/ecmwf/anemoi-datasets/issues/413)) ([046a7eb](https://github.com/ecmwf/anemoi-datasets/commit/046a7eb992653df34ba1c7550e38489e3df4d227))
53
+ * Define the missing forwards_subclass_metadata_specific method in the ZipBase class ([#377](https://github.com/ecmwf/anemoi-datasets/issues/377)) ([2816314](https://github.com/ecmwf/anemoi-datasets/commit/28163143a76cec618e74a2b85d86a7d0d31168f5))
54
+ * Remove config_path in Config ([#431](https://github.com/ecmwf/anemoi-datasets/issues/431)) ([2bf674f](https://github.com/ecmwf/anemoi-datasets/commit/2bf674fd966ce2a0c19cb72185173c999ae1c6af))
55
+ * Remove-obsolete-code-and-rename ([#423](https://github.com/ecmwf/anemoi-datasets/issues/423)) ([ab3da59](https://github.com/ecmwf/anemoi-datasets/commit/ab3da591c9d7f809e21da8e354afff07b97cc490))
56
+ * Save_dataset ([#383](https://github.com/ecmwf/anemoi-datasets/issues/383)) ([05b8f51](https://github.com/ecmwf/anemoi-datasets/commit/05b8f51f1b7c60cc3bc2695ccc274c149af2b9cf))
57
+ * Support for sources with already opened datasets ([#417](https://github.com/ecmwf/anemoi-datasets/issues/417)) ([9bc2d17](https://github.com/ecmwf/anemoi-datasets/commit/9bc2d1736d457c09c042e8db45ac587c94e75218))
58
+
59
+
60
+ ### Documentation
61
+
62
+ * Reference filters transform ([#389](https://github.com/ecmwf/anemoi-datasets/issues/389)) ([4e5d278](https://github.com/ecmwf/anemoi-datasets/commit/4e5d2785db5bb644d20a90e6cb1d3aa17e412718))
63
+
11
64
  ## [0.5.26](https://github.com/ecmwf/anemoi-datasets/compare/0.5.25...0.5.26) (2025-07-11)
12
65
 
13
66
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: anemoi-datasets
3
- Version: 0.5.26
3
+ Version: 0.5.28
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,21 +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.9
220
219
  Classifier: Programming Language :: Python :: 3.10
221
220
  Classifier: Programming Language :: Python :: 3.11
222
221
  Classifier: Programming Language :: Python :: 3.12
223
222
  Classifier: Programming Language :: Python :: 3.13
224
223
  Classifier: Programming Language :: Python :: Implementation :: CPython
225
224
  Classifier: Programming Language :: Python :: Implementation :: PyPy
226
- Requires-Python: >=3.9
225
+ Requires-Python: >=3.10
227
226
  License-File: LICENSE
228
227
  Requires-Dist: anemoi-transform>=0.1.10
229
- Requires-Dist: anemoi-utils[provenance]>=0.4.26
228
+ Requires-Dist: anemoi-utils[provenance]>=0.4.38
230
229
  Requires-Dist: cfunits
230
+ Requires-Dist: glom
231
+ Requires-Dist: jsonschema
231
232
  Requires-Dist: numcodecs<0.16
232
233
  Requires-Dist: numpy
233
234
  Requires-Dist: pyyaml
235
+ Requires-Dist: ruamel-yaml
234
236
  Requires-Dist: semantic-version
235
237
  Requires-Dist: tqdm
236
238
  Requires-Dist: zarr<=2.18.4
@@ -262,6 +264,7 @@ Requires-Dist: requests; extra == "remote"
262
264
  Provides-Extra: tests
263
265
  Requires-Dist: anemoi-datasets[xarray]; extra == "tests"
264
266
  Requires-Dist: pytest; extra == "tests"
267
+ Requires-Dist: pytest-skip-slow; extra == "tests"
265
268
  Requires-Dist: pytest-xdist; extra == "tests"
266
269
  Provides-Extra: xarray
267
270
  Requires-Dist: adlfs; extra == "xarray"
@@ -19,5 +19,5 @@ help:
19
19
  # Catch-all target: route all unknown targets to Sphinx using the new
20
20
  # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
21
21
  %: Makefile
22
- bash $(SOURCEDIR)/scripts/api_build.sh
22
+ @cd scripts && $(MAKE) $@
23
23
  @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
@@ -0,0 +1,10 @@
1
+ .. _filters:
2
+
3
+ #########
4
+ Filters
5
+ #########
6
+
7
+ Filters can be used to perform data transformations when creating a
8
+ dataset. See the :ref:`anemoi-transform
9
+ <anemoi-transform:list-of-filters>` documentation for a list of filters
10
+ and example configurations.
@@ -14,7 +14,7 @@ computed as the dataset is built, and stored in the metadata, with other
14
14
  information such as the locations of the grid points, the list of
15
15
  variables, etc.
16
16
 
17
- .. figure:: ../../_static/schemas/recipe.png
17
+ .. figure:: ../_static/schemas/recipe.png
18
18
  :alt: Building datasets
19
19
  :align: center
20
20
 
@@ -10,7 +10,7 @@ dates of the dataset.
10
10
 
11
11
  The general format of the `repeated-dates` source is:
12
12
 
13
- .. literalinclude:: yaml/repeated_dates1.yaml
13
+ .. literalinclude:: yaml/repeated-dates1.yaml
14
14
  :language: yaml
15
15
 
16
16
  where ``source`` is any of the :ref:`operations <operations>` or
@@ -4,7 +4,7 @@ Create Command
4
4
  ==============
5
5
 
6
6
  Use this command to create a dataset from a recipe file.
7
- The syntax of the recipe file is described in :doc:`building datasets <../datasets/building/introduction>`.
7
+ The syntax of the recipe file is described in :ref:`building-introduction`.
8
8
 
9
9
  .. argparse::
10
10
  :module: anemoi.datasets.__main__
@@ -1,7 +1,7 @@
1
1
  .. _grib-index_command:
2
2
 
3
3
  Grib-index Command
4
- ============
4
+ ==================
5
5
 
6
6
  The `grib-index` command is used to create an index file for GRIB files. The index file is then used
7
7
  by the `grib-index` :ref:`source <grib-index_source>`.
@@ -15,7 +15,7 @@ This command will output the metadata of the dataset, including the variables, d
15
15
 
16
16
  which will output something like the following. The output should be self-explanatory.
17
17
 
18
- .. literalinclude:: ../datasets/yaml/building1.txt
18
+ .. literalinclude:: ../yaml/building1.txt
19
19
  :language: console
20
20
 
21
21
  .. argparse::
@@ -1,8 +1,8 @@
1
1
  .. _cli-introduction:
2
2
 
3
- ##################
4
- Command line tool
5
- ##################
3
+ ############
4
+ Introduction
5
+ ############
6
6
 
7
7
  When you install the `anemoi-datasets` package, this will also install command line tool
8
8
  called ``anemoi-datasets`` which can be used to manage the zarr datasets.
@@ -20,4 +20,5 @@ The commands are:
20
20
  - :ref:`Inspect Command <Inspect_command>`
21
21
  - :ref:`Compare Command <compare_command>`
22
22
  - :ref:`Scan Command <scan_command>`
23
+ - :ref:`Validate Command <validate_command>`
23
24
  - :ref:`Compare LAM Command <compare_lam_command>`
@@ -0,0 +1,45 @@
1
+ .. _validate_command:
2
+
3
+ Validate Command
4
+ ============
5
+
6
+ Use this command to validate a zarr dataset, or a class that implements the
7
+ :class:`anemoi.datasets.Dataset` interface.
8
+
9
+
10
+ This command has two modes of operation:
11
+
12
+ 1. Validate a local zarr dataset by specifying its path.
13
+ 2. Validate a dataset class by providing its fully qualified class name.
14
+
15
+ Example usage
16
+ -------------
17
+
18
+ To validate a local zarr dataset:
19
+
20
+ .. code-block:: bash
21
+
22
+ anemoi-datasets validate /path/to/dataset.zarr
23
+
24
+ To validate a dataset class:
25
+
26
+ .. code-block:: bash
27
+
28
+ anemoi-datasets validate --callable my_package.MyDatasetClass some-args-relevant-to-the-class
29
+
30
+
31
+ In the first case, the command will check the compatibility of the zarr dataset using anemoi-datasets own class, in the second case, it will use the class provided by the user.
32
+
33
+ When running the command, emojis are used to categorise the different validation results:
34
+
35
+ * ✅: validation succeeded
36
+ * ⚠️: validation for the attribute/method is not implemented
37
+ * 💣: validation failed because the test does not pass
38
+ * 💥: validation failed because the validation tool is out of date
39
+
40
+
41
+ .. argparse::
42
+ :module: anemoi.datasets.__main__
43
+ :func: create_parser
44
+ :prog: anemoi-datasets
45
+ :path: validate
@@ -40,9 +40,9 @@ year = datetime.datetime.now().year
40
40
  if year == 2024:
41
41
  years = "2024"
42
42
  else:
43
- years = "2024-%s" % (year,)
43
+ years = f"2024-{year}"
44
44
 
45
- copyright = "%s, Anemoi contributors" % (years,)
45
+ copyright = f"{years}, Anemoi contributors"
46
46
 
47
47
 
48
48
  try:
@@ -1,8 +1,8 @@
1
- .. _usage-getting-started:
1
+ .. _redo-sample-dataset:
2
2
 
3
- ###########################
4
- Create Your First Dataset
5
- ###########################
3
+ ##############################
4
+ Re-create the sample dataset
5
+ ##############################
6
6
 
7
7
  The following example presents a simple but comprehensive recipe to
8
8
  create an Anemoi dataset based on the atmospheric reanalysis ERA5. Once
@@ -0,0 +1,117 @@
1
+ .. _create-with-filter:
2
+
3
+ #################################
4
+ Create a dataset using a filter
5
+ #################################
6
+
7
+ A ``filter`` is a software component that takes as input the output of a
8
+ source or another filter and can modify the fields and/or their
9
+ metadata. For example, typical filters are interpolations, renaming of
10
+ variables, etc. Filters are available as part of ``anemoi-transform``.
11
+
12
+ ****************
13
+ Using a filter
14
+ ****************
15
+
16
+ In the example below we see a recipe to create a dataset from MARS data
17
+ in which we perform a rename transform to update ``tp`` to be named
18
+ ``tp_era5``. To be able to use the transform we just define it as a
19
+ second step of the pipe, after gathering the data.
20
+
21
+ .. literalinclude:: yaml/recipe-filter1.yaml
22
+
23
+ That recipe will generate the following dataset:
24
+
25
+ .. code:: bash
26
+
27
+ Dataset Summary
28
+ ===============
29
+
30
+ 📦 Path : recipe1.zarr
31
+ 🔢 Format version: 0.30.0
32
+
33
+ 📅 Start : 2020-12-12 00:00
34
+ 📅 End : 2020-12-13 12:00
35
+ ⏰ Frequency : 12h
36
+ 🚫 Missing : 0
37
+ 🌎 Resolution : 20.0
38
+ 🌎 Field shape: [9, 18]
39
+
40
+ 📐 Shape : 4 × 9 × 1 × 162 (22.8 KiB)
41
+ 💽 Size : 40.7 KiB (40.7 KiB)
42
+ 📁 Files : 48
43
+
44
+ Index │ Variable │ Min │ Max │ Mean │ Stdev
45
+ ──────┼──────────┼─────────────┼─────────────┼──────────────┼────────────
46
+ 0 │ 2t │ 226.496 │ 309.946 │ 278.03 │ 19.2561
47
+ 1 │ cp │ 0 │ 0.00739765 │ 0.00014582 │ 0.000527194
48
+ 2 │ q_100 │ 1.38935e-06 │ 4.20381e-06 │ 2.68779e-06 │ 5.59043e-07
49
+ 3 │ q_50 │ 1.26881e-06 │ 3.20919e-06 │ 2.74525e-06 │ 4.35595e-07
50
+ 4 │ t_100 │ 189.787 │ 226.929 │ 207.052 │ 9.26841
51
+ 5 │ t_50 │ 189.14 │ 236.51 │ 212.79 │ 9.5502
52
+ 6 │ tp_era5 │ 0 │ 0.00823116 │ 0.000326814 │ 0.00078008
53
+ 7 │ w_100 │ -0.0114685 │ 0.0129402 │ -0.000355278 │ 0.00448272
54
+ 8 │ w_50 │ -0.00815806 │ 0.0126816 │ -0.000267674 │ 0.00331866
55
+ ──────┴──────────┴─────────────┴─────────────┴──────────────┴────────────
56
+ 🔋 Dataset ready, last update 1 minute ago.
57
+ 📊 Statistics ready.
58
+
59
+ ***********************
60
+ Creating a new filter
61
+ ***********************
62
+
63
+ In order to create a new filter the recommendation is to define it under
64
+ the package ``anemoi-transform``. Available filters can be found in
65
+ ``anemoi/transform/filters`` or running the command ``anemoi-transform
66
+ filters list``. For details about how to create a filter please refer to
67
+ the `anemoi-transform
68
+ <https://anemoi.readthedocs.io/projects/transform/en/latest/>`_
69
+ documentation.
70
+
71
+ ************************
72
+ Using multiple filters
73
+ ************************
74
+
75
+ It's possible to stack multiple filters one after the other. Below you
76
+ can see an updated version of the dataset creation we had where we now
77
+ create a dataset and apply a rename filter and our newly defined
78
+ ``VerticalVelocity`` filter.
79
+
80
+ .. literalinclude:: yaml/recipe-filter2.yaml
81
+
82
+ That recipe will generate the following dataset:
83
+
84
+ .. code:: bash
85
+
86
+ Dataset Summary
87
+ ===============
88
+
89
+
90
+ 📦 Path : recipe2.zarr
91
+ 🔢 Format version: 0.30.0
92
+
93
+ 📅 Start : 2020-12-12 00:00
94
+ 📅 End : 2020-12-13 12:00
95
+ ⏰ Frequency : 12h
96
+ 🚫 Missing : 0
97
+ 🌎 Resolution : 20.0
98
+ 🌎 Field shape: [9, 18]
99
+
100
+ 📐 Shape : 4 × 9 × 1 × 162 (22.8 KiB)
101
+ 💽 Size : 41.1 KiB (41.1 KiB)
102
+ 📁 Files : 48
103
+
104
+ Index │ Variable │ Min │ Max │ Mean │ Stdev
105
+ ──────┼──────────┼─────────────┼─────────────┼─────────────┼────────────
106
+ 0 │ 2t │ 226.496 │ 309.946 │ 278.03 │ 19.2561
107
+ 1 │ cp │ 0 │ 0.00739765 │ 0.00014582 │ 0.000527194
108
+ 2 │ q_100 │ 1.38935e-06 │ 4.20381e-06 │ 2.68779e-06 │ 5.59043e-07
109
+ 3 │ q_50 │ 1.26881e-06 │ 3.20919e-06 │ 2.74525e-06 │ 4.35595e-07
110
+ 4 │ t_100 │ 189.787 │ 226.929 │ 207.052 │ 9.26841
111
+ 5 │ t_50 │ 189.14 │ 236.51 │ 212.79 │ 9.5502
112
+ 6 │ tp_era5 │ 0 │ 0.00823116 │ 0.000326814 │ 0.00078008
113
+ 7 │ wz_100 │ -0.00798191 │ 0.00721723 │ 0.000224189 │ 0.00277693
114
+ 8 │ wz_50 │ -0.01549 │ 0.0103844 │ 0.000341309 │ 0.00417065
115
+ ──────┴──────────┴─────────────┴─────────────┴─────────────┴────────────
116
+ 🔋 Dataset ready, last update 11 seconds ago.
117
+ 📊 Statistics ready.
@@ -0,0 +1,31 @@
1
+ dates:
2
+ start: 2020-12-12 00:00:00
3
+ end: 2020-12-14 12:00:00
4
+ frequency: 12h
5
+
6
+ input:
7
+ pipe:
8
+ - join:
9
+ - mars:
10
+ expver: "0001"
11
+ class: ea
12
+ grid: 20./20.
13
+ param: [2t]
14
+ levtype: sfc
15
+ - mars:
16
+ expver: "0001"
17
+ class: ea
18
+ grid: 20./20.
19
+ param: [q, t,w]
20
+ levtype: pl
21
+ level: [50, 100]
22
+ stream: oper
23
+ type: an
24
+ - accumulations:
25
+ expver: "0001"
26
+ class: ea
27
+ grid: 20./20.
28
+ param: [cp, tp]
29
+ - rename:
30
+ param:
31
+ tp: tp_era5
@@ -0,0 +1,35 @@
1
+ dates:
2
+ start: 2020-12-12 00:00:00
3
+ end: 2020-12-14 12:00:00
4
+ frequency: 12h
5
+
6
+ input:
7
+ pipe:
8
+ - join:
9
+ - mars:
10
+ expver: "0001"
11
+ class: ea
12
+ grid: 20./20.
13
+ param: [2t]
14
+ levtype: sfc
15
+ - mars:
16
+ expver: "0001"
17
+ class: ea
18
+ grid: 20./20.
19
+ param: [q, t,w]
20
+ levtype: pl
21
+ level: [50, 100]
22
+ stream: oper
23
+ type: an
24
+ - accumulations:
25
+ expver: "0001"
26
+ class: ea
27
+ grid: 20./20.
28
+ param: [cp, tp]
29
+ - rename:
30
+ param:
31
+ tp: tp_era5
32
+ - w_to_wz:
33
+ w_component: w
34
+ temperature: t
35
+ humidity: q
@@ -13,6 +13,7 @@ good starting point.
13
13
  - :ref:`create-grib-data`
14
14
  - :ref:`create-cf-data`
15
15
  - :ref:`constant-data`
16
+ - :ref:`create-with-filter`
16
17
 
17
18
  .. toctree::
18
19
  :maxdepth: 1
@@ -34,4 +35,4 @@ good starting point.
34
35
  :hidden:
35
36
  :caption: Using anemoi-datasets
36
37
 
37
- usage/*
38
+ using/*