anemoi-datasets 0.5.0__tar.gz → 0.5.6__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 (348) hide show
  1. anemoi_datasets-0.5.6/.github/ISSUE_TEMPLATE/bug_report.md +40 -0
  2. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/.gitignore +1 -0
  3. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/.pre-commit-config.yaml +1 -1
  4. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/CHANGELOG.md +41 -14
  5. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/PKG-INFO +1 -1
  6. anemoi_datasets-0.5.6/docs/building/filters/rename.rst +6 -0
  7. anemoi_datasets-0.5.6/docs/building/filters/yaml/rename.yaml +4 -0
  8. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/sources/accumulations.rst +2 -2
  9. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/sources/forcings.rst +1 -1
  10. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/sources/mars.rst +2 -2
  11. anemoi_datasets-0.5.6/docs/building/sources/netcdf.rst +8 -0
  12. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/sources/opendap.rst +1 -1
  13. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/sources/recentre.rst +1 -1
  14. anemoi_datasets-0.5.6/docs/building/sources/repeated_dates.rst +39 -0
  15. anemoi_datasets-0.5.6/docs/building/sources/xarray-based.rst +13 -0
  16. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/sources/xarray-kerchunk.rst +1 -1
  17. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/sources/xarray-zarr.rst +1 -1
  18. anemoi_datasets-0.5.6/docs/building/sources/yaml/hindcasts.yaml +3 -0
  19. anemoi_datasets-0.5.6/docs/building/sources/yaml/repeated_dates1.yaml +6 -0
  20. anemoi_datasets-0.5.6/docs/building/sources/yaml/repeated_dates2.yaml +6 -0
  21. anemoi_datasets-0.5.6/docs/building/sources/yaml/repeated_dates3.yaml +8 -0
  22. anemoi_datasets-0.5.6/docs/building/sources/yaml/repeated_dates4.yaml +9 -0
  23. anemoi_datasets-0.5.6/docs/building/sources/yaml/xarray-based.yaml +3 -0
  24. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/sources/zenodo.rst +1 -1
  25. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/sources.rst +1 -0
  26. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/index.rst +3 -3
  27. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/_version.py +2 -2
  28. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/commands/inspect.py +1 -1
  29. anemoi_datasets-0.5.6/src/anemoi/datasets/commands/publish.py +30 -0
  30. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/__init__.py +42 -3
  31. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/check.py +6 -0
  32. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/functions/filters/rename.py +2 -3
  33. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/functions/sources/__init__.py +7 -1
  34. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/functions/sources/accumulations.py +2 -0
  35. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/functions/sources/grib.py +1 -1
  36. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/functions/sources/xarray/__init__.py +7 -2
  37. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/functions/sources/xarray/coordinates.py +12 -1
  38. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/functions/sources/xarray/field.py +13 -4
  39. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/functions/sources/xarray/fieldlist.py +16 -16
  40. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/functions/sources/xarray/flavour.py +130 -13
  41. anemoi_datasets-0.5.6/src/anemoi/datasets/create/functions/sources/xarray/grid.py +135 -0
  42. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/functions/sources/xarray/metadata.py +3 -11
  43. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/functions/sources/xarray/time.py +1 -5
  44. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/functions/sources/xarray/variable.py +10 -10
  45. anemoi_datasets-0.5.6/src/anemoi/datasets/create/input/__init__.py +69 -0
  46. anemoi_datasets-0.5.6/src/anemoi/datasets/create/input/action.py +123 -0
  47. anemoi_datasets-0.5.6/src/anemoi/datasets/create/input/concat.py +92 -0
  48. anemoi_datasets-0.5.6/src/anemoi/datasets/create/input/context.py +59 -0
  49. anemoi_datasets-0.5.6/src/anemoi/datasets/create/input/data_sources.py +71 -0
  50. anemoi_datasets-0.5.6/src/anemoi/datasets/create/input/empty.py +42 -0
  51. anemoi_datasets-0.5.6/src/anemoi/datasets/create/input/filter.py +76 -0
  52. anemoi_datasets-0.5.6/src/anemoi/datasets/create/input/function.py +122 -0
  53. anemoi_datasets-0.5.6/src/anemoi/datasets/create/input/join.py +57 -0
  54. anemoi_datasets-0.5.6/src/anemoi/datasets/create/input/misc.py +85 -0
  55. anemoi_datasets-0.5.6/src/anemoi/datasets/create/input/pipe.py +33 -0
  56. anemoi_datasets-0.5.6/src/anemoi/datasets/create/input/repeated_dates.py +217 -0
  57. anemoi_datasets-0.5.6/src/anemoi/datasets/create/input/result.py +413 -0
  58. anemoi_datasets-0.5.6/src/anemoi/datasets/create/input/step.py +99 -0
  59. {anemoi_datasets-0.5.0/src/anemoi/datasets/create → anemoi_datasets-0.5.6/src/anemoi/datasets/create/input}/template.py +0 -42
  60. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/statistics/__init__.py +1 -1
  61. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/zarr.py +4 -2
  62. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/dates/__init__.py +1 -0
  63. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/dates/groups.py +12 -4
  64. anemoi_datasets-0.5.6/src/anemoi/datasets/fields.py +66 -0
  65. anemoi_datasets-0.5.6/src/anemoi/datasets/utils/fields.py +47 -0
  66. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi_datasets.egg-info/PKG-INFO +1 -1
  67. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi_datasets.egg-info/SOURCES.txt +38 -14
  68. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/tests/xarray/test_zarr.py +44 -22
  69. anemoi_datasets-0.5.0/docs/building/filters/rename.rst +0 -3
  70. anemoi_datasets-0.5.0/docs/building/sources/hindcasts.yaml +0 -0
  71. anemoi_datasets-0.5.0/docs/building/sources/netcdf.rst +0 -6
  72. anemoi_datasets-0.5.0/docs/building/sources/yaml/hindcasts.yaml +0 -2
  73. anemoi_datasets-0.5.0/src/anemoi/datasets/create/functions/sources/xarray/grid.py +0 -46
  74. anemoi_datasets-0.5.0/src/anemoi/datasets/create/input.py +0 -1087
  75. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/.gitattributes +0 -0
  76. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/.github/CODEOWNERS +0 -0
  77. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/.github/ci-config.yml +0 -0
  78. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/.github/ci-hpc-config.yml +0 -0
  79. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/.github/workflows/changelog-pr-update.yml +0 -0
  80. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/.github/workflows/changelog-release-update.yml +0 -0
  81. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/.github/workflows/ci.yml +0 -0
  82. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/.github/workflows/label-public-pr.yml +0 -0
  83. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/.github/workflows/python-publish.yml +0 -0
  84. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/.github/workflows/python-pull-request.yml +0 -0
  85. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/.github/workflows/readthedocs-pr-update.yml +0 -0
  86. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/.readthedocs.yaml +0 -0
  87. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/.vscode/spellright.dict +0 -0
  88. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/LICENSE +0 -0
  89. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/README.md +0 -0
  90. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/Makefile +0 -0
  91. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/_static/logo.png +0 -0
  92. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/_static/style.css +0 -0
  93. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/_templates/.gitkeep +0 -0
  94. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/apply-fmt.sh +0 -0
  95. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/advanced-options.rst +0 -0
  96. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/filters/empty.rst +0 -0
  97. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/filters/noop.rst +0 -0
  98. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/filters/rotate_winds.rst +0 -0
  99. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/filters/select.rst +0 -0
  100. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/filters/unrotate_winds.rst +0 -0
  101. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/filters.rst +0 -0
  102. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/handling-missing-dates.rst +0 -0
  103. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/handling-missing-values.rst +0 -0
  104. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/incremental.rst +0 -0
  105. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/introduction.rst +0 -0
  106. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/naming-variables.rst +0 -0
  107. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/operations.rst +0 -0
  108. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/sources/grib.rst +0 -0
  109. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/sources/hindcasts.rst +0 -0
  110. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/sources/xarray-kerchunk.py +0 -0
  111. {anemoi_datasets-0.5.0/docs/building/sources → anemoi_datasets-0.5.6/docs/building/sources/yaml}/accumulations1.yaml +0 -0
  112. {anemoi_datasets-0.5.0/docs/building/sources → anemoi_datasets-0.5.6/docs/building/sources/yaml}/accumulations2.yaml +0 -0
  113. {anemoi_datasets-0.5.0/docs/building/sources → anemoi_datasets-0.5.6/docs/building/sources/yaml}/forcings.yaml +0 -0
  114. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/sources/yaml/grib1.yaml +0 -0
  115. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/sources/yaml/grib2.yaml +0 -0
  116. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/sources/yaml/grib3.yaml +0 -0
  117. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/sources/yaml/grib4.yaml +0 -0
  118. {anemoi_datasets-0.5.0/docs/building/sources → anemoi_datasets-0.5.6/docs/building/sources/yaml}/mars1.yaml +0 -0
  119. {anemoi_datasets-0.5.0/docs/building/sources → anemoi_datasets-0.5.6/docs/building/sources/yaml}/mars2.yaml +0 -0
  120. {anemoi_datasets-0.5.0/docs/building/sources → anemoi_datasets-0.5.6/docs/building/sources/yaml}/netcdf.yaml +0 -0
  121. {anemoi_datasets-0.5.0/docs/building/sources → anemoi_datasets-0.5.6/docs/building/sources/yaml}/opendap.yaml +0 -0
  122. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/sources/yaml/recentre.yaml +0 -0
  123. {anemoi_datasets-0.5.0/docs/building/sources → anemoi_datasets-0.5.6/docs/building/sources/yaml}/xarray-kerchunk.yaml +0 -0
  124. {anemoi_datasets-0.5.0/docs/building/sources → anemoi_datasets-0.5.6/docs/building/sources/yaml}/xarray-zarr.yaml +0 -0
  125. {anemoi_datasets-0.5.0/docs/building/sources → anemoi_datasets-0.5.6/docs/building/sources/yaml}/zenodo.yaml +0 -0
  126. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/statistics.rst +0 -0
  127. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/syntax.yaml +0 -0
  128. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/yaml/Makefile +0 -0
  129. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/yaml/building1.txt +0 -0
  130. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/yaml/building1.yaml +0 -0
  131. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/yaml/building2.txt +0 -0
  132. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/yaml/building2.yaml +0 -0
  133. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/yaml/building3.txt +0 -0
  134. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/yaml/building3.yaml +0 -0
  135. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/yaml/concat.yaml +0 -0
  136. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/yaml/hindcasts.yaml +0 -0
  137. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/yaml/input.yaml +0 -0
  138. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/yaml/missing_dates.yaml +0 -0
  139. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/yaml/nan.yaml +0 -0
  140. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/building/yaml/pipe.yaml +0 -0
  141. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/check-index.sh +0 -0
  142. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/cli/compare.rst +0 -0
  143. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/cli/copy.rst +0 -0
  144. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/cli/create.rst +0 -0
  145. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/cli/inspect.rst +0 -0
  146. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/cli/introduction.rst +0 -0
  147. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/cli/scan.rst +0 -0
  148. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/conf.py +0 -0
  149. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/images.pptx +0 -0
  150. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/installing.rst +0 -0
  151. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/overview.rst +0 -0
  152. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/overview_.py +0 -0
  153. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/schemas/matrix.excalidraw +0 -0
  154. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/schemas/matrix.png +0 -0
  155. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/schemas/overview.excalidraw +0 -0
  156. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/schemas/overview.png +0 -0
  157. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/schemas/recipe.excalidraw +0 -0
  158. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/schemas/recipe.png +0 -0
  159. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/area1_.py +0 -0
  160. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/area2_.py +0 -0
  161. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/chain_.py +0 -0
  162. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/combine_example.py +0 -0
  163. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/concat1.py +0 -0
  164. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/cutout_.py +0 -0
  165. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/drop_.py +0 -0
  166. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/end_.py +0 -0
  167. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/ensembles1_.py +0 -0
  168. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/fill_missing_gaps_.py +0 -0
  169. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/frequency1_.py +0 -0
  170. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/frequency2_.py +0 -0
  171. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/grids1_.py +0 -0
  172. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/iterating_missing_dates1_.py +0 -0
  173. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/iterating_missing_dates2_.py +0 -0
  174. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/iterating_missing_dates3_.py +0 -0
  175. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/join1.py +0 -0
  176. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/matching0_.py +0 -0
  177. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/matching1_.py +0 -0
  178. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/matching2_.py +0 -0
  179. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/matching3_.py +0 -0
  180. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/matching4_.py +0 -0
  181. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/misc1.py +0 -0
  182. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/misc2.py +0 -0
  183. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/missing_.py +0 -0
  184. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/missing_dates_.py +0 -0
  185. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/open_cloud.py +0 -0
  186. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/open_combine1_.py +0 -0
  187. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/open_combine2_.py +0 -0
  188. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/open_complex.py +0 -0
  189. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/open_dict_.py +0 -0
  190. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/open_first_.py +0 -0
  191. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/open_list_.py +0 -0
  192. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/open_name.py +0 -0
  193. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/open_other.py +0 -0
  194. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/open_path.py +0 -0
  195. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/open_yaml_.py +0 -0
  196. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/rename_.py +0 -0
  197. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/reorder1_.py +0 -0
  198. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/reorder2_.py +0 -0
  199. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/rescale_.py +0 -0
  200. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/select1_.py +0 -0
  201. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/select2_.py +0 -0
  202. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/shuffle_.py +0 -0
  203. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/some_attributes_.py +0 -0
  204. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/start_.py +0 -0
  205. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/statistics_.py +0 -0
  206. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/subset_example.py +0 -0
  207. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/thinning_.py +0 -0
  208. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/xy1_.py +0 -0
  209. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/xy2_.py +0 -0
  210. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/zip1_.py +0 -0
  211. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/zip2_.py +0 -0
  212. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/code/zip_xy_.py +0 -0
  213. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/combining.rst +0 -0
  214. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/configuration.rst +0 -0
  215. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/configuration.toml +0 -0
  216. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/grids.rst +0 -0
  217. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/images/area-1.png +0 -0
  218. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/images/concat.png +0 -0
  219. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/images/cutout-1.png +0 -0
  220. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/images/cutout-2.png +0 -0
  221. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/images/cutout-3.png +0 -0
  222. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/images/cutout-4.png +0 -0
  223. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/images/cutout-5.png +0 -0
  224. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/images/cutout-6.png +0 -0
  225. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/images/join.png +0 -0
  226. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/images/overlay.png +0 -0
  227. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/images/skip-missing.png +0 -0
  228. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/images/thinning-after.png +0 -0
  229. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/images/thinning-before.png +0 -0
  230. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/introduction.rst +0 -0
  231. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/matching.rst +0 -0
  232. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/methods.rst +0 -0
  233. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/miscellaneous.rst +0 -0
  234. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/missing.rst +0 -0
  235. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/opening.rst +0 -0
  236. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/other.rst +0 -0
  237. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/selecting.rst +0 -0
  238. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/statistics.rst +0 -0
  239. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/subsetting.rst +0 -0
  240. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/docs/using/zip.rst +0 -0
  241. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/pyproject.toml +0 -0
  242. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/setup.cfg +0 -0
  243. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/__init__.py +0 -0
  244. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/__main__.py +0 -0
  245. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/commands/__init__.py +0 -0
  246. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/commands/cleanup.py +0 -0
  247. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/commands/compare.py +0 -0
  248. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/commands/copy.py +0 -0
  249. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/commands/create.py +0 -0
  250. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/commands/finalise-additions.py +0 -0
  251. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/commands/finalise.py +0 -0
  252. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/commands/init-additions.py +0 -0
  253. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/commands/init.py +0 -0
  254. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/commands/load-additions.py +0 -0
  255. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/commands/load.py +0 -0
  256. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/commands/patch.py +0 -0
  257. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/commands/scan.py +0 -0
  258. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/compute/__init__.py +0 -0
  259. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/compute/recentre.py +0 -0
  260. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/chunks.py +0 -0
  261. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/config.py +0 -0
  262. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/functions/__init__.py +0 -0
  263. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/functions/filters/__init__.py +0 -0
  264. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/functions/filters/empty.py +0 -0
  265. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/functions/filters/noop.py +0 -0
  266. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/functions/filters/pressure_level_relative_humidity_to_specific_humidity.py +0 -0
  267. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/functions/filters/pressure_level_specific_humidity_to_relative_humidity.py +0 -0
  268. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/functions/filters/rotate_winds.py +0 -0
  269. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/functions/filters/single_level_dewpoint_to_relative_humidity.py +0 -0
  270. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/functions/filters/single_level_relative_humidity_to_dewpoint.py +0 -0
  271. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/functions/filters/single_level_relative_humidity_to_specific_humidity.py +0 -0
  272. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/functions/filters/single_level_specific_humidity_to_relative_humidity.py +0 -0
  273. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/functions/filters/speeddir_to_uv.py +0 -0
  274. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/functions/filters/unrotate_winds.py +0 -0
  275. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/functions/filters/uv_to_speeddir.py +0 -0
  276. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/functions/sources/constants.py +0 -0
  277. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/functions/sources/empty.py +0 -0
  278. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/functions/sources/forcings.py +0 -0
  279. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/functions/sources/hindcasts.py +0 -0
  280. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/functions/sources/mars.py +0 -0
  281. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/functions/sources/netcdf.py +0 -0
  282. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/functions/sources/opendap.py +0 -0
  283. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/functions/sources/recentre.py +0 -0
  284. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/functions/sources/source.py +0 -0
  285. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/functions/sources/tendencies.py +0 -0
  286. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/functions/sources/xarray_kerchunk.py +0 -0
  287. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/functions/sources/xarray_zarr.py +0 -0
  288. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/functions/sources/zenodo.py +0 -0
  289. {anemoi_datasets-0.5.0/src/anemoi/datasets/create → anemoi_datasets-0.5.6/src/anemoi/datasets/create/input}/trace.py +0 -0
  290. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/patch.py +0 -0
  291. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/persistent.py +0 -0
  292. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/size.py +0 -0
  293. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/statistics/summary.py +0 -0
  294. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/utils.py +0 -0
  295. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/create/writer.py +0 -0
  296. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/data/__init__.py +0 -0
  297. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/data/concat.py +0 -0
  298. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/data/dataset.py +0 -0
  299. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/data/debug.css +0 -0
  300. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/data/debug.py +0 -0
  301. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/data/ensemble.py +0 -0
  302. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/data/forwards.py +0 -0
  303. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/data/grids.py +0 -0
  304. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/data/indexing.py +0 -0
  305. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/data/interpolate.py +0 -0
  306. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/data/join.py +0 -0
  307. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/data/masked.py +0 -0
  308. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/data/misc.py +0 -0
  309. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/data/missing.py +0 -0
  310. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/data/rescale.py +0 -0
  311. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/data/select.py +0 -0
  312. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/data/statistics.py +0 -0
  313. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/data/stores.py +0 -0
  314. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/data/subset.py +0 -0
  315. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/data/unchecked.py +0 -0
  316. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/data/xy.py +0 -0
  317. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/grids.py +0 -0
  318. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi/datasets/utils/__init__.py +0 -0
  319. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi_datasets.egg-info/dependency_links.txt +0 -0
  320. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi_datasets.egg-info/entry_points.txt +0 -0
  321. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi_datasets.egg-info/requires.txt +0 -0
  322. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/src/anemoi_datasets.egg-info/top_level.txt +0 -0
  323. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/tests/create/concat.yaml +0 -0
  324. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/tests/create/data_sources.yaml +0 -0
  325. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/tests/create/join.yaml +0 -0
  326. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/tests/create/missing.yaml +0 -0
  327. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/tests/create/nan.yaml +0 -0
  328. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/tests/create/pipe.yaml +0 -0
  329. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/tests/create/recentre.yaml +0 -0
  330. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/tests/create/run.sh +0 -0
  331. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/tests/create/test_create.py +0 -0
  332. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/tests/create-perturbations-full.yaml +0 -0
  333. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/tests/create-shift.yaml +0 -0
  334. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/tests/test_chunks.py +0 -0
  335. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/tests/test_data.py +0 -0
  336. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/tests/test_dates.py +0 -0
  337. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/tests/test_indexing.py +0 -0
  338. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/tests/xarray/test_kerchunk.py +0 -0
  339. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/tests/xarray/test_netcdf.py +0 -0
  340. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/tests/xarray/test_opendap.py +0 -0
  341. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/tools/.gitignore +0 -0
  342. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/tools/examples/Makefile +0 -0
  343. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/tools/examples/an-oper-2023-2023-2p5-6h-v1.yaml +0 -0
  344. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/tools/grids/Makefile +0 -0
  345. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/tools/grids/grids.ipynb +0 -0
  346. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/tools/grids/grids1.yaml +0 -0
  347. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/tools/grids/grids2.yaml +0 -0
  348. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.6}/tools/upload-sample-dataset.py +0 -0
