anemoi-datasets 0.5.24__tar.gz → 0.5.26__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 (409) hide show
  1. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.github/pull_request_template.md +2 -0
  2. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.pre-commit-config.yaml +2 -2
  3. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.release-please-config.json +6 -1
  4. anemoi_datasets-0.5.26/.release-please-manifest.json +3 -0
  5. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/CHANGELOG.md +41 -0
  6. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/PKG-INFO +3 -2
  7. anemoi_datasets-0.5.26/docs/adr/adr-1.md +63 -0
  8. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/anemoi-dataset.rst +6 -0
  9. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/xarray-zarr.rst +6 -0
  10. anemoi_datasets-0.5.26/docs/datasets/building/sources/yaml/anemoi-zarr-dataset.yaml +3 -0
  11. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/using/combining.rst +3 -1
  12. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/create/02-cf-data.rst +9 -0
  13. anemoi_datasets-0.5.26/docs/howtos/create/yaml/zarr2.yaml +8 -0
  14. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/usage/code/cutout-complement1.py +1 -0
  15. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/usage/yaml/cutout-complement1.yaml +1 -0
  16. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/pyproject.toml +9 -1
  17. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/_version.py +2 -2
  18. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/commands/finalise-additions.py +2 -1
  19. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/commands/finalise.py +2 -1
  20. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/commands/grib-index.py +1 -1
  21. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/commands/init-additions.py +2 -1
  22. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/commands/load-additions.py +2 -1
  23. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/commands/load.py +2 -1
  24. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/__init__.py +24 -33
  25. anemoi_datasets-0.5.24/src/anemoi/datasets/create/filters/transform.py → anemoi_datasets-0.5.26/src/anemoi/datasets/create/filter.py +2 -5
  26. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/input/__init__.py +0 -20
  27. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/input/step.py +2 -16
  28. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/accumulations.py +7 -6
  29. anemoi_datasets-0.5.26/src/anemoi/datasets/create/sources/planetary_computer.py +44 -0
  30. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/xarray_support/__init__.py +6 -22
  31. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/xarray_support/coordinates.py +8 -0
  32. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/xarray_support/field.py +1 -4
  33. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/xarray_support/flavour.py +44 -6
  34. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/xarray_support/patch.py +44 -1
  35. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/xarray_support/variable.py +6 -2
  36. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/complement.py +44 -10
  37. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/dataset.py +29 -0
  38. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/forwards.py +8 -2
  39. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/misc.py +74 -16
  40. anemoi_datasets-0.5.26/src/anemoi/datasets/data/observations/__init__.py +316 -0
  41. anemoi_datasets-0.5.26/src/anemoi/datasets/data/observations/legacy_obs_dataset.py +200 -0
  42. anemoi_datasets-0.5.26/src/anemoi/datasets/data/observations/multi.py +64 -0
  43. anemoi_datasets-0.5.26/src/anemoi/datasets/data/padded.py +227 -0
  44. anemoi_datasets-0.5.26/src/anemoi/datasets/data/records/__init__.py +442 -0
  45. anemoi_datasets-0.5.26/src/anemoi/datasets/data/records/backends/__init__.py +157 -0
  46. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/stores.py +7 -56
  47. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/subset.py +5 -0
  48. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/grids.py +6 -3
  49. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi_datasets.egg-info/PKG-INFO +3 -2
  50. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi_datasets.egg-info/SOURCES.txt +20 -37
  51. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi_datasets.egg-info/requires.txt +2 -1
  52. anemoi_datasets-0.5.26/tests/conftest.py +1 -0
  53. anemoi_datasets-0.5.26/tests/create/__init__.py +0 -0
  54. anemoi_datasets-0.5.26/tests/create/test_create.py +83 -0
  55. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/create/test_sources.py +50 -17
  56. anemoi_datasets-0.5.26/tests/create/utils/__init__.py +0 -0
  57. anemoi_datasets-0.5.26/tests/create/utils/compare.py +218 -0
  58. anemoi_datasets-0.5.26/tests/create/utils/mock_sources.py +117 -0
  59. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/test_data.py +25 -1
  60. anemoi_datasets-0.5.26/tests/test_records.py +160 -0
  61. anemoi_datasets-0.5.26/tests/xarray/test_flavour.py +104 -0
  62. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/xarray/test_zarr.py +0 -28
  63. anemoi_datasets-0.5.26/tools/build-obs.py +52 -0
  64. anemoi_datasets-0.5.26/tools/check-obs.py +60 -0
  65. anemoi_datasets-0.5.24/.release-please-manifest.json +0 -3
  66. anemoi_datasets-0.5.24/docs/datasets/building/filters/empty.rst +0 -6
  67. anemoi_datasets-0.5.24/docs/datasets/building/filters/noop.rst +0 -6
  68. anemoi_datasets-0.5.24/docs/datasets/building/filters/orog_to_z.rst +0 -17
  69. anemoi_datasets-0.5.24/docs/datasets/building/filters/regrid.rst +0 -27
  70. anemoi_datasets-0.5.24/docs/datasets/building/filters/rename.rst +0 -20
  71. anemoi_datasets-0.5.24/docs/datasets/building/filters/rotate_winds.rst +0 -3
  72. anemoi_datasets-0.5.24/docs/datasets/building/filters/select.rst +0 -3
  73. anemoi_datasets-0.5.24/docs/datasets/building/filters/sum.rst +0 -13
  74. anemoi_datasets-0.5.24/docs/datasets/building/filters/unrotate_winds.rst +0 -3
  75. anemoi_datasets-0.5.24/docs/datasets/building/filters/wz_to_w.rst +0 -12
  76. anemoi_datasets-0.5.24/docs/datasets/building/filters/yaml/orog_to_z.yaml +0 -11
  77. anemoi_datasets-0.5.24/docs/datasets/building/filters/yaml/regrid1.yaml +0 -11
  78. anemoi_datasets-0.5.24/docs/datasets/building/filters/yaml/regrid2.yaml +0 -9
  79. anemoi_datasets-0.5.24/docs/datasets/building/filters/yaml/rename.yaml +0 -13
  80. anemoi_datasets-0.5.24/docs/datasets/building/filters/yaml/sum.yaml +0 -15
  81. anemoi_datasets-0.5.24/docs/datasets/building/filters/yaml/wz_to_w.yaml +0 -11
  82. anemoi_datasets-0.5.24/docs/datasets/building/filters.rst +0 -26
  83. anemoi_datasets-0.5.24/src/anemoi/datasets/create/filter.py +0 -50
  84. anemoi_datasets-0.5.24/src/anemoi/datasets/create/filters/__init__.py +0 -33
  85. anemoi_datasets-0.5.24/src/anemoi/datasets/create/filters/empty.py +0 -37
  86. anemoi_datasets-0.5.24/src/anemoi/datasets/create/filters/legacy.py +0 -93
  87. anemoi_datasets-0.5.24/src/anemoi/datasets/create/filters/noop.py +0 -37
  88. anemoi_datasets-0.5.24/src/anemoi/datasets/create/filters/orog_to_z.py +0 -58
  89. anemoi_datasets-0.5.24/src/anemoi/datasets/create/filters/pressure_level_relative_humidity_to_specific_humidity.py +0 -83
  90. anemoi_datasets-0.5.24/src/anemoi/datasets/create/filters/pressure_level_specific_humidity_to_relative_humidity.py +0 -84
  91. anemoi_datasets-0.5.24/src/anemoi/datasets/create/filters/rename.py +0 -205
  92. anemoi_datasets-0.5.24/src/anemoi/datasets/create/filters/rotate_winds.py +0 -105
  93. anemoi_datasets-0.5.24/src/anemoi/datasets/create/filters/single_level_dewpoint_to_relative_humidity.py +0 -78
  94. anemoi_datasets-0.5.24/src/anemoi/datasets/create/filters/single_level_relative_humidity_to_dewpoint.py +0 -84
  95. anemoi_datasets-0.5.24/src/anemoi/datasets/create/filters/single_level_relative_humidity_to_specific_humidity.py +0 -163
  96. anemoi_datasets-0.5.24/src/anemoi/datasets/create/filters/single_level_specific_humidity_to_relative_humidity.py +0 -451
  97. anemoi_datasets-0.5.24/src/anemoi/datasets/create/filters/speeddir_to_uv.py +0 -95
  98. anemoi_datasets-0.5.24/src/anemoi/datasets/create/filters/sum.py +0 -68
  99. anemoi_datasets-0.5.24/src/anemoi/datasets/create/filters/unrotate_winds.py +0 -105
  100. anemoi_datasets-0.5.24/src/anemoi/datasets/create/filters/uv_to_speeddir.py +0 -94
  101. anemoi_datasets-0.5.24/src/anemoi/datasets/create/filters/wz_to_w.py +0 -98
  102. anemoi_datasets-0.5.24/tests/create/test_create.py +0 -414
  103. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.gitattributes +0 -0
  104. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.github/CODEOWNERS +0 -0
  105. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  106. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.github/ci-hpc-config.yml +0 -0
  107. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.github/dependabot.yml +0 -0
  108. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.github/labeler.yml +0 -0
  109. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.github/workflows/downstream-ci-hpc.yml +0 -0
  110. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.github/workflows/pr-conventional-commit.yml +0 -0
  111. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.github/workflows/pr-label-conventional-commits.yml +0 -0
  112. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.github/workflows/pr-label-file-based.yml +0 -0
  113. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.github/workflows/pr-label-public.yml +0 -0
  114. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.github/workflows/push-to-private.yml +0 -0
  115. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.github/workflows/python-publish.yml +0 -0
  116. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.github/workflows/python-pull-request.yml +0 -0
  117. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.github/workflows/readthedocs-pr-update.yml +0 -0
  118. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.github/workflows/release-please.yml +0 -0
  119. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.gitignore +0 -0
  120. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.readthedocs.yaml +0 -0
  121. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/.vscode/spellright.dict +0 -0
  122. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/03-constant-fields.rst +0 -0
  123. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/CONTRIBUTORS.md +0 -0
  124. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/LICENSE +0 -0
  125. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/README.md +0 -0
  126. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/Makefile +0 -0
  127. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/2t_map_example.png +0 -0
  128. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/area-1.png +0 -0
  129. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/concat.png +0 -0
  130. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/cutout-1.png +0 -0
  131. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/cutout-2.png +0 -0
  132. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/cutout-3.png +0 -0
  133. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/cutout-4.png +0 -0
  134. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/cutout-5.png +0 -0
  135. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/cutout-6.png +0 -0
  136. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/join.png +0 -0
  137. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/logo.png +0 -0
  138. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/overlay.png +0 -0
  139. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/schemas/matrix.excalidraw +0 -0
  140. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/schemas/matrix.png +0 -0
  141. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/schemas/overview.excalidraw +0 -0
  142. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/schemas/overview.png +0 -0
  143. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/schemas/recipe.excalidraw +0 -0
  144. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/schemas/recipe.png +0 -0
  145. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/skip-missing.png +0 -0
  146. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/style.css +0 -0
  147. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/thinning-after.png +0 -0
  148. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_static/thinning-before.png +0 -0
  149. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_templates/.gitkeep +0 -0
  150. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/_templates/apidoc/package.rst.jinja +0 -0
  151. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/apply-fmt.sh +0 -0
  152. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/check-index.sh +0 -0
  153. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/cli/compare-lam.rst +0 -0
  154. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/cli/compare.rst +0 -0
  155. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/cli/copy.rst +0 -0
  156. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/cli/create.rst +0 -0
  157. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/cli/grib-index.rst +0 -0
  158. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/cli/inspect.rst +0 -0
  159. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/cli/introduction.rst +0 -0
  160. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/cli/patch.rst +0 -0
  161. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/cli/scan.rst +0 -0
  162. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/conf.py +0 -0
  163. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/advanced-options.rst +0 -0
  164. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/handling-missing-dates.rst +0 -0
  165. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/handling-missing-values.rst +0 -0
  166. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/incremental.rst +0 -0
  167. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/introduction.rst +0 -0
  168. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/naming-conventions.rst +0 -0
  169. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/naming-variables.rst +0 -0
  170. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/operations.rst +0 -0
  171. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/accumulations.rst +0 -0
  172. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/cds.rst +0 -0
  173. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/eccc-fstd.rst +0 -0
  174. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/forcings.rst +0 -0
  175. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/grib-index.rst +0 -0
  176. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/grib.rst +0 -0
  177. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/hindcasts.rst +0 -0
  178. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/mars.rst +0 -0
  179. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/netcdf.rst +0 -0
  180. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/opendap.rst +0 -0
  181. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/recentre.rst +0 -0
  182. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/repeated-dates.rst +0 -0
  183. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/xarray-based.rst +0 -0
  184. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/xarray-kerchunk.py +0 -0
  185. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/xarray-kerchunk.rst +0 -0
  186. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/accumulations1.yaml +0 -0
  187. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/accumulations2.yaml +0 -0
  188. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/anemoi-dataset.yaml +0 -0
  189. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/eccc-fstd.yaml +0 -0
  190. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/forcings.yaml +0 -0
  191. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/grib1.yaml +0 -0
  192. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/grib2.yaml +0 -0
  193. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/grib3.yaml +0 -0
  194. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/grib4.yaml +0 -0
  195. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/hindcasts.yaml +0 -0
  196. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/mars-cds.yaml +0 -0
  197. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/mars1.yaml +0 -0
  198. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/mars2.yaml +0 -0
  199. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/netcdf.yaml +0 -0
  200. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/opendap.yaml +0 -0
  201. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/recentre.yaml +0 -0
  202. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/repeated-dates1.yaml +0 -0
  203. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/repeated-dates2.yaml +0 -0
  204. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/repeated-dates3.yaml +0 -0
  205. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/repeated-dates4.yaml +0 -0
  206. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/xarray-based.yaml +0 -0
  207. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/xarray-kerchunk.yaml +0 -0
  208. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/xarray-zarr.yaml +0 -0
  209. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/yaml/zenodo.yaml +0 -0
  210. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources/zenodo.rst +0 -0
  211. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/sources.rst +0 -0
  212. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/statistics.rst +0 -0
  213. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/building/syntax.yaml +0 -0
  214. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/introduction.rst +0 -0
  215. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/using/configuration.rst +0 -0
  216. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/using/configuration.toml +0 -0
  217. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/using/ensembles.rst +0 -0
  218. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/using/grids.rst +0 -0
  219. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/using/introduction.rst +0 -0
  220. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/using/matching.rst +0 -0
  221. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/using/methods.rst +0 -0
  222. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/using/miscellaneous.rst +0 -0
  223. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/using/missing.rst +0 -0
  224. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/using/opening.rst +0 -0
  225. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/using/other.rst +0 -0
  226. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/using/selecting.rst +0 -0
  227. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/using/statistics.rst +0 -0
  228. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/using/subsetting.rst +0 -0
  229. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/using/zip.rst +0 -0
  230. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/yaml/Makefile +0 -0
  231. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/yaml/building1.txt +0 -0
  232. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/yaml/building1.yaml +0 -0
  233. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/yaml/building2.txt +0 -0
  234. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/yaml/building2.yaml +0 -0
  235. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/yaml/building3.txt +0 -0
  236. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/yaml/building3.yaml +0 -0
  237. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/yaml/concat.yaml +0 -0
  238. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/yaml/hindcasts.yaml +0 -0
  239. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/yaml/input.yaml +0 -0
  240. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/yaml/missing_dates.yaml +0 -0
  241. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/yaml/nan.yaml +0 -0
  242. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/datasets/yaml/pipe.yaml +0 -0
  243. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/dev/contributing.rst +0 -0
  244. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/create/01-grib-data.rst +0 -0
  245. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/create/03-constant-fields.rst +0 -0
  246. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/create/yaml/grib-flavour1.yaml +0 -0
  247. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/create/yaml/grib-flavour2.yaml +0 -0
  248. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/create/yaml/grib-flavour3.yaml +0 -0
  249. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/create/yaml/grib-flavour4.yaml +0 -0
  250. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/create/yaml/grib-recipe1.yaml +0 -0
  251. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/create/yaml/grib-recipe2.yaml +0 -0
  252. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/create/yaml/grib-recipe3.yaml +0 -0
  253. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/create/yaml/grib-recipe4.yaml +0 -0
  254. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/create/yaml/grib-recipe5.yaml +0 -0
  255. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/create/yaml/netcdf1.yaml +0 -0
  256. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/create/yaml/opendap1.yaml +0 -0
  257. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/create/yaml/xarray-flavour1.yaml +0 -0
  258. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/create/yaml/xarray-patch1.yaml +0 -0
  259. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/create/yaml/xarray-patch2.yaml +0 -0
  260. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/create/yaml/zarr1.yaml +0 -0
  261. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/introduction.rst +0 -0
  262. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/usage/01-interpolate-step-dataset-combination.rst +0 -0
  263. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/usage/02-coutout-complement-combination.rst +0 -0
  264. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/usage/code/interpolate1.py +0 -0
  265. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/usage/code/interpolate2.py +0 -0
  266. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/usage/yaml/interpolate1.yaml +0 -0
  267. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/howtos/usage/yaml/interpolate2.yaml +0 -0
  268. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/index.rst +0 -0
  269. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/installing.rst +0 -0
  270. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/modules/dataset.rst +0 -0
  271. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/modules/filters.rst +0 -0
  272. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/modules/sources.rst +0 -0
  273. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/overview.rst +0 -0
  274. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/pptx/images.pptx +0 -0
  275. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/scripts/api_build.sh +0 -0
  276. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/usage/getting_started.rst +0 -0
  277. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/usage/yaml/aifs-ea-an-oper-0001-mars-o48-2020-2021-6h-v1.yaml +0 -0
  278. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/docs/using/code/trimedge1_.py +0 -0
  279. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/setup.cfg +0 -0
  280. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/__init__.py +0 -0
  281. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/__main__.py +0 -0
  282. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/check.py +0 -0
  283. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/commands/__init__.py +0 -0
  284. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/commands/check.py +0 -0
  285. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/commands/cleanup.py +0 -0
  286. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/commands/compare-lam.py +0 -0
  287. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/commands/compare.py +0 -0
  288. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/commands/copy.py +0 -0
  289. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/commands/create.py +0 -0
  290. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/commands/init.py +0 -0
  291. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/commands/inspect.py +0 -0
  292. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/commands/patch.py +0 -0
  293. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/commands/publish.py +0 -0
  294. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/commands/scan.py +0 -0
  295. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/compute/__init__.py +0 -0
  296. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/compute/recentre.py +0 -0
  297. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/check.py +0 -0
  298. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/chunks.py +0 -0
  299. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/config.py +0 -0
  300. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/input/action.py +0 -0
  301. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/input/concat.py +0 -0
  302. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/input/context.py +0 -0
  303. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/input/data_sources.py +0 -0
  304. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/input/empty.py +0 -0
  305. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/input/filter.py +0 -0
  306. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/input/function.py +0 -0
  307. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/input/join.py +0 -0
  308. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/input/misc.py +0 -0
  309. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/input/pipe.py +0 -0
  310. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/input/repeated_dates.py +0 -0
  311. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/input/result.py +0 -0
  312. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/input/template.py +0 -0
  313. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/input/trace.py +0 -0
  314. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/patch.py +0 -0
  315. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/persistent.py +0 -0
  316. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/size.py +0 -0
  317. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/source.py +0 -0
  318. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/__init__.py +0 -0
  319. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/accumulations2.py +0 -0
  320. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/anemoi_dataset.py +0 -0
  321. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/constants.py +0 -0
  322. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/eccc_fstd.py +0 -0
  323. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/empty.py +0 -0
  324. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/forcings.py +0 -0
  325. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/grib.py +0 -0
  326. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/grib_index.py +0 -0
  327. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/hindcasts.py +0 -0
  328. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/legacy.py +0 -0
  329. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/mars.py +0 -0
  330. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/netcdf.py +0 -0
  331. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/opendap.py +0 -0
  332. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/patterns.py +0 -0
  333. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/recentre.py +0 -0
  334. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/source.py +0 -0
  335. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/tendencies.py +0 -0
  336. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/xarray.py +0 -0
  337. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/xarray_kerchunk.py +0 -0
  338. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/xarray_support/README.md +0 -0
  339. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/xarray_support/fieldlist.py +0 -0
  340. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/xarray_support/grid.py +0 -0
  341. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/xarray_support/metadata.py +0 -0
  342. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/xarray_support/time.py +0 -0
  343. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/xarray_zarr.py +0 -0
  344. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/sources/zenodo.py +0 -0
  345. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/statistics/__init__.py +0 -0
  346. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/statistics/summary.py +0 -0
  347. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/typing.py +0 -0
  348. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/utils.py +0 -0
  349. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/writer.py +0 -0
  350. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/create/zarr.py +0 -0
  351. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/__init__.py +0 -0
  352. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/concat.py +0 -0
  353. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/debug.css +0 -0
  354. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/debug.py +0 -0
  355. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/ensemble.py +0 -0
  356. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/fill_missing.py +0 -0
  357. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/grids.py +0 -0
  358. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/indexing.py +0 -0
  359. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/interpolate.py +0 -0
  360. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/join.py +0 -0
  361. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/masked.py +0 -0
  362. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/merge.py +0 -0
  363. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/missing.py +0 -0
  364. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/rescale.py +0 -0
  365. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/select.py +0 -0
  366. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/statistics.py +0 -0
  367. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/unchecked.py +0 -0
  368. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/data/xy.py +0 -0
  369. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/dates/__init__.py +0 -0
  370. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/dates/groups.py +0 -0
  371. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/testing.py +0 -0
  372. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi/datasets/utils/__init__.py +0 -0
  373. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi_datasets.egg-info/dependency_links.txt +0 -0
  374. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi_datasets.egg-info/entry_points.txt +0 -0
  375. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/src/anemoi_datasets.egg-info/top_level.txt +0 -0
  376. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/create/accumulation.yaml +0 -0
  377. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/create/concat.yaml +0 -0
  378. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/create/join.yaml +0 -0
  379. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/create/missing.yaml +0 -0
  380. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/create/nan.yaml +0 -0
  381. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/create/pipe.yaml +0 -0
  382. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/create/recentre.yaml +0 -0
  383. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/create/regrid.yaml +0 -0
  384. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/create/run.sh +0 -0
  385. /anemoi_datasets-0.5.24/src/anemoi/datasets/create/testing.py → /anemoi_datasets-0.5.26/tests/create/utils/create.py +0 -0
  386. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/create-perturbations-full.yaml +0 -0
  387. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/create-shift.yaml +0 -0
  388. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/test_chunks.py +0 -0
  389. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/test_data_gridded.py +0 -0
  390. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/test_dates.py +0 -0
  391. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/test_indexing.py +0 -0
  392. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/xarray/test_netcdf.py +0 -0
  393. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/xarray/test_opendap.py +0 -0
  394. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tests/xarray/test_samples.py +0 -0
  395. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tools/.gitignore +0 -0
  396. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tools/examples/Makefile +0 -0
  397. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tools/examples/an-oper-2023-2023-2p5-6h-v1.yaml +0 -0
  398. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tools/grids/Makefile +0 -0
  399. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tools/grids/grids.ipynb +0 -0
  400. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tools/grids/grids1.yaml +0 -0
  401. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tools/grids/grids2.yaml +0 -0
  402. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tools/grids/grids3.yaml +0 -0
  403. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tools/grids/grids4.yaml +0 -0
  404. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tools/grids/grids5.yaml +0 -0
  405. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tools/grids/grids6.yaml +0 -0
  406. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tools/grids/grids7.yaml +0 -0
  407. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tools/grids/grids_multilam.ipynb +0 -0
  408. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tools/make-sample-dataset.py +0 -0
  409. {anemoi_datasets-0.5.24 → anemoi_datasets-0.5.26}/tools/upload-sample-dataset.py +0 -0
