anemoi-datasets 0.5.25__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 (421) hide show
  1. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/.github/pull_request_template.md +2 -0
  2. anemoi_datasets-0.5.27/.github/workflows/pr-label-ats.yml +66 -0
  3. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/.github/workflows/python-pull-request.yml +1 -1
  4. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/.pre-commit-config.yaml +3 -3
  5. anemoi_datasets-0.5.27/.release-please-manifest.json +3 -0
  6. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/CHANGELOG.md +57 -0
  7. {anemoi_datasets-0.5.25/src/anemoi_datasets.egg-info → anemoi_datasets-0.5.27}/PKG-INFO +5 -4
  8. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/cli/introduction.rst +1 -0
  9. anemoi_datasets-0.5.27/docs/cli/validate.rst +45 -0
  10. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/conf.py +2 -2
  11. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/anemoi-dataset.rst +6 -0
  12. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/xarray-zarr.rst +6 -0
  13. anemoi_datasets-0.5.27/docs/datasets/building/sources/yaml/anemoi-zarr-dataset.yaml +3 -0
  14. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/using/combining.rst +3 -1
  15. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/howtos/create/02-cf-data.rst +9 -0
  16. anemoi_datasets-0.5.27/docs/howtos/create/04-create-with-filter.rst +117 -0
  17. anemoi_datasets-0.5.27/docs/howtos/create/yaml/recipe-filter1.yaml +31 -0
  18. anemoi_datasets-0.5.27/docs/howtos/create/yaml/recipe-filter2.yaml +35 -0
  19. anemoi_datasets-0.5.27/docs/howtos/create/yaml/zarr2.yaml +8 -0
  20. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/howtos/introduction.rst +1 -0
  21. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/howtos/usage/code/cutout-complement1.py +1 -0
  22. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/howtos/usage/yaml/cutout-complement1.yaml +1 -0
  23. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/index.rst +1 -0
  24. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/pyproject.toml +12 -3
  25. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/__init__.py +1 -2
  26. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/_version.py +16 -3
  27. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/commands/check.py +1 -1
  28. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/commands/copy.py +1 -2
  29. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/commands/create.py +1 -1
  30. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/commands/grib-index.py +1 -1
  31. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/commands/inspect.py +27 -35
  32. anemoi_datasets-0.5.27/src/anemoi/datasets/commands/validate.py +59 -0
  33. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/compute/recentre.py +3 -6
  34. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/__init__.py +22 -25
  35. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/check.py +10 -12
  36. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/chunks.py +1 -2
  37. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/config.py +3 -6
  38. anemoi_datasets-0.5.25/src/anemoi/datasets/create/filters/transform.py → anemoi_datasets-0.5.27/src/anemoi/datasets/create/filter.py +3 -7
  39. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/input/__init__.py +1 -2
  40. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/input/action.py +3 -5
  41. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/input/concat.py +5 -8
  42. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/input/context.py +3 -6
  43. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/input/data_sources.py +5 -8
  44. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/input/empty.py +1 -2
  45. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/input/filter.py +2 -3
  46. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/input/function.py +1 -2
  47. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/input/join.py +4 -5
  48. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/input/misc.py +4 -6
  49. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/input/repeated_dates.py +13 -18
  50. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/input/result.py +29 -33
  51. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/input/step.py +6 -24
  52. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/input/template.py +3 -4
  53. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/input/trace.py +1 -1
  54. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/patch.py +1 -2
  55. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/persistent.py +3 -5
  56. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/size.py +1 -3
  57. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/accumulations.py +47 -52
  58. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/accumulations2.py +4 -8
  59. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/constants.py +1 -3
  60. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/empty.py +1 -2
  61. anemoi_datasets-0.5.27/src/anemoi/datasets/create/sources/fdb.py +133 -0
  62. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/forcings.py +1 -2
  63. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/grib.py +6 -10
  64. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/grib_index.py +13 -15
  65. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/hindcasts.py +2 -5
  66. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/legacy.py +1 -1
  67. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/mars.py +17 -21
  68. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/netcdf.py +1 -2
  69. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/opendap.py +1 -3
  70. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/patterns.py +4 -6
  71. anemoi_datasets-0.5.27/src/anemoi/datasets/create/sources/planetary_computer.py +44 -0
  72. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/recentre.py +8 -11
  73. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/source.py +3 -6
  74. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/tendencies.py +2 -5
  75. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/xarray.py +4 -6
  76. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/xarray_support/__init__.py +15 -32
  77. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/xarray_support/coordinates.py +16 -12
  78. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/xarray_support/field.py +17 -16
  79. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/xarray_support/fieldlist.py +11 -15
  80. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/xarray_support/flavour.py +83 -45
  81. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/xarray_support/grid.py +15 -9
  82. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/xarray_support/metadata.py +19 -128
  83. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/xarray_support/patch.py +47 -6
  84. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/xarray_support/time.py +10 -13
  85. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/xarray_support/variable.py +27 -23
  86. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/xarray_zarr.py +1 -2
  87. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/zenodo.py +3 -5
  88. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/statistics/__init__.py +3 -6
  89. anemoi_datasets-0.5.27/src/anemoi/datasets/create/testing.py +4 -0
  90. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/typing.py +1 -2
  91. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/utils.py +1 -2
  92. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/zarr.py +7 -2
  93. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/__init__.py +15 -6
  94. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/complement.py +52 -23
  95. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/concat.py +5 -8
  96. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/dataset.py +42 -47
  97. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/debug.py +7 -9
  98. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/ensemble.py +4 -6
  99. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/fill_missing.py +7 -10
  100. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/forwards.py +30 -28
  101. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/grids.py +12 -16
  102. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/indexing.py +9 -12
  103. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/interpolate.py +7 -15
  104. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/join.py +8 -12
  105. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/masked.py +6 -11
  106. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/merge.py +5 -9
  107. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/misc.py +41 -45
  108. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/missing.py +11 -16
  109. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/observations/__init__.py +8 -14
  110. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/padded.py +3 -5
  111. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/records/backends/__init__.py +2 -2
  112. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/rescale.py +5 -12
  113. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/select.py +13 -16
  114. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/statistics.py +4 -7
  115. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/stores.py +23 -77
  116. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/subset.py +8 -11
  117. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/unchecked.py +7 -11
  118. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/xy.py +25 -21
  119. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/dates/__init__.py +13 -18
  120. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/dates/groups.py +7 -10
  121. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/grids.py +11 -12
  122. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/testing.py +93 -7
  123. anemoi_datasets-0.5.27/src/anemoi/datasets/validate.py +598 -0
  124. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27/src/anemoi_datasets.egg-info}/PKG-INFO +5 -4
  125. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi_datasets.egg-info/SOURCES.txt +20 -39
  126. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi_datasets.egg-info/requires.txt +3 -1
  127. anemoi_datasets-0.5.27/tests/conftest.py +1 -0
  128. anemoi_datasets-0.5.27/tests/create/__init__.py +0 -0
  129. anemoi_datasets-0.5.27/tests/create/run.sh +22 -0
  130. anemoi_datasets-0.5.27/tests/create/test_create.py +85 -0
  131. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/tests/create/test_sources.py +51 -19
  132. anemoi_datasets-0.5.27/tests/create/utils/__init__.py +0 -0
  133. anemoi_datasets-0.5.27/tests/create/utils/compare.py +219 -0
  134. anemoi_datasets-0.5.25/src/anemoi/datasets/create/testing.py → anemoi_datasets-0.5.27/tests/create/utils/create.py +4 -8
  135. anemoi_datasets-0.5.27/tests/create/utils/mock_sources.py +117 -0
  136. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/tests/test_data.py +38 -81
  137. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/tests/test_data_gridded.py +9 -12
  138. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/tests/test_dates.py +1 -2
  139. anemoi_datasets-0.5.27/tests/test_validate.py +234 -0
  140. anemoi_datasets-0.5.27/tests/xarray/test_flavour.py +105 -0
  141. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/tests/xarray/test_opendap.py +2 -2
  142. anemoi_datasets-0.5.27/tests/xarray/test_variable.py +83 -0
  143. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/tests/xarray/test_zarr.py +6 -29
  144. anemoi_datasets-0.5.25/.release-please-manifest.json +0 -3
  145. anemoi_datasets-0.5.25/03-constant-fields.rst +0 -3
  146. anemoi_datasets-0.5.25/docs/datasets/building/filters/empty.rst +0 -6
  147. anemoi_datasets-0.5.25/docs/datasets/building/filters/noop.rst +0 -6
  148. anemoi_datasets-0.5.25/docs/datasets/building/filters/orog_to_z.rst +0 -17
  149. anemoi_datasets-0.5.25/docs/datasets/building/filters/regrid.rst +0 -27
  150. anemoi_datasets-0.5.25/docs/datasets/building/filters/rename.rst +0 -20
  151. anemoi_datasets-0.5.25/docs/datasets/building/filters/rotate_winds.rst +0 -3
  152. anemoi_datasets-0.5.25/docs/datasets/building/filters/select.rst +0 -3
  153. anemoi_datasets-0.5.25/docs/datasets/building/filters/sum.rst +0 -13
  154. anemoi_datasets-0.5.25/docs/datasets/building/filters/unrotate_winds.rst +0 -3
  155. anemoi_datasets-0.5.25/docs/datasets/building/filters/wz_to_w.rst +0 -12
  156. anemoi_datasets-0.5.25/docs/datasets/building/filters/yaml/orog_to_z.yaml +0 -11
  157. anemoi_datasets-0.5.25/docs/datasets/building/filters/yaml/regrid1.yaml +0 -11
  158. anemoi_datasets-0.5.25/docs/datasets/building/filters/yaml/regrid2.yaml +0 -9
  159. anemoi_datasets-0.5.25/docs/datasets/building/filters/yaml/rename.yaml +0 -13
  160. anemoi_datasets-0.5.25/docs/datasets/building/filters/yaml/sum.yaml +0 -15
  161. anemoi_datasets-0.5.25/docs/datasets/building/filters/yaml/wz_to_w.yaml +0 -11
  162. anemoi_datasets-0.5.25/docs/datasets/building/filters.rst +0 -26
  163. anemoi_datasets-0.5.25/src/anemoi/datasets/create/filter.py +0 -50
  164. anemoi_datasets-0.5.25/src/anemoi/datasets/create/filters/__init__.py +0 -33
  165. anemoi_datasets-0.5.25/src/anemoi/datasets/create/filters/empty.py +0 -37
  166. anemoi_datasets-0.5.25/src/anemoi/datasets/create/filters/legacy.py +0 -93
  167. anemoi_datasets-0.5.25/src/anemoi/datasets/create/filters/noop.py +0 -37
  168. anemoi_datasets-0.5.25/src/anemoi/datasets/create/filters/orog_to_z.py +0 -58
  169. anemoi_datasets-0.5.25/src/anemoi/datasets/create/filters/pressure_level_relative_humidity_to_specific_humidity.py +0 -83
  170. anemoi_datasets-0.5.25/src/anemoi/datasets/create/filters/pressure_level_specific_humidity_to_relative_humidity.py +0 -84
  171. anemoi_datasets-0.5.25/src/anemoi/datasets/create/filters/rename.py +0 -205
  172. anemoi_datasets-0.5.25/src/anemoi/datasets/create/filters/rotate_winds.py +0 -105
  173. anemoi_datasets-0.5.25/src/anemoi/datasets/create/filters/single_level_dewpoint_to_relative_humidity.py +0 -78
  174. anemoi_datasets-0.5.25/src/anemoi/datasets/create/filters/single_level_relative_humidity_to_dewpoint.py +0 -84
  175. anemoi_datasets-0.5.25/src/anemoi/datasets/create/filters/single_level_relative_humidity_to_specific_humidity.py +0 -163
  176. anemoi_datasets-0.5.25/src/anemoi/datasets/create/filters/single_level_specific_humidity_to_relative_humidity.py +0 -451
  177. anemoi_datasets-0.5.25/src/anemoi/datasets/create/filters/speeddir_to_uv.py +0 -95
  178. anemoi_datasets-0.5.25/src/anemoi/datasets/create/filters/sum.py +0 -68
  179. anemoi_datasets-0.5.25/src/anemoi/datasets/create/filters/unrotate_winds.py +0 -105
  180. anemoi_datasets-0.5.25/src/anemoi/datasets/create/filters/uv_to_speeddir.py +0 -94
  181. anemoi_datasets-0.5.25/src/anemoi/datasets/create/filters/wz_to_w.py +0 -98
  182. anemoi_datasets-0.5.25/src/anemoi/datasets/utils/__init__.py +0 -8
  183. anemoi_datasets-0.5.25/tests/create/run.sh +0 -20
  184. anemoi_datasets-0.5.25/tests/create/test_create.py +0 -414
  185. anemoi_datasets-0.5.25/tests/xarray/test_samples.py +0 -88
  186. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/.gitattributes +0 -0
  187. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/.github/CODEOWNERS +0 -0
  188. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  189. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/.github/ci-hpc-config.yml +0 -0
  190. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/.github/dependabot.yml +0 -0
  191. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/.github/labeler.yml +0 -0
  192. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/.github/workflows/downstream-ci-hpc.yml +0 -0
  193. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/.github/workflows/pr-conventional-commit.yml +0 -0
  194. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/.github/workflows/pr-label-conventional-commits.yml +0 -0
  195. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/.github/workflows/pr-label-file-based.yml +0 -0
  196. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/.github/workflows/pr-label-public.yml +0 -0
  197. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/.github/workflows/push-to-private.yml +0 -0
  198. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/.github/workflows/python-publish.yml +0 -0
  199. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/.github/workflows/readthedocs-pr-update.yml +0 -0
  200. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/.github/workflows/release-please.yml +0 -0
  201. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/.gitignore +0 -0
  202. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/.readthedocs.yaml +0 -0
  203. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/.release-please-config.json +0 -0
  204. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/.vscode/spellright.dict +0 -0
  205. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/CONTRIBUTORS.md +0 -0
  206. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/LICENSE +0 -0
  207. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/README.md +0 -0
  208. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/Makefile +0 -0
  209. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/_static/2t_map_example.png +0 -0
  210. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/_static/area-1.png +0 -0
  211. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/_static/concat.png +0 -0
  212. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/_static/cutout-1.png +0 -0
  213. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/_static/cutout-2.png +0 -0
  214. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/_static/cutout-3.png +0 -0
  215. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/_static/cutout-4.png +0 -0
  216. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/_static/cutout-5.png +0 -0
  217. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/_static/cutout-6.png +0 -0
  218. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/_static/join.png +0 -0
  219. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/_static/logo.png +0 -0
  220. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/_static/overlay.png +0 -0
  221. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/_static/schemas/matrix.excalidraw +0 -0
  222. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/_static/schemas/matrix.png +0 -0
  223. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/_static/schemas/overview.excalidraw +0 -0
  224. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/_static/schemas/overview.png +0 -0
  225. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/_static/schemas/recipe.excalidraw +0 -0
  226. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/_static/schemas/recipe.png +0 -0
  227. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/_static/skip-missing.png +0 -0
  228. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/_static/style.css +0 -0
  229. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/_static/thinning-after.png +0 -0
  230. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/_static/thinning-before.png +0 -0
  231. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/_templates/.gitkeep +0 -0
  232. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/_templates/apidoc/package.rst.jinja +0 -0
  233. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/adr/adr-1.md +0 -0
  234. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/apply-fmt.sh +0 -0
  235. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/check-index.sh +0 -0
  236. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/cli/compare-lam.rst +0 -0
  237. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/cli/compare.rst +0 -0
  238. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/cli/copy.rst +0 -0
  239. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/cli/create.rst +0 -0
  240. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/cli/grib-index.rst +0 -0
  241. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/cli/inspect.rst +0 -0
  242. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/cli/patch.rst +0 -0
  243. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/cli/scan.rst +0 -0
  244. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/advanced-options.rst +0 -0
  245. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/handling-missing-dates.rst +0 -0
  246. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/handling-missing-values.rst +0 -0
  247. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/incremental.rst +0 -0
  248. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/introduction.rst +0 -0
  249. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/naming-conventions.rst +0 -0
  250. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/naming-variables.rst +0 -0
  251. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/operations.rst +0 -0
  252. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/accumulations.rst +0 -0
  253. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/cds.rst +0 -0
  254. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/eccc-fstd.rst +0 -0
  255. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/forcings.rst +0 -0
  256. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/grib-index.rst +0 -0
  257. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/grib.rst +0 -0
  258. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/hindcasts.rst +0 -0
  259. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/mars.rst +0 -0
  260. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/netcdf.rst +0 -0
  261. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/opendap.rst +0 -0
  262. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/recentre.rst +0 -0
  263. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/repeated-dates.rst +0 -0
  264. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/xarray-based.rst +0 -0
  265. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/xarray-kerchunk.py +0 -0
  266. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/xarray-kerchunk.rst +0 -0
  267. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/accumulations1.yaml +0 -0
  268. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/accumulations2.yaml +0 -0
  269. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/anemoi-dataset.yaml +0 -0
  270. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/eccc-fstd.yaml +0 -0
  271. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/forcings.yaml +0 -0
  272. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/grib1.yaml +0 -0
  273. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/grib2.yaml +0 -0
  274. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/grib3.yaml +0 -0
  275. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/grib4.yaml +0 -0
  276. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/hindcasts.yaml +0 -0
  277. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/mars-cds.yaml +0 -0
  278. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/mars1.yaml +0 -0
  279. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/mars2.yaml +0 -0
  280. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/netcdf.yaml +0 -0
  281. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/opendap.yaml +0 -0
  282. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/recentre.yaml +0 -0
  283. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/repeated-dates1.yaml +0 -0
  284. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/repeated-dates2.yaml +0 -0
  285. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/repeated-dates3.yaml +0 -0
  286. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/repeated-dates4.yaml +0 -0
  287. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/xarray-based.yaml +0 -0
  288. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/xarray-kerchunk.yaml +0 -0
  289. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/xarray-zarr.yaml +0 -0
  290. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/yaml/zenodo.yaml +0 -0
  291. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources/zenodo.rst +0 -0
  292. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/sources.rst +0 -0
  293. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/statistics.rst +0 -0
  294. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/building/syntax.yaml +0 -0
  295. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/introduction.rst +0 -0
  296. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/using/configuration.rst +0 -0
  297. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/using/configuration.toml +0 -0
  298. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/using/ensembles.rst +0 -0
  299. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/using/grids.rst +0 -0
  300. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/using/introduction.rst +0 -0
  301. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/using/matching.rst +0 -0
  302. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/using/methods.rst +0 -0
  303. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/using/miscellaneous.rst +0 -0
  304. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/using/missing.rst +0 -0
  305. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/using/opening.rst +0 -0
  306. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/using/other.rst +0 -0
  307. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/using/selecting.rst +0 -0
  308. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/using/statistics.rst +0 -0
  309. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/using/subsetting.rst +0 -0
  310. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/using/zip.rst +0 -0
  311. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/yaml/Makefile +0 -0
  312. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/yaml/building1.txt +0 -0
  313. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/yaml/building1.yaml +0 -0
  314. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/yaml/building2.txt +0 -0
  315. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/yaml/building2.yaml +0 -0
  316. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/yaml/building3.txt +0 -0
  317. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/yaml/building3.yaml +0 -0
  318. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/yaml/concat.yaml +0 -0
  319. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/yaml/hindcasts.yaml +0 -0
  320. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/yaml/input.yaml +0 -0
  321. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/yaml/missing_dates.yaml +0 -0
  322. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/yaml/nan.yaml +0 -0
  323. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/datasets/yaml/pipe.yaml +0 -0
  324. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/dev/contributing.rst +0 -0
  325. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/howtos/create/01-grib-data.rst +0 -0
  326. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/howtos/create/03-constant-fields.rst +0 -0
  327. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/howtos/create/yaml/grib-flavour1.yaml +0 -0
  328. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/howtos/create/yaml/grib-flavour2.yaml +0 -0
  329. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/howtos/create/yaml/grib-flavour3.yaml +0 -0
  330. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/howtos/create/yaml/grib-flavour4.yaml +0 -0
  331. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/howtos/create/yaml/grib-recipe1.yaml +0 -0
  332. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/howtos/create/yaml/grib-recipe2.yaml +0 -0
  333. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/howtos/create/yaml/grib-recipe3.yaml +0 -0
  334. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/howtos/create/yaml/grib-recipe4.yaml +0 -0
  335. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/howtos/create/yaml/grib-recipe5.yaml +0 -0
  336. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/howtos/create/yaml/netcdf1.yaml +0 -0
  337. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/howtos/create/yaml/opendap1.yaml +0 -0
  338. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/howtos/create/yaml/xarray-flavour1.yaml +0 -0
  339. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/howtos/create/yaml/xarray-patch1.yaml +0 -0
  340. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/howtos/create/yaml/xarray-patch2.yaml +0 -0
  341. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/howtos/create/yaml/zarr1.yaml +0 -0
  342. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/howtos/usage/01-interpolate-step-dataset-combination.rst +0 -0
  343. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/howtos/usage/02-coutout-complement-combination.rst +0 -0
  344. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/howtos/usage/code/interpolate1.py +0 -0
  345. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/howtos/usage/code/interpolate2.py +0 -0
  346. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/howtos/usage/yaml/interpolate1.yaml +0 -0
  347. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/howtos/usage/yaml/interpolate2.yaml +0 -0
  348. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/installing.rst +0 -0
  349. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/modules/dataset.rst +0 -0
  350. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/modules/filters.rst +0 -0
  351. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/modules/sources.rst +0 -0
  352. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/overview.rst +0 -0
  353. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/pptx/images.pptx +0 -0
  354. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/scripts/api_build.sh +0 -0
  355. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/usage/getting_started.rst +0 -0
  356. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/usage/yaml/aifs-ea-an-oper-0001-mars-o48-2020-2021-6h-v1.yaml +0 -0
  357. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/docs/using/code/trimedge1_.py +0 -0
  358. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/setup.cfg +0 -0
  359. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/__main__.py +0 -0
  360. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/check.py +0 -0
  361. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/commands/__init__.py +0 -0
  362. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/commands/cleanup.py +0 -0
  363. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/commands/compare-lam.py +0 -0
  364. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/commands/compare.py +0 -0
  365. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/commands/finalise-additions.py +0 -0
  366. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/commands/finalise.py +0 -0
  367. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/commands/init-additions.py +0 -0
  368. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/commands/init.py +0 -0
  369. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/commands/load-additions.py +0 -0
  370. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/commands/load.py +0 -0
  371. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/commands/patch.py +0 -0
  372. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/commands/publish.py +0 -0
  373. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/commands/scan.py +0 -0
  374. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/compute/__init__.py +0 -0
  375. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/input/pipe.py +0 -0
  376. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/source.py +0 -0
  377. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/__init__.py +0 -0
  378. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/anemoi_dataset.py +0 -0
  379. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/eccc_fstd.py +0 -0
  380. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/xarray_kerchunk.py +0 -0
  381. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/sources/xarray_support/README.md +0 -0
  382. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/statistics/summary.py +0 -0
  383. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/create/writer.py +0 -0
  384. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/debug.css +0 -0
  385. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/observations/legacy_obs_dataset.py +0 -0
  386. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/observations/multi.py +0 -0
  387. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi/datasets/data/records/__init__.py +0 -0
  388. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi_datasets.egg-info/dependency_links.txt +0 -0
  389. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi_datasets.egg-info/entry_points.txt +0 -0
  390. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/src/anemoi_datasets.egg-info/top_level.txt +0 -0
  391. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/tests/create/accumulation.yaml +0 -0
  392. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/tests/create/concat.yaml +0 -0
  393. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/tests/create/join.yaml +0 -0
  394. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/tests/create/missing.yaml +0 -0
  395. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/tests/create/nan.yaml +0 -0
  396. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/tests/create/pipe.yaml +0 -0
  397. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/tests/create/recentre.yaml +0 -0
  398. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/tests/create/regrid.yaml +0 -0
  399. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/tests/create-perturbations-full.yaml +0 -0
  400. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/tests/create-shift.yaml +0 -0
  401. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/tests/test_chunks.py +0 -0
  402. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/tests/test_indexing.py +0 -0
  403. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/tests/test_records.py +0 -0
  404. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/tests/xarray/test_netcdf.py +0 -0
  405. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/tools/.gitignore +0 -0
  406. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/tools/build-obs.py +0 -0
  407. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/tools/check-obs.py +0 -0
  408. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/tools/examples/Makefile +0 -0
  409. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/tools/examples/an-oper-2023-2023-2p5-6h-v1.yaml +0 -0
  410. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/tools/grids/Makefile +0 -0
  411. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/tools/grids/grids.ipynb +0 -0
  412. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/tools/grids/grids1.yaml +0 -0
  413. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/tools/grids/grids2.yaml +0 -0
  414. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/tools/grids/grids3.yaml +0 -0
  415. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/tools/grids/grids4.yaml +0 -0
  416. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/tools/grids/grids5.yaml +0 -0
  417. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/tools/grids/grids6.yaml +0 -0
  418. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/tools/grids/grids7.yaml +0 -0
  419. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/tools/grids/grids_multilam.ipynb +0 -0
  420. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/tools/make-sample-dataset.py +0 -0
  421. {anemoi_datasets-0.5.25 → anemoi_datasets-0.5.27}/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)