@@ -0,0 +1,40 @@
1
+ ---
2
+ name: Bug report
3
+ about: Create a report to help us improve. **❗ IMPORTANT:** If you have difficulties creating a dataset from any source, please provide us with a sample data file or a URL to the source data.
4
+ title: ''
5
+ labels: ''
6
+ assignees: ''
7
+
8
+ ---
9
+ **Describe the bug**
10
+ A clear and concise description of what the bug is.
11
+
12
+ **To Reproduce**
13
+ Steps to reproduce the behavior:
14
+ 1. Go to '...'
15
+ 2. Click on '....'
16
+ 3. Scroll down to '....'
17
+ 4. See error
18
+
19
+ **URL to sample input data**
20
+ Provide a URL to a sample input data, or attach a file to that report if it is small enough.
21
+
22
+ **Expected behavior**
23
+ A clear and concise description of what you expected to happen.
24
+
25
+ **Screenshots**
26
+ If applicable, add screenshots to help explain your problem.
27
+
28
+ **Desktop (please complete the following information):**
29
+ - OS: [e.g. iOS]
30
+ - Browser [e.g. chrome, safari]
31
+ - Version [e.g. 22]
32
+
33
+ **Smartphone (please complete the following information):**
34
+ - Device: [e.g. iPhone6]
35
+ - OS: [e.g. iOS8.1]
36
+ - Browser [e.g. stock browser, safari]
37
+ - Version [e.g. 22]
38
+
39
+ **Additional context**
40
+ Add any other context about the problem here.
@@ -194,3 +194,4 @@ _dev/
194
194
  test.ipynb
