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.
- anemoi_utils-0.4.12/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +46 -0
- anemoi_utils-0.4.12/.github/dependabot.yml +10 -0
- anemoi_utils-0.4.12/.github/labeler.yml +42 -0
- anemoi_utils-0.4.12/.github/release.yml +23 -0
- anemoi_utils-0.4.12/.github/workflows/downstream-ci-hpc.yml +54 -0
- anemoi_utils-0.4.12/.github/workflows/pr-conventional-commit.yml +22 -0
- anemoi_utils-0.4.12/.github/workflows/pr-label-conventional-commits.yml +45 -0
- anemoi_utils-0.4.12/.github/workflows/pr-label-file-based.yml +17 -0
- anemoi_utils-0.4.10/.github/workflows/label-public-pr.yml → anemoi_utils-0.4.12/.github/workflows/pr-label-public.yml +1 -1
- anemoi_utils-0.4.12/.github/workflows/python-publish.yml +13 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/.github/workflows/python-pull-request.yml +4 -7
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/.github/workflows/readthedocs-pr-update.yml +2 -0
- anemoi_utils-0.4.12/.github/workflows/release-please.yml +28 -0
- anemoi_utils-0.4.12/.gitignore +135 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/.pre-commit-config.yaml +2 -4
- anemoi_utils-0.4.12/.release-please-config.json +19 -0
- anemoi_utils-0.4.12/.release-please-manifest.json +3 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/CHANGELOG.md +34 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/CONTRIBUTORS.md +2 -2
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/LICENSE +1 -1
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/PKG-INFO +4 -3
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/README.md +2 -2
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/pyproject.toml +1 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/_version.py +2 -2
- anemoi_utils-0.4.12/src/anemoi/utils/caching.py +124 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/commands/requests.py +6 -2
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/config.py +17 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/dates.py +13 -6
- anemoi_utils-0.4.12/src/anemoi/utils/devtools.py +83 -0
- anemoi_utils-0.4.12/src/anemoi/utils/grids.py +97 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/humanize.py +33 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi_utils.egg-info/PKG-INFO +4 -3
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi_utils.egg-info/SOURCES.txt +16 -4
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi_utils.egg-info/requires.txt +1 -0
- anemoi_utils-0.4.12/tests/test_caching.py +113 -0
- anemoi_utils-0.4.12/tests/test_grids.py +28 -0
- anemoi_utils-0.4.10/.github/workflows/changelog-pr-update.yml +0 -18
- anemoi_utils-0.4.10/.github/workflows/changelog-release-update.yml +0 -45
- anemoi_utils-0.4.10/.github/workflows/ci.yml +0 -58
- anemoi_utils-0.4.10/.github/workflows/python-publish.yml +0 -27
- anemoi_utils-0.4.10/.gitignore +0 -189
- anemoi_utils-0.4.10/src/anemoi/utils/caching.py +0 -74
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/.gitattributes +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/.github/CODEOWNERS +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/.github/ci-hpc-config.yml +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/.readthedocs.yaml +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/docs/Makefile +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/docs/_static/logo.png +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/docs/_static/style.css +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/docs/_templates/.gitkeep +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/docs/conf.py +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/docs/index.rst +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/docs/installing.rst +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/docs/modules/checkpoints.rst +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/docs/modules/config.rst +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/docs/modules/dates.rst +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/docs/modules/grib.rst +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/docs/modules/humanize.rst +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/docs/modules/provenance.rst +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/docs/modules/s3.rst +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/docs/modules/text.rst +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/setup.cfg +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/__init__.py +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/__main__.py +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/checkpoints.py +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/cli.py +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/commands/__init__.py +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/commands/config.py +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/compatibility.py +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/grib.py +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/hindcasts.py +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/logs.py +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/mars/__init__.py +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/mars/mars.yaml +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/mars/requests.py +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/provenance.py +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/registry.py +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/remote/__init__.py +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/remote/s3.py +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/remote/ssh.py +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/s3.py +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/sanitise.py +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/sanitize.py +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/text.py +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi/utils/timer.py +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi_utils.egg-info/dependency_links.txt +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi_utils.egg-info/entry_points.txt +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/src/anemoi_utils.egg-info/top_level.txt +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/tests/test-transfer-data/directory/b/c/x +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/tests/test-transfer-data/directory/b/y +0 -0
- {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
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/tests/test-transfer-data/directory/z +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/tests/test-transfer-data/file +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/tests/test_compatibility.py +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/tests/test_dates.py +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/tests/test_frequency.py +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/tests/test_provenance.py +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/tests/test_remote.py +0 -0
- {anemoi_utils-0.4.10 → anemoi_utils-0.4.12}/tests/test_sanetise.py +0 -0
- {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,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
|
|
@@ -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
|
|
2
|
-
|
|
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
|
-
-
|
|
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 }}
|
|
@@ -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.
|
|
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.
|
|
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
|
+
}
|
|
@@ -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
|
|
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
|
|
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
|
+
Metadata-Version: 2.2
|
|
2
2
|
Name: anemoi-utils
|
|
3
|
-
Version: 0.4.
|
|
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
|
|
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
|
-
|
|
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
|
|
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.
|