anemoi-datasets 0.4.5__tar.gz → 0.5.0__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 (321) hide show
  1. anemoi_datasets-0.5.0/.github/CODEOWNERS +6 -0
  2. anemoi_datasets-0.5.0/.github/ci-hpc-config.yml +18 -0
  3. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/.github/workflows/changelog-pr-update.yml +3 -0
  4. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/.github/workflows/changelog-release-update.yml +1 -0
  5. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/.github/workflows/ci.yml +15 -2
  6. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/.github/workflows/python-publish.yml +2 -0
  7. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/.github/workflows/python-pull-request.yml +1 -1
  8. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/.gitignore +1 -0
  9. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/.pre-commit-config.yaml +12 -8
  10. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/CHANGELOG.md +14 -0
  11. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/PKG-INFO +10 -19
  12. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/incremental.rst +3 -3
  13. anemoi_datasets-0.5.0/docs/using/code/rescale_.py +30 -0
  14. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/selecting.rst +25 -0
  15. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/pyproject.toml +14 -20
  16. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/_version.py +2 -2
  17. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/commands/create.py +3 -2
  18. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/__init__.py +30 -32
  19. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/config.py +4 -3
  20. anemoi_datasets-0.5.0/src/anemoi/datasets/create/functions/filters/pressure_level_relative_humidity_to_specific_humidity.py +57 -0
  21. anemoi_datasets-0.5.0/src/anemoi/datasets/create/functions/filters/pressure_level_specific_humidity_to_relative_humidity.py +57 -0
  22. anemoi_datasets-0.5.0/src/anemoi/datasets/create/functions/filters/single_level_dewpoint_to_relative_humidity.py +54 -0
  23. anemoi_datasets-0.5.0/src/anemoi/datasets/create/functions/filters/single_level_relative_humidity_to_dewpoint.py +59 -0
  24. anemoi_datasets-0.5.0/src/anemoi/datasets/create/functions/filters/single_level_relative_humidity_to_specific_humidity.py +115 -0
  25. anemoi_datasets-0.5.0/src/anemoi/datasets/create/functions/filters/single_level_specific_humidity_to_relative_humidity.py +390 -0
  26. anemoi_datasets-0.5.0/src/anemoi/datasets/create/functions/filters/speeddir_to_uv.py +77 -0
  27. anemoi_datasets-0.5.0/src/anemoi/datasets/create/functions/filters/uv_to_speeddir.py +55 -0
  28. anemoi_datasets-0.5.0/src/anemoi/datasets/create/functions/sources/grib.py +144 -0
  29. anemoi_datasets-0.5.0/src/anemoi/datasets/create/functions/sources/hindcasts.py +61 -0
  30. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/functions/sources/mars.py +9 -3
  31. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/functions/sources/xarray/field.py +7 -1
  32. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/functions/sources/xarray/metadata.py +13 -11
  33. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/input.py +39 -17
  34. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/persistent.py +1 -1
  35. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/utils.py +3 -0
  36. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/data/dataset.py +11 -1
  37. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/data/debug.py +5 -1
  38. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/data/masked.py +2 -2
  39. anemoi_datasets-0.5.0/src/anemoi/datasets/data/rescale.py +147 -0
  40. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/data/stores.py +20 -7
  41. anemoi_datasets-0.5.0/src/anemoi/datasets/dates/__init__.py +242 -0
  42. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/dates/groups.py +84 -19
  43. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi_datasets.egg-info/PKG-INFO +10 -19
  44. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi_datasets.egg-info/SOURCES.txt +12 -0
  45. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi_datasets.egg-info/requires.txt +10 -19
  46. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/tests/create/test_create.py +7 -2
  47. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/tests/xarray/test_netcdf.py +2 -0
  48. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/tests/xarray/test_opendap.py +2 -0
  49. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/tests/xarray/test_zarr.py +26 -1
  50. anemoi_datasets-0.4.5/src/anemoi/datasets/create/functions/sources/grib.py +0 -59
  51. anemoi_datasets-0.4.5/src/anemoi/datasets/create/functions/sources/hindcasts.py +0 -120
  52. anemoi_datasets-0.4.5/src/anemoi/datasets/dates/__init__.py +0 -160
  53. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/.gitattributes +0 -0
  54. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/.github/ci-config.yml +0 -0
  55. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/.github/workflows/label-public-pr.yml +0 -0
  56. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/.github/workflows/readthedocs-pr-update.yml +0 -0
  57. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/.readthedocs.yaml +0 -0
  58. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/.vscode/spellright.dict +0 -0
  59. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/LICENSE +0 -0
  60. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/README.md +0 -0
  61. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/Makefile +0 -0
  62. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/_static/logo.png +0 -0
  63. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/_static/style.css +0 -0
  64. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/_templates/.gitkeep +0 -0
  65. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/apply-fmt.sh +0 -0
  66. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/advanced-options.rst +0 -0
  67. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/filters/empty.rst +0 -0
  68. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/filters/noop.rst +0 -0
  69. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/filters/rename.rst +0 -0
  70. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/filters/rotate_winds.rst +0 -0
  71. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/filters/select.rst +0 -0
  72. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/filters/unrotate_winds.rst +0 -0
  73. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/filters.rst +0 -0
  74. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/handling-missing-dates.rst +0 -0
  75. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/handling-missing-values.rst +0 -0
  76. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/introduction.rst +0 -0
  77. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/naming-variables.rst +0 -0
  78. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/operations.rst +0 -0
  79. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/sources/accumulations.rst +0 -0
  80. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/sources/accumulations1.yaml +0 -0
  81. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/sources/accumulations2.yaml +0 -0
  82. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/sources/forcings.rst +0 -0
  83. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/sources/forcings.yaml +0 -0
  84. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/sources/grib.rst +0 -0
  85. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/sources/hindcasts.rst +0 -0
  86. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/sources/hindcasts.yaml +0 -0
  87. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/sources/mars.rst +0 -0
  88. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/sources/mars1.yaml +0 -0
  89. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/sources/mars2.yaml +0 -0
  90. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/sources/netcdf.rst +0 -0
  91. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/sources/netcdf.yaml +0 -0
  92. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/sources/opendap.rst +0 -0
  93. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/sources/opendap.yaml +0 -0
  94. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/sources/recentre.rst +0 -0
  95. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/sources/xarray-kerchunk.py +0 -0
  96. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/sources/xarray-kerchunk.rst +0 -0
  97. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/sources/xarray-kerchunk.yaml +0 -0
  98. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/sources/xarray-zarr.rst +0 -0
  99. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/sources/xarray-zarr.yaml +0 -0
  100. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/sources/yaml/grib1.yaml +0 -0
  101. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/sources/yaml/grib2.yaml +0 -0
  102. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/sources/yaml/grib3.yaml +0 -0
  103. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/sources/yaml/grib4.yaml +0 -0
  104. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/sources/yaml/hindcasts.yaml +0 -0
  105. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/sources/yaml/recentre.yaml +0 -0
  106. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/sources/zenodo.rst +0 -0
  107. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/sources/zenodo.yaml +0 -0
  108. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/sources.rst +0 -0
  109. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/statistics.rst +0 -0
  110. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/syntax.yaml +0 -0
  111. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/yaml/Makefile +0 -0
  112. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/yaml/building1.txt +0 -0
  113. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/yaml/building1.yaml +0 -0
  114. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/yaml/building2.txt +0 -0
  115. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/yaml/building2.yaml +0 -0
  116. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/yaml/building3.txt +0 -0
  117. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/yaml/building3.yaml +0 -0
  118. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/yaml/concat.yaml +0 -0
  119. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/yaml/hindcasts.yaml +0 -0
  120. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/yaml/input.yaml +0 -0
  121. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/yaml/missing_dates.yaml +0 -0
  122. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/yaml/nan.yaml +0 -0
  123. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/building/yaml/pipe.yaml +0 -0
  124. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/check-index.sh +0 -0
  125. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/cli/compare.rst +0 -0
  126. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/cli/copy.rst +0 -0
  127. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/cli/create.rst +0 -0
  128. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/cli/inspect.rst +0 -0
  129. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/cli/introduction.rst +0 -0
  130. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/cli/scan.rst +0 -0
  131. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/conf.py +0 -0
  132. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/images.pptx +0 -0
  133. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/index.rst +0 -0
  134. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/installing.rst +0 -0
  135. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/overview.rst +0 -0
  136. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/overview_.py +0 -0
  137. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/schemas/matrix.excalidraw +0 -0
  138. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/schemas/matrix.png +0 -0
  139. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/schemas/overview.excalidraw +0 -0
  140. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/schemas/overview.png +0 -0
  141. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/schemas/recipe.excalidraw +0 -0
  142. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/schemas/recipe.png +0 -0
  143. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/area1_.py +0 -0
  144. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/area2_.py +0 -0
  145. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/chain_.py +0 -0
  146. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/combine_example.py +0 -0
  147. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/concat1.py +0 -0
  148. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/cutout_.py +0 -0
  149. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/drop_.py +0 -0
  150. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/end_.py +0 -0
  151. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/ensembles1_.py +0 -0
  152. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/fill_missing_gaps_.py +0 -0
  153. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/frequency1_.py +0 -0
  154. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/frequency2_.py +0 -0
  155. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/grids1_.py +0 -0
  156. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/iterating_missing_dates1_.py +0 -0
  157. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/iterating_missing_dates2_.py +0 -0
  158. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/iterating_missing_dates3_.py +0 -0
  159. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/join1.py +0 -0
  160. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/matching0_.py +0 -0
  161. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/matching1_.py +0 -0
  162. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/matching2_.py +0 -0
  163. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/matching3_.py +0 -0
  164. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/matching4_.py +0 -0
  165. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/misc1.py +0 -0
  166. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/misc2.py +0 -0
  167. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/missing_.py +0 -0
  168. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/missing_dates_.py +0 -0
  169. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/open_cloud.py +0 -0
  170. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/open_combine1_.py +0 -0
  171. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/open_combine2_.py +0 -0
  172. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/open_complex.py +0 -0
  173. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/open_dict_.py +0 -0
  174. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/open_first_.py +0 -0
  175. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/open_list_.py +0 -0
  176. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/open_name.py +0 -0
  177. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/open_other.py +0 -0
  178. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/open_path.py +0 -0
  179. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/open_yaml_.py +0 -0
  180. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/rename_.py +0 -0
  181. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/reorder1_.py +0 -0
  182. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/reorder2_.py +0 -0
  183. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/select1_.py +0 -0
  184. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/select2_.py +0 -0
  185. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/shuffle_.py +0 -0
  186. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/some_attributes_.py +0 -0
  187. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/start_.py +0 -0
  188. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/statistics_.py +0 -0
  189. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/subset_example.py +0 -0
  190. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/thinning_.py +0 -0
  191. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/xy1_.py +0 -0
  192. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/xy2_.py +0 -0
  193. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/zip1_.py +0 -0
  194. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/zip2_.py +0 -0
  195. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/code/zip_xy_.py +0 -0
  196. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/combining.rst +0 -0
  197. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/configuration.rst +0 -0
  198. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/configuration.toml +0 -0
  199. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/grids.rst +0 -0
  200. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/images/area-1.png +0 -0
  201. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/images/concat.png +0 -0
  202. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/images/cutout-1.png +0 -0
  203. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/images/cutout-2.png +0 -0
  204. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/images/cutout-3.png +0 -0
  205. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/images/cutout-4.png +0 -0
  206. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/images/cutout-5.png +0 -0
  207. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/images/cutout-6.png +0 -0
  208. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/images/join.png +0 -0
  209. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/images/overlay.png +0 -0
  210. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/images/skip-missing.png +0 -0
  211. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/images/thinning-after.png +0 -0
  212. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/images/thinning-before.png +0 -0
  213. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/introduction.rst +0 -0
  214. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/matching.rst +0 -0
  215. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/methods.rst +0 -0
  216. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/miscellaneous.rst +0 -0
  217. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/missing.rst +0 -0
  218. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/opening.rst +0 -0
  219. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/other.rst +0 -0
  220. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/statistics.rst +0 -0
  221. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/subsetting.rst +0 -0
  222. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/docs/using/zip.rst +0 -0
  223. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/setup.cfg +0 -0
  224. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/__init__.py +0 -0
  225. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/__main__.py +0 -0
  226. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/commands/__init__.py +0 -0
  227. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/commands/cleanup.py +0 -0
  228. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/commands/compare.py +0 -0
  229. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/commands/copy.py +0 -0
  230. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/commands/finalise-additions.py +0 -0
  231. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/commands/finalise.py +0 -0
  232. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/commands/init-additions.py +0 -0
  233. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/commands/init.py +0 -0
  234. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/commands/inspect.py +0 -0
  235. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/commands/load-additions.py +0 -0
  236. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/commands/load.py +0 -0
  237. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/commands/patch.py +0 -0
  238. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/commands/scan.py +0 -0
  239. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/compute/__init__.py +0 -0
  240. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/compute/recentre.py +0 -0
  241. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/check.py +0 -0
  242. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/chunks.py +0 -0
  243. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/functions/__init__.py +0 -0
  244. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/functions/filters/__init__.py +0 -0
  245. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/functions/filters/empty.py +0 -0
  246. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/functions/filters/noop.py +0 -0
  247. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/functions/filters/rename.py +0 -0
  248. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/functions/filters/rotate_winds.py +0 -0
  249. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/functions/filters/unrotate_winds.py +0 -0
  250. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/functions/sources/__init__.py +0 -0
  251. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/functions/sources/accumulations.py +0 -0
  252. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/functions/sources/constants.py +0 -0
  253. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/functions/sources/empty.py +0 -0
  254. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/functions/sources/forcings.py +0 -0
  255. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/functions/sources/netcdf.py +0 -0
  256. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/functions/sources/opendap.py +0 -0
  257. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/functions/sources/recentre.py +0 -0
  258. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/functions/sources/source.py +0 -0
  259. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/functions/sources/tendencies.py +0 -0
  260. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/functions/sources/xarray/__init__.py +0 -0
  261. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/functions/sources/xarray/coordinates.py +0 -0
  262. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/functions/sources/xarray/fieldlist.py +0 -0
  263. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/functions/sources/xarray/flavour.py +0 -0
  264. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/functions/sources/xarray/grid.py +0 -0
  265. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/functions/sources/xarray/time.py +0 -0
  266. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/functions/sources/xarray/variable.py +0 -0
  267. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/functions/sources/xarray_kerchunk.py +0 -0
  268. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/functions/sources/xarray_zarr.py +0 -0
  269. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/functions/sources/zenodo.py +0 -0
  270. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/patch.py +0 -0
  271. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/size.py +0 -0
  272. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/statistics/__init__.py +0 -0
  273. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/statistics/summary.py +0 -0
  274. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/template.py +0 -0
  275. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/trace.py +0 -0
  276. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/writer.py +0 -0
  277. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/create/zarr.py +0 -0
  278. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/data/__init__.py +0 -0
  279. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/data/concat.py +0 -0
  280. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/data/debug.css +0 -0
  281. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/data/ensemble.py +0 -0
  282. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/data/forwards.py +0 -0
  283. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/data/grids.py +0 -0
  284. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/data/indexing.py +0 -0
  285. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/data/interpolate.py +0 -0
  286. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/data/join.py +0 -0
  287. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/data/misc.py +0 -0
  288. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/data/missing.py +0 -0
  289. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/data/select.py +0 -0
  290. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/data/statistics.py +0 -0
  291. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/data/subset.py +0 -0
  292. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/data/unchecked.py +0 -0
  293. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/data/xy.py +0 -0
  294. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/grids.py +0 -0
  295. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi/datasets/utils/__init__.py +0 -0
  296. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi_datasets.egg-info/dependency_links.txt +0 -0
  297. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi_datasets.egg-info/entry_points.txt +0 -0
  298. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/src/anemoi_datasets.egg-info/top_level.txt +0 -0
  299. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/tests/create/concat.yaml +0 -0
  300. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/tests/create/data_sources.yaml +0 -0
  301. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/tests/create/join.yaml +0 -0
  302. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/tests/create/missing.yaml +0 -0
  303. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/tests/create/nan.yaml +0 -0
  304. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/tests/create/pipe.yaml +0 -0
  305. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/tests/create/recentre.yaml +0 -0
  306. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/tests/create/run.sh +0 -0
  307. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/tests/create-perturbations-full.yaml +0 -0
  308. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/tests/create-shift.yaml +0 -0
  309. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/tests/test_chunks.py +0 -0
  310. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/tests/test_data.py +0 -0
  311. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/tests/test_dates.py +0 -0
  312. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/tests/test_indexing.py +0 -0
  313. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/tests/xarray/test_kerchunk.py +0 -0
  314. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/tools/.gitignore +0 -0
  315. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/tools/examples/Makefile +0 -0
  316. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/tools/examples/an-oper-2023-2023-2p5-6h-v1.yaml +0 -0
  317. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/tools/grids/Makefile +0 -0
  318. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/tools/grids/grids.ipynb +0 -0
  319. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/tools/grids/grids1.yaml +0 -0
  320. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/tools/grids/grids2.yaml +0 -0
  321. {anemoi_datasets-0.4.5 → anemoi_datasets-0.5.0}/tools/upload-sample-dataset.py +0 -0