195
195
  *tmp_data/
196
196
  tempCodeRunnerFile.python
197
+ Untitled-*.py
@@ -44,7 +44,7 @@ repos:
44
44
  hooks:
45
45
  - id: ruff
46
46
  # Next line if for documenation cod snippets
47
- exclude: '^[^_].*_\.py$'
47
+ exclude: '.*/[^_].*_\.py$'
48
48
  args:
49
49
  - --line-length=120
50
50
  - --fix
@@ -8,11 +8,37 @@ 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
- ## [Unreleased]
11
+ ## [Unreleased](https://github.com/ecmwf/anemoi-datasets/compare/0.5.5...HEAD)
12
+
13
+ ## [0.5.5](https://github.com/ecmwf/anemoi-datasets/compare/0.5.4...0.5.5) - 2024-10-04
14
+
15
+ ### Changed
16
+
17
+ - Allow for unknown coordinates when parsing CF input
18
+
19
+ ## [Add support for (semi-)constant fields](https://github.com/ecmwf/anemoi-datasets/compare/0.5.1...0.5.2) - 2024-10-03
20
+
21
+ ### Changed
22
+
23
+ - Fix failing zarr lat/lon tests
24
+
25
+ ## [Bug fixes](https://github.com/ecmwf/anemoi-datasets/compare/0.5.0...0.5.1) - 2024-10-01
26
+
27
+ ### Added
28
+
29
+ - Adding the user recipe in the dataset PR #59.
30
+ - Add `repeated_dates` action in create.
31
+
32
+ ### Changed
33
+
34
+ - Bug fix in create/rename
35
+
36
+ ## [0.5.0 - Incremental builds and Rescaling](https://github.com/ecmwf/anemoi-datasets/compare/0.4.5...0.5.0) - 2024-09-25
12
37
 
