anemoi-utils 0.4.10__tar.gz → 0.4.12__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.

Potentially problematic release.


This version of anemoi-utils might be problematic. Click here for more details.

Files changed (100) hide show
  1. anemoi_utils-0.4.12/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +46 -0
  2. anemoi_utils-0.4.12/.github/dependabot.yml +10 -0
  3. anemoi_utils-0.4.12/.github/labeler.yml +42 -0
  4. anemoi_utils-0.4.12/.github/release.yml +23 -0
  5. anemoi_utils-0.4.12/.github/workflows/downstream-ci-hpc.yml +54 -0
  6. anemoi_utils-0.4.12/.github/workflows/pr-conventional-commit.yml +22 -0
  7. anemoi_utils-0.4.12/.github/workflows/pr-label-conventional-commits.yml +45 -0
  8. anemoi_utils-0.4.12/.github/workflows/pr-label-file-based.yml +17 -0
  9. anemoi_utils-0.4.10/.github/workflows/label-public-pr.yml → anemoi_utils-0.4.12/.github/workflows/pr-label-public.yml +1 -1
  10. anemoi_utils-0.4.12/.github/workflows/python-publish.yml +13 -0
  11. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/.github/workflows/python-pull-request.yml +4 -7
  12. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/.github/workflows/readthedocs-pr-update.yml +2 -0
  13. anemoi_utils-0.4.12/.github/workflows/release-please.yml +28 -0
  14. anemoi_utils-0.4.12/.gitignore +135 -0
  15. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/.pre-commit-config.yaml +2 -4
  16. anemoi_utils-0.4.12/.release-please-config.json +19 -0
  17. anemoi_utils-0.4.12/.release-please-manifest.json +3 -0
  18. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/CHANGELOG.md +34 -0
  19. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/CONTRIBUTORS.md +2 -2
  20. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/LICENSE +1 -1
  21. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/PKG-INFO +4 -3
  22. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/README.md +2 -2
  23. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/pyproject.toml +1 -0
  24. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/_version.py +2 -2
  25. anemoi_utils-0.4.12/src/anemoi/utils/caching.py +124 -0
  26. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/commands/requests.py +6 -2
  27. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/config.py +17 -0
  28. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/dates.py +13 -6
  29. anemoi_utils-0.4.12/src/anemoi/utils/devtools.py +83 -0
  30. anemoi_utils-0.4.12/src/anemoi/utils/grids.py +97 -0
  31. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/humanize.py +33 -0
  32. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi_utils.egg-info/PKG-INFO +4 -3
  33. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi_utils.egg-info/SOURCES.txt +16 -4
  34. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi_utils.egg-info/requires.txt +1 -0
  35. anemoi_utils-0.4.12/tests/test_caching.py +113 -0
  36. anemoi_utils-0.4.12/tests/test_grids.py +28 -0
  37. anemoi_utils-0.4.10/.github/workflows/changelog-pr-update.yml +0 -18
  38. anemoi_utils-0.4.10/.github/workflows/changelog-release-update.yml +0 -45
  39. anemoi_utils-0.4.10/.github/workflows/ci.yml +0 -58
  40. anemoi_utils-0.4.10/.github/workflows/python-publish.yml +0 -27
  41. anemoi_utils-0.4.10/.gitignore +0 -189
  42. anemoi_utils-0.4.10/src/anemoi/utils/caching.py +0 -74
  43. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/.gitattributes +0 -0
  44. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/.github/CODEOWNERS +0 -0
  45. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/.github/ci-hpc-config.yml +0 -0
  46. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/.readthedocs.yaml +0 -0
  47. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/docs/Makefile +0 -0
  48. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/docs/_static/logo.png +0 -0
  49. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/docs/_static/style.css +0 -0
  50. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/docs/_templates/.gitkeep +0 -0
  51. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/docs/conf.py +0 -0
  52. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/docs/index.rst +0 -0
  53. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/docs/installing.rst +0 -0
  54. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/docs/modules/checkpoints.rst +0 -0
  55. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/docs/modules/config.rst +0 -0
  56. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/docs/modules/dates.rst +0 -0
  57. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/docs/modules/grib.rst +0 -0
  58. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/docs/modules/humanize.rst +0 -0
  59. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/docs/modules/provenance.rst +0 -0
  60. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/docs/modules/s3.rst +0 -0
  61. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/docs/modules/text.rst +0 -0
  62. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/setup.cfg +0 -0
  63. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/__init__.py +0 -0
  64. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/__main__.py +0 -0
  65. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/checkpoints.py +0 -0
  66. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/cli.py +0 -0
  67. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/commands/__init__.py +0 -0
  68. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/commands/config.py +0 -0
  69. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/compatibility.py +0 -0
  70. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/grib.py +0 -0
  71. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/hindcasts.py +0 -0
  72. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/logs.py +0 -0
  73. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/mars/__init__.py +0 -0
  74. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/mars/mars.yaml +0 -0
  75. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/mars/requests.py +0 -0
  76. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/provenance.py +0 -0
  77. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/registry.py +0 -0
  78. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/remote/__init__.py +0 -0
  79. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/remote/s3.py +0 -0
  80. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/remote/ssh.py +0 -0
  81. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/s3.py +0 -0
  82. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/sanitise.py +0 -0
  83. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/sanitize.py +0 -0
  84. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/text.py +0 -0
  85. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/timer.py +0 -0
  86. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi_utils.egg-info/dependency_links.txt +0 -0
  87. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi_utils.egg-info/entry_points.txt +0 -0
  88. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi_utils.egg-info/top_level.txt +0 -0
  89. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/tests/test-transfer-data/directory/b/c/x +0 -0
  90. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/tests/test-transfer-data/directory/b/y +0 -0
  91. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/tests/test-transfer-data/directory/exotic filename ;^/"'[=.,#]()/303/252/303/274/303/247/303/262/342/234/205.txt" +0 -0
  92. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/tests/test-transfer-data/directory/z +0 -0
  93. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/tests/test-transfer-data/file +0 -0
  94. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/tests/test_compatibility.py +0 -0
  95. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/tests/test_dates.py +0 -0
  96. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/tests/test_frequency.py +0 -0
  97. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/tests/test_provenance.py +0 -0
  98. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/tests/test_remote.py +0 -0
  99. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/tests/test_sanetise.py +0 -0
  100. {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/tests/test_utils.py +0 -0
@@ -0,0 +1,46 @@
1
+ ## Description
2
+
3
+ <!-- Provide a brief summary of the changes introduced in this pull request. -->
4
+
5
+ ## Type of Change
6
+
7
+ - [ ] Bug fix (non-breaking change which fixes an issue)
8
+ - [ ] New feature (non-breaking change which adds functionality)
9
+ - [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
10
+ - [ ] Documentation update
11
+
12
+ ## Issue Number
13
+
14
+ <!-- Link the Issue number this change addresses, ideally in one of the "magic format" such as Closes #XYZ -->
15
+
16
+ <!-- Alternatively, explain the motivation behind the changes and the context in which they are being made. -->
17
+
18
+ ## Code Compatibility
19
+
20
+ - [ ] I have performed a self-review of my code
21
+
22
+ ### Code Performance and Testing
23
+
24
+ - [ ] I have added tests that prove my fix is effective or that my feature works
25
+ - [ ] I ran the [complete Pytest test](https://anemoi.readthedocs.io/projects/training/en/latest/dev/testing.html) suite locally, and they pass
26
+
27
+ <!-- In case this affects the model sharding or other specific components please describe these here. -->
28
+
29
+ ### Dependencies
30
+
31
+ - [ ] I have ensured that the code is still pip-installable after the changes and runs
32
+ - [ ] I have tested that new dependencies themselves are pip-installable.
33
+
34
+ <!-- List any new dependencies that are required for this change and the justification to add them. -->
35
+
36
+ ### Documentation
37
+
38
+ - [ ] My code follows the style guidelines of this project
39
+ - [ ] I have updated the documentation and docstrings to reflect the changes
40
+ - [ ] I have added comments to my code, particularly in hard-to-understand areas
41
+
42
+ <!-- Describe any major updates to the documentation -->
43
+
44
+ ## Additional Notes
45
+
46
+ <!-- Include any additional information, caveats, or considerations that the reviewer should be aware of. -->
@@ -0,0 +1,10 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: "pip"
4
+ directory: "/"
5
+ schedule:
6
+ interval: "weekly"
7
+ - package-ecosystem: "github-actions"
8
+ directory: "/"
9
+ schedule:
10
+ interval: "monthly"
@@ -0,0 +1,42 @@
1
+ # This is the configuration file for the labeler action.
2
+ # It assigns labels to pull requests based on the files changed in the PR.
3
+ # See more here: https://github.com/actions/labeler
4
+ dependencies:
5
+ - changed-files:
6
+ - any-glob-to-any-file:
7
+ - "**/requirements.txt"
8
+ - "**/setup.py"
9
+ - "**/pyproject.toml"
10
+ - "**/Pipfile"
11
+ - "**/Pipfile.lock"
12
+ - "**/requirements/*.txt"
13
+ - "**/requirements/*.in"
14
+
15
+ documentation:
16
+ - changed-files:
17
+ - any-glob-to-any-file:
18
+ - "**/docs/**/*"
19
+ - "*.md"
20
+ - "*.rst"
21
+
22
+ config:
23
+ - changed-files:
24
+ - any-glob-to-any-file:
25
+ - "**/src/**/config/**/*"
26
+
27
+ CI/CD:
28
+ - changed-files:
29
+ - any-glob-to-any-file:
30
+ - "**/.pre-commit-config.yaml"
31
+ - ".github/**/*"
32
+ - "tox.ini"
33
+ - ".coveragerc"
34
+
35
+ tests:
36
+ - changed-files:
37
+ - any-glob-to-any-file:
38
+ - "**/tests/**/*"
39
+ - "**/test/**/*"
40
+ - "**/test_*.py"
41
+ - "**/test.py"
42
+ - "**/conftest.py"
@@ -0,0 +1,23 @@
1
+ # .github/release.yml
2
+ # https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes
3
+
4
+ changelog:
5
+ exclude:
6
+ labels:
7
+ - ignore-for-release
8
+ - no-changelog
9
+ authors:
10
+ - pre-commit-ci
11
+ categories:
12
+ - title: Breaking Changes 🛠
13
+ labels:
14
+ - "breaking change"
15
+ - title: Exciting New Features 🎉
16
+ labels:
17
+ - enhancement
18
+ - title: Config Changes 📑
19
+ labels:
20
+ - config
21
+ - title: Other Changes 🔗
22
+ labels:
23
+ - "*"
@@ -0,0 +1,54 @@
1
+ # This workflow triggers tests on dependent packages.
2
+ # The dependency tree itself is defined in ecmwf-actions/downstream-ci/
3
+ name: Test downstream dependent packages on HPC
4
+
5
+ on:
6
+ # Trigger the workflow on push to main or develop, except tag creation
7
+ push:
8
+ branches:
9
+ - 'main'
10
+ - 'develop'
11
+ tags-ignore:
12
+ - '**'
13
+ paths-ignore:
14
+ - "docs/**"
15
+ - "CHANGELOG.md"
16
+ - "README.md"
17
+
18
+ # Trigger the workflow on pull request
19
+ pull_request:
20
+ paths-ignore:
21
+ - "docs/**"
22
+ - "CHANGELOG.md"
23
+ - "README.md"
24
+
25
+ # Trigger the workflow manually
26
+ workflow_dispatch: ~
27
+
28
+ # Trigger after public PR approved for CI
29
+ pull_request_target:
30
+ types: [labeled]
31
+ paths-ignore:
32
+ - "docs/**"
33
+ - "CHANGELOG.md"
34
+ - "README.md"
35
+
36
+ jobs:
37
+ # Run CI including downstream packages on self-hosted runners
38
+ downstream-ci:
39
+ name: downstream-ci
40
+ if: ${{ !github.event.pull_request.head.repo.fork && github.event.action != 'labeled' || github.event.label.name == 'approved-for-ci' }}
41
+ uses: ecmwf-actions/downstream-ci/.github/workflows/downstream-ci.yml@main
42
+ with:
43
+ anemoi-utils: ecmwf/anemoi-utils@${{ github.event.pull_request.head.sha || github.sha }}
44
+ codecov_upload: true
45
+ secrets: inherit
46
+
47
+ # Build downstream packages on HPC
48
+ downstream-ci-hpc:
49
+ name: downstream-ci-hpc
50
+ if: ${{ !github.event.pull_request.head.repo.fork && github.event.action != 'labeled' || github.event.label.name == 'approved-for-ci' }}
51
+ uses: ecmwf-actions/downstream-ci/.github/workflows/downstream-ci-hpc.yml@main
52
+ with:
53
+ anemoi-utils: ecmwf/anemoi-utils@${{ github.event.pull_request.head.sha || github.sha }}
54
+ secrets: inherit
@@ -0,0 +1,22 @@
1
+ # This workflow ensures that the PR title follows the Conventional Commit format.
2
+ name: "[Pull Request] Ensure Conventional Commit in PR title"
3
+
4
+ on:
5
+ pull_request_target:
6
+ types:
7
+ - opened
8
+ - edited
9
+ - synchronize
10
+ - reopened
11
+
12
+ permissions:
13
+ pull-requests: read
14
+
15
+ jobs:
16
+ main:
17
+ name: Validate PR title
18
+ runs-on: ubuntu-latest
19
+ steps:
20
+ - uses: amannn/action-semantic-pull-request@v5
21
+ env:
22
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,45 @@
1
+ # This workflow assigns labels to a pull request based on the Conventional Commits format.
2
+ # This is necessary for release-please to work properly.
3
+ name: "[Pull Request] Label Conventional Commits"
4
+
5
+ on:
6
+ pull_request:
7
+ branches: [main]
8
+ types:
9
+ [opened, reopened, labeled, unlabeled]
10
+
11
+ jobs:
12
+ assign-labels:
13
+ runs-on: ubuntu-latest
14
+ name: Assign labels in pull request
15
+ if: github.event.pull_request.merged == false
16
+ steps:
17
+ - uses: actions/checkout@v3
18
+ - name: Assign labels from Conventional Commits
19
+ id: action-assign-labels
20
+ uses: mauroalderete/action-assign-labels@v1
21
+ with:
22
+ pull-request-number: ${{ github.event.pull_request.number }}
23
+ github-token: ${{ secrets.GITHUB_TOKEN }}
24
+ conventional-commits: |
25
+ conventional-commits:
26
+ - type: 'fix'
27
+ nouns: ['FIX', 'Fix', 'fix', 'FIXED', 'Fixed', 'fixed']
28
+ labels: ['bug']
29
+ - type: 'feature'
30
+ nouns: ['FEATURE', 'Feature', 'feature', 'FEAT', 'Feat', 'feat']
31
+ labels: ['enhancement']
32
+ - type: 'breaking_change'
33
+ nouns: ['BREAKING CHANGE', 'BREAKING', 'MAJOR']
34
+ labels: ['breaking change']
35
+ - type: 'documentation'
36
+ nouns: ['doc','docs','docu','document','documentation']
37
+ labels: ['documentation']
38
+ - type: 'build'
39
+ nouns: ['build','rebuild','ci']
40
+ labels: ['CI/CD']
41
+ - type: 'config'
42
+ nouns: ['config', 'conf', 'configuration']
43
+ labels: ['config']
44
+ maintain-labels-not-matched: false
45
+ apply-changes: true
@@ -0,0 +1,17 @@
1
+ # This workflow assigns labels to a pull request based on the files changed in the PR.
2
+ # The labels are defined in the `.github/labels.yml` file.
3
+ name: "[Pull Request] Label File-based"
4
+ on:
5
+ pull_request_target:
6
+ types: [opened, synchronize]
7
+
8
+ permissions:
9
+ contents: read
10
+ pull-requests: write
11
+
12
+ jobs:
13
+ labeler:
14
+ runs-on: ubuntu-latest
15
+ steps:
16
+ - name: Assign labels from file changes
17
+ uses: actions/labeler@v5
@@ -1,5 +1,5 @@
1
1
  # Manage labels of pull requests that originate from forks
2
- name: label-public-pr
2
+ name: "[Pull Request] Label PRs from public forks"
3
3
 
4
4
  on:
5
5
  pull_request_target:
@@ -0,0 +1,13 @@
1
+ # This workflow will upload a Python Package using Twine when a release is created
2
+ # For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries
3
+
4
+ name: Upload Python Package to PyPI
5
+
6
+ on:
7
+ release:
8
+ types: [created]
9
+
10
+ jobs:
11
+ deploy:
12
+ uses: ecmwf-actions/reusable-workflows/.github/workflows/cd-pypi.yml@v2
13
+ secrets: inherit
@@ -1,18 +1,15 @@
1
- # This workflow will upload a Python Package using Twine when a release is created
2
- # For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries
3
-
4
- name: Test PR
1
+ # This workflow runs pre-commit checks and pytest tests against multiple platforms and Python versions.
2
+ name: Code Quality checks and Testing
5
3
 
6
4
  on:
7
5
  pull_request:
8
6
  types: [opened, synchronize, reopened]
9
7
  push:
10
8
  branches:
11
- - develop
9
+ - main
12
10
  schedule:
13
11
  - cron: "9 2 * * 0" # at 9:02 on sunday
14
12
 
15
-
16
13
  jobs:
17
14
  quality:
18
15
  uses: ecmwf-actions/reusable-workflows/.github/workflows/qa-precommit-run.yml@v2
@@ -22,7 +19,7 @@ jobs:
22
19
  checks:
23
20
  strategy:
24
21
  matrix:
25
- python-version: ["3.11"]
22
+ python-version: ["3.9", "3.10", "3.11", "3.12"]
26
23
  uses: ecmwf-actions/reusable-workflows/.github/workflows/qa-pytest-pyproject.yml@v2
27
24
  with:
28
25
  python-version: ${{ matrix.python-version }}
@@ -1,3 +1,5 @@
1
+ # This workflow adds a link to the experimental documentation build to the PR.
2
+ # This does NOT trigger a build of the documentation, this is handled through webhooks.
1
3
  name: Read the Docs PR Preview
2
4
  on:
3
5
  pull_request_target:
@@ -0,0 +1,28 @@
1
+ # This workflow uses an action to run Release Please to create a release PR.
2
+ # It is governed by the config and manifest in the root of the repo.
3
+ # For more information see: https://github.com/googleapis/release-please
4
+ name: Run Release Please
5
+ on:
6
+ push:
7
+ branches:
8
+ - main
9
+ - hotfix/*
10
+
11
+ permissions:
12
+ contents: write
13
+ pull-requests: write
14
+
15
+ jobs:
16
+ release-please:
17
+ runs-on: ubuntu-latest
18
+ steps:
19
+ - uses: googleapis/release-please-action@v4
20
+ with:
21
+ # this assumes that you have created a personal access token
22
+ # (PAT) and configured it as a GitHub action secret named
23
+ # `MY_RELEASE_PLEASE_TOKEN` (this secret name is not important).
24
+ token: ${{ secrets.RELEASE_PLEASE_TOKEN }}
25
+ # optional. customize path to .release-please-config.json
26
+ config-file: .release-please-config.json
27
+ # Currently releases are done from main
28
+ target-branch: ${{ github.ref_name }}
@@ -0,0 +1,135 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.so
6
+ .Python
7
+ __pypackages__/
8
+
9
+ # Distribution / packaging
10
+ build/
11
+ develop-eggs/
12
+ dist/
13
+ downloads/
14
+ eggs/
15
+ .eggs/
16
+ lib/
17
+ lib64/
18
+ parts/
19
+ sdist/
20
+ var/
21
+ wheels/
22
+ share/python-wheels/
23
+ *.egg-info/
24
+ .installed.cfg
25
+ *.egg
26
+ MANIFEST
27
+
28
+ # Testing and coverage
29
+ htmlcov/
30
+ .tox/
31
+ .nox/
32
+ .coverage
33
+ .coverage.*
34
+ .cache
35
+ nosetests.xml
36
+ coverage.xml
37
+ *.cover
38
+ *.py,cover
39
+ .hypothesis/
40
+ .pytest_cache/
41
+ cover/
42
+
43
+ # Documentation
44
+ docs/_build/
45
+ /site
46
+ *.mo
47
+ *.pot
48
+
49
+ # Environments
50
+ .env
51
+ .envrc
52
+ .venv
53
+ env/
54
+ venv/
55
+ ENV/
56
+ env.bak/
57
+ venv.bak/
58
+
59
+ # IDEs
60
+ .idea/
61
+ .spyderproject
62
+ .spyproject
63
+ .ropeproject
64
+ .vscode/
65
+ *.code-workspace
66
+ *.sublime-project
67
+ *.sublime-workspace
68
+
69
+ # Jupyter Notebook
70
+ .ipynb_checkpoints
71
+
72
+ # Type checking
73
+ .mypy_cache/
74
+ .dmypy.json
75
+ dmypy.json
76
+ .pyre/
77
+ .pytype/
78
+
79
+ # Data files
80
+ *.grib
81
+ *.onnx
82
+ *.ckpt
83
+ *.npy
84
+ *.npz
85
+ *.zarr/
86
+ *.nc
87
+ *.h5
88
+ *.hdf5
89
+ *.pkl
90
+ *.parquet
91
+ *.csv
92
+ *.xlsx
93
+ *.xls
94
+
95
+ # ML artifacts
96
+ wandb/
97
+ mlruns/
98
+ lightning_logs/
99
+ *.ckpt
100
+ *.pt
101
+ *.pth
102
+ runs/
103
+ checkpoints/
104
+
105
+ # Temporary and system files
106
+ *.swp
107
+ *.download
108
+ *.out
109
+ *.sync
110
+ *.dot
111
+ *.tmp
112
+ *.log
113
+ *.log.*
114
+ .DS_Store
115
+ ~*
116
+ tmp/
117
+ temp/
118
+ logs/
119
+ _dev/
120
+ outputs/
121
+ *tmp_data/
122
+
123
+ # Project specific
124
+ ?
125
+ ?.*
126
+ foo
127
+ bar
128
+ ~$images.pptx
129
+ test.py
130
+ test.ipynb
131
+ cutout.png
132
+ _version.py
133
+ *.to_upload
134
+ tempCodeRunnerFile.python
135
+ Untitled-*.py
@@ -40,7 +40,7 @@ repos:
40
40
  - --force-single-line-imports
41
41
  - --profile black
42
42
  - repo: https://github.com/astral-sh/ruff-pre-commit
43
- rev: v0.8.1
43
+ rev: v0.8.6
44
44
  hooks:
45
45
  - id: ruff
46
46
  args:
@@ -64,7 +64,7 @@ repos:
64
64
  hooks:
65
65
  - id: pyproject-fmt
66
66
  - repo: https://github.com/jshwi/docsig # Check docstrings against function sig
67
- rev: v0.65.0
67
+ rev: v0.66.1
68
68
  hooks:
69
69
  - id: docsig
70
70
  args:
@@ -76,5 +76,3 @@ repos:
76
76
  - --disable=E113 # Disable empty docstrings
77
77
  ci:
78
78
  autoupdate_schedule: monthly
79
- ci:
80
- autoupdate_schedule: monthly
@@ -0,0 +1,19 @@
1
+ {
2
+ "release-type": "python",
3
+ "bump-minor-pre-major": true,
4
+ "bump-patch-for-minor-pre-major": true,
5
+ "separate-pull-requests": true,
6
+ "always-update": true,
7
+ "changelog-type": "github",
8
+ "include-component-in-tag": false,
9
+ "include-v-in-tag": false,
10
+ "pull-request-title-pattern": "chore${scope}: Preparing Next Release for ${component} ${version}",
11
+ "pull-request-header": ":robot: Automated Release PR\n\nThis PR was created by `release-please` to prepare the next release. Once merged:\n\n1. A new version tag will be created\n2. A GitHub release will be published\n3. The changelog will be updated\n\nChanges to be included in the next release:",
12
+ "pull-request-footer": "> [!IMPORTANT]\n> :warning: Merging this PR will:\n> - Create a new release\n> - Trigger deployment pipelines\n> - Update package versions\n\n **Before merging:**\n - Ensure all tests pass\n - Review the changelog carefully\n - Get required approvals\n\n [Release-please documentation](https://github.com/googleapis/release-please)",
13
+ "packages": {
14
+ ".": {
15
+ "package-name": "anemoi-utils"
16
+ }
17
+ },
18
+ "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json"
19
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.4.12"
3
+ }
@@ -8,6 +8,40 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
8
8
  Please add your functional changes to the appropriate section in the PR.
9
9
  Keep it human-readable, your future self will thank you!
10
10
 
11
+ ## 0.4.12 (2025-01-30)
12
+
13
+ <!-- Release notes generated using configuration in .github/release.yml at main -->
14
+
15
+ ## What's Changed
16
+ ### Other Changes 🔗
17
+ * feat: better support for timedelta larger than 24h by @floriankrb in https://github.com/ecmwf/anemoi-utils/pull/81
18
+ * feat(requests): read input from stdin by @gmertes in https://github.com/ecmwf/anemoi-utils/pull/82
19
+ * chore: synced file(s) with ecmwf-actions/reusable-workflows by @DeployDuck in https://github.com/ecmwf/anemoi-utils/pull/80
20
+
21
+ ## New Contributors
22
+ * @DeployDuck made their first contribution in https://github.com/ecmwf/anemoi-utils/pull/80
23
+
24
+ **Full Changelog**: https://github.com/ecmwf/anemoi-utils/compare/0.4.11...0.4.12
25
+
26
+ ## 0.4.11 (2025-01-17)
27
+
28
+ <!-- Release notes generated using configuration in .github/release.yml at develop -->
29
+
30
+ ## What's Changed
31
+ ### Other Changes
32
+ * Feature request: Add option to read configuration from stdin by @mpartio in https://github.com/ecmwf/anemoi-utils/pull/59
33
+ * feat(plots): Add quick map plot for debugging by @b8raoult in https://github.com/ecmwf/anemoi-utils/pull/69
34
+ * feat: added-anemoi-utils-grids-and-tests by @floriankrb in https://github.com/ecmwf/anemoi-utils/pull/74
35
+ * feat(plot): added plotting options by @NRaoult in https://github.com/ecmwf/anemoi-utils/pull/72
36
+ * ci(release): Simplify Release Workflow to Minimum by @JesperDramsch in https://github.com/ecmwf/anemoi-utils/pull/78
37
+ * feat: adding-tools-for-grids by @floriankrb in https://github.com/ecmwf/anemoi-utils/pull/76
38
+
39
+ ## New Contributors
40
+ * @mpartio made their first contribution in https://github.com/ecmwf/anemoi-utils/pull/59
41
+ * @NRaoult made their first contribution in https://github.com/ecmwf/anemoi-utils/pull/72
42
+
43
+ **Full Changelog**: https://github.com/ecmwf/anemoi-utils/compare/0.4.10...0.4.11
44
+
11
45
  ## [0.4.5](https://github.com/ecmwf/anemoi-utils/compare/0.4.4...0.4.5) - 2024-11-06
12
46
 
13
47
  ### What's Changed
@@ -1,6 +1,6 @@
1
1
  ## How to Contribute
2
2
 
3
- Please see the [read the docs](https://anemoi-training.readthedocs.io/en/latest/dev/contributing.html).
3
+ Please see the [read the docs](https://anemoi.readthedocs.io/en/latest/dev/contributing.html).
4
4
 
5
5
 
6
6
  ## Contributors
@@ -10,4 +10,4 @@ Thank you to all the wonderful people who have contributed to Anemoi. Contributi
10
10
 
11
11
  ## Contributing Organisations
12
12
 
13
- Significant contributions have been made by the following organisations: [DWD](https://www.dwd.de/), [MET Norway](https://www.met.no/), [MeteoSwiss](https://www.meteoswiss.admin.ch/), [RMI](https://www.meteo.be/) & [ECMWF](https://www.ecmwf.int/)
13
+ Significant contributions have been made by the following organisations: [DWD](https://www.dwd.de/), [FMI](https://www.ilmatieteenlaitos.fi/), [KNMI](https://www.knmi.nl), [MET Norway](https://www.met.no/), [MeteoSwiss](https://www.meteoswiss.admin.ch/), [RMI](https://www.meteo.be/) & [ECMWF](https://www.ecmwf.int/)
@@ -186,7 +186,7 @@
186
186
  same "printed page" as the copyright notice for easier
187
187
  identification within third-party archives.
188
188
 
189
- Copyright [yyyy] [name of copyright owner]
189
+ Copyright 2024-2025 Anemoi Contributors
190
190
 
191
191
  Licensed under the Apache License, Version 2.0 (the "License");
192
192
  you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: anemoi-utils
3
- Version: 0.4.10
3
+ Version: 0.4.12
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
@@ -191,7 +191,7 @@ License: Apache License
191
191
  same "printed page" as the copyright notice for easier
192
192
  identification within third-party archives.
193
193
 
194
- Copyright [yyyy] [name of copyright owner]
194
+ Copyright 2024-2025 Anemoi Contributors
195
195
 
196
196
  Licensed under the Apache License, Version 2.0 (the "License");
197
197
  you may not use this file except in compliance with the License.
@@ -226,6 +226,7 @@ Requires-Python: >=3.9
226
226
  License-File: LICENSE
227
227
  Requires-Dist: aniso8601
228
228
  Requires-Dist: importlib-metadata; python_version < "3.10"
229
+ Requires-Dist: numpy
229
230
  Requires-Dist: python-dateutil
230
231
  Requires-Dist: pyyaml
231
232
  Requires-Dist: tomli; python_version < "3.11"
@@ -5,7 +5,7 @@ This project is **BETA** and will be **Experimental** for the foreseeable future
5
5
  Interfaces and functionality are likely to change, and the project itself may be scrapped.
6
6
  **DO NOT** use this software in any project/software that is operational.
7
7
 
8
- Miscellanous tools for training data-driven weather forecasts.
8
+
9
9
 
10
10
  ## Documentation
11
11
 
@@ -22,7 +22,7 @@ $ pip install anemoi-utils
22
22
  ## License
23
23
 
24
24
  ```
25
- Copyright 2024, Anemoi contributors.
25
+ Copyright 2024-2025, Anemoi Contributors.
26
26
 
27
27
  Licensed under the Apache License, Version 2.0 (the "License");
28
28
  you may not use this file except in compliance with the License.
@@ -42,6 +42,7 @@ dynamic = [ "version" ]
42
42
  dependencies = [
43
43
  "aniso8601",
44
44
  "importlib-metadata; python_version<'3.10'",
45
+ "numpy",
45
46
  "python-dateutil",
46
47
  "pyyaml",
47
48
  "tomli; python_version<'3.11'",
@@ -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.10'
16
- __version_tuple__ = version_tuple = (0, 4, 10)
15
+ __version__ = version = '0.4.12'
16
+ __version_tuple__ = version_tuple = (0, 4, 12)