@@ -11,3 +11,5 @@
11
11
  <!-- Include any additional information, caveats, or considerations that the reviewer should be aware of. -->
12
12
 
13
13
  ***As a contributor to the Anemoi framework, please ensure that your changes include unit tests, updates to any affected dependencies and documentation, and have been tested in a parallel setting (i.e., with multiple GPUs). As a reviewer, you are also responsible for verifying these aspects and requesting changes if they are not adequately addressed. For guidelines about those please refer to https://anemoi.readthedocs.io/en/latest/***
14
+
15
+ By opening this pull request, I affirm that all authors agree to the [Contributor License Agreement.](https://github.com/ecmwf/codex/blob/main/Legal/contributor_license_agreement.md)
@@ -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.4
44
+ rev: v0.11.12
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.5.1"
68
+ rev: "v2.6.0"
69
69
  hooks:
70
70
  - id: pyproject-fmt
71
71
  - repo: https://github.com/jshwi/docsig # Check docstrings against function sig
@@ -10,11 +10,16 @@
10
10
  "draft-pull-request": true,
11
11
  "pull-request-title-pattern": "chore${scope}: Release${component} ${version}",
12
12
  "pull-request-header": ":robot: Automated Release PR\n\nThis PR was created by `release-please` to prepare the next release. Once merged:\n\n1. A new version tag will be created\n2. A GitHub release will be published\n3. The changelog will be updated\n\nChanges to be included in the next release:",
13
- "pull-request-footer": "> [!IMPORTANT]\n> :warning: Merging this PR will:\n> - Create a new release\n> - Trigger deployment pipelines\n> - Update package versions\n\n **Before merging:**\n - Ensure all tests pass\n - Review the changelog carefully\n - Get required approvals\n\n [Release-please documentation](https://github.com/googleapis/release-please)",
13
+ "pull-request-footer": "> [!IMPORTANT]\n> Please do not change the PR title, manifest file, or any other automatically generated content in this PR unless you understand the implications. Changes here can break the release process.\n> :warning: Merging this PR will:\n> - Create a new release\n> - Trigger deployment pipelines\n> - Update package versions\n\n **Before merging:**\n - Ensure all tests pass\n - Review the changelog carefully\n - Get required approvals\n\n [Release-please documentation](https://github.com/googleapis/release-please)",
14
14
  "packages": {
15
15
  ".": {
16
16
  "package-name": "anemoi-datasets"
17
17
  }
18
18
  },
19
+ "plugins": [
20
+ {
21
+ "type": "sentence-case"
22
+ }
23
+ ],
19
24
  "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json"
20
25
  }
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.5.26"
3
+ }
@@ -8,6 +8,47 @@ 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.26](https://github.com/ecmwf/anemoi-datasets/compare/0.5.25...0.5.26) (2025-07-11)
12
+
13
+
14
+ ### Features
15
+
16
+ * Add planetary planetary source ([#368](https://github.com/ecmwf/anemoi-datasets/issues/368)) ([c85337f](https://github.com/ecmwf/anemoi-datasets/commit/c85337f4b08381dc1e2e8ba71134c998c6258c2d))
17
+ * Extend xarray coordinate guesser to include pressure as a long_name ([#335](https://github.com/ecmwf/anemoi-datasets/issues/335)) ([bcbffaa](https://github.com/ecmwf/anemoi-datasets/commit/bcbffaa0b0ad011db5b1fd5879f9829f0d2e68af))
18
+ * Extented complement nearest functionality to support k&gt;1 ([#371](https://github.com/ecmwf/anemoi-datasets/issues/371)) ([a2c5f92](https://github.com/ecmwf/anemoi-datasets/commit/a2c5f921f57fce60bd3fe728c21dc5e5b7d3a4a1))
19
+ * Point data ([#358](https://github.com/ecmwf/anemoi-datasets/issues/358)) ([78c4f85](https://github.com/ecmwf/anemoi-datasets/commit/78c4f85bf9cd4d6cc7f17268c8c526da32158220))
20
+ * Relaxed compatibility check for horizontal grid. ([#339](https://github.com/ecmwf/anemoi-datasets/issues/339)) ([a7dc859](https://github.com/ecmwf/anemoi-datasets/commit/a7dc859b6ec2fb0bad2ed7b7b8ee3c76034a258b))
21
+ * Sort xarray coordinate with patch ([#356](https://github.com/ecmwf/anemoi-datasets/issues/356)) ([638cbdb](https://github.com/ecmwf/anemoi-datasets/commit/638cbdb013b94b87748654ae338e0d02e69c1900))
22
+ * Use pytest-xdist to run tests in parallel. ([#346](https://github.com/ecmwf/anemoi-datasets/issues/346)) ([1d656ee](https://github.com/ecmwf/anemoi-datasets/commit/1d656ee62c51ee0cbe043943581cef16b2f7d7db))
23
+
24
+
25
+ ### Bug Fixes
26
+
27
+ * Deprecated filters in anemoi datasets ([#350](https://github.com/ecmwf/anemoi-datasets/issues/350)) ([d08c6f5](https://github.com/ecmwf/anemoi-datasets/commit/d08c6f55c3d983c930480bd777e74fd5a5bea6eb))
28
+ * **grib-index:** Match against filename, not full path ([#374](https://github.com/ecmwf/anemoi-datasets/issues/374)) ([e71a952](https://github.com/ecmwf/anemoi-datasets/commit/e71a95221493a703515d7a14a17f3dead06c8430))
29
+ * Missing method in xarray flavour ([#369](https://github.com/ecmwf/anemoi-datasets/issues/369)) ([d0b9588](https://github.com/ecmwf/anemoi-datasets/commit/d0b9588f0bff626ae751a74cf4cbbc373a2f67f4))
30
+ * Remove trailing slash from zarr paths. ([#362](https://github.com/ecmwf/anemoi-datasets/issues/362)) ([9a9bfe5](https://github.com/ecmwf/anemoi-datasets/commit/9a9bfe50406d299f44f7cce7e3befcabef6fefaf))
31
+
32
+
33
+ ### Documentation
34
+
35
+ * Fix pre-commit ([#367](https://github.com/ecmwf/anemoi-datasets/issues/367)) ([6e6ebe2](https://github.com/ecmwf/anemoi-datasets/commit/6e6ebe2e81fc735a2af422b8c222b0a2f229d8dc))
36
+ * Zarr dataset creation ([#365](https://github.com/ecmwf/anemoi-datasets/issues/365)) ([622c261](https://github.com/ecmwf/anemoi-datasets/commit/622c26156de44ae4eaa3359fef836741b1d81d67))
37
+
38
+ ## [0.5.25](https://github.com/ecmwf/anemoi-datasets/compare/0.5.24...0.5.25) (2025-06-11)
39
+
40
+
41
+ ### Features
42
+
43
+ * Integrating non-regular datasets in anemoi for observations. ([#306](https://github.com/ecmwf/anemoi-datasets/issues/306)) ([95a0fe4](https://github.com/ecmwf/anemoi-datasets/commit/95a0fe4bb10dc48469c0be0efad94f4d5e2a9fe8))
44
+
45
+
46
+ ### Bug Fixes
47
+
48
+ * Incremental dataset build tasks called regardless of presence of debug flag in CLI code ([#294](https://github.com/ecmwf/anemoi-datasets/issues/294)) ([37afc0d](https://github.com/ecmwf/anemoi-datasets/commit/37afc0d6489f2d6c4b3ce3f9901c40e4cec5c4eb))
49
+ * Regression in accumulations [#354](https://github.com/ecmwf/anemoi-datasets/issues/354) ([#355](https://github.com/ecmwf/anemoi-datasets/issues/355)) ([f9769d7](https://github.com/ecmwf/anemoi-datasets/commit/f9769d7944738ecbedb6b3cc1f78cd26de36a73f))
50
+ * Remove 2 layers of build function ([#348](https://github.com/ecmwf/anemoi-datasets/issues/348)) ([7a904c4](https://github.com/ecmwf/anemoi-datasets/commit/7a904c451772089f120419a9d39bff746e0aeebb))
51
+
11
52
  ## [0.5.24](https://github.com/ecmwf/anemoi-datasets/compare/0.5.23...0.5.24) (2025-05-23)
12
53
 
13
54
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: anemoi-datasets
3
- Version: 0.5.24
3
+ Version: 0.5.26
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
@@ -226,7 +226,7 @@ Classifier: Programming Language :: Python :: Implementation :: PyPy
226
226
  Requires-Python: >=3.9
227
227
  License-File: LICENSE
228
228
  Requires-Dist: anemoi-transform>=0.1.10
229
- Requires-Dist: anemoi-utils[provenance]>=0.4.21
229
+ Requires-Dist: anemoi-utils[provenance]>=0.4.26
230
230
  Requires-Dist: cfunits
231
231
  Requires-Dist: numcodecs<0.16
232
232
  Requires-Dist: numpy
@@ -262,6 +262,7 @@ Requires-Dist: requests; extra == "remote"
262
262
  Provides-Extra: tests
263
263
  Requires-Dist: anemoi-datasets[xarray]; extra == "tests"
264
264
  Requires-Dist: pytest; extra == "tests"
265
+ Requires-Dist: pytest-xdist; extra == "tests"
265
266
  Provides-Extra: xarray
266
267
  Requires-Dist: adlfs; extra == "xarray"
267
268
  Requires-Dist: gcsfs; extra == "xarray"
@@ -0,0 +1,63 @@
1
+ # Support irregular observations datasets
2
+
3
+ ## Status
4
+
5
+ <!--What is the status? -->
6
+
7
+ Proposed - 30/04/2025
8
+
9
+ ## Context
10
+
11
+ <!--What is the issue that we are seeing that is motivating this decision or change?-->
12
+
13
+ The objective of this change is to support observations data which is not regular.
14
+
15
+ In contrast with the fields data where each date contain the same number of points,
16
+ in the observations data, the number of points can change for every time window.
17
+
18
+ The Zarr format fits well the fields data, but does not fit the observations data.
19
+
20
+ To allow storing data with irregular shape, we need to use another format than the zarr used for fields.
21
+ An experimental implementation using xarray-zarr has been developed and is not optimised for ML training.
22
+
23
+ ## Decision
24
+
25
+ <!--Describe the change that you are proposing.-->
26
+
27
+ Add a functionality in anemoi-datasets to read observations datasets and provide the data as dictionary/mapper of numpy arrays.
28
+
29
+ Mimic as much as possible what is done for field datasets :
30
+
31
+ `ds = open_dataset(....)`
32
+ `ds[i]` -> provides the data for a given time window, related to a given reference date. As a dictionary-like object.
33
+ `ds.dates` -> list of reference date, `ds.dates[i]` is the reference date for the data provided in `ds[i]`
34
+
35
+ Also expose the latitudes, longitudes in a sensible way (as `ds.latitudes` and `ds.longitudes` now depend on the dates) and name_to_index and statistics and metadata, etc.
36
+
37
+ These API choices need to be made on an actual training use case.
38
+
39
+ Step to achieve this:
40
+ - Implement now a prototype format to allow developing ML training code on observation data.
41
+ - Performing extensive benchmarking with various formats (explore parquet, and other).
42
+ - As the final format is not defined yet, ensure a flexible architecture to allow switching (this will help for benchmarking).
43
+
44
+
45
+ ## Scope of Change
46
+
47
+ <!--Specify which Anemoi packages/modules will be affected by this decision.-->
48
+ - anemoi-datasets
49
+ Not a breaking change, this only add functionality to read observations datasets.
50
+
51
+ Must be in line with the change related to multi-datasets.
52
+
53
+ ## Consequences
54
+
55
+ <!--Discuss the impact of this decision, including benefits, trade-offs, and potential technical debt.-->
56
+
57
+ ## Alternatives Considered [Optional]
58
+
59
+ <!--List alternative solutions and why they were not chosen.-->
60
+
61
+ ## References [Optional]
62
+
63
+ <!--Links to relevant discussions, documentation, or external resources.-->
@@ -17,3 +17,9 @@ An anemoi-dataset can be a source for a dataset:
17
17
  The parameters are the same as those used in the ``open_dataset``
18
18
  function, which allows you to subset and combine datasets. See
19
19
  :ref:`opening-datasets` for more information.
20
+
21
+ In particular, this is how local zarr datasets created with anemoi in a
22
+ can be used as a source, contrary to :ref:`xarray-zarr` :
23
+
24
+ .. literalinclude:: yaml/anemoi-zarr-dataset.yaml
25
+ :language: yaml
@@ -1,3 +1,5 @@
1
+ .. _xarray-zarr:
2
+
1
3
  #############
2
4
  xarray-zarr
3
5
  #############
@@ -17,4 +19,8 @@ it is necessary to use the :ref:`join <building-join>` operation to join
17
19
  separate lists containing 2D variables and 3D variables. If all vertical
18
20
  levels are desired, then it is acceptable to specify a single source.
19
21
 
22
+ Also, an ``xarray-zarr`` source uses the ``url`` keyword, and cannot be
23
+ used for accessing local datasets. For using local zarr datasets as
24
+ sources, use instead :ref:`anemoi-dataset_source`.
25
+
20
26
  See :ref:`create-cf-data` for more information.
@@ -0,0 +1,3 @@
1
+ input:
2
+ anemoi-dataset:
3
+ dataset: path/to/dataset.zarr
@@ -235,13 +235,15 @@ variables of `dataset1` and return the result.
235
235
  source=dataset2,
236
236
  what="variables",
237
237
  interpolate="nearest",
238
+ k=1,
238
239
  )
239
240
 
240
241
  Currently ``what`` can only be ``variables`` and can be omitted.
241
242
 
242
243
  The value for ``interpolate`` can be one of ``none`` (default) or
243
244
  ``nearest``. In the case of ``none``, the grids of the two datasets must
244
- match.
245
+ match. In case of ``interpolate``, an additional parameter ``k`` can be
246
+ set to specify the number of nearest neighbors to use.
245
247
 
246
248
  This feature was originally designed to be used in conjunction with
247
249
  ``cutout``, where `dataset1` is the lam, and `dataset2` is the global
@@ -46,9 +46,18 @@ can contain patterns. See :ref:`file-pattern` for more information.
46
46
  Zarr
47
47
  ******
48
48
 
49
+ For using remote hosted zarr datasets as sources, use
50
+ :ref:`xarray-zarr`.
51
+
49
52
  .. literalinclude:: yaml/zarr1.yaml
50
53
  :language: yaml
51
54
 
55
+ For using local zarr datasets (such as anemoi-generated datasets), use
56
+ :ref:`anemoi-dataset_source`.
57
+
58
+ .. literalinclude:: yaml/zarr2.yaml
59
+ :language: yaml
60
+
52
61
  *********************************************
53
62
  Handling data that is not 100% CF-compliant
54
63
  *********************************************
@@ -0,0 +1,8 @@
1
+ dates:
2
+ start: 2023-01-01T00:00:00
3
+ end: 2023-01-02T18:00:00
4
+ frequency: 6h
5
+
6
+ input:
7
+ anemoi-dataset:
8
+ dataset: /path/to/input.zarr
@@ -14,4 +14,5 @@ ds = open_dataset(
14
14
  },
15
15
  source="global-dataset",
16
16
  interpolation="nearest",
17
+ k=1,
17
18
  )
@@ -9,3 +9,4 @@ dataset:
9
9
  adjust: dates
10
10
  source: global-dataset
11
11
  interpolation: nearest
12
+ k: 1
@@ -50,7 +50,7 @@ dynamic = [
50
50
  ]
51
51
  dependencies = [
52
52
  "anemoi-transform>=0.1.10",
53
- "anemoi-utils[provenance]>=0.4.21",
53
+ "anemoi-utils[provenance]>=0.4.26",
54
54
  "cfunits",
55
55
  "numcodecs<0.16", # Until we move to zarr3
56
56
  "numpy",
@@ -100,6 +100,7 @@ optional-dependencies.remote = [
100
100
  optional-dependencies.tests = [
101
101
  "anemoi-datasets[xarray]",
102
102
  "pytest",
103
+ "pytest-xdist",
103
104
  ]
104
105
 
105
106
  optional-dependencies.xarray = [
@@ -131,6 +132,13 @@ version_file = "src/anemoi/datasets/_version.py"
131
132
  [tool.isort]
132
133
  profile = "black"
133
134
 
135
+ [tool.pytest.ini_options]
136
+ testpaths = "tests"
137
+ addopts = [
138
+ "--numprocesses=auto",
139
+ "--strict-config",
140
+ ]
141
+
134
142
  [tool.mypy]
135
143
  strict = false
136
144
  exclude = [
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '0.5.24'
21
- __version_tuple__ = version_tuple = (0, 5, 24)
20
+ __version__ = version = '0.5.26'
21
+ __version_tuple__ = version_tuple = (0, 5, 26)
@@ -61,7 +61,8 @@ class FinaliseAdditions(Command):
61
61
 
62
62
  if "debug" in options:
63
63
  options.pop("debug")
64
- task(step, options)
64
+
65
+ task(step, options)
65
66
 
66
67
  LOG.info(f"Create step '{step}' completed in {seconds_to_human(time.time()-now)}")
67
68
 
@@ -55,7 +55,8 @@ class Finalise(Command):
55
55
 
56
56
  if "debug" in options:
57
57
  options.pop("debug")
58
- task(step, options)
58
+
59
+ task(step, options)
59
60
 
60
61
  LOG.info(f"Create step '{step}' completed in {seconds_to_human(time.time()-now)}")
61
62
 
@@ -81,7 +81,7 @@ class GribIndexCmd(Command):
81
81
  bool
82
82
  True if the path matches, False otherwise.
83
83
  """
84
- return fnmatch.fnmatch(path, args.match)
84
+ return fnmatch.fnmatch(os.path.basename(path), args.match)
85
85
 
86
86
  from anemoi.datasets.create.sources.grib_index import GribIndex
87
87
 
@@ -61,7 +61,8 @@ class InitAdditions(Command):
61
61
 
62
62
  if "debug" in options:
63
63
  options.pop("debug")
64
- task(step, options)
64
+
65
+ task(step, options)
65
66
 
66
67
  LOG.info(f"Create step '{step}' completed in {seconds_to_human(time.time()-now)}")
67
68
 
@@ -62,7 +62,8 @@ class LoadAdditions(Command):
62
62
 
63
63
  if "debug" in options:
64
64
  options.pop("debug")
65
- task(step, options)
65
+
66
+ task(step, options)
66
67
 
67
68
  LOG.info(f"Create step '{step}' completed in {seconds_to_human(time.time()-now)}")
68
69
 
@@ -62,7 +62,8 @@ class Load(Command):
62
62
 
63
63
  if "debug" in options:
64
64
  options.pop("debug")
65
- task(step, options)
65
+
66
+ task(step, options)
66
67
 
67
68
  LOG.info(f"Create step '{step}' completed in {seconds_to_human(time.time()-now)}")
68
69
 
@@ -44,7 +44,7 @@ from .check import check_data_values
44
44
  from .chunks import ChunkFilter
45
45
  from .config import build_output
46
46
  from .config import loader_config
47
- from .input import build_input
47
+ from .input import InputBuilder
48
48
  from .statistics import Summary
49
49
  from .statistics import TmpStatistics
50
50
  from .statistics import check_variance
@@ -101,7 +101,9 @@ def json_tidy(o: Any) -> Any:
101
101
 
102
102
 
103
103
  def build_statistics_dates(
104
- dates: list[datetime.datetime], start: Optional[datetime.datetime], end: Optional[datetime.datetime]
104
+ dates: list[datetime.datetime],
105
+ start: Optional[datetime.datetime],
106
+ end: Optional[datetime.datetime],
105
107
  ) -> tuple[str, str]:
106
108
  """Compute the start and end dates for the statistics.
107
109
 
@@ -551,36 +553,16 @@ class HasElementForDataMixin:
551
553
 
552
554
  self.output = build_output(config.output, parent=self)
553
555
 
554
- self.input = build_input_(main_config=config, output_config=self.output)
555
- # LOG.info("%s", self.input)
556
-
557
-
558
- def build_input_(main_config: Any, output_config: Any) -> Any:
559
- """Build the input for the dataset.
560
-
561
- Parameters
562
- ----------
563
- main_config : Any
564
- The main configuration.
565
- output_config : Any
566
- The output configuration.
567
-
568
- Returns
569
- -------
570
- Any
571
- The input builder.
572
- """
573
- builder = build_input(
574
- main_config.input,
575
- data_sources=main_config.get("data_sources", {}),
576
- order_by=output_config.order_by,
577
- flatten_grid=output_config.flatten_grid,
578
- remapping=build_remapping(output_config.remapping),
579
- use_grib_paramid=main_config.build.use_grib_paramid,
580
- )
581
- LOG.debug("✅ INPUT_BUILDER")
582
- LOG.debug(builder)
583
- return builder
556
+ self.input = InputBuilder(
557
+ config.input,
558
+ data_sources=config.get("data_sources", {}),
559
+ order_by=self.output.order_by,
560
+ flatten_grid=self.output.flatten_grid,
561
+ remapping=build_remapping(self.output.remapping),
562
+ use_grib_paramid=config.build.use_grib_paramid,
563
+ )
564
+ LOG.debug("✅ INPUT_BUILDER")
565
+ LOG.debug(self.input)
584
566
 
585
567
 
586
568
  class Init(Actor, HasRegistryMixin, HasStatisticTempMixin, HasElementForDataMixin):
@@ -1541,7 +1523,16 @@ class Statistics(Actor, HasStatisticTempMixin, HasRegistryMixin):
1541
1523
  if not all(self.registry.get_flags(sync=False)):
1542
1524
  raise Exception(f"❗Zarr {self.path} is not fully built, not writing statistics into dataset.")
1543
1525
 
1544
- for k in ["mean", "stdev", "minimum", "maximum", "sums", "squares", "count", "has_nans"]:
1526
+ for k in [
1527
+ "mean",
1528
+ "stdev",
1529
+ "minimum",
1530
+ "maximum",
1531
+ "sums",
1532
+ "squares",
1533
+ "count",
1534
+ "has_nans",
1535
+ ]:
1545
1536
  self.dataset.add_dataset(name=k, array=stats[k], dimensions=("variable",))
1546
1537
 
1547
1538
  self.registry.add_to_history("compute_statistics_end")
@@ -1,4 +1,4 @@
1
- # (C) Copyright 2025 Anemoi contributors.
1
+ # (C) Copyright 2025- Anemoi contributors.
2
2
  #
3
3
  # This software is licensed under the terms of the Apache Licence Version 2.0
4
4
  # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
@@ -12,10 +12,8 @@ from typing import Dict
12
12
 
13
13
  import earthkit.data as ekd
14
14
 
15
- from ..filter import Filter
16
15
 
17
-
18
- class TransformFilter(Filter):
16
+ class TransformFilter:
19
17
  """Calls filters from anemoi.transform.filters
20
18
 
21
19
  Parameters
@@ -29,7 +27,6 @@ class TransformFilter(Filter):
29
27
  """
30
28
 
31
29
  def __init__(self, context: Any, name: str, config: Dict[str, Any]) -> None:
32
-
33
30
  from anemoi.transform.filters import create_filter
34
31
 
35
32
  self.name = name
@@ -104,23 +104,3 @@ class InputBuilder:
104
104
  Trace string.
105
105
  """
106
106
  return f"InputBuilder({group_of_dates})"
107
-
108
-
109
- def build_input(config: dict, data_sources: Union[dict, list], **kwargs: Any) -> InputBuilder:
110
- """Build an InputBuilder instance.
111
-
112
- Parameters
113
- ----------
114
- config : dict
115
- Configuration dictionary.
116
- data_sources : Union[dict, list]
117
- Data sources.
118
- **kwargs : Any
119
- Additional keyword arguments.
120
-
121
- Returns
122
- -------
123
- InputBuilder
124
- An instance of InputBuilder.
125
- """
126
- return InputBuilder(config, data_sources, **kwargs)
@@ -8,7 +8,6 @@
8
8
  # nor does it submit to any jurisdiction.
9
9
 
10
10
  import logging
11
- import warnings
12
11
  from copy import deepcopy
13
12
  from typing import Any
14
13
  from typing import Dict
@@ -165,24 +164,11 @@ def step_factory(config: Dict[str, Any], context: ActionContext, action_path: Li
165
164
  if cls is not None:
166
165
  return cls(context, action_path, previous_step, *args, **kwargs)
167
166
 
168
- # Try filters from datasets filter registry
167
+ # Try filters from transform filter registry
169
168
  from anemoi.transform.filters import filter_registry as transform_filter_registry
170
169
 
171
- from ..filters import create_filter as create_datasets_filter
172
- from ..filters import filter_registry as datasets_filter_registry
173
-
174
- if datasets_filter_registry.is_registered(key):
175
-
176
- if transform_filter_registry.is_registered(key):
177
- warnings.warn(f"Filter `{key}` is registered in both datasets and transform filter registries")
178
-
179
- filter = create_datasets_filter(None, config)
180
- return FunctionStepAction(context, action_path + [key], previous_step, key, filter)
181
-
182
- # Use filters from transform registry
183
-
184
170
  if transform_filter_registry.is_registered(key):
185
- from ..filters.transform import TransformFilter
171
+ from ..filter import TransformFilter
186
172
 
187
173
  return FunctionStepAction(
188
174
  context, action_path + [key], previous_step, key, TransformFilter(context, key, config)
@@ -459,12 +459,13 @@ class AccumulationFromStart(Accumulation):
459
459
  A tuple representing the MARS date-time step.
460
460
  """
461
461
  assert user_date is None, user_date
462
- assert not frequency, frequency
463
462
 
464
463
  steps = (step1 + add_step, step2 + add_step)
465
464
  if steps[0] == 0:
466
465
  steps = (steps[1],)
467
466
 
467
+ assert frequency == 0 or frequency == (step2 - step1), frequency
468
+
468
469
  return (
469
470
  base_date.year * 10000 + base_date.month * 100 + base_date.day,
470
471
  base_date.hour * 100 + base_date.minute,
@@ -824,6 +825,11 @@ def _compute_accumulations(
824
825
  step1, step2 = user_accumulation_period
825
826
  assert step1 < step2, user_accumulation_period
826
827
 
828
+ if accumulations_reset_frequency is not None:
829
+ AccumulationClass = AccumulationFromLastReset
830
+ else:
831
+ AccumulationClass = AccumulationFromStart if data_accumulation_period in (0, None) else AccumulationFromLastStep
832
+
827
833
  if data_accumulation_period is None:
828
834
  data_accumulation_period = user_accumulation_period[1] - user_accumulation_period[0]
829
835
 
@@ -838,11 +844,6 @@ def _compute_accumulations(
838
844
 
839
845
  base_times = [t // 100 if t > 100 else t for t in base_times]
840
846
 
841
- if accumulations_reset_frequency is not None:
842
- AccumulationClass = AccumulationFromLastReset
843
- else:
844
- AccumulationClass = AccumulationFromStart if data_accumulation_period in (0, None) else AccumulationFromLastStep
845
-
846
847
  mars_date_time_steps = AccumulationClass.mars_date_time_steps(
847
848
  dates=dates,
848
849
  step1=step1,
@@ -0,0 +1,44 @@
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
+ from . import source_registry
12
+ from .xarray import XarraySourceBase
13
+
14
+
15
+ @source_registry.register("planetary_computer")
16
+ class PlanetaryComputerSource(XarraySourceBase):
17
+ """An Xarray data source for the planetary_computer."""
18
+
19
+ emoji = "🪐"
20
+
21
+ def __init__(self, context, data_catalog_id, version="v1", *args, **kwargs: dict):
22
+
23
+ import planetary_computer
24
+ import pystac_client
25
+
26
+ self.data_catalog_id = data_catalog_id
27
+ self.flavour = kwargs.pop("flavour", None)
28
+ self.patch = kwargs.pop("patch", None)
29
+ self.options = kwargs.pop("options", {})
30
+
31
+ catalog = pystac_client.Client.open(
32
+ f"https://planetarycomputer.microsoft.com/api/stac/{version}/",
33
+ modifier=planetary_computer.sign_inplace,
34
+ )
35
+ collection = catalog.get_collection(self.data_catalog_id)
36
+
37
+ asset = collection.assets["zarr-abfs"]
38
+
39
+ if "xarray:storage_options" in asset.extra_fields:
40
+ self.options["storage_options"] = asset.extra_fields["xarray:storage_options"]
41
+
42
+ self.options.update(asset.extra_fields["xarray:open_kwargs"])
43
+
44
+ super().__init__(context, url=asset.href, *args, **kwargs)