anemoi-datasets 0.5.27__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 (410) hide show
  1. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.gitignore +10 -0
  2. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.pre-commit-config.yaml +5 -4
  3. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.readthedocs.yaml +3 -3
  4. anemoi_datasets-0.5.28/.release-please-manifest.json +3 -0
  5. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/CHANGELOG.md +23 -0
  6. {anemoi_datasets-0.5.27/src/anemoi_datasets.egg-info → anemoi_datasets-0.5.28}/PKG-INFO +5 -2
  7. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/Makefile +1 -1
  8. anemoi_datasets-0.5.28/docs/building/filters.rst +10 -0
  9. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/introduction.rst +1 -1
  10. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/repeated-dates.rst +1 -1
  11. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/cli/create.rst +1 -1
  12. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/cli/grib-index.rst +1 -1
  13. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/cli/inspect.rst +1 -1
  14. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/cli/introduction.rst +3 -3
  15. anemoi_datasets-0.5.27/docs/usage/getting_started.rst → anemoi_datasets-0.5.28/docs/howtos/create/00-redo-sample-dataset.rst +4 -4
  16. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/introduction.rst +1 -1
  17. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/index.rst +4 -17
  18. anemoi_datasets-0.5.28/docs/installing.rst +18 -0
  19. anemoi_datasets-0.5.28/docs/modules/dataset.rst +8 -0
  20. anemoi_datasets-0.5.28/docs/scripts/Makefile +8 -0
  21. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/scripts/api_build.sh +1 -1
  22. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/using/combining.rst +9 -9
  23. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/using/grids.rst +3 -3
  24. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/using/missing.rst +1 -1
  25. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/using/opening.rst +1 -1
  26. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/pyproject.toml +5 -2
  27. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/_version.py +3 -3
  28. anemoi_datasets-0.5.28/src/anemoi/datasets/commands/recipe/__init__.py +93 -0
  29. anemoi_datasets-0.5.28/src/anemoi/datasets/commands/recipe/format.py +55 -0
  30. anemoi_datasets-0.5.28/src/anemoi/datasets/commands/recipe/migrate.py +555 -0
  31. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/__init__.py +42 -1
  32. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/config.py +2 -0
  33. anemoi_datasets-0.5.28/src/anemoi/datasets/create/input/__init__.py +85 -0
  34. anemoi_datasets-0.5.28/src/anemoi/datasets/create/input/action.py +317 -0
  35. anemoi_datasets-0.5.28/src/anemoi/datasets/create/input/context/__init__.py +71 -0
  36. anemoi_datasets-0.5.28/src/anemoi/datasets/create/input/context/field.py +54 -0
  37. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/input/data_sources.py +2 -1
  38. anemoi_datasets-0.5.28/src/anemoi/datasets/create/input/misc.py +57 -0
  39. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/input/repeated_dates.py +0 -114
  40. anemoi_datasets-0.5.28/src/anemoi/datasets/create/input/result/__init__.py +17 -0
  41. anemoi_datasets-0.5.27/src/anemoi/datasets/create/input/result.py → anemoi_datasets-0.5.28/src/anemoi/datasets/create/input/result/field.py +9 -89
  42. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/accumulations.py +74 -94
  43. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/accumulations2.py +16 -45
  44. anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/anemoi_dataset.py +77 -0
  45. anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/constants.py +52 -0
  46. anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/empty.py +40 -0
  47. anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/forcings.py +42 -0
  48. anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/grib.py +166 -0
  49. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/grib_index.py +46 -42
  50. anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/hindcasts.py +94 -0
  51. anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/legacy.py +46 -0
  52. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/mars.py +107 -131
  53. anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/netcdf.py +45 -0
  54. anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/opendap.py +45 -0
  55. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/recentre.py +42 -41
  56. anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/repeated_dates.py +44 -0
  57. anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/source.py +47 -0
  58. anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/tendencies.py +171 -0
  59. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/xarray_support/__init__.py +29 -24
  60. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/xarray_support/field.py +4 -4
  61. anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/xarray_zarr.py +44 -0
  62. anemoi_datasets-0.5.28/src/anemoi/datasets/create/sources/zenodo.py +71 -0
  63. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/utils.py +0 -42
  64. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/dataset.py +6 -0
  65. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/grids.py +0 -152
  66. anemoi_datasets-0.5.28/src/anemoi/datasets/data/rolling_average.py +141 -0
  67. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/stores.py +7 -9
  68. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/dates/__init__.py +2 -0
  69. anemoi_datasets-0.5.28/src/anemoi/datasets/dumper.py +76 -0
  70. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/grids.py +1 -178
  71. anemoi_datasets-0.5.28/src/anemoi/datasets/schemas/recipe.json +131 -0
  72. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28/src/anemoi_datasets.egg-info}/PKG-INFO +5 -2
  73. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi_datasets.egg-info/SOURCES.txt +106 -107
  74. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi_datasets.egg-info/requires.txt +4 -1
  75. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/create/test_create.py +14 -0
  76. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/create/utils/compare.py +8 -0
  77. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/test_data.py +14 -0
  78. anemoi_datasets-0.5.27/.release-please-manifest.json +0 -3
  79. anemoi_datasets-0.5.27/docs/datasets/introduction.rst +0 -21
  80. anemoi_datasets-0.5.27/docs/installing.rst +0 -85
  81. anemoi_datasets-0.5.27/docs/modules/dataset.rst +0 -10
  82. anemoi_datasets-0.5.27/docs/modules/filters.rst +0 -5
  83. anemoi_datasets-0.5.27/docs/modules/sources.rst +0 -5
  84. anemoi_datasets-0.5.27/src/anemoi/datasets/create/filter.py +0 -47
  85. anemoi_datasets-0.5.27/src/anemoi/datasets/create/input/__init__.py +0 -105
  86. anemoi_datasets-0.5.27/src/anemoi/datasets/create/input/action.py +0 -257
  87. anemoi_datasets-0.5.27/src/anemoi/datasets/create/input/concat.py +0 -161
  88. anemoi_datasets-0.5.27/src/anemoi/datasets/create/input/context.py +0 -86
  89. anemoi_datasets-0.5.27/src/anemoi/datasets/create/input/empty.py +0 -53
  90. anemoi_datasets-0.5.27/src/anemoi/datasets/create/input/filter.py +0 -117
  91. anemoi_datasets-0.5.27/src/anemoi/datasets/create/input/function.py +0 -232
  92. anemoi_datasets-0.5.27/src/anemoi/datasets/create/input/join.py +0 -129
  93. anemoi_datasets-0.5.27/src/anemoi/datasets/create/input/misc.py +0 -128
  94. anemoi_datasets-0.5.27/src/anemoi/datasets/create/input/pipe.py +0 -66
  95. anemoi_datasets-0.5.27/src/anemoi/datasets/create/input/step.py +0 -173
  96. anemoi_datasets-0.5.27/src/anemoi/datasets/create/input/template.py +0 -161
  97. anemoi_datasets-0.5.27/src/anemoi/datasets/create/sources/anemoi_dataset.py +0 -73
  98. anemoi_datasets-0.5.27/src/anemoi/datasets/create/sources/constants.py +0 -51
  99. anemoi_datasets-0.5.27/src/anemoi/datasets/create/sources/empty.py +0 -36
  100. anemoi_datasets-0.5.27/src/anemoi/datasets/create/sources/forcings.py +0 -41
  101. anemoi_datasets-0.5.27/src/anemoi/datasets/create/sources/grib.py +0 -146
  102. anemoi_datasets-0.5.27/src/anemoi/datasets/create/sources/hindcasts.py +0 -93
  103. anemoi_datasets-0.5.27/src/anemoi/datasets/create/sources/legacy.py +0 -98
  104. anemoi_datasets-0.5.27/src/anemoi/datasets/create/sources/netcdf.py +0 -41
  105. anemoi_datasets-0.5.27/src/anemoi/datasets/create/sources/opendap.py +0 -41
  106. anemoi_datasets-0.5.27/src/anemoi/datasets/create/sources/source.py +0 -69
  107. anemoi_datasets-0.5.27/src/anemoi/datasets/create/sources/tendencies.py +0 -198
  108. anemoi_datasets-0.5.27/src/anemoi/datasets/create/sources/xarray_zarr.py +0 -40
  109. anemoi_datasets-0.5.27/src/anemoi/datasets/create/sources/zenodo.py +0 -67
  110. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.gitattributes +0 -0
  111. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.github/CODEOWNERS +0 -0
  112. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  113. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.github/ci-hpc-config.yml +0 -0
  114. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.github/dependabot.yml +0 -0
  115. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.github/labeler.yml +0 -0
  116. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.github/pull_request_template.md +0 -0
  117. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.github/workflows/downstream-ci-hpc.yml +0 -0
  118. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.github/workflows/pr-conventional-commit.yml +0 -0
  119. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.github/workflows/pr-label-ats.yml +0 -0
  120. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.github/workflows/pr-label-conventional-commits.yml +0 -0
  121. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.github/workflows/pr-label-file-based.yml +0 -0
  122. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.github/workflows/pr-label-public.yml +0 -0
  123. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.github/workflows/push-to-private.yml +0 -0
  124. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.github/workflows/python-publish.yml +0 -0
  125. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.github/workflows/python-pull-request.yml +0 -0
  126. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.github/workflows/readthedocs-pr-update.yml +0 -0
  127. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.github/workflows/release-please.yml +0 -0
  128. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.release-please-config.json +0 -0
  129. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/.vscode/spellright.dict +0 -0
  130. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/CONTRIBUTORS.md +0 -0
  131. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/LICENSE +0 -0
  132. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/README.md +0 -0
  133. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/2t_map_example.png +0 -0
  134. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/area-1.png +0 -0
  135. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/concat.png +0 -0
  136. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/cutout-1.png +0 -0
  137. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/cutout-2.png +0 -0
  138. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/cutout-3.png +0 -0
  139. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/cutout-4.png +0 -0
  140. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/cutout-5.png +0 -0
  141. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/cutout-6.png +0 -0
  142. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/join.png +0 -0
  143. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/logo.png +0 -0
  144. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/overlay.png +0 -0
  145. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/schemas/matrix.excalidraw +0 -0
  146. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/schemas/matrix.png +0 -0
  147. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/schemas/overview.excalidraw +0 -0
  148. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/schemas/overview.png +0 -0
  149. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/schemas/recipe.excalidraw +0 -0
  150. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/schemas/recipe.png +0 -0
  151. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/skip-missing.png +0 -0
  152. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/style.css +0 -0
  153. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/thinning-after.png +0 -0
  154. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_static/thinning-before.png +0 -0
  155. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_templates/.gitkeep +0 -0
  156. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/_templates/apidoc/package.rst.jinja +0 -0
  157. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/adr/adr-1.md +0 -0
  158. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/apply-fmt.sh +0 -0
  159. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/advanced-options.rst +0 -0
  160. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/handling-missing-dates.rst +0 -0
  161. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/handling-missing-values.rst +0 -0
  162. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/incremental.rst +0 -0
  163. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/naming-conventions.rst +0 -0
  164. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/naming-variables.rst +0 -0
  165. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/operations.rst +0 -0
  166. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/accumulations.rst +0 -0
  167. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/anemoi-dataset.rst +0 -0
  168. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/cds.rst +0 -0
  169. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/eccc-fstd.rst +0 -0
  170. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/forcings.rst +0 -0
  171. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/grib-index.rst +0 -0
  172. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/grib.rst +0 -0
  173. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/hindcasts.rst +0 -0
  174. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/mars.rst +0 -0
  175. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/netcdf.rst +0 -0
  176. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/opendap.rst +0 -0
  177. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/recentre.rst +0 -0
  178. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/xarray-based.rst +0 -0
  179. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/xarray-kerchunk.py +0 -0
  180. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/xarray-kerchunk.rst +0 -0
  181. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/xarray-zarr.rst +0 -0
  182. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/accumulations1.yaml +0 -0
  183. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/accumulations2.yaml +0 -0
  184. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/anemoi-dataset.yaml +0 -0
  185. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/anemoi-zarr-dataset.yaml +0 -0
  186. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/eccc-fstd.yaml +0 -0
  187. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/forcings.yaml +0 -0
  188. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/grib1.yaml +0 -0
  189. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/grib2.yaml +0 -0
  190. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/grib3.yaml +0 -0
  191. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/grib4.yaml +0 -0
  192. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/hindcasts.yaml +0 -0
  193. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/mars-cds.yaml +0 -0
  194. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/mars1.yaml +0 -0
  195. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/mars2.yaml +0 -0
  196. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/netcdf.yaml +0 -0
  197. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/opendap.yaml +0 -0
  198. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/recentre.yaml +0 -0
  199. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/repeated-dates1.yaml +0 -0
  200. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/repeated-dates2.yaml +0 -0
  201. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/repeated-dates3.yaml +0 -0
  202. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/repeated-dates4.yaml +0 -0
  203. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/xarray-based.yaml +0 -0
  204. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/xarray-kerchunk.yaml +0 -0
  205. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/xarray-zarr.yaml +0 -0
  206. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/yaml/zenodo.yaml +0 -0
  207. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources/zenodo.rst +0 -0
  208. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/sources.rst +0 -0
  209. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/statistics.rst +0 -0
  210. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/building/syntax.yaml +0 -0
  211. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/check-index.sh +0 -0
  212. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/cli/compare-lam.rst +0 -0
  213. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/cli/compare.rst +0 -0
  214. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/cli/copy.rst +0 -0
  215. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/cli/patch.rst +0 -0
  216. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/cli/scan.rst +0 -0
  217. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/cli/validate.rst +0 -0
  218. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/conf.py +0 -0
  219. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/dev/contributing.rst +0 -0
  220. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/01-grib-data.rst +0 -0
  221. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/02-cf-data.rst +0 -0
  222. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/03-constant-fields.rst +0 -0
  223. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/04-create-with-filter.rst +0 -0
  224. {anemoi_datasets-0.5.27/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
  225. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/grib-flavour1.yaml +0 -0
  226. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/grib-flavour2.yaml +0 -0
  227. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/grib-flavour3.yaml +0 -0
  228. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/grib-flavour4.yaml +0 -0
  229. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/grib-recipe1.yaml +0 -0
  230. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/grib-recipe2.yaml +0 -0
  231. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/grib-recipe3.yaml +0 -0
  232. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/grib-recipe4.yaml +0 -0
  233. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/grib-recipe5.yaml +0 -0
  234. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/netcdf1.yaml +0 -0
  235. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/opendap1.yaml +0 -0
  236. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/recipe-filter1.yaml +0 -0
  237. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/recipe-filter2.yaml +0 -0
  238. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/xarray-flavour1.yaml +0 -0
  239. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/xarray-patch1.yaml +0 -0
  240. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/xarray-patch2.yaml +0 -0
  241. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/zarr1.yaml +0 -0
  242. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/howtos/create/yaml/zarr2.yaml +0 -0
  243. {anemoi_datasets-0.5.27/docs/howtos/usage → anemoi_datasets-0.5.28/docs/howtos/using}/01-interpolate-step-dataset-combination.rst +0 -0
  244. {anemoi_datasets-0.5.27/docs/howtos/usage → anemoi_datasets-0.5.28/docs/howtos/using}/02-coutout-complement-combination.rst +0 -0
  245. {anemoi_datasets-0.5.27/docs/howtos/usage → anemoi_datasets-0.5.28/docs/howtos/using}/code/cutout-complement1.py +0 -0
  246. {anemoi_datasets-0.5.27/docs/howtos/usage → anemoi_datasets-0.5.28/docs/howtos/using}/code/interpolate1.py +0 -0
  247. {anemoi_datasets-0.5.27/docs/howtos/usage → anemoi_datasets-0.5.28/docs/howtos/using}/code/interpolate2.py +0 -0
  248. {anemoi_datasets-0.5.27/docs/howtos/usage → anemoi_datasets-0.5.28/docs/howtos/using}/yaml/cutout-complement1.yaml +0 -0
  249. {anemoi_datasets-0.5.27/docs/howtos/usage → anemoi_datasets-0.5.28/docs/howtos/using}/yaml/interpolate1.yaml +0 -0
  250. {anemoi_datasets-0.5.27/docs/howtos/usage → anemoi_datasets-0.5.28/docs/howtos/using}/yaml/interpolate2.yaml +0 -0
  251. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/overview.rst +0 -0
  252. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/pptx/images.pptx +0 -0
  253. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/docs/using/code/trimedge1_.py +0 -0
  254. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/using/configuration.rst +0 -0
  255. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/using/configuration.toml +0 -0
  256. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/using/ensembles.rst +0 -0
  257. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/using/introduction.rst +0 -0
  258. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/using/matching.rst +0 -0
  259. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/using/methods.rst +0 -0
  260. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/using/miscellaneous.rst +0 -0
  261. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/using/other.rst +0 -0
  262. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/using/selecting.rst +0 -0
  263. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/using/statistics.rst +0 -0
  264. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/using/subsetting.rst +0 -0
  265. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/using/zip.rst +0 -0
  266. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/yaml/Makefile +0 -0
  267. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/yaml/building1.txt +0 -0
  268. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/yaml/building1.yaml +0 -0
  269. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/yaml/building2.txt +0 -0
  270. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/yaml/building2.yaml +0 -0
  271. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/yaml/building3.txt +0 -0
  272. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/yaml/building3.yaml +0 -0
  273. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/yaml/concat.yaml +0 -0
  274. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/yaml/hindcasts.yaml +0 -0
  275. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/yaml/input.yaml +0 -0
  276. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/yaml/missing_dates.yaml +0 -0
  277. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/yaml/nan.yaml +0 -0
  278. {anemoi_datasets-0.5.27/docs/datasets → anemoi_datasets-0.5.28/docs}/yaml/pipe.yaml +0 -0
  279. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/setup.cfg +0 -0
  280. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/__init__.py +0 -0
  281. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/__main__.py +0 -0
  282. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/check.py +0 -0
  283. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/__init__.py +0 -0
  284. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/check.py +0 -0
  285. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/cleanup.py +0 -0
  286. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/compare-lam.py +0 -0
  287. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/compare.py +0 -0
  288. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/copy.py +0 -0
  289. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/create.py +0 -0
  290. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/finalise-additions.py +0 -0
  291. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/finalise.py +0 -0
  292. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/grib-index.py +0 -0
  293. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/init-additions.py +0 -0
  294. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/init.py +0 -0
  295. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/inspect.py +0 -0
  296. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/load-additions.py +0 -0
  297. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/load.py +0 -0
  298. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/patch.py +0 -0
  299. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/publish.py +0 -0
  300. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/scan.py +0 -0
  301. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/commands/validate.py +0 -0
  302. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/compute/__init__.py +0 -0
  303. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/compute/recentre.py +0 -0
  304. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/check.py +0 -0
  305. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/chunks.py +0 -0
  306. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/input/trace.py +0 -0
  307. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/patch.py +0 -0
  308. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/persistent.py +0 -0
  309. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/size.py +0 -0
  310. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/source.py +0 -0
  311. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/__init__.py +0 -0
  312. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/eccc_fstd.py +0 -0
  313. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/fdb.py +0 -0
  314. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/patterns.py +0 -0
  315. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/planetary_computer.py +0 -0
  316. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/xarray.py +0 -0
  317. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/xarray_kerchunk.py +0 -0
  318. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/xarray_support/README.md +0 -0
  319. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/xarray_support/coordinates.py +0 -0
  320. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/xarray_support/fieldlist.py +0 -0
  321. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/xarray_support/flavour.py +0 -0
  322. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/xarray_support/grid.py +0 -0
  323. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/xarray_support/metadata.py +0 -0
  324. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/xarray_support/patch.py +0 -0
  325. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/xarray_support/time.py +0 -0
  326. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/sources/xarray_support/variable.py +0 -0
  327. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/statistics/__init__.py +0 -0
  328. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/statistics/summary.py +0 -0
  329. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/testing.py +0 -0
  330. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/typing.py +0 -0
  331. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/writer.py +0 -0
  332. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/create/zarr.py +0 -0
  333. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/__init__.py +0 -0
  334. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/complement.py +0 -0
  335. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/concat.py +0 -0
  336. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/debug.css +0 -0
  337. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/debug.py +0 -0
  338. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/ensemble.py +0 -0
  339. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/fill_missing.py +0 -0
  340. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/forwards.py +0 -0
  341. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/indexing.py +0 -0
  342. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/interpolate.py +0 -0
  343. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/join.py +0 -0
  344. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/masked.py +0 -0
  345. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/merge.py +0 -0
  346. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/misc.py +0 -0
  347. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/missing.py +0 -0
  348. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/observations/__init__.py +0 -0
  349. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/observations/legacy_obs_dataset.py +0 -0
  350. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/observations/multi.py +0 -0
  351. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/padded.py +0 -0
  352. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/records/__init__.py +0 -0
  353. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/records/backends/__init__.py +0 -0
  354. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/rescale.py +0 -0
  355. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/select.py +0 -0
  356. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/statistics.py +0 -0
  357. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/subset.py +0 -0
  358. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/unchecked.py +0 -0
  359. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/data/xy.py +0 -0
  360. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/dates/groups.py +0 -0
  361. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/testing.py +0 -0
  362. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi/datasets/validate.py +0 -0
  363. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi_datasets.egg-info/dependency_links.txt +0 -0
  364. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi_datasets.egg-info/entry_points.txt +0 -0
  365. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/src/anemoi_datasets.egg-info/top_level.txt +0 -0
  366. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/conftest.py +0 -0
  367. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/create/__init__.py +0 -0
  368. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/create/accumulation.yaml +0 -0
  369. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/create/concat.yaml +0 -0
  370. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/create/join.yaml +0 -0
  371. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/create/missing.yaml +0 -0
  372. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/create/nan.yaml +0 -0
  373. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/create/pipe.yaml +0 -0
  374. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/create/recentre.yaml +0 -0
  375. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/create/regrid.yaml +0 -0
  376. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/create/run.sh +0 -0
  377. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/create/test_sources.py +0 -0
  378. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/create/utils/__init__.py +0 -0
  379. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/create/utils/create.py +0 -0
  380. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/create/utils/mock_sources.py +0 -0
  381. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/create-perturbations-full.yaml +0 -0
  382. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/create-shift.yaml +0 -0
  383. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/test_chunks.py +0 -0
  384. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/test_data_gridded.py +0 -0
  385. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/test_dates.py +0 -0
  386. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/test_indexing.py +0 -0
  387. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/test_records.py +0 -0
  388. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/test_validate.py +0 -0
  389. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/xarray/test_flavour.py +0 -0
  390. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/xarray/test_netcdf.py +0 -0
  391. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/xarray/test_opendap.py +0 -0
  392. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/xarray/test_variable.py +0 -0
  393. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tests/xarray/test_zarr.py +0 -0
  394. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tools/.gitignore +0 -0
  395. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tools/build-obs.py +0 -0
  396. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tools/check-obs.py +0 -0
  397. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tools/examples/Makefile +0 -0
  398. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tools/examples/an-oper-2023-2023-2p5-6h-v1.yaml +0 -0
  399. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tools/grids/Makefile +0 -0
  400. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tools/grids/grids.ipynb +0 -0
  401. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tools/grids/grids1.yaml +0 -0
  402. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tools/grids/grids2.yaml +0 -0
  403. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tools/grids/grids3.yaml +0 -0
  404. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tools/grids/grids4.yaml +0 -0
  405. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tools/grids/grids5.yaml +0 -0
  406. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tools/grids/grids6.yaml +0 -0
  407. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tools/grids/grids7.yaml +0 -0
  408. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tools/grids/grids_multilam.ipynb +0 -0
  409. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tools/make-sample-dataset.py +0 -0
  410. {anemoi_datasets-0.5.27 → anemoi_datasets-0.5.28}/tools/upload-sample-dataset.py +0 -0
@@ -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
@@ -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.12.11
44
+ rev: v0.13.3
45
45
  hooks:
46
46
  - id: ruff
47
47
  args:
@@ -65,7 +65,7 @@ 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
@@ -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,29 @@ 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
+
11
34
  ## [0.5.27](https://github.com/ecmwf/anemoi-datasets/compare/0.5.26...0.5.27) (2025-10-06)
12
35
 
13
36
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: anemoi-datasets
3
- Version: 0.5.27
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
@@ -225,11 +225,14 @@ Classifier: Programming Language :: Python :: Implementation :: PyPy
225
225
  Requires-Python: >=3.10
226
226
  License-File: LICENSE
227
227
  Requires-Dist: anemoi-transform>=0.1.10
228
- Requires-Dist: anemoi-utils[provenance]>=0.4.32
228
+ Requires-Dist: anemoi-utils[provenance]>=0.4.38
229
229
  Requires-Dist: cfunits
230
+ Requires-Dist: glom
231
+ Requires-Dist: jsonschema
230
232
  Requires-Dist: numcodecs<0.16
231
233
  Requires-Dist: numpy
232
234
  Requires-Dist: pyyaml
235
+ Requires-Dist: ruamel-yaml
233
236
  Requires-Dist: semantic-version
234
237
  Requires-Dist: tqdm
235
238
  Requires-Dist: zarr<=2.18.4
@@ -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.
@@ -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
@@ -35,4 +35,4 @@ good starting point.
35
35
  :hidden:
36
36
  :caption: Using anemoi-datasets
37
37
 
38
- usage/*
38
+ using/*
@@ -4,10 +4,6 @@
4
4
  Welcome to `anemoi-datasets` documentation!
5
5
  #############################################
6
6
 
7
- .. warning::
8
-
9
- This documentation is a work in progress.
10
-
11
7
  An *Anemoi dataset* is a thin wrapper around a Zarr_ store that is
12
8
  optimised for training data-driven weather forecasting models.
13
9
  anemoi-datasets are organised in such a way that I/O operations are
@@ -58,8 +54,7 @@ datasets for compatibility with machine learning models.
58
54
  In the rest of this documentation, you will learn how to configure and
59
55
  create anemoi datasets using YAML files, as well as how to load and read
60
56
  existing ones. A full example of a dataset preparation process can be
61
- found in the :ref:`Create Your First Dataset <usage-getting-started>`
62
- section.
57
+ found in the :ref:`redo-sample-dataset` section.
63
58
 
64
59
  ************
65
60
  Installing
@@ -125,24 +120,15 @@ You may also have to install pandoc on macOS:
125
120
  :caption: Introduction
126
121
 
127
122
  overview
128
- cli/introduction
129
123
  installing
130
124
 
131
- .. toctree::
132
- :maxdepth: 1
133
- :hidden:
134
- :caption: Recipe examples
135
-
136
- usage/getting_started
137
-
138
125
  .. toctree::
139
126
  :maxdepth: 1
140
127
  :hidden:
141
128
  :caption: User Guide
142
129
 
143
- datasets/introduction
144
- datasets/building/introduction
145
- datasets/using/introduction
130
+ building/introduction
131
+ using/introduction
146
132
 
147
133
  .. toctree::
148
134
  :maxdepth: 3
@@ -156,6 +142,7 @@ You may also have to install pandoc on macOS:
156
142
  :hidden:
157
143
  :caption: CLI
158
144
 
145
+ cli/introduction
159
146
  cli/create
160
147
  cli/inspect
161
148
  cli/grib-index
@@ -0,0 +1,18 @@
1
+ .. _installing:
2
+
3
+ ############
4
+ Installing
5
+ ############
6
+
7
+ To install the package, you can use the following command:
8
+
9
+ .. code:: bash
10
+
11
+ python -m pip install anemoi-datasets
12
+
13
+ If you are interested in creating datasets, you can install the package
14
+ with the following command:
15
+
16
+ .. code:: bash
17
+
18
+ pip install anemoi-datasets[create]
@@ -0,0 +1,8 @@
1
+ .. _dataset-autodoc:
2
+
3
+ #########
4
+ Dataset
5
+ #########
6
+
7
+ .. autoclass:: anemoi.datasets.data.dataset.Dataset
8
+ :members: dates, latitudes, longitudes, dates_interval_to_indices, provenance, typed_variables, metadata, start_date, end_date, supporting_arrays, grids, variables, frequency, name_to_index, shape, field_shape, dtype, missing, statistics,statistics_tendencies
@@ -0,0 +1,8 @@
1
+ html: rst
2
+
3
+ clean:
4
+ rm -rf ../api
5
+
6
+ rst:
7
+ mkdir -p ../api
8
+ # sphinx-apidoc --implicit-namespaces --separate -o ../api ../../src/anemoi -t ../_templates/apidoc
@@ -9,5 +9,5 @@ source_dir="$script_dir/../../src/"
9
9
 
10
10
  trap 'rm -f $source_dir/anemoi/__init__.py' EXIT
11
11
 
12
- touch "$source_dir/anemoi/__init__.py"
12
+ # touch "$source_dir/anemoi/__init__.py"
13
13
  sphinx-apidoc -M -f -o "$docs_dir/_api" "$source_dir/anemoi" -t "$docs_dir/_templates/apidoc"
@@ -67,7 +67,7 @@ concatenate datasets that have gaps between them, check the
67
67
 
68
68
  ds = open_dataset(concat=["dataset-1979-2000", "dataset-2001-2022"])
69
69
 
70
- .. image:: ../../_static/concat.png
70
+ .. image:: ../_static/concat.png
71
71
  :align: center
72
72
  :alt: Concatenation
73
73
 
@@ -101,7 +101,7 @@ variables.
101
101
 
102
102
  ds = open_dataset(join=["dataset1-1979-2022", "dataset2-1979-2022"])
103
103
 
104
- .. image:: ../../_static/join.png
104
+ .. image:: ../_static/join.png
105
105
  :align: center
106
106
  :alt: Join
107
107
 
@@ -109,7 +109,7 @@ If a variable is present in more than one file, the last occurrence of
109
109
  that variable will be used and will be at the position of the first
110
110
  occurrence of that name.
111
111
 
112
- .. image:: ../../_static//overlay.png
112
+ .. image:: ../_static//overlay.png
113
113
  :align: center
114
114
  :alt: Overlay
115
115
 
@@ -164,14 +164,14 @@ the bounding box of the second dataset.
164
164
 
165
165
  The image below shows the global dataset:
166
166
 
167
- .. image:: ../../_static/cutout-1.png
167
+ .. image:: ../_static/cutout-1.png
168
168
  :width: 75%
169
169
  :align: center
170
170
  :alt: Cutout
171
171
 
172
172
  The image below shows the LAM dataset:
173
173
 
174
- .. image:: ../../_static//cutout-2.png
174
+ .. image:: ../_static//cutout-2.png
175
175
  :width: 75%
176
176
  :align: center
177
177
  :alt: Cutout
@@ -180,7 +180,7 @@ A 'cutout' is performed by removing the grid points from the global
180
180
  dataset that are contained in the LAM dataset. The result is shown
181
181
  below:
182
182
 
183
- .. image:: ../../_static//cutout-3.png
183
+ .. image:: ../_static//cutout-3.png
184
184
  :width: 75%
185
185
  :align: center
186
186
  :alt: Cutout
@@ -188,7 +188,7 @@ below:
188
188
  The final dataset is the concatenation of the LAM dataset and the
189
189
  cutout:
190
190
 
191
- .. image:: ../../_static//cutout-4.png
191
+ .. image:: ../_static//cutout-4.png
192
192
  :width: 75%
193
193
  :align: center
194
194
  :alt: Cutout
@@ -206,11 +206,11 @@ The plots below illustrate how the cutout differs if `min_distance_km`
206
206
  is not given (top) or if `min_distance_km` is set to `0` (bottom). The
207
207
  difference can be seen at the boundary between the two grids:
208
208
 
209
- .. image:: ../../_static//cutout-5.png
209
+ .. image:: ../_static//cutout-5.png
210
210
  :align: center
211
211
  :alt: Cutout
212
212
 
213
- .. image:: ../../_static//cutout-6.png
213
+ .. image:: ../_static//cutout-6.png
214
214
  :align: center
215
215
  :alt: Cutout
216
216
 
@@ -26,14 +26,14 @@ the thinning will apply to the only dimension.
26
26
  The following example shows the effect of thinning a dataset with a 1
27
27
  degree resolution:
28
28
 
29
- .. image:: ../../_static/thinning-before.png
29
+ .. image:: ../_static/thinning-before.png
30
30
  :width: 75%
31
31
  :align: center
32
32
 
33
33
  Thinning the dataset with ``thinning=4`` will result in the following
34
34
  dataset:
35
35
 
36
- .. image:: ../../_static/thinning-after.png
36
+ .. image:: ../_static/thinning-after.png
37
37
  :width: 75%
38
38
  :align: center
39
39
 
@@ -53,7 +53,7 @@ use:
53
53
 
54
54
  Which will result in the following dataset:
55
55
 
56
- .. image:: ../../_static/area-1.png
56
+ .. image:: ../_static/area-1.png
57
57
  :width: 75%
58
58
  :align: center
59
59
 
@@ -71,7 +71,7 @@ the dates in the dataset, and the red cells are the missing dates. Given
71
71
  matching dates that are not missing (in blue). The interval between each
72
72
  date of a group is guaranteed to be constant across all groups.
73
73
 
74
- .. image:: ../../_static/skip-missing.png
74
+ .. image:: ../_static/skip-missing.png
75
75
  :align: center
76
76
 
77
77
  .. code:: python
@@ -157,7 +157,7 @@ it with standard Python tools. For example:
157
157
  ax.gridlines(draw_labels=True)
158
158
  plt.colorbar(p, label="K", orientation="horizontal")
159
159
 
160
- .. figure:: ../../_static/2t_map_example.png
160
+ .. figure:: ../_static/2t_map_example.png
161
161
  :alt: example map plot
162
162
  :align: center
163
163
 
@@ -49,18 +49,21 @@ dynamic = [
49
49
  ]
50
50
  dependencies = [
51
51
  "anemoi-transform>=0.1.10",
52
- "anemoi-utils[provenance]>=0.4.32",
52
+ "anemoi-utils[provenance]>=0.4.38",
53
53
  "cfunits",
54
+ "glom",
55
+ "jsonschema",
54
56
  "numcodecs<0.16", # Until we move to zarr3
55
57
  "numpy",
56
58
  "pyyaml",
59
+ "ruamel-yaml",
57
60
  "semantic-version",
58
61
  "tqdm",
59
62
  "zarr<=2.18.4",
60
63
  ]
61
64
 
62
65
  optional-dependencies.all = [
63
- "anemoi-datasets[create,remote,xarray,comparelam]",
66
+ "anemoi-datasets[comparelam,create,remote,xarray]",
64
67
  ]
65
68
 
66
69
  optional-dependencies.comparelam = [
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '0.5.27'
32
- __version_tuple__ = version_tuple = (0, 5, 27)
31
+ __version__ = version = '0.5.28'
32
+ __version_tuple__ = version_tuple = (0, 5, 28)
33
33
 
34
- __commit_id__ = commit_id = 'g2b7d13494'
34
+ __commit_id__ = commit_id = 'g2c8e4cd05'
@@ -0,0 +1,93 @@
1
+ # (C) Copyright 2024 Anemoi contributors.
2
+ #
3
+ # This software is licensed under the terms of the Apache Licence Version 2.0
4
+ # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
5
+ #
6
+ # In applying this licence, ECMWF does not waive the privileges and immunities
7
+ # granted to it by virtue of its status as an intergovernmental organisation
8
+ # nor does it submit to any jurisdiction.
9
+
10
+
11
+ import argparse
12
+ import logging
13
+ import sys
14
+ from typing import Any
15
+
16
+ import yaml
17
+
18
+ from anemoi.datasets.create import validate_config
19
+
20
+ from .. import Command
21
+ from .format import format_recipe
22
+ from .migrate import migrate_recipe
23
+
24
+ LOG = logging.getLogger(__name__)
25
+
26
+
27
+ class Recipe(Command):
28
+ def add_arguments(self, command_parser: Any) -> None:
29
+ """Add arguments to the command parser.
30
+
31
+ Parameters
32
+ ----------
33
+ command_parser : Any
34
+ Command parser object.
35
+ """
36
+
37
+ command_parser.add_argument("--validate", action="store_true", help="Validate recipe.")
38
+ command_parser.add_argument("--format", action="store_true", help="Format the recipe.")
39
+ command_parser.add_argument("--migrate", action="store_true", help="Migrate the recipe to the latest version.")
40
+
41
+ group = command_parser.add_mutually_exclusive_group()
42
+ group.add_argument("--inplace", action="store_true", help="Overwrite the recipe file in place.")
43
+ group.add_argument("--output", type=str, help="Output file path for the converted recipe.")
44
+
45
+ command_parser.add_argument(
46
+ "path",
47
+ help="Path to recipe.",
48
+ )
49
+
50
+ def run(self, args: Any) -> None:
51
+
52
+ if not args.validate and not args.format and not args.migrate:
53
+ args.validate = True
54
+
55
+ with open(args.path) as file:
56
+ config = yaml.safe_load(file)
57
+
58
+ assert isinstance(config, dict)
59
+
60
+ if args.validate:
61
+ if args.inplace and (not args.format and not args.migrate):
62
+ argparse.ArgumentError(None, "--inplace is not supported with --validate.")
63
+
64
+ if args.output and (not args.format and not args.migrate):
65
+ argparse.ArgumentError(None, "--output is not supported with --validate.")
66
+
67
+ validate_config(config)
68
+ LOG.info(f"{args.path}: Recipe is valid.")
69
+ return
70
+
71
+ if args.migrate:
72
+ config = migrate_recipe(args, config)
73
+ if config is None:
74
+ LOG.info(f"{args.path}: No changes needed.")
75
+ return
76
+
77
+ args.format = True
78
+
79
+ if args.format:
80
+ formatted = format_recipe(args, config)
81
+ assert "dates" in formatted
82
+ f = sys.stdout
83
+ if args.output:
84
+ f = open(args.output, "w")
85
+
86
+ if args.inplace:
87
+ f = open(args.path, "w")
88
+
89
+ print(formatted, file=f)
90
+ f.close()
91
+
92
+
93
+ command = Recipe
@@ -0,0 +1,55 @@
1
+ # (C) Copyright 2025 Anemoi contributors.
2
+ #
3
+ # This software is licensed under the terms of the Apache Licence Version 2.0
4
+ # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
5
+ #
6
+ # In applying this licence, ECMWF does not waive the privileges and immunities
7
+ # granted to it by virtue of its status as an intergovernmental organisation
8
+ # nor does it submit to any jurisdiction.
9
+
10
+
11
+ import datetime
12
+ import logging
13
+
14
+ from ...dumper import yaml_dump
15
+
16
+ LOG = logging.getLogger(__name__)
17
+
18
+
19
+ def make_dates(config):
20
+ if isinstance(config, dict):
21
+ return {k: make_dates(v) for k, v in config.items()}
22
+ if isinstance(config, list):
23
+ return [make_dates(v) for v in config]
24
+ if isinstance(config, str):
25
+ try:
26
+ return datetime.datetime.fromisoformat(config)
27
+ except ValueError:
28
+ return config
29
+ return config
30
+
31
+
32
+ ORDER = (
33
+ "name",
34
+ "description",
35
+ "dataset_status",
36
+ "licence",
37
+ "attribution",
38
+ "env",
39
+ "dates",
40
+ "common",
41
+ "data_sources",
42
+ "input",
43
+ "output",
44
+ "statistics",
45
+ "build",
46
+ "platform",
47
+ )
48
+
49
+
50
+ def format_recipe(args, config: dict) -> str:
51
+
52
+ config = make_dates(config)
53
+ assert config
54
+
55
+ return yaml_dump(config, order=ORDER)