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