@@ -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,63 @@ 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
+
41
+ ## [0.5.26](https://github.com/ecmwf/anemoi-datasets/compare/0.5.25...0.5.26) (2025-07-11)
42
+
43
+
44
+ ### Features
45
+
46
+ * Add planetary planetary source ([#368](https://github.com/ecmwf/anemoi-datasets/issues/368)) ([c85337f](https://github.com/ecmwf/anemoi-datasets/commit/c85337f4b08381dc1e2e8ba71134c998c6258c2d))
47
+ * 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))
48
+ * 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))
49
+ * Point data ([#358](https://github.com/ecmwf/anemoi-datasets/issues/358)) ([78c4f85](https://github.com/ecmwf/anemoi-datasets/commit/78c4f85bf9cd4d6cc7f17268c8c526da32158220))
50
+ * Relaxed compatibility check for horizontal grid. ([#339](https://github.com/ecmwf/anemoi-datasets/issues/339)) ([a7dc859](https://github.com/ecmwf/anemoi-datasets/commit/a7dc859b6ec2fb0bad2ed7b7b8ee3c76034a258b))
51
+ * Sort xarray coordinate with patch ([#356](https://github.com/ecmwf/anemoi-datasets/issues/356)) ([638cbdb](https://github.com/ecmwf/anemoi-datasets/commit/638cbdb013b94b87748654ae338e0d02e69c1900))
52
+ * 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))
53
+
54
+
55
+ ### Bug Fixes
56
+
57
+ * Deprecated filters in anemoi datasets ([#350](https://github.com/ecmwf/anemoi-datasets/issues/350)) ([d08c6f5](https://github.com/ecmwf/anemoi-datasets/commit/d08c6f55c3d983c930480bd777e74fd5a5bea6eb))
58
+ * **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))
59
+ * Missing method in xarray flavour ([#369](https://github.com/ecmwf/anemoi-datasets/issues/369)) ([d0b9588](https://github.com/ecmwf/anemoi-datasets/commit/d0b9588f0bff626ae751a74cf4cbbc373a2f67f4))
60
+ * Remove trailing slash from zarr paths. ([#362](https://github.com/ecmwf/anemoi-datasets/issues/362)) ([9a9bfe5](https://github.com/ecmwf/anemoi-datasets/commit/9a9bfe50406d299f44f7cce7e3befcabef6fefaf))
61
+
62
+
63
+ ### Documentation
64
+
65
+ * Fix pre-commit ([#367](https://github.com/ecmwf/anemoi-datasets/issues/367)) ([6e6ebe2](https://github.com/ecmwf/anemoi-datasets/commit/6e6ebe2e81fc735a2af422b8c222b0a2f229d8dc))
66
+ * Zarr dataset creation ([#365](https://github.com/ecmwf/anemoi-datasets/issues/365)) ([622c261](https://github.com/ecmwf/anemoi-datasets/commit/622c26156de44ae4eaa3359fef836741b1d81d67))
67
+
11
68
  ## [0.5.25](https://github.com/ecmwf/anemoi-datasets/compare/0.5.24...0.5.25) (2025-06-11)
12
69
 
13
70
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: anemoi-datasets
3
- Version: 0.5.25
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.21
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,8 @@ 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
+ 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"
@@ -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:
@@ -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,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
@@ -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
@@ -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
@@ -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
@@ -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.21",
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,8 @@ optional-dependencies.remote = [
100
99
  optional-dependencies.tests = [
101
100
  "anemoi-datasets[xarray]",
102
101
  "pytest",
102
+ "pytest-skip-slow",
103
+ "pytest-xdist",
103
104
  ]
104
105
 
105
106
  optional-dependencies.xarray = [
@@ -131,6 +132,14 @@ 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
+ "--maxprocesses=16",
140
+ "--strict-config",
141
+ ]
142
+
134
143
  [tool.mypy]
135
144
  strict = false
136
145
  exclude = [
@@ -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",