13
38
  ### Added
14
39
 
15
40
  - New `rescale` keyword in `open_dataset` to change units of variables #36
41
+ - Add support for constant fields when creating datasets
16
42
  - Simplify imports
17
43
 
18
44
  ### Changed
@@ -25,9 +51,10 @@ Keep it human-readable, your future self will thank you!
25
51
  - add paths-ignore to ci workflow
26
52
 
27
53
  ### Removed
54
+
28
55
  - pytest for notebooks
29
56
 
30
- ## [0.4.5]
57
+ ## [0.4.5](https://github.com/ecmwf/anemoi-datasets/compare/0.4.4...0.4.5)
31
58
 
32
59
  ### Added
33
60
 
@@ -47,48 +74,48 @@ Keep it human-readable, your future self will thank you!
47
74
 
48
75
  ### Removed
49
76
 
50
- ## [0.4.4] Bug fixes
77
+ ## [0.4.4](https://github.com/ecmwf/anemoi-datasets/compare/0.4.0...0.4.4) Bug fixes
51
78
 
52
79
  - Bug fix in accumulations() that did not work with webmars
53
80
  - Bug fix when using hindcasts input (missing dates on leap years)
54
81
 
55
- ## [0.4.0] Minor Release
82
+ ## [0.4.0](https://github.com/ecmwf/anemoi-datasets/compare/0.3.0...0.4.0) Minor Release
56
83
 