@@ -0,0 +1,6 @@
1
+ # CODEOWNERS file
2
+
3
+ # Protect workflow files
4
+ /.github/ @theissenhelen @jesperdramsch @gmertes @b8raoult @floriankrb
5
+ /.pre-commit-config.yaml @theissenhelen @jesperdramsch @gmertes @b8raoult @floriankrb
6
+ /pyproject.toml @theissenhelen @jesperdramsch @gmertes @b8raoult @floriankrb
@@ -0,0 +1,18 @@
1
+ build:
2
+ python: '3.10'
3
+ modules:
4
+ - ninja
5
+ dependencies:
6
+ - ecmwf/ecbuild@develop
7
+ - ecmwf/eccodes@develop
8
+ - ecmwf/eckit@develop
9
+ - ecmwf/odc@develop
10
+ python_dependencies:
11
+ - ecmwf/anemoi-utils@develop
12
+ - ecmwf/earthkit-data@develop
13
+ - ecmwf/earthkit-meteo@develop
14
+ - ecmwf/earthkit-geo@develop
15
+ parallel: 64
16
+
17
+ pytest_cmd: |
18
+ python -m pytest -vv -m 'not notebook and not no_cache_init' --cov=. --cov-report=xml
@@ -5,6 +5,9 @@ on:
5
5
  branches:
