anemoi-datasets 0.5.0__tar.gz → 0.5.5__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 (344) hide show
  1. anemoi_datasets-0.5.5/.github/ISSUE_TEMPLATE/bug_report.md +40 -0
  2. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/.gitignore +1 -0
  3. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/.pre-commit-config.yaml +1 -1
  4. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/CHANGELOG.md +36 -14
  5. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/PKG-INFO +1 -1
  6. anemoi_datasets-0.5.5/docs/building/filters/rename.rst +6 -0
  7. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/sources/accumulations.rst +2 -2
  8. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/sources/forcings.rst +1 -1
  9. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/sources/mars.rst +2 -2
  10. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/sources/netcdf.rst +1 -1
  11. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/sources/opendap.rst +1 -1
  12. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/sources/recentre.rst +1 -1
  13. anemoi_datasets-0.5.5/docs/building/sources/repeated_dates.rst +29 -0
  14. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/sources/xarray-zarr.rst +1 -1
  15. anemoi_datasets-0.5.5/docs/building/sources/yaml/hindcasts.yaml +3 -0
  16. anemoi_datasets-0.5.5/docs/building/sources/yaml/repeated_dates1.yaml +6 -0
  17. anemoi_datasets-0.5.5/docs/building/sources/yaml/repeated_dates2.yaml +6 -0
  18. anemoi_datasets-0.5.5/docs/building/sources/yaml/repeated_dates3.yaml +8 -0
  19. anemoi_datasets-0.5.5/docs/building/sources/yaml/repeated_dates4.yaml +9 -0
  20. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/sources/zenodo.rst +1 -1
  21. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/sources.rst +1 -0
  22. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/index.rst +3 -3
  23. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/_version.py +2 -2
  24. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/commands/inspect.py +1 -1
  25. anemoi_datasets-0.5.5/src/anemoi/datasets/commands/publish.py +30 -0
  26. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/__init__.py +42 -3
  27. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/check.py +6 -0
  28. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/functions/filters/rename.py +2 -3
  29. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/functions/sources/__init__.py +7 -1
  30. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/functions/sources/accumulations.py +2 -0
  31. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/functions/sources/grib.py +1 -1
  32. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/functions/sources/xarray/__init__.py +6 -1
  33. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/functions/sources/xarray/coordinates.py +6 -1
  34. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/functions/sources/xarray/field.py +13 -4
  35. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/functions/sources/xarray/fieldlist.py +16 -16
  36. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/functions/sources/xarray/flavour.py +126 -12
  37. anemoi_datasets-0.5.5/src/anemoi/datasets/create/functions/sources/xarray/grid.py +135 -0
  38. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/functions/sources/xarray/metadata.py +3 -11
  39. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/functions/sources/xarray/time.py +1 -5
  40. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/functions/sources/xarray/variable.py +10 -10
  41. anemoi_datasets-0.5.5/src/anemoi/datasets/create/input/__init__.py +69 -0
  42. anemoi_datasets-0.5.5/src/anemoi/datasets/create/input/action.py +123 -0
  43. anemoi_datasets-0.5.5/src/anemoi/datasets/create/input/concat.py +92 -0
  44. anemoi_datasets-0.5.5/src/anemoi/datasets/create/input/context.py +59 -0
  45. anemoi_datasets-0.5.5/src/anemoi/datasets/create/input/data_sources.py +71 -0
  46. anemoi_datasets-0.5.5/src/anemoi/datasets/create/input/empty.py +42 -0
  47. anemoi_datasets-0.5.5/src/anemoi/datasets/create/input/filter.py +76 -0
  48. anemoi_datasets-0.5.5/src/anemoi/datasets/create/input/function.py +122 -0
  49. anemoi_datasets-0.5.5/src/anemoi/datasets/create/input/join.py +57 -0
  50. anemoi_datasets-0.5.5/src/anemoi/datasets/create/input/misc.py +85 -0
  51. anemoi_datasets-0.5.5/src/anemoi/datasets/create/input/pipe.py +33 -0
  52. anemoi_datasets-0.5.5/src/anemoi/datasets/create/input/repeated_dates.py +217 -0
  53. anemoi_datasets-0.5.5/src/anemoi/datasets/create/input/result.py +413 -0
  54. anemoi_datasets-0.5.5/src/anemoi/datasets/create/input/step.py +99 -0
  55. {anemoi_datasets-0.5.0/src/anemoi/datasets/create → anemoi_datasets-0.5.5/src/anemoi/datasets/create/input}/template.py +0 -42
  56. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/statistics/__init__.py +1 -1
  57. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/zarr.py +4 -2
  58. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/dates/__init__.py +1 -0
  59. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/dates/groups.py +12 -4
  60. anemoi_datasets-0.5.5/src/anemoi/datasets/fields.py +66 -0
  61. anemoi_datasets-0.5.5/src/anemoi/datasets/utils/fields.py +47 -0
  62. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi_datasets.egg-info/PKG-INFO +1 -1
  63. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi_datasets.egg-info/SOURCES.txt +36 -14
  64. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/tests/xarray/test_zarr.py +44 -22
  65. anemoi_datasets-0.5.0/docs/building/filters/rename.rst +0 -3
  66. anemoi_datasets-0.5.0/docs/building/sources/yaml/hindcasts.yaml +0 -2
  67. anemoi_datasets-0.5.0/src/anemoi/datasets/create/functions/sources/xarray/grid.py +0 -46
  68. anemoi_datasets-0.5.0/src/anemoi/datasets/create/input.py +0 -1087
  69. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/.gitattributes +0 -0
  70. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/.github/CODEOWNERS +0 -0
  71. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/.github/ci-config.yml +0 -0
  72. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/.github/ci-hpc-config.yml +0 -0
  73. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/.github/workflows/changelog-pr-update.yml +0 -0
  74. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/.github/workflows/changelog-release-update.yml +0 -0
  75. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/.github/workflows/ci.yml +0 -0
  76. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/.github/workflows/label-public-pr.yml +0 -0
  77. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/.github/workflows/python-publish.yml +0 -0
  78. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/.github/workflows/python-pull-request.yml +0 -0
  79. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/.github/workflows/readthedocs-pr-update.yml +0 -0
  80. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/.readthedocs.yaml +0 -0
  81. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/.vscode/spellright.dict +0 -0
  82. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/LICENSE +0 -0
  83. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/README.md +0 -0
  84. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/Makefile +0 -0
  85. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/_static/logo.png +0 -0
  86. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/_static/style.css +0 -0
  87. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/_templates/.gitkeep +0 -0
  88. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/apply-fmt.sh +0 -0
  89. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/advanced-options.rst +0 -0
  90. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/filters/empty.rst +0 -0
  91. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/filters/noop.rst +0 -0
  92. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/filters/rotate_winds.rst +0 -0
  93. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/filters/select.rst +0 -0
  94. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/filters/unrotate_winds.rst +0 -0
  95. /anemoi_datasets-0.5.0/docs/building/sources/hindcasts.yaml → /anemoi_datasets-0.5.5/docs/building/filters/yaml/rename.yaml +0 -0
  96. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/filters.rst +0 -0
  97. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/handling-missing-dates.rst +0 -0
  98. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/handling-missing-values.rst +0 -0
  99. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/incremental.rst +0 -0
  100. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/introduction.rst +0 -0
  101. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/naming-variables.rst +0 -0
  102. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/operations.rst +0 -0
  103. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/sources/grib.rst +0 -0
  104. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/sources/hindcasts.rst +0 -0
  105. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/sources/xarray-kerchunk.py +0 -0
  106. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/sources/xarray-kerchunk.rst +0 -0
  107. {anemoi_datasets-0.5.0/docs/building/sources → anemoi_datasets-0.5.5/docs/building/sources/yaml}/accumulations1.yaml +0 -0
  108. {anemoi_datasets-0.5.0/docs/building/sources → anemoi_datasets-0.5.5/docs/building/sources/yaml}/accumulations2.yaml +0 -0
  109. {anemoi_datasets-0.5.0/docs/building/sources → anemoi_datasets-0.5.5/docs/building/sources/yaml}/forcings.yaml +0 -0
  110. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/sources/yaml/grib1.yaml +0 -0
  111. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/sources/yaml/grib2.yaml +0 -0
  112. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/sources/yaml/grib3.yaml +0 -0
  113. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/sources/yaml/grib4.yaml +0 -0
  114. {anemoi_datasets-0.5.0/docs/building/sources → anemoi_datasets-0.5.5/docs/building/sources/yaml}/mars1.yaml +0 -0
  115. {anemoi_datasets-0.5.0/docs/building/sources → anemoi_datasets-0.5.5/docs/building/sources/yaml}/mars2.yaml +0 -0
  116. {anemoi_datasets-0.5.0/docs/building/sources → anemoi_datasets-0.5.5/docs/building/sources/yaml}/netcdf.yaml +0 -0
  117. {anemoi_datasets-0.5.0/docs/building/sources → anemoi_datasets-0.5.5/docs/building/sources/yaml}/opendap.yaml +0 -0
  118. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/sources/yaml/recentre.yaml +0 -0
  119. {anemoi_datasets-0.5.0/docs/building/sources → anemoi_datasets-0.5.5/docs/building/sources/yaml}/xarray-kerchunk.yaml +0 -0
  120. {anemoi_datasets-0.5.0/docs/building/sources → anemoi_datasets-0.5.5/docs/building/sources/yaml}/xarray-zarr.yaml +0 -0
  121. {anemoi_datasets-0.5.0/docs/building/sources → anemoi_datasets-0.5.5/docs/building/sources/yaml}/zenodo.yaml +0 -0
  122. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/statistics.rst +0 -0
  123. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/syntax.yaml +0 -0
  124. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/yaml/Makefile +0 -0
  125. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/yaml/building1.txt +0 -0
  126. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/yaml/building1.yaml +0 -0
  127. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/yaml/building2.txt +0 -0
  128. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/yaml/building2.yaml +0 -0
  129. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/yaml/building3.txt +0 -0
  130. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/yaml/building3.yaml +0 -0
  131. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/yaml/concat.yaml +0 -0
  132. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/yaml/hindcasts.yaml +0 -0
  133. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/yaml/input.yaml +0 -0
  134. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/yaml/missing_dates.yaml +0 -0
  135. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/yaml/nan.yaml +0 -0
  136. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/building/yaml/pipe.yaml +0 -0
  137. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/check-index.sh +0 -0
  138. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/cli/compare.rst +0 -0
  139. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/cli/copy.rst +0 -0
  140. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/cli/create.rst +0 -0
  141. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/cli/inspect.rst +0 -0
  142. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/cli/introduction.rst +0 -0
  143. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/cli/scan.rst +0 -0
  144. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/conf.py +0 -0
  145. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/images.pptx +0 -0
  146. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/installing.rst +0 -0
  147. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/overview.rst +0 -0
  148. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/overview_.py +0 -0
  149. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/schemas/matrix.excalidraw +0 -0
  150. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/schemas/matrix.png +0 -0
  151. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/schemas/overview.excalidraw +0 -0
  152. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/schemas/overview.png +0 -0
  153. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/schemas/recipe.excalidraw +0 -0
  154. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/schemas/recipe.png +0 -0
  155. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/area1_.py +0 -0
  156. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/area2_.py +0 -0
  157. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/chain_.py +0 -0
  158. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/combine_example.py +0 -0
  159. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/concat1.py +0 -0
  160. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/cutout_.py +0 -0
  161. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/drop_.py +0 -0
  162. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/end_.py +0 -0
  163. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/ensembles1_.py +0 -0
  164. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/fill_missing_gaps_.py +0 -0
  165. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/frequency1_.py +0 -0
  166. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/frequency2_.py +0 -0
  167. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/grids1_.py +0 -0
  168. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/iterating_missing_dates1_.py +0 -0
  169. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/iterating_missing_dates2_.py +0 -0
  170. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/iterating_missing_dates3_.py +0 -0
  171. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/join1.py +0 -0
  172. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/matching0_.py +0 -0
  173. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/matching1_.py +0 -0
  174. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/matching2_.py +0 -0
  175. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/matching3_.py +0 -0
  176. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/matching4_.py +0 -0
  177. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/misc1.py +0 -0
  178. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/misc2.py +0 -0
  179. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/missing_.py +0 -0
  180. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/missing_dates_.py +0 -0
  181. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/open_cloud.py +0 -0
  182. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/open_combine1_.py +0 -0
  183. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/open_combine2_.py +0 -0
  184. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/open_complex.py +0 -0
  185. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/open_dict_.py +0 -0
  186. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/open_first_.py +0 -0
  187. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/open_list_.py +0 -0
  188. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/open_name.py +0 -0
  189. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/open_other.py +0 -0
  190. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/open_path.py +0 -0
  191. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/open_yaml_.py +0 -0
  192. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/rename_.py +0 -0
  193. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/reorder1_.py +0 -0
  194. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/reorder2_.py +0 -0
  195. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/rescale_.py +0 -0
  196. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/select1_.py +0 -0
  197. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/select2_.py +0 -0
  198. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/shuffle_.py +0 -0
  199. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/some_attributes_.py +0 -0
  200. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/start_.py +0 -0
  201. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/statistics_.py +0 -0
  202. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/subset_example.py +0 -0
  203. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/thinning_.py +0 -0
  204. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/xy1_.py +0 -0
  205. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/xy2_.py +0 -0
  206. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/zip1_.py +0 -0
  207. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/zip2_.py +0 -0
  208. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/code/zip_xy_.py +0 -0
  209. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/combining.rst +0 -0
  210. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/configuration.rst +0 -0
  211. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/configuration.toml +0 -0
  212. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/grids.rst +0 -0
  213. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/images/area-1.png +0 -0
  214. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/images/concat.png +0 -0
  215. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/images/cutout-1.png +0 -0
  216. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/images/cutout-2.png +0 -0
  217. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/images/cutout-3.png +0 -0
  218. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/images/cutout-4.png +0 -0
  219. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/images/cutout-5.png +0 -0
  220. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/images/cutout-6.png +0 -0
  221. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/images/join.png +0 -0
  222. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/images/overlay.png +0 -0
  223. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/images/skip-missing.png +0 -0
  224. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/images/thinning-after.png +0 -0
  225. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/images/thinning-before.png +0 -0
  226. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/introduction.rst +0 -0
  227. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/matching.rst +0 -0
  228. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/methods.rst +0 -0
  229. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/miscellaneous.rst +0 -0
  230. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/missing.rst +0 -0
  231. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/opening.rst +0 -0
  232. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/other.rst +0 -0
  233. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/selecting.rst +0 -0
  234. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/statistics.rst +0 -0
  235. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/subsetting.rst +0 -0
  236. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/docs/using/zip.rst +0 -0
  237. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/pyproject.toml +0 -0
  238. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/setup.cfg +0 -0
  239. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/__init__.py +0 -0
  240. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/__main__.py +0 -0
  241. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/commands/__init__.py +0 -0
  242. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/commands/cleanup.py +0 -0
  243. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/commands/compare.py +0 -0
  244. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/commands/copy.py +0 -0
  245. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/commands/create.py +0 -0
  246. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/commands/finalise-additions.py +0 -0
  247. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/commands/finalise.py +0 -0
  248. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/commands/init-additions.py +0 -0
  249. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/commands/init.py +0 -0
  250. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/commands/load-additions.py +0 -0
  251. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/commands/load.py +0 -0
  252. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/commands/patch.py +0 -0
  253. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/commands/scan.py +0 -0
  254. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/compute/__init__.py +0 -0
  255. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/compute/recentre.py +0 -0
  256. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/chunks.py +0 -0
  257. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/config.py +0 -0
  258. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/functions/__init__.py +0 -0
  259. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/functions/filters/__init__.py +0 -0
  260. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/functions/filters/empty.py +0 -0
  261. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/functions/filters/noop.py +0 -0
  262. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/functions/filters/pressure_level_relative_humidity_to_specific_humidity.py +0 -0
  263. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/functions/filters/pressure_level_specific_humidity_to_relative_humidity.py +0 -0
  264. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/functions/filters/rotate_winds.py +0 -0
  265. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/functions/filters/single_level_dewpoint_to_relative_humidity.py +0 -0
  266. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/functions/filters/single_level_relative_humidity_to_dewpoint.py +0 -0
  267. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/functions/filters/single_level_relative_humidity_to_specific_humidity.py +0 -0
  268. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/functions/filters/single_level_specific_humidity_to_relative_humidity.py +0 -0
  269. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/functions/filters/speeddir_to_uv.py +0 -0
  270. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/functions/filters/unrotate_winds.py +0 -0
  271. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/functions/filters/uv_to_speeddir.py +0 -0
  272. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/functions/sources/constants.py +0 -0
  273. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/functions/sources/empty.py +0 -0
  274. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/functions/sources/forcings.py +0 -0
  275. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/functions/sources/hindcasts.py +0 -0
  276. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/functions/sources/mars.py +0 -0
  277. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/functions/sources/netcdf.py +0 -0
  278. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/functions/sources/opendap.py +0 -0
  279. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/functions/sources/recentre.py +0 -0
  280. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/functions/sources/source.py +0 -0
  281. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/functions/sources/tendencies.py +0 -0
  282. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/functions/sources/xarray_kerchunk.py +0 -0
  283. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/functions/sources/xarray_zarr.py +0 -0
  284. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/functions/sources/zenodo.py +0 -0
  285. {anemoi_datasets-0.5.0/src/anemoi/datasets/create → anemoi_datasets-0.5.5/src/anemoi/datasets/create/input}/trace.py +0 -0
  286. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/patch.py +0 -0
  287. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/persistent.py +0 -0
  288. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/size.py +0 -0
  289. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/statistics/summary.py +0 -0
  290. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/utils.py +0 -0
  291. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/create/writer.py +0 -0
  292. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/data/__init__.py +0 -0
  293. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/data/concat.py +0 -0
  294. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/data/dataset.py +0 -0
  295. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/data/debug.css +0 -0
  296. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/data/debug.py +0 -0
  297. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/data/ensemble.py +0 -0
  298. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/data/forwards.py +0 -0
  299. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/data/grids.py +0 -0
  300. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/data/indexing.py +0 -0
  301. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/data/interpolate.py +0 -0
  302. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/data/join.py +0 -0
  303. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/data/masked.py +0 -0
  304. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/data/misc.py +0 -0
  305. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/data/missing.py +0 -0
  306. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/data/rescale.py +0 -0
  307. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/data/select.py +0 -0
  308. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/data/statistics.py +0 -0
  309. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/data/stores.py +0 -0
  310. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/data/subset.py +0 -0
  311. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/data/unchecked.py +0 -0
  312. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/data/xy.py +0 -0
  313. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/grids.py +0 -0
  314. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi/datasets/utils/__init__.py +0 -0
  315. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi_datasets.egg-info/dependency_links.txt +0 -0
  316. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi_datasets.egg-info/entry_points.txt +0 -0
  317. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi_datasets.egg-info/requires.txt +0 -0
  318. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/src/anemoi_datasets.egg-info/top_level.txt +0 -0
  319. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/tests/create/concat.yaml +0 -0
  320. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/tests/create/data_sources.yaml +0 -0
  321. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/tests/create/join.yaml +0 -0
  322. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/tests/create/missing.yaml +0 -0
  323. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/tests/create/nan.yaml +0 -0
  324. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/tests/create/pipe.yaml +0 -0
  325. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/tests/create/recentre.yaml +0 -0
  326. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/tests/create/run.sh +0 -0
  327. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/tests/create/test_create.py +0 -0
  328. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/tests/create-perturbations-full.yaml +0 -0
  329. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/tests/create-shift.yaml +0 -0
  330. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/tests/test_chunks.py +0 -0
  331. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/tests/test_data.py +0 -0
  332. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/tests/test_dates.py +0 -0
  333. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/tests/test_indexing.py +0 -0
  334. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/tests/xarray/test_kerchunk.py +0 -0
  335. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/tests/xarray/test_netcdf.py +0 -0
  336. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/tests/xarray/test_opendap.py +0 -0
  337. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/tools/.gitignore +0 -0
  338. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/tools/examples/Makefile +0 -0
  339. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/tools/examples/an-oper-2023-2023-2p5-6h-v1.yaml +0 -0
  340. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/tools/grids/Makefile +0 -0
  341. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/tools/grids/grids.ipynb +0 -0
  342. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/tools/grids/grids1.yaml +0 -0
  343. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/tools/grids/grids2.yaml +0 -0
  344. {anemoi_datasets-0.5.0 → anemoi_datasets-0.5.5}/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,32 @@ 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