57
84
  ### Added
85
+
58
86
  - earthkit-data replaces climetlab
59
87
 
60
88
  ### Removed
89
+
61
90
  - climetlab
62
91
 
63
- ## [0.3.0] Minor Release
92
+ ## [0.3.0](https://github.com/ecmwf/anemoi-datasets/compare/0.2.0...0.3.0) Minor Release
64
93
 
65
94
  ### Added
95
+
66
96
  - hindcast source
67
97
 
68
98
  ### Changed
99
+
69
100
  - updated documentation
70
101
 
71
- ## [0.2.0] Minor Release
102
+ ## [0.2.0](https://github.com/ecmwf/anemoi-datasets/compare/0.1.0...0.2.0) Minor Release
72
103
 
73
104
  ### Added
105
+
74
106
  - statistics tendencies
75
107
 
76
108
  ### Removed
109
+
77
110
  - CubesFilter
78
111
 
79
- ## [0.1.0] Initial Release
112
+ ## [0.1.0](https://github.com/ecmwf/anemoi-models/releases/tag/0.1.0) Initial Release
80
113
 
81
114
  ### Added
115
+
82
116
  - Documentation
83
117
  - Initial code release for anemoi-datasets: create datasets for data-driven weather-models
84
118
  - open datasets
85
119
  - combine datasets
86
120
 
87
121
  ## Git Diffs:
88
- [Unreleased]: https://github.com/ecmwf/anemoi-datasets/compare/0.4.5...HEAD
89
- [0.4.5]: https://github.com/ecmwf/anemoi-datasets/compare/0.4.4...0.4.5
90
- [0.4.4]: https://github.com/ecmwf/anemoi-datasets/compare/0.4.0...0.4.4
91
- [0.4.0]: https://github.com/ecmwf/anemoi-datasets/compare/0.3.0...0.4.0
92
- [0.3.0]: https://github.com/ecmwf/anemoi-datasets/compare/0.2.0...0.3.0
93
- [0.2.0]: https://github.com/ecmwf/anemoi-datasets/compare/0.1.0...0.2.0
94
- [0.1.0]: https://github.com/ecmwf/anemoi-models/releases/tag/0.1.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: anemoi-datasets
3
- Version: 0.5.0
3
+ Version: 0.5.6
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
@@ -0,0 +1,6 @@
1
+ ########
2
+ rename
3
+ ########
4
+
5
+ .. literalinclude:: yaml/rename.yaml
6
+ :language: yaml
@@ -0,0 +1,4 @@
1
+ rename:
2
+ param:
3
+ from: "old"
4
+ to: "new"
@@ -54,12 +54,12 @@ accumulation between step 1h and step 7h if it is the most appropriate
54
54
  data available, while in the second case, the source will always return