6
6
  - main
7
7
  - develop
8
+ paths-ignore:
9
+ - .pre-commit-config.yaml
10
+ - .readthedocs.yaml
8
11
  jobs:
9
12
  Check-Changelog:
10
13
  name: Check Changelog Action
@@ -4,6 +4,7 @@ name: "Update Changelog"
4
4
  on:
5
5
  release:
6
6
  types: [released]
7
+ workflow_dispatch: ~
7
8
 
8
9
  permissions:
9
10
  pull-requests: write
@@ -8,9 +8,17 @@ on:
8
8
  - 'develop'
9
9
  tags-ignore:
10
10
  - '**'
11
+ paths-ignore:
12
+ - "docs/**"
13
+ - "CHANGELOG.md"
14
+ - "README.md"
11
15
 
12
16
  # Trigger the workflow on pull request
13
- pull_request: ~
17
+ pull_request:
18
+ paths-ignore:
19
+ - "docs/**"
20
+ - "CHANGELOG.md"
21
+ - "README.md"
14
22
 
15
23
  # Trigger the workflow manually
16
24
  workflow_dispatch: ~
@@ -18,6 +26,11 @@ on:
18
26
  # Trigger after public PR approved for CI
19
27
  pull_request_target:
20
28
  types: [labeled]
29
+ paths-ignore:
30
+ - "docs/**"
31
+ - "CHANGELOG.md"
32
+ - "README.md"
33
+
21
34
 