+
12
+ ## [Unreleased](https://github.com/ecmwf/anemoi-datasets/compare/0.5.4...HEAD)
13
+
14
+ ## [Add support for (semi-)constant fields](https://github.com/ecmwf/anemoi-datasets/compare/0.5.1...0.5.2) - 2024-10-03
15
+
16
+ ### Changed
17
+
18
+ - Fix failing zarr lat/lon tests
19
+
20
+ ## [Bug fixes](https://github.com/ecmwf/anemoi-datasets/compare/0.5.0...0.5.1) - 2024-10-01
21
+
22
+ ### Added
23
+
24
+ - Adding the user recipe in the dataset PR #59.
25
+ - Add `repeated_dates` action in create.
26
+
27
+ ### Changed
28
+
29
+ - Bug fix in create/rename
30
+
31
+ ## [0.5.0 - Incremental builds and Rescaling](https://github.com/ecmwf/anemoi-datasets/compare/0.4.5...0.5.0) - 2024-09-25
12
32
 
13
33
  ### Added
14
34
 
15
35
  - New `rescale` keyword in `open_dataset` to change units of variables #36
36
+ - Add support for constant fields when creating datasets
16
37
  - Simplify imports
17
38
 
18
39
  ### Changed
@@ -25,9 +46,10 @@ Keep it human-readable, your future self will thank you!
25
46
  - add paths-ignore to ci workflow