55
55
  the accumulation between step 0h and step 6h, if available.
56
56
 
57
- .. literalinclude:: accumulations1.yaml
57
+ .. literalinclude:: yaml/accumulations1.yaml
58
58
  :language: yaml
59
59
 
60
60
  or:
61
61
 
62
- .. literalinclude:: accumulations2.yaml
62
+ .. literalinclude:: yaml/accumulations2.yaml
63
63
  :language: yaml
64
64
 
65
65
  .. [1]
@@ -11,7 +11,7 @@ Because the source needs to generate fields on the same grids as the
11
11
  other, it requires a template field. This is provided in the recipe with
12
12
  the ``template`` keyword:
13
13
 
14
- .. literalinclude:: forcings.yaml
14
+ .. literalinclude:: yaml/forcings.yaml
15
15
  :language: yaml
16
16
 
17
17
  .. _yaml-reference:
@@ -13,13 +13,13 @@ specification`_, with the exception of the ``date``, ``time``` and
13
13
  The missing keys will be filled with the default values, as defined in
14
14
  the MARS language specification.
15
15
 
16
- .. literalinclude:: mars1.yaml
16
+ .. literalinclude:: yaml/mars1.yaml
17
17
  :language: yaml
18
18
 
19
19
  Data from several levels types must be requested in separate requests,
20
20
  with the ``join`` command.
21
21
 
22
- .. literalinclude:: mars2.yaml
22
+ .. literalinclude:: yaml/mars2.yaml
23
23
  :language: yaml
24
24
 
25
25
  See :ref:`naming-variables` for information on how to name the variables
@@ -0,0 +1,8 @@
1
+ ########
2
+ netcdf
3
+ ########
4
+
5
+ .. literalinclude:: yaml/netcdf.yaml
6
+ :language: yaml
7
+
8
+ .. include:: xarray-based.rst
@@ -2,5 +2,5 @@
2
2
  opendap
3
3
  #########
4
4
 
5
- .. literalinclude:: opendap.yaml
5
+ .. literalinclude:: yaml/opendap.yaml
6
6
  :language: yaml
@@ -19,7 +19,7 @@ formula:
19
19
 
20
20
  Additionally, some variables must be non-negative to have a physical
21
21
  meaning (e.g. accumulated variables or `specific humidity`). To ensure
22
- this, positive clipping is performed using the alternative fomula :
22
+ this, positive clipping is performed using the alternative formula:
23
23
 
24
24
  .. math::
25
25
 
@@ -0,0 +1,39 @@
1
+ ################
2
+ repeated_dates
3
+ ################
4
+
5
+ The `repeated_dates` source is used to repeat a single source multiple
6
+ times, so that its data is present at multiple dates. A simple example
7
+ of this is when you have source that contains a constant field, such as
8
+ orography or bathymetry, that you want to have repeated at all the dates
9
+ of the dataset.
10
+
11
+ The generale format of the `repeated_dates` source is:
12
+
13
+ .. literalinclude:: yaml/repeated_dates1.yaml
14
+ :language: yaml
15
+
16
+ where ``source`` is any of the :ref:`operations <operations>` or
17
+ :ref:`sources <sources>` described in the previous sections. The
18
+ ``mode`` parameter can be one of the following:
19
+
20
+ **********
21
+ constant
22
+ **********
23
+
24
+ .. literalinclude:: yaml/repeated_dates2.yaml
25
+ :language: yaml
26
+
27
+ *************
28
+ climatology
29
+ *************
30
+
31
+ .. literalinclude:: yaml/repeated_dates3.yaml
32
+ :language: yaml
33
+
34
+ *********
35
+ closest
36
+ *********
37
+
38
+ .. literalinclude:: yaml/repeated_dates4.yaml
39
+ :language: yaml
@@ -0,0 +1,13 @@
1
+ This source uses Xarray_ internally to access the data, and assumes that
2
+ it follows the `CF conventions`_.
3
+
4
+ You specify any valid xarray.open_dataset_ arguments in the source.
5
+
6
+ .. literalinclude:: yaml/xarray-based.yaml
7
+ :language: yaml
8
+
9
+ .. _cf conventions: http://cfconventions.org/
10
+
11
+ .. _xarray: https://docs.xarray.dev/en/stable/index.html
12
+
13
+ .. _xarray.open_dataset: https://docs.xarray.dev/en/stable/generated/xarray.open_dataset.html
@@ -2,7 +2,7 @@
2
2
  xarray-kerchunk
3
3
  #################
4
4
 
5
- .. literalinclude:: xarray-kerchunk.yaml
5
+ .. literalinclude:: yaml/xarray-kerchunk.yaml
6
6
  :language: yaml
7
7
 
8
8
  The code below is inspired by the `kerchunk tutorial`_, and makes use of
@@ -2,5 +2,5 @@
2
2
  xarray-zarr
3
3
  #############
4
4
 
5
- .. literalinclude:: xarray-zarr.yaml
5
+ .. literalinclude:: yaml/xarray-zarr.yaml
6
6
  :language: yaml
@@ -0,0 +1,3 @@
1
+ ---
2
+ input:
3
+ hincasts:
@@ -0,0 +1,6 @@
1
+
2
+ repeated_dates:
3
+ mode: mode
4
+ # ... parameters related to the mode ...
5
+ source:
6
+ # ... a source definition ...
@@ -0,0 +1,6 @@
1
+ repeated_dates:
2
+ mode: constant
3
+ source:
4
+ xarray-zarr:
5
+ url: dem.zarr
6
+ variable: dem
@@ -0,0 +1,8 @@
1
+ repeated_dates:
2
+ mode: climatology
3
+ year: 2019
4
+ day: 15
5
+ source:
6
+ grib:
7
+ path: some/path/to/data.grib
8
+ param: [some_param]
@@ -0,0 +1,9 @@
1
+ repeated_dates:
2
+ mode: closest
3
+ frequency: 24h
4
+ maximum: 30d
5
+ skip_all_nans: true
6
+ source:
7
+ grib:
8
+ path: path/to/data.grib
9
+ param: [some_param]
@@ -0,0 +1,3 @@
1
+ input:
2
+ xarray-based-source: # netcdf, zarr, opendap, etc.
3
+ group: mygroup
@@ -4,5 +4,5 @@
4
4
 
