Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
95 commits
Select commit Hold shift + click to select a range
74739f7
Move current pproc as is
jinmannwong Apr 8, 2026
7645e32
Copy over earthkit-workflows-pproc develop branch
jinmannwong Apr 8, 2026
2e70521
Empty pproc-runtime
jinmannwong Apr 8, 2026
e41cb3f
Missing files in pproc-core
jinmannwong Apr 8, 2026
448057d
Migrate schema and thermofeel
jinmannwong Apr 9, 2026
04957b8
Fix imports
jinmannwong Apr 20, 2026
2de3b75
Update workflows
jinmannwong Jun 3, 2026
86f9eeb
Fix linting and tests in pproc-core and pproc-runtime
jinmannwong Jun 8, 2026
bb84de9
Fix pproc tests and qa
jinmannwong Jun 9, 2026
fb5f760
Fix workflow
jinmannwong Jun 9, 2026
1d30dd7
Add pproc-core entrypoints and v3 tests
jinmannwong Jun 22, 2026
27cf0c7
Expand requests
jinmannwong Jun 22, 2026
9fd9c90
Set overrides correctly
jinmannwong Jun 22, 2026
8e921aa
Fix logging
jinmannwong Jun 22, 2026
9e28ae5
Extract datacubes from input/output requests
jinmannwong Jun 22, 2026
987c96a
Fix input/output request generation
jinmannwong Jun 22, 2026
c2cd4a7
Bug fix
jinmannwong Jun 22, 2026
4314eea
Remove print statement
jinmannwong Jun 22, 2026
13dd6c3
Remove expand and squeeze
jinmannwong Jun 22, 2026
150934b
Don't split ensemble members
jinmannwong Jun 23, 2026
a0420db
Enable prob and quantiles
jinmannwong Jun 23, 2026
b99a776
Bug fix
jinmannwong Jun 23, 2026
2773af7
Support difference_rate accumulation
jinmannwong Jun 24, 2026
de0358b
Add metadata argument to difference_rate
jinmannwong Jun 24, 2026
326ca5d
Add test for difference_rate
jinmannwong Jun 24, 2026
286880c
Fix accumulation
jinmannwong Jun 24, 2026
9de8853
Add runtime dependencies and fiab requirements
jinmannwong Jun 30, 2026
8c7b3ef
Add fallback versions
jinmannwong Jul 1, 2026
6b07e24
Fix package name
jinmannwong Jul 1, 2026
8f53352
Add root to pyproject.toml
jinmannwong Jul 1, 2026
abcfb90
Bump earthkit-workflows
jinmannwong Jul 1, 2026
8648e50
Add earthkit-workflows dependency version
jinmannwong Jul 1, 2026
1dca8cb
Bug fix
jinmannwong Jul 1, 2026
2ab7510
Check validation data
jinmannwong Jul 1, 2026
f1a4d63
Fix defaults
jinmannwong Jul 1, 2026
6f8cc60
Add request metadata to final action
jinmannwong Jul 1, 2026
dbb3324
Tighten config generation functions
jinmannwong Jul 1, 2026
81057ab
Update set_scalar_coords
jinmannwong Jul 2, 2026
621863e
Tidy
jinmannwong Jul 6, 2026
317f79f
Update threshold metadata and config
jinmannwong Jul 7, 2026
a13ff29
Tidy
jinmannwong Jul 7, 2026
7b3b66a
Cache schema reconstruct calls
jinmannwong Jul 8, 2026
a00a393
Modify api to accepted constructed schema
jinmannwong Jul 8, 2026
3cfec23
Extend cache to input_schema reconstruct
jinmannwong Jul 8, 2026
c5f702e
Bump earthkit-workflows
jinmannwong Jul 8, 2026
4d211d9
Add depth first reconstruction
jinmannwong Jul 8, 2026
918ce98
Fix typo
jinmannwong Jul 8, 2026
df31027
Modify forecast definition
jinmannwong Jul 21, 2026
92c9c11
Move configuration for thermal indices into schema
jinmannwong Jul 22, 2026
8436ef6
Bug fix
jinmannwong Jul 23, 2026
fd07612
Update workflows
jinmannwong Jul 27, 2026
96e512b
Print fields
jinmannwong Jul 28, 2026
f35e588
Change from shortname to paramId
jinmannwong Jul 28, 2026
1255fe5
Pin earthkit-data version
jinmannwong Jul 28, 2026
f940687
Select based on paramId
jinmannwong Jul 28, 2026
2b380d7
Increase logging
jinmannwong Jul 28, 2026
a2f94d1
Fix metadata extraction
jinmannwong Jul 28, 2026
0a93cb5
Tidy pproc-runtime
jinmannwong Jul 28, 2026
a6705b0
Fix problem with setting rhp paramid
jinmannwong Jul 29, 2026
4e5bad2
Test thermofeel execution
jinmannwong Jul 29, 2026
d06a86f
Update pproc lock
jinmannwong Jul 29, 2026
f7692ea
Bump earthkit-workflows versions
jinmannwong Jul 29, 2026
dcb0ad0
Revert dependency removal
jinmannwong Jul 29, 2026
f1fd47a
Bug fix different rate
jinmannwong Jul 29, 2026
a9fa1af
Fix vod2uv
jinmannwong Jul 29, 2026
e4ae81d
Bug fix accumulation
jinmannwong Jul 29, 2026
38613dc
Update workflows
jinmannwong Jul 29, 2026
dc29cec
Add tag prefix for pproc-core and pproc-runtime
jinmannwong Jul 29, 2026
97f043d
Tidy
jinmannwong Jul 29, 2026
60e40a0
Add licenses
jinmannwong Jul 29, 2026
41b2405
Restore pproc develop
jinmannwong Jul 29, 2026
4055e3e
Fix workflows
jinmannwong Jul 29, 2026
c256b95
Add tests and entrypoints to pproc-core
jinmannwong Jul 29, 2026
5873bce
Pin filelock
jinmannwong Jul 29, 2026
ededa28
Pin eccodeslib version
jinmannwong Jul 29, 2026
73650f9
Change failing tests
jinmannwong Jul 29, 2026
1a461aa
Disable pre-commit check for pproc
jinmannwong Jul 29, 2026
ce86309
Remove version check in ppcore and ppruntime cd workflows
jinmannwong Jul 29, 2026
8688e2f
Improve workflows
jinmannwong Jul 29, 2026
676ab3d
Fix licenses
jinmannwong Jul 29, 2026
bfb1082
Remove 3.10 from ppcore and pproc ci/cd and use pypi ppruntime
jinmannwong Jul 29, 2026
2437a00
CI fixes
jinmannwong Jul 29, 2026
b87474f
Ensure test files are downloaded
jinmannwong Jul 29, 2026
dbc6c69
Make visualisation optional in pproc-core
jinmannwong Jul 30, 2026
f8dd9d2
Introduce custom errors for schema components
jinmannwong Jul 30, 2026
536da12
Handle thermofeel from custom source
jinmannwong Jul 30, 2026
420227a
Expand output requests by filter keys
jinmannwong Jul 30, 2026
f1efdf2
Fix combining of actions from different output requests and expand tests
jinmannwong Jul 31, 2026
424e4af
Ensure all required values are present
jinmannwong Jul 31, 2026
cbd0849
Set output action path based on datacube
jinmannwong Jul 31, 2026
dbaa0a0
Allow key not to exist in path creation
jinmannwong Jul 31, 2026
49f7b03
Fix scale
jinmannwong Aug 3, 2026
cb03802
Upgrade ekw to 0.15.5
jinmannwong Aug 3, 2026
7867817
Set environment for thermofeel
jinmannwong Aug 3, 2026
d70733c
Sort input request keys
jinmannwong Aug 3, 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
76 changes: 76 additions & 0 deletions .github/workflows/cd-ppcore.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
name: Publish pproc-core to PyPI or TestPyPI

on:
workflow_dispatch:
inputs:
tag:
description: 'Release tag ppcore-X.Y.Z'
required: true
type: string
environment:
description: 'Publish to'
required: true
type: choice
options:
- testpypi
- pypi
default: testpypi

jobs:
test:
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
python_version: ["3.11", "3.12", "3.13"]
steps:
- uses: actions/checkout@v4
with:
ref: ${{ inputs.tag }}

- uses: astral-sh/setup-uv@v7
- name: Run checks and tests
run: |
cd pproc-core
uv sync --python "${{ matrix.python_version }}" --all-packages
uv run prek --directory . --config ../.pre-commit-config.yaml
if [ -d "tests" ]; then
uv run -m pytest tests/ -v
fi

publish:
needs: test
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: ${{ inputs.tag }}

- name: Set up Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: "3.x"

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install setuptools wheel twine build

- run: |
cd pproc-core
python -m pip install --upgrade build twine
python -m build
twine check dist/*
if [ "${{ inputs.environment }}" = "testpypi" ] ; then
TARGET="--repository testpypi"
export TWINE_PASSWORD="$TWINE_PASSWORD_TEST"
else
TARGET=""
export TWINE_PASSWORD="$TWINE_PASSWORD_PROD"
fi
twine upload $TARGET --verbose dist/*
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD_PROD: ${{ secrets.PYPI_API_TOKEN }}
TWINE_PASSWORD_TEST: ${{ secrets.PYPI_TEST_API_TOKEN }}
2 changes: 2 additions & 0 deletions .github/workflows/cd.yml → .github/workflows/cd-pproc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,6 @@ jobs:

pypi:
uses: ecmwf/reusable-workflows/.github/workflows/cd-pypi.yml@v2
with:
working-directory: pproc
secrets: inherit
76 changes: 76 additions & 0 deletions .github/workflows/cd-ppruntime.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
name: Publish pproc-runtime to PyPI or TestPyPI

on:
workflow_dispatch:
inputs:
tag:
description: 'Release tag ppruntime-X.Y.Z'
required: true
type: string
environment:
description: 'Publish to'
required: true
type: choice
options:
- testpypi
- pypi
default: testpypi

jobs:
test:
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
python_version: ["3.10", "3.11", "3.12", "3.13"]
steps:
- uses: actions/checkout@v4
with:
ref: ${{ inputs.tag }}
- uses: astral-sh/setup-uv@v7
- name: Run checks and tests
run: |
cd pproc-runtime
uv sync --python "${{ matrix.python_version }}" --all-packages
uv run prek --directory . --config ../.pre-commit-config.yaml
uv run ty check
if [ -d "tests" ]; then
uv run -m pytest tests/ -v
fi

publish:
needs: test
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
with:
ref: ${{ inputs.tag }}

- name: Set up Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: "3.x"

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install setuptools wheel twine build

- run: |
cd pproc-runtime
python -m pip install --upgrade build twine
python -m build
twine check dist/*
if [ "${{ inputs.environment }}" = "testpypi" ] ; then
TARGET="--repository testpypi"
export TWINE_PASSWORD="$TWINE_PASSWORD_TEST"
else
TARGET=""
export TWINE_PASSWORD="$TWINE_PASSWORD_PROD"
fi
twine upload $TARGET --verbose dist/*
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD_PROD: ${{ secrets.PYPI_API_TOKEN }}
TWINE_PASSWORD_TEST: ${{ secrets.PYPI_TEST_API_TOKEN }}
71 changes: 71 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
name: ci

on:
# Trigger the workflow manually
workflow_dispatch: ~

push:
branches:
- 'main'
- 'develop'

pull_request: ~

jobs:
ppruntime_test:
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
python-version: ['3.10', '3.11', '3.12', '3.13']
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v7
- name: Run checks and tests
run: |
cd pproc-runtime
export UV_FROZEN=1
uv sync --python "${{ matrix.python_version }}" --all-packages
uv run prek --directory . --config ../.pre-commit-config.yaml
uv run ty check
if [ -d "tests" ]; then
uv run -m pytest tests/ -v
fi

ppcore_test:
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
python-version: ['3.11', '3.12', '3.13']
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v7
- name: Run checks and tests
run: |
cd pproc-core
export UV_FROZEN=1
uv sync --python "${{ matrix.python_version }}" --all-packages
uv run prek --directory . --config ../.pre-commit-config.yaml
if [ -d "tests" ]; then
uv run -m pytest tests/ -v
fi

pproc_test:
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
python-version: ['3.11', '3.12', '3.13']
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v7
- name: Run pproc tests
run: |
cd pproc
export UV_FROZEN=1
uv sync --python "${{ matrix.python_version }}" --all-packages
# uv run prek --directory . --config ../.pre-commit-config.yaml
if [ -d "tests" ]; then
uv run -m pytest tests/ -v
fi
10 changes: 5 additions & 5 deletions .github/workflows/sync.yml
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
name: sync

# Controls when the workflow will run
on:

# Trigger the workflow on all pushes
push:
branches:
- '**'
tags:
- '**'

# Trigger the workflow when a branch or tag is deleted
delete: ~

jobs:

# Calls a reusable CI workflow to sync the current with a remote repository.
# It will correctly handle addition of any new and removal of existing Git objects.
sync:
Expand Down
11 changes: 0 additions & 11 deletions .github/workflows/test-pypi.yml

This file was deleted.

41 changes: 1 addition & 40 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,40 +1 @@
*.sw[op]
.DS_Store
.idea/

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

tests/data


src/pproc/_version.py
**/__pycache__
46 changes: 46 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
default_language_version:
python: python3
default_stages:
- commit
- push
repos:
# Empty notebookds
- repo: local
hooks:
- id: clear-notebooks-output
name: clear-notebooks-output
files: tools/.*\.ipynb$
stages: [pre-commit]
language: python
entry: jupyter nbconvert --ClearOutputPreprocessor.enabled=True --inplace
additional_dependencies: [jupyter]
- repo: https://github.com/charliermarsh/ruff-pre-commit
rev: v0.5.6
hooks:
- id: ruff
args: [--fix]
- id: ruff-format
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.4.0
hooks:
- id: detect-private-key
- id: check-ast
- id: end-of-file-fixer
- id: mixed-line-ending
args: [--fix=lf]
- id: trailing-whitespace
- id: check-case-conflict
- repo: local
hooks:
- id: forbid-to-commit
name: Don't commit rej files
entry: |
Cannot commit .rej files. These indicate merge conflicts that
arise during automated template updates.
Fix the merge conflicts manually and remove the .rej files.
language: fail
files: '.*\.rej$'
- repo: https://github.com/tox-dev/pyproject-fmt
rev: "v2.5.0"
hooks:
- id: pyproject-fmt
Loading
Loading