26
47
 
27
48
  ### Removed
49
+
28
50
  - pytest for notebooks
29
51
 
30
- ## [0.4.5]
52
+ ## [0.4.5](https://github.com/ecmwf/anemoi-datasets/compare/0.4.4...0.4.5)
31
53
 
32
54
  ### Added
33
55
 
@@ -47,48 +69,48 @@ Keep it human-readable, your future self will thank you!
47
69
 
48
70
  ### Removed
49
71
 
50
- ## [0.4.4] Bug fixes
72
+ ## [0.4.4](https://github.com/ecmwf/anemoi-datasets/compare/0.4.0...0.4.4) Bug fixes
51
73
 
52
74
  - Bug fix in accumulations() that did not work with webmars
53
75
  - Bug fix when using hindcasts input (missing dates on leap years)
54
76
 
55
- ## [0.4.0] Minor Release
77
+ ## [0.4.0](https://github.com/ecmwf/anemoi-datasets/compare/0.3.0...0.4.0) Minor Release
56
78
 
57
79
  ### Added
80
+
58
81
  - earthkit-data replaces climetlab
59
82
 
60
83
  ### Removed
84
+
61
85
  - climetlab
62
86
 
63
- ## [0.3.0] Minor Release
87
+ ## [0.3.0](https://github.com/ecmwf/anemoi-datasets/compare/0.2.0...0.3.0) Minor Release
64
88
 
65
89
  ### Added
90
+
66
91
  - hindcast source
67
92
 
68
93
  ### Changed
94
+
69
95
  - updated documentation
70
96
 
71
- ## [0.2.0] Minor Release
97
+ ## [0.2.0](https://github.com/ecmwf/anemoi-datasets/compare/0.1.0...0.2.0) Minor Release
72
98
 
73
99
  ### Added
100
+
74
101
  - statistics tendencies
75
102
 
76
103
  ### Removed
104
+
77
105
  - CubesFilter
78
106
 
79
- ## [0.1.0] Initial Release
107
+ ## [0.1.0](https://github.com/ecmwf/anemoi-models/releases/tag/0.1.0) Initial Release
80
108
 
81
109
  ### Added
110
+
82
111
  - Documentation
83
112
  - Initial code release for anemoi-datasets: create datasets for data-driven weather-models
84
113
  - open datasets
85
114
  - combine datasets
86
115
 
87
116
  ## 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.5
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
@@ -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
@@ -2,5 +2,5 @@
2
2
  netcdf
3
3
  ########
4
4
 
5
- .. literalinclude:: netcdf.yaml
5
+ .. literalinclude:: yaml/netcdf.yaml
6
6
  :language: yaml
@@ -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,29 @@
1
+ ################
2
+ repeated_dates
3
+ ################
4
+
5
+ The generale format of the `repeated_dates` source is:
6
+
7
+ .. literalinclude:: yaml/repeated_dates1.yaml
8
+ :language: yaml
9
+
10
+ **********
11
+ constant
12
+ **********
13
+
14
+ .. literalinclude:: yaml/repeated_dates2.yaml
15
+ :language: yaml
16
+
17
+ *************
18
+ climatology
19
+ *************
20
+
21
+ .. literalinclude:: yaml/repeated_dates3.yaml
22
+ :language: yaml
23
+
24
+ *********
25
+ closest
26
+ *********
27
+
28
+ .. literalinclude:: yaml/repeated_dates4.yaml
29
+ :language: yaml
@@ -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]
@@ -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.5'
16
+ __version_tuple__ = version_tuple = (0, 5, 5)
@@ -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:
@@ -12,6 +12,7 @@ import logging
12
12
  from earthkit.data.core.fieldlist import MultiFieldList
13
13
 
14
14
  from anemoi.datasets.data.stores import name_to_zarr_store
15
+ from anemoi.datasets.utils.fields import NewMetadataField as NewMetadataField
15
16
 
16
17
  from .. import iterate_patterns
17
18
  from .fieldlist import XarrayFieldList
@@ -49,7 +50,11 @@ def load_one(emoji, context, dates, dataset, options={}, flavour=None, **kwargs)
49
50
  data = xr.open_dataset(dataset, **options)
50
51
 
51
52
  fs = XarrayFieldList.from_xarray(data, flavour)
52
- result = MultiFieldList([fs.sel(valid_datetime=date, **kwargs) for date in dates])
53
+
54
+ if len(dates) == 0:
55
+ return fs.sel(**kwargs)
56
+ else:
57
+ result = MultiFieldList([fs.sel(valid_datetime=date, **kwargs) for date in dates])
53
58
 
54
59
  if len(result) == 0:
55
60
  LOG.warning(f"No data found for {dataset} and dates {dates} and {kwargs}")
@@ -56,6 +56,8 @@ class Coordinate:
56
56
  is_step = False
57
57
  is_date = False
58
58
  is_member = False
59
+ is_x = False
60
+ is_y = False
59
61
 
60
62
  def __init__(self, variable):
61
63
  self.variable = variable
@@ -66,10 +68,11 @@ class Coordinate:
66
68
  return 1 if self.scalar else len(self.variable)
67
69
 
68
70
  def __repr__(self):
69
- return "%s[name=%s,values=%s]" % (
71
+ return "%s[name=%s,values=%s,shape=%s]" % (
70
72
  self.__class__.__name__,
71
73
  self.variable.name,
72
74
  self.variable.values if self.scalar else len(self),
75
+ self.variable.shape,
73
76
  )
74
77
 
75
78
  def reduced(self, i):
@@ -225,11 +228,13 @@ class LatitudeCoordinate(Coordinate):
225
228
 
226
229
  class XCoordinate(Coordinate):
227
230
  is_grid = True
231
+ is_x = True
228
232
  mars_names = ("x",)
229
233
 
230
234
 
231
235
  class YCoordinate(Coordinate):
232
236
  is_grid = True
237
+ is_y = True
233
238
  mars_names = ("y",)
234
239
 
235
240