5
5
  https://zenodo.org/records/6470725
6
6
 
7
- .. literalinclude:: zenodo.yaml
7
+ .. literalinclude:: yaml/zenodo.yaml
8
8
  :language: yaml
@@ -28,6 +28,7 @@ The following `sources` are currently available:
28
28
  sources/netcdf
29
29
  sources/opendap
30
30
  sources/recentre
31
+ sources/repeated_dates
31
32
  sources/xarray-kerchunk
32
33
  sources/xarray-zarr
33
34
  sources/zenodo
@@ -1,8 +1,8 @@
1
1
  .. _index-page:
2
2
 
3
- ####################################
4
- Welcome to Anemoi's documentation!
5
- ####################################
3
+ #############################################
4
+ Welcome to `anemoi-datasets` documentation!
5
+ #############################################
6
6
 
7
7
  .. warning::
8
8
 
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '0.5.0'
16
- __version_tuple__ = version_tuple = (0, 5, 0)
15
+ __version__ = version = '0.5.6'
16
+ __version_tuple__ = version_tuple = (0, 5, 6)
@@ -311,7 +311,7 @@ class Version:
311
311
  print(f"🕰️ Dataset initialized {when(start)}.")
312
312
  if built and latest:
313
313
  speed = (latest - start) / built
314
- eta = datetime.datetime.utcnow() + speed * (total - built)
314
+ eta = datetime.datetime.now(datetime.timezone.utc).replace(tzinfo=None) + speed * (total - built)
315
315
  print(f"🏁 ETA {when(eta)}.")
316
316
  else:
317
317
  if latest:
@@ -0,0 +1,30 @@
1
+ import logging
2
+
3
+ from . import Command
4
+
5
+ LOG = logging.getLogger(__name__)
6
+
7
+
8
+ class Publish(Command):
9
+ """Publish a dataset."""
10
+
11
+ # This is a command that is used to publish a dataset.
12
+ # it is a class, inheriting from Command.
13
+
14
+ internal = True
15
+ timestamp = True
16
+
17
+ def add_arguments(self, parser):
18
+ parser.add_argument("path", help="Path of the dataset to publish.")
19
+
20
+ def run(self, args):
21
+ try:
22
+ from anemoi.registry import publish_dataset
23
+ except ImportError:
24
+ LOG.error("anemoi-registry is not installed. Please install it to use this command.")
25
+ return
26
+
27
+ publish_dataset(args.path)
28
+
29
+
30
+ command = Publish
@@ -14,6 +14,7 @@ import os
14
14
  import time
15
15
  import uuid
16
16
  import warnings
17
+ from copy import deepcopy
17
18
  from functools import cached_property
18
19
 
19
20
  import numpy as np
@@ -24,9 +25,11 @@ from anemoi.utils.dates import frequency_to_string
24
25
  from anemoi.utils.dates import frequency_to_timedelta
25
26
  from anemoi.utils.humanize import compress_dates
26
27
  from anemoi.utils.humanize import seconds_to_human
28
+ from earthkit.data.core.order import build_remapping
27
29
 
28
30
  from anemoi.datasets import MissingDateError
29
31
  from anemoi.datasets import open_dataset
32
+ from anemoi.datasets.create.input.trace import enable_trace
30
33
  from anemoi.datasets.create.persistent import build_storage
31
34
  from anemoi.datasets.data.misc import as_first_date
32
35
  from anemoi.datasets.data.misc import as_last_date
@@ -308,7 +311,6 @@ class HasElementForDataMixin:
308
311
 
309
312
 
310
313
  def build_input_(main_config, output_config):
311
- from earthkit.data.core.order import build_remapping
312
314
 