22
35
  jobs:
23
36
  # Run CI including downstream packages on self-hosted runners
@@ -34,7 +47,7 @@ jobs:
34
47
  downstream-ci-hpc:
35
48
  name: downstream-ci-hpc
36
49
  if: ${{ !github.event.pull_request.head.repo.fork && github.event.action != 'labeled' || github.event.label.name == 'approved-for-ci' }}
37
- uses: ecmwf-actions/downstream-ci/.github/workflows/downstream-ci.yml@main
50
+ uses: ecmwf-actions/downstream-ci/.github/workflows/downstream-ci-hpc.yml@main
38
51
  with:
39
52
  anemoi-datasets: ecmwf/anemoi-datasets@${{ github.event.pull_request.head.sha || github.sha }}
40
53
  secrets: inherit
@@ -15,6 +15,8 @@ jobs:
15
15
 
16
16
  checks:
17
17
  uses: ecmwf-actions/reusable-workflows/.github/workflows/qa-pytest-pyproject.yml@v2
18
+ with:
19
+ python-version: "3.9"
18
20
 
19
21
  deploy:
20
22
  needs: [checks, quality]
@@ -5,7 +5,7 @@ name: Code Quality checks for PRs
5
5
 
6
6
  on:
7
7
  push:
8
- pull_request_target:
8
+ pull_request:
9
9
  types: [opened, synchronize, reopened]
10
10
 
11
11
  jobs:
@@ -120,6 +120,7 @@ celerybeat.pid
120
120
  *.sage.py
121
121
 
122
122
  # Environments
123
+ .envrc
123
124
  .env
124
125
  .venv
125
126
  env/
@@ -20,6 +20,12 @@ repos:
20
20
  - id: no-commit-to-branch # Prevent committing to main / master
21
21
  - id: check-added-large-files # Check for large files added to git
22
22
  - id: check-merge-conflict # Check for files that contain merge conflict
23
+ - repo: https://github.com/pre-commit/pygrep-hooks
24
+ rev: v1.10.0 # Use the ref you want to point at
25
+ hooks:
26
+ - id: python-use-type-annotations # Check for missing type annotations
27
+ - id: python-check-blanket-noqa # Check for # noqa: all
28
+ - id: python-no-log-warn # Check for log.warn
23
29
  - repo: https://github.com/psf/black-pre-commit-mirror
24
30
  rev: 24.8.0
25
31
  hooks:
@@ -37,15 +43,15 @@ repos:
37
43
  rev: v0.6.4
38
44
  hooks:
39
45
  - id: ruff
40
- # Next line is to exclude for documentation code snippets
41
- exclude: 'docs/(.*/)?[a-z]\w+_.py$'
46
+ # Next line if for documenation cod snippets
47
+ exclude: '^[^_].*_\.py$'
42
48
  args:
43
49
  - --line-length=120
44
50
  - --fix
45
51
  - --exit-non-zero-on-fix
46
52
  - --preview
47
53
  - repo: https://github.com/sphinx-contrib/sphinx-lint
48
- rev: v0.9.1
54
+ rev: v1.0.0
49
55
  hooks:
50
56
  - id: sphinx-lint
51
57
  # For now, we use it. But it does not support a lot of sphinx features
@@ -59,12 +65,10 @@ repos:
59
65
  hooks:
60
66
  - id: docconvert
61
67
  args: ["numpy"]
62
- - repo: https://github.com/b8raoult/optional-dependencies-all
63
- rev: "0.0.6"
64
- hooks:
65
- - id: optional-dependencies-all
66
- args: ["--inplace", "--exclude-keys=dev,docs,tests", "--group=dev=all,docs,tests"]
67
68
  - repo: https://github.com/tox-dev/pyproject-fmt
68
69
  rev: "2.2.3"
69
70
  hooks:
70
71
  - id: pyproject-fmt
72
+
73
+ ci:
74
+ autoupdate_schedule: monthly
@@ -11,11 +11,21 @@ Keep it human-readable, your future self will thank you!
11
11
  ## [Unreleased]
12
12
 
13
13
  ### Added
14
+
15
+ - New `rescale` keyword in `open_dataset` to change units of variables #36
16
+ - Simplify imports
17
+
14
18
  ### Changed
15
19
 
16
20
  - Added incremental building of datasets
21
+ - Add missing dependency for documentation building
22
+ - Fix failing test due to previous merge
23
+ - Bug fix when creating dataset from zarr
24
+ - Bug fix with area selection in cutout operation
25
+ - add paths-ignore to ci workflow
17
26
 
18
27
  ### Removed
28
+ - pytest for notebooks
19
29
 
20
30
  ## [0.4.5]
21
31
 
@@ -25,6 +35,7 @@ Keep it human-readable, your future self will thank you!
25
35
  - CI workflow to update the changelog on release
26
36
  - adds the reusable cd pypi workflow
27
37
  - merge strategy for changelog in .gitattributes #25
38
+ - adds ci hpc config (#43)
28
39
 
29
40
  ### Changed
30
41
 
@@ -74,6 +85,9 @@ Keep it human-readable, your future self will thank you!
74
85
  - combine datasets
75
86
 
76
87
  ## 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
77
91
  [0.4.0]: https://github.com/ecmwf/anemoi-datasets/compare/0.3.0...0.4.0
78
92
  [0.3.0]: https://github.com/ecmwf/anemoi-datasets/compare/0.2.0...0.3.0
79
93
  [0.2.0]: https://github.com/ecmwf/anemoi-datasets/compare/0.1.0...0.2.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: anemoi-datasets
3
- Version: 0.4.5
3
+ Version: 0.5.0
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
@@ -224,38 +224,36 @@ Classifier: Programming Language :: Python :: Implementation :: PyPy
224
224
  Requires-Python: >=3.9
225
225
  License-File: LICENSE
226
226
  Requires-Dist: anemoi-utils[provenance]>=0.3.15
227
+ Requires-Dist: cfunits
227
228
  Requires-Dist: numpy
228
229
  Requires-Dist: pyyaml
229
230
  Requires-Dist: semantic-version
230
231
  Requires-Dist: tqdm
231
- Requires-Dist: zarr
232
+ Requires-Dist: zarr<=2.17
232
233
  Provides-Extra: all
233
- Requires-Dist: aiohttp; extra == "all"
234
234
  Requires-Dist: boto3; extra == "all"
235
235
  Requires-Dist: earthkit-data[mars]>=0.9; extra == "all"
236
236
  Requires-Dist: earthkit-geo>=0.2; extra == "all"
237
237
  Requires-Dist: earthkit-meteo; extra == "all"
238
- Requires-Dist: eccodes>=2.37; extra == "all"
238
+ Requires-Dist: ecmwflibs>=0.6.3; extra == "all"
239
239
  Requires-Dist: entrypoints; extra == "all"
240
240
  Requires-Dist: gcsfs; extra == "all"
241
241
  Requires-Dist: kerchunk; extra == "all"
242
242
  Requires-Dist: pyproj; extra == "all"
243
243
  Requires-Dist: requests; extra == "all"
244
- Requires-Dist: s3fs; extra == "all"
245
244
  Provides-Extra: create
246
245
  Requires-Dist: earthkit-data[mars]>=0.9; extra == "create"
247
246
  Requires-Dist: earthkit-geo>=0.2; extra == "create"
248
247
  Requires-Dist: earthkit-meteo; extra == "create"
249
- Requires-Dist: eccodes>=2.37; extra == "create"
248
+ Requires-Dist: ecmwflibs>=0.6.3; extra == "create"
250
249
  Requires-Dist: entrypoints; extra == "create"
251
250
  Requires-Dist: pyproj; extra == "create"
252
251
  Provides-Extra: dev
253
- Requires-Dist: aiohttp; extra == "dev"
254
252
  Requires-Dist: boto3; extra == "dev"
255
253
  Requires-Dist: earthkit-data[mars]>=0.9; extra == "dev"
256
254
  Requires-Dist: earthkit-geo>=0.2; extra == "dev"
257
255
  Requires-Dist: earthkit-meteo; extra == "dev"
258
- Requires-Dist: eccodes>=2.37; extra == "dev"
256
+ Requires-Dist: ecmwflibs>=0.6.3; extra == "dev"
259
257
  Requires-Dist: entrypoints; extra == "dev"
260
258
  Requires-Dist: gcsfs; extra == "dev"
261
259
  Requires-Dist: kerchunk; extra == "dev"
@@ -264,26 +262,19 @@ Requires-Dist: pandoc; extra == "dev"
264
262
  Requires-Dist: pyproj; extra == "dev"
265
263
  Requires-Dist: pytest; extra == "dev"
266
264
  Requires-Dist: requests; extra == "dev"
267
- Requires-Dist: rstfmt; extra == "dev"
268
- Requires-Dist: s3fs; extra == "dev"
269
265
  Requires-Dist: sphinx; extra == "dev"
270
- Requires-Dist: sphinx-argparse<0.5; extra == "dev"
271
266
  Requires-Dist: sphinx-rtd-theme; extra == "dev"
272
267
  Provides-Extra: docs
273
268
  Requires-Dist: nbsphinx; extra == "docs"
274
269
  Requires-Dist: pandoc; extra == "docs"
275
- Requires-Dist: rstfmt; extra == "docs"
276
270
  Requires-Dist: sphinx; extra == "docs"
277
- Requires-Dist: sphinx-argparse<0.5; extra == "docs"
271
+ Requires-Dist: sphinx-argparse; extra == "docs"
278
272
  Requires-Dist: sphinx-rtd-theme; extra == "docs"
279
- Provides-Extra: kerchunk
280
- Requires-Dist: gcsfs; extra == "kerchunk"
281
- Requires-Dist: kerchunk; extra == "kerchunk"
282
- Requires-Dist: s3fs; extra == "kerchunk"
283
273
  Provides-Extra: remote
284
- Requires-Dist: aiohttp; extra == "remote"
285
274
  Requires-Dist: boto3; extra == "remote"
286
275
  Requires-Dist: requests; extra == "remote"
287
- Requires-Dist: s3fs; extra == "remote"
288
276
  Provides-Extra: tests
289
277
  Requires-Dist: pytest; extra == "tests"
278
+ Provides-Extra: xarray
279
+ Requires-Dist: gcsfs; extra == "xarray"
280
+ Requires-Dist: kerchunk; extra == "xarray"
@@ -86,8 +86,8 @@ To add statistics for 6h increments:
86
86
 
87
87
  .. code:: bash
88
88
 
89
- anemoi-datasets init-additions dataset.zarr --delta 6h anemoi-datasets
90
- anemoi-datasets load-additions dataset.zarr --part 1/2 --delta 6h anemoi-datasets
89
+ anemoi-datasets init-additions dataset.zarr --delta 6h
90
+ anemoi-datasets load-additions dataset.zarr --part 1/2 --delta 6h
91
91
  anemoi-datasets load-additions dataset.zarr --part 2/2 --delta 6h
92
92
  anemoi-datasets finalise-additions dataset.zarr --delta 6h
93
93
 
@@ -96,7 +96,7 @@ To add statistics for 12h increments:
96
96
  .. code:: bash
97
97
 
98
98
  anemoi-datasets init-additions dataset.zarr --delta 12h
99
- anemoi-datasets load-additions dataset.zarr --part 1/2 --delta 12h anemoi-datasets
99
+ anemoi-datasets load-additions dataset.zarr --part 1/2 --delta 12h
100
100
  anemoi-datasets load-additions dataset.zarr --part 2/2 --delta 12h
101
101
  anemoi-datasets finalise-additions dataset.zarr --delta 12h
102
102
 
@@ -0,0 +1,30 @@
1
+ # Scale and offset can be passed as a dictionnary...
2
+
3
+ ds = open_dataset(
4
+ dataset,
5
+ rescale={"2t": {"scale": 1.0, "offset": -273.15}},
6
+ )
7
+
8
+ # ... a tuple of floating points ....
9
+
10
+ ds = open_dataset(
11
+ dataset,
12
+ rescale={"2t": (1.0, -273.15)},
13
+ )
14
+
15
+ # ... or a tuple of strings representing units.
16
+
17
+ ds = open_dataset(
18
+ dataset,
19
+ rescale={"2t": ("K", "degC")},
20
+ )
21
+
22
+ # Several variables can be rescaled at once.
23
+
24
+ ds = open_dataset(
25
+ dataset,
26
+ rescale={
27
+ "2t": ("K", "degC"),
28
+ "tp": ("m", "mm"),
29
+ },
30
+ )
@@ -66,3 +66,28 @@ You can also rename variables:
66
66
 
67
67
  This will be useful when you join datasets and do not want variables
68
68
  from one dataset to override the ones from the other.
69
+
70
+ *********
71
+ rescale
72
+ *********
73
+
74
+ When combining datasets, you may want to rescale the variables so that
75
+ their have matching units. This can be done with the `rescale` option:
76
+
77
+ .. literalinclude:: code/rescale_.py
78
+ :language: python
79
+
80
+ The `rescale` option will also rescale the statistics. The rescaling is
81
+ currently limited to simple linear conversions.
82
+
83
+ When provided with units, the `rescale` option uses the cfunits_ package
84
+ find the `scale` and `offset` attributes of the units and uses these to
85
+ rescale the data.
86
+
87
+ .. warning::
88
+
89
+ When providing units, the library assumes that the mapping between
90
+ them is a linear transformation. No check is does to ensure this is
91
+ the case.
92
+
93
+ .. _cfunits: https://github.com/NCAS-CMS/cfunits
@@ -51,44 +51,42 @@ dynamic = [
51
51
  ]
52
52
  dependencies = [
53
53
  "anemoi-utils[provenance]>=0.3.15",
54
+ "cfunits",
54
55
  "numpy",
55
56
  "pyyaml",
56
57
  "semantic-version",
57
58
  "tqdm",
58
- "zarr",
59
+ "zarr<=2.17",
59
60
  ]
60
61
 
61
62
  optional-dependencies.all = [
62
- "aiohttp",
63
63
  "boto3",
64
64
  "earthkit-data[mars]>=0.9",
65
65
  "earthkit-geo>=0.2",
66
66
  "earthkit-meteo",
67
- "eccodes>=2.37",
67
+ "ecmwflibs>=0.6.3",
68
68
  "entrypoints",
69
69
  "gcsfs",
70
70
  "kerchunk",
71
71
  "pyproj",
72
72
  "requests",
73
- "s3fs",
74
73
  ]
75
74
 
76
75
  optional-dependencies.create = [
77
76
  "earthkit-data[mars]>=0.9",
78
77
  "earthkit-geo>=0.2",
79
78
  "earthkit-meteo",
80
- "eccodes>=2.37",
79
+ "ecmwflibs>=0.6.3",
81
80
  "entrypoints",
82
81
  "pyproj",
83
82
  ]
84
83
 
85
84
  optional-dependencies.dev = [
86
- "aiohttp",
87
85
  "boto3",
88
86
  "earthkit-data[mars]>=0.9",
89
87
  "earthkit-geo>=0.2",
90
88
  "earthkit-meteo",
91
- "eccodes>=2.37",
89
+ "ecmwflibs>=0.6.3",
92
90
  "entrypoints",
93
91
  "gcsfs",
94
92
  "kerchunk",
@@ -97,39 +95,32 @@ optional-dependencies.dev = [
97
95
  "pyproj",
98
96
  "pytest",
99
97
  "requests",
100
- "rstfmt",
101
- "s3fs",
102
98
  "sphinx",
103
- "sphinx-argparse<0.5",
104
99
  "sphinx-rtd-theme",
105
100
  ]
106
101
 
107
102
  optional-dependencies.docs = [
108
103
  "nbsphinx",
109
104
  "pandoc",
110
- "rstfmt",
111
105
  "sphinx",
112
- "sphinx-argparse<0.5",
106
+ "sphinx-argparse",
113
107
  "sphinx-rtd-theme",
114
108
  ]
115
109
 
116
- optional-dependencies.kerchunk = [
117
- "gcsfs",
118
- "kerchunk",
119
- "s3fs",
120
- ]
121
-
122
110
  optional-dependencies.remote = [
123
- "aiohttp",
124
111
  "boto3",
125
112
  "requests",
126
- "s3fs",
127
113
  ]
128
114
 
129
115
  optional-dependencies.tests = [
130
116
  "pytest",
131
117
  ]
132
118
 
119
+ optional-dependencies.xarray = [
120
+ "gcsfs",
121
+ "kerchunk",
122
+ ]
123
+
133
124
  urls.Documentation = "https://anemoi-datasets.readthedocs.io/"
134
125
  urls.Homepage = "https://github.com/ecmwf/anemoi-datasets/"
135
126
  urls.Issues = "https://github.com/ecmwf/anemoi-datasets/issues"
@@ -145,3 +136,6 @@ scripts.anemoi-datasets = "anemoi.datasets.__main__:main"
145
136
 
146
137
  [tool.setuptools_scm]
147
138
  version_file = "src/anemoi/datasets/_version.py"
139
+
140
+ [tool.isort]
141
+ profile = "black"
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '0.4.5'
16
- __version_tuple__ = version_tuple = (0, 4, 5)
15
+ __version__ = version = '0.5.0'
16
+ __version_tuple__ = version_tuple = (0, 5, 0)
@@ -19,7 +19,7 @@ def task(what, options, *args, **kwargs):
19
19
  """
20
20
 
21
21
  now = datetime.datetime.now()
22
- LOG.info(f"Task {what}({args},{kwargs}) starting")
22
+ LOG.info(f"🎬 Task {what}({args},{kwargs}) starting")
23
23
 
24
24
  from anemoi.datasets.create import creator_factory
25
25
 
@@ -28,7 +28,7 @@ def task(what, options, *args, **kwargs):
28
28
  c = creator_factory(what.replace("-", "_"), **options)
29
29
  result = c.run()
30
30
 
31
- LOG.debug(f"Task {what}({args},{kwargs}) completed ({datetime.datetime.now()-now})")
31
+ LOG.info(f"🏁 Task {what}({args},{kwargs}) completed ({datetime.datetime.now()-now})")
32
32
  return result
33
33
 
34
34
 
@@ -57,6 +57,7 @@ class Create(Command):
57
57
  command_parser.add_argument("--trace", action="store_true")
58
58
 
59
59
  def run(self, args):
60
+
60
61
  now = time.time()
61
62
  if args.threads + args.processes:
62
63
  self.parallel_create(args)