Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
96364bb
Fix in pyproject dependencies (#5)
clessig Jan 30, 2025
eeac517
[1265] Merge latest work to main (#1295)
tjhunter Nov 18, 2025
b57c324
[882] Project dashboard (#1251)
tjhunter Nov 18, 2025
fd10f03
[1291] Remove epoch reference from WeatherGenReader (#1292) (#1299)
tjhunter Nov 19, 2025
7b9d349
[1291] epoch backward compatibility (#1302) (#1303)
shmh40 Nov 19, 2025
ae29878
[1137] Example of tag descriptions (#1212) (#1351)
tjhunter Nov 25, 2025
bdcfa07
remove softlink dashboard -> packages/dashboard (#1298) (#1371)
grassesi Nov 27, 2025
f4f84e8
initialise model config
Dec 1, 2025
5a88b1d
initialise stream config
Dec 1, 2025
8addc96
initial datareader plus adjustment in multistream sampler
Dec 1, 2025
b8a19e0
update evaluation package in main branch (#1430)
iluise Dec 9, 2025
a6e07a4
[1440] update config_zarr2cf.yaml (#1441)
enssow Dec 10, 2025
3404bd6
initial data reader on juwels
Dec 16, 2025
ddcae66
Merge branch 'main' into seviri_datareader
Dec 16, 2025
e4c95e7
Add docstrings to facilitate newcomers getting started (#1465)
TillHae Jan 20, 2026
49424b0
implemented _get() in datareader
Jan 27, 2026
31334bc
enable geoinfo loading through lazy zarr access
Jan 28, 2026
c34c42e
stage before moving from xarray to zarr
Feb 2, 2026
2a1e1dd
updated statistics to npz load
Feb 2, 2026
a7e1349
adjusted path
Feb 2, 2026
fc74b70
set up evaluation
Feb 4, 2026
2479233
Update seviri_datareader with main
Feb 4, 2026
8b36af9
chore: update author info
Feb 4, 2026
d17ed64
chore: linting
Feb 4, 2026
1300fed
stage data reader before updating branch
Feb 12, 2026
eaea3cd
stage configs before updating branch
Feb 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: Bug Report
description: Report a bug related to WeatherGenerator.
title: Bug report
labels:
- "bug"
assignees: []
body:
- type: textarea
id: what-happened
attributes:
label: What happened?
description: |
Expected Results: What was supposed to happen?

Actual Results: What happened when you got the bug?

Additional Information: Add anything else you feel we need to know e.g. The exact error message printed
validations:
required: true
- type: textarea
id: reproduce
attributes:
label: What are the steps to reproduce the bug?
description: |
Minimal steps to reproduce the behavior:
- code branch with ALL configuration files
- HPC
- run_id
- command run
- if applicable: node configuration
validations:
required: false
- type: input
id: data
attributes:
label: Hedgedoc link to logs and more information. This ticket is public, do not attach files directly.
description: Please put all relevant information (logs, plots, etc.) in the Hedgedoc and link it here.
validations:
required: false
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
blank_issues_enabled: true
57 changes: 57 additions & 0 deletions .github/ISSUE_TEMPLATE/initiative.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: Initiative
description: A piece of work that will likely take more than a week to complete.
title: "Initiative"
labels: ["initiative"]


body:
- type: textarea
id: description
attributes:
label: Describe the task. Describe the task. It can be a feature, a set of experiments, documentation, etc.
description: Be specific and provide context.
placeholder: "Describe the task here..."

- type: markdown
attributes:
value: |
Tips for writing good initiatives:
https://gitlab.jsc.fz-juelich.de/esde/WeatherGenerator-private/-/wikis/Design-docs/Writing-a-design-doc

- type: input
id: hedgedoc_url
attributes:
label: Hedgedoc URL, if you are keeping notes, plots, logs in hedgedoc.
description: Hedgedoc URL, if you are keeping notes, plots, logs in hedgedoc.
placeholder: "https://gitlab.jsc.fz-juelich.de/hedgedoc/..."
validations:
required: false


- type: input
id: design_url
attributes:
label: URL to the design document
description: Paste a link to logs, screenshots, or related resources
placeholder: "link to doc on sharepoint"
validations:
required: false


- type: checkboxes
id: area
attributes:
label: Area
description: The general area this task relates to.
options:
- label: datasets, data readers, data preparation and transfer
- label: model
- label: science
- label: infrastructure and engineering
- label: evaluation, export and visualization
- label: documentation
validations:
required: true



38 changes: 38 additions & 0 deletions .github/ISSUE_TEMPLATE/task.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: Task / Issue
description: A task or issue that should take less than a week to complete.
title: "Task"

body:
- type: textarea
id: description
attributes:
label: Describe the task. It can be a feature, documentation, etc.
description: Be specific and provide context.
placeholder: "Describe the task here..."

- type: input
id: hedgedoc_url
attributes:
label: Hedgedoc URL, if you are keeping notes, plots, logs in hedgedoc.
description: Paste a link to logs, screenshots, or related resources
placeholder: "https://gitlab.jsc.fz-juelich.de/hedgedoc/..."
validations:
required: false

- type: checkboxes
id: area
attributes:
label: Area
description: The general area this task relates to.
options:
- label: datasets, data readers, data preparation and transfer
- label: model
- label: science
- label: infrastructure and engineering
- label: evaluation, export and visualization
- label: documentation
validations:
required: true



34 changes: 34 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
## Description

<!--
Provide a brief summary of the changes introduced in this pull request.

Change the title of the PR to a short sentence easy to understand:
[1234][model] Adds FSDP2 monitoring code
-->


## Issue Number

<!--
Link the Issue number this change addresses:
Closes #XYZ
-->

Is this PR a draft? Mark it as draft.

## Checklist before asking for review

- [ ] I have performed a self-review of my code
- [ ] My changes comply with basic sanity checks:
- I have fixed formatting issues with `./scripts/actions.sh lint`
- I have run unit tests with `./scripts/actions.sh unit-test`
- I have documented my code and I have updated the docstrings.
- I have added unit tests, if relevant
- [ ] I have tried my changes with data and code:
- I have run the integration tests with `./scripts/actions.sh integration-test`
- (bigger changes) I have run a full training and I have written in the comment the run_id(s): `launch-slurm.py --time 60`
- (bigger changes and experiments) I have shared a hegdedoc in the github issue with all the configurations and runs for this experiments
- [ ] I have informed and aligned with people impacted by my change:
- for config changes: the MatterMost channels and/or a design doc
- for changes of dependencies: the MatterMost software development channel
69 changes: 69 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
name: CI

on:
push:
branches: [ "main", "develop"]
pull_request:
branches: [ "main", "develop"]
paths-ignore:
- "CHANGELOG.md"
- "README.md"

jobs:
linting:
name: linter
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Install uv
uses: astral-sh/setup-uv@v5
with:
# Install a specific version of uv.
version: "0.7.13"

- name: Run ruff (black)
# Do not attempt to install the default dependencies, this is much faster.
# Run temporarily on a sub directory before the main restyling.
run: ./scripts/actions.sh lint-check

- name: TOML checks
run: ./scripts/actions.sh toml-check

- name: Type checker (pyrefly, experimental)
# Do not attempt to install the default dependencies, this is much faster.
# Run temporarily on a sub directory before the main restyling.
run: ./scripts/actions.sh type-check
pr:
name: PR checks
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Install uv
uses: astral-sh/setup-uv@v5
with:
# Install a specific version of uv.
version: "0.7.13"

- name: Check PR is linked to an issue
# Send the PR number to the script, which will check if it is linked to an issue.
run: scripts/check_gh_issue.py $GITHUB_REF_NAME
test:
name: Unit tests
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Install uv
uses: astral-sh/setup-uv@v5
with:
# Install a specific version of uv.
version: "0.7.13"

- name: Run all unit tests
# Send the PR number to the script, which will check if it is linked to an issue.
run: ./scripts/actions.sh unit-test
50 changes: 50 additions & 0 deletions .github/workflows/issue_assign.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: Add comment
on:
issue_comment:
types:
- created
jobs:
add-comment:
# If a comment has the text "Assign me" or "assign me":
if: |
startsWith(github.event.comment.body, 'Assign me') ||
startsWith(github.event.comment.body, 'assign me')
runs-on: ubuntu-latest
permissions:
issues: write
steps:
- name: Comment
# Print the username and issue number
run: echo "Adding comment to issue ${{ github.event.issue.number }} by ${{ github.event.comment.user.login }}"
# env:
# GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# GH_REPO: ${{ github.repository }}
# NUMBER: ${{ github.event.issue.number }}
# BODY: >
# This issue is available for anyone to work on.
# **Make sure to reference this issue in your pull request.**
# :sparkles: Thank you for your contribution! :sparkles:
- name: Assign issue
# Assign the issue to the user who made the comment
# Workaround based on https://github.com/cli/cli/issues/9620
run: gh api -X PATCH "/repos/ecmwf/WeatherGenerator/issues/$NUMBER" -f assignee="${{ github.event.comment.user.login }}"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_REPO: ${{ github.repository }}
NUMBER: ${{ github.event.issue.number }}
# - name: Assign issue
# # Assign the issue to the user who made the comment
# run: gh issue edit "$NUMBER" --add-assignee "${{ github.event.comment.user.login }}"
# env:
# GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# GH_REPO: ${{ github.repository }}
# NUMBER: ${{ github.event.issue.number }}
- name: Put message on issue
# Put a message on the issue:
run: gh issue comment "$NUMBER" --body "$BODY"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_REPO: ${{ github.repository }}
NUMBER: ${{ github.event.issue.number }}
BODY: Issue assigned to @${{ github.event.comment.user.login }}.

74 changes: 74 additions & 0 deletions .github/workflows/pr_assign_labels.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# This workflow automatically applies labels from issues to pull requests that reference them.
name: Sync issue labels to PR

on:
pull_request:
types: [opened, edited, reopened, synchronize, ready_for_review]

permissions:
pull-requests: write
contents: write
issues: write

jobs:
sync:
runs-on: ubuntu-latest
continue-on-error: true
steps:
- name: Apply issue labels to PR
uses: actions/github-script@v7
with:
script: |
const {owner, repo} = context.repo;
const prNumber = context.payload.pull_request.number;

// 1) Find issues linked to this PR (those it will close)
const query = `
query($owner:String!, $repo:String!, $number:Int!) {
repository(owner:$owner, name:$repo) {
pullRequest(number:$number) {
closingIssuesReferences(first: 50) {
nodes {
number
labels(first: 100) { nodes { name } }
}
}
}
}
}
`;
let data;
try {
data = await github.graphql(query, { owner, repo, number: prNumber });
} catch (e) {
// Print a warning and stop here if the query fails (e.g., no linked issues)
core.warning(`GraphQL query failed: ${e.message}`);
return;
}
const issues = data.repository.pullRequest.closingIssuesReferences.nodes;

// 2) Collect unique label names from those issues
const labelSet = new Set();
for (const is of issues) {
for (const l of is.labels.nodes) labelSet.add(l.name);
}

// Optional: ignore labels you don't want copied
const IGNORE = new Set(["enhancement", "science", "bug", "documentation", "question", "good first issue", "help wanted"]);
const labels = Array.from(labelSet).filter(x => !IGNORE.has(x));

// 3) Apply to the PR (PRs are "issues" in the REST API)
if (labels.length) {
try {
await github.rest.issues.addLabels({
owner, repo,
issue_number: prNumber,
labels
});
} catch (e) {
core.warning(`Failed to apply labels to PR ${prNumber}: ${e.message}`);
}
core.info(`Applied labels to PR ${prNumber}: ${labels.join(", ")}`);
} else {
core.info("No labels to apply from linked issues.");
}
Loading
Loading