313
315
  builder = build_input(
314
316
  main_config.input,
@@ -323,6 +325,43 @@ def build_input_(main_config, output_config):
323
325
  return builder
324
326
 
325
327
 
328
+ def tidy_recipe(config: object):
329
+ """Remove potentially private information in the config"""
330
+ config = deepcopy(config)
331
+ if isinstance(config, (tuple, list)):
332
+ return [tidy_recipe(_) for _ in config]
333
+ if isinstance(config, (dict, DotDict)):
334
+ for k, v in config.items():
335
+ if k.startswith("_"):
336
+ config[k] = "*** REMOVED FOR SECURITY ***"
337
+ else:
338
+ config[k] = tidy_recipe(v)
339
+ if isinstance(config, str):
340
+ if config.startswith("_"):
341
+ return "*** REMOVED FOR SECURITY ***"
342
+ if config.startswith("s3://"):
343
+ return "*** REMOVED FOR SECURITY ***"
344
+ if config.startswith("gs://"):
345
+ return "*** REMOVED FOR SECURITY ***"
346
+ if config.startswith("http"):
347
+ return "*** REMOVED FOR SECURITY ***"
348
+ if config.startswith("ftp"):
349
+ return "*** REMOVED FOR SECURITY ***"
350
+ if config.startswith("file"):
351
+ return "*** REMOVED FOR SECURITY ***"
352
+ if config.startswith("ssh"):
353
+ return "*** REMOVED FOR SECURITY ***"
354
+ if config.startswith("scp"):
355
+ return "*** REMOVED FOR SECURITY ***"
356
+ if config.startswith("rsync"):
357
+ return "*** REMOVED FOR SECURITY ***"
358
+ if config.startswith("/"):
359
+ return "*** REMOVED FOR SECURITY ***"
360
+ if "@" in config:
361
+ return "*** REMOVED FOR SECURITY ***"
362
+ return config
363
+
364
+
326
365
  class Init(Actor, HasRegistryMixin, HasStatisticTempMixin, HasElementForDataMixin):
327
366
  dataset_class = NewDataset
328
367
  def __init__(self, path, config, check_name=False, overwrite=False, use_threads=False, statistics_temp_dir=None, progress=None, test=False, cache=None, **kwargs): # fmt: skip
@@ -409,6 +448,7 @@ class Init(Actor, HasRegistryMixin, HasStatisticTempMixin, HasElementForDataMixi
409
448
  metadata.update(self.main_config.get("add_metadata", {}))
410
449
 
411
450
  metadata["_create_yaml_config"] = self.main_config.get_serialisable_dict()
451
+ metadata["recipe"] = tidy_recipe(self.main_config.get_serialisable_dict())
412
452
 
413
453
  metadata["description"] = self.main_config.description
414
454
  metadata["licence"] = self.main_config["licence"]
@@ -524,7 +564,7 @@ class Load(Actor, HasRegistryMixin, HasStatisticTempMixin, HasElementForDataMixi
524
564
  # assert isinstance(group[0], datetime.datetime), type(group[0])
525
565
  LOG.debug(f"Building data for group {igroup}/{self.n_groups}")
526
566
 
527
- result = self.input.select(dates=group)
567
+ result = self.input.select(group_of_dates=group)
528
568
  assert result.group_of_dates == group, (len(result.group_of_dates), len(group), group)
529
569
 
530
570
  # There are several groups.
@@ -992,7 +1032,6 @@ def chain(tasks):
992
1032
 
993
1033
  def creator_factory(name, trace=None, **kwargs):
994
1034
  if trace:
995
- from anemoi.datasets.create.trace import enable_trace
996
1035
 
997
1036
  enable_trace(trace)
998
1037
 
@@ -140,9 +140,15 @@ class StatisticsValueError(ValueError):
140
140
 
141
141
  def check_data_values(arr, *, name: str, log=[], allow_nans=False):
142
142
 
143
+ shape = arr.shape
144
+
143
145
  if (isinstance(allow_nans, (set, list, tuple, dict)) and name in allow_nans) or allow_nans:
144
146
  arr = arr[~np.isnan(arr)]
145
147
 
148
+ if arr.size == 0:
149
+ warnings.warn(f"Empty array for {name} ({shape})")
150
+ return
151
+
146
152
  assert arr.size > 0, (name, *log)
147
153
 
148
154
  min, max = arr.min(), arr.max()
@@ -32,7 +32,7 @@ class RenamedFieldMapping:
32
32
 
33
33
  value = self.field.metadata(key, **kwargs)
34
34
  if key == self.what:
35
- return self.renaming.get(value, value)
35
+ return self.renaming.get(self.what, {}).get(value, value)
36
36
 
37
37
  return value
38
38
 
@@ -68,8 +68,7 @@ class RenamedFieldFormat:
68
68
 
69
69
 
70
70
  def execute(context, input, what="param", **kwargs):
71
- # print('🍍🍍🍍🍍🍍🍍🍍🍍🍍🍍🍍🍍🍍 ==========', kwargs)
72
- if what in kwargs:
71
+ if what in kwargs and isinstance(kwargs[what], str):
73
72
  return FieldArray([RenamedFieldFormat(fs, kwargs[what]) for fs in input])
74
73
 
75
74
  return FieldArray([RenamedFieldMapping(fs, what, kwargs) for fs in input])
@@ -16,6 +16,10 @@ LOG = logging.getLogger(__name__)
16
16
 
17
17
 
18
18
  def _expand(paths):
19
+
20
+ if not isinstance(paths, list):
21
+ paths = [paths]
22
+
19
23
  for path in paths:
20
24
  if path.startswith("file://"):
21
25
  path = path[7:]
@@ -40,8 +44,10 @@ def iterate_patterns(path, dates, **kwargs):
40
44
  given_paths = path if isinstance(path, list) else [path]
41
45
 
42
46
  dates = [d.isoformat() for d in dates]
47
+ if len(dates) > 0:
48
+ kwargs["date"] = dates
43
49
 
44
50
  for path in given_paths:
45
- paths = Pattern(path, ignore_missing_keys=True).substitute(date=dates, **kwargs)
51
+ paths = Pattern(path, ignore_missing_keys=True).substitute(**kwargs)
46
52
  for path in _expand(paths):
47
53
  yield path, dates
@@ -375,6 +375,8 @@ def accumulations(context, dates, **request):
375
375
  ("od", "elda"): dict(base_times=(6, 18)),
376
376
  ("ea", "oper"): dict(data_accumulation_period=1, base_times=(6, 18)),
377
377
  ("ea", "enda"): dict(data_accumulation_period=3, base_times=(6, 18)),
378
+ ("rr", "oper"): dict(data_accumulation_period=3, base_times=(0, 3, 6, 9, 12, 15, 18, 21)),
379
+ ("l5", "oper"): dict(data_accumulation_period=1, base_times=(0,)),
378
380
  }
379
381
 
380
382
  kwargs = KWARGS.get((class_, stream), {})
@@ -135,7 +135,7 @@ def execute(context, dates, path, latitudes=None, longitudes=None, *args, **kwar
135
135
  s = s.sel(valid_datetime=dates, **kwargs)
136
136
  ds = ds + s
137
137
 
138
- if kwargs:
138
+ if kwargs and not context.partial_ok:
139
139
  check(ds, given_paths, valid_datetime=dates, **kwargs)
140
140
 
141
141
  if geography is not None: