Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
88 commits
Select commit Hold shift + click to select a range
4bd2c72
README update (#163)
romanc Jun 3, 2025
5cb01cc
from __future__ import annotations (#168)
romanc Jun 18, 2025
84a595a
Improve eta tests and file handling (#149)
romanc Jun 18, 2025
849d1ea
Change xarray.Dataset.{dims -> sizes} (#169)
romanc Jun 18, 2025
2986b45
Update pre-commit hooks (#172)
romanc Jun 23, 2025
a7e2502
[Serialbox to NetCDF] Allow variables to not be saved in non zero ran…
FlorianDeconinck Jun 27, 2025
ae8be58
tests: re-enable caching tests and more cleanups in tests/dsl (#175)
romanc Jul 7, 2025
dafe55d
Store static eta files under `tests/data` (#171)
fmalatino Jul 10, 2025
bb46c49
Fixes for external grid data read-in method (#165)
fmalatino Jul 10, 2025
23147a1
Packaging: Use of pyproject.toml and move to minimal setup.py for mod…
fmalatino Jul 17, 2025
a664e74
Re-enable F401 (no unused imports) (#180)
romanc Jul 21, 2025
e7d6a9b
Fixes for GH200 hardware compilation (+ misc) (#183)
FlorianDeconinck Jul 21, 2025
bd5628b
ci: extend `black` formatter to jupyter notebooks (#181)
romanc Jul 22, 2025
8bf072b
Upgrade `mpi4py` to >4 (#184)
FlorianDeconinck Jul 22, 2025
7a1316a
Use full keyword "absolute_epsilon" (#187)
FlorianDeconinck Jul 22, 2025
3504d1c
ci: Add cache for pre-commit environments (#182)
romanc Jul 24, 2025
e80b4f2
Update GT4Py/DaCe to get "Schedule Tree Bridge" (#170)
romanc Jul 29, 2025
5eb564f
Update readme with MPI / compiler recommendataions (#191)
romanc Aug 7, 2025
37ae5fa
ci: configure tests to run on merge-queue (#194)
romanc Aug 11, 2025
4fe14db
Deprecate `PACE_*` environment variables in favor of `NDSL_*` (#193)
romanc Aug 11, 2025
5ec99c3
Merge queue test (#197)
fmalatino Aug 11, 2025
d414652
Test: Merge queue test - removing test file (#198)
fmalatino Aug 11, 2025
14b9e78
Update gt4py: support for literal precision (#192)
romanc Aug 13, 2025
6b54efd
fix[tests]: Never touch the reference data (#199)
romanc Aug 14, 2025
17231da
build: pytest-subtests is a required dependency (#201)
romanc Aug 14, 2025
8297cc9
NDSL Documentation via MkDocs (#205)
gmao-ckung Aug 21, 2025
9dad9ad
2D Stencil Indexing Method (#54)
oelbert Aug 22, 2025
f34f98d
Minor QOL changes to translate test infrastructure (#176)
CharlesKrop Aug 24, 2025
990736c
Update gt4py: np.bool_ external and gtscript round() (#207)
romanc Aug 26, 2025
aa1009c
Updating NetCDF4 version to 1.7.2 for use by pyRTE-RRTMGP (#210)
fmalatino Sep 2, 2025
7281343
Move test for GridIndexing.get_2d_compute_origin_domain() (#209)
romanc Sep 2, 2025
deb9a3e
refactor: remove workaround in fill_corners_dgrid (#204)
romanc Sep 2, 2025
3f78a7b
Unrelated: no unused arguments in stencil definition (#214)
romanc Sep 5, 2025
37170dc
fix: stencil wrapper field origins with data_dims (#216)
romanc Sep 5, 2025
31ae8e9
fix: gpu/mpi synchronization issue with in-place all reduce sum (#215)
romanc Sep 5, 2025
0ead2ed
ci: Effective cache sharing between PRs (#202)
romanc Sep 5, 2025
c6788d9
[Orchestration] Common cast operation replacements (#211)
FlorianDeconinck Sep 5, 2025
2f85e91
Update actions/checkout v4 -> v5 (#217)
romanc Sep 8, 2025
bfbea8b
perf: Optimize cpu compiler flags for dace:cpu (#213)
romanc Sep 8, 2025
9fe9365
fix: compile flags for GCC (14) on GH200 (#219)
romanc Sep 10, 2025
b54ff9c
Adding a test for indexing 4-dimensional fields (#221)
oelbert Sep 16, 2025
2239a5d
refactor: use modern python (#227)
romanc Sep 16, 2025
892f585
fix: fully type allocator and fix fallout (#226)
romanc Sep 16, 2025
5187416
fix: boilerplate allocation and layout warnings (#225)
romanc Sep 16, 2025
89af284
Deprecation warning for QuantityFactory constructor (#231)
romanc Sep 18, 2025
b6a9729
tests: stabilize `test_caches.py (#236)
romanc Sep 22, 2025
44abaa1
Remove `FrozenCompiledSDFG` to avert the hidden behavior on orchestra…
twicki Sep 22, 2025
680d014
docs: improved docstrings in stencil/grid/quantity (#233)
romanc Sep 23, 2025
27f5f90
BREAKING CHANGE: orchestration boilerplate options (#238)
romanc Sep 23, 2025
cbbcad1
GT4Py update and cleanups from milestone2 branch (#237)
romanc Sep 23, 2025
cea6167
Make optimization level tie in to proper CMake build type (#241)
FlorianDeconinck Sep 24, 2025
64c4694
State V0 (#242)
FlorianDeconinck Oct 2, 2025
a8738fe
State: quick fix to v0 (#245)
FlorianDeconinck Oct 2, 2025
0cad0fd
Deprecate OutOfBoundsError in favor of IndexError (#247)
romanc Oct 6, 2025
a8b44ff
API cleanup: deprecate `ndsl/filesystem.py` (#249)
romanc Oct 6, 2025
ebc4f96
Namelist Refactor: Utility functions for namelist to dict + conftest …
jjuyeonkim Oct 7, 2025
204a5dd
gt4py update: absolute K indexing (experimental) (#252)
romanc Oct 7, 2025
0618eca
api cleanup: remove ndsl/units.py (#248)
romanc Oct 7, 2025
2fb1393
State features: `fill` and data dimensions support. (#250)
FlorianDeconinck Oct 10, 2025
a630fa3
Add `quanbtity_factory.full` (#256)
FlorianDeconinck Oct 10, 2025
fe8cb5c
Translate tests: raise if test class can't be found (#259)
romanc Oct 10, 2025
7fef2f5
Deprecation of `CopyCorners` (#240)
twicki Oct 10, 2025
f0982bd
Removed unused file (#260)
romanc Oct 13, 2025
e12347a
deps: gt4py update (push ForScope down, error messages) (#261)
romanc Oct 13, 2025
4943436
[Feature] Internal timer to track runtime of orchestrated call (#262)
FlorianDeconinck Oct 14, 2025
c180927
refactor: imports cleanup (#264)
romanc Oct 14, 2025
60cadd2
ci: stricter type checking with `mypy` (#257)
romanc Oct 15, 2025
0a748ce
ci: all the types (or at least most of them) enforced with `mypy` (#258)
romanc Oct 16, 2025
df30bcc
ci: Add build docs step to PR workflows (and fix currently broken aut…
romanc Oct 17, 2025
f4f9fca
refactor: modern type hints in NDSL (#270)
romanc Oct 20, 2025
3ffbcba
Add hook to deploy documentation on merge to develop (#269)
romanc Oct 20, 2025
f10c47d
Store information about the halo-size in the allocated Quantity (#265)
twicki Oct 22, 2025
abda75f
Locals (#266)
FlorianDeconinck Oct 22, 2025
208c0e5
build: gt4py & dace update (#271)
romanc Oct 22, 2025
ffb1c3c
Propagate Halo Information (#274)
twicki Oct 23, 2025
f0ac6c5
Add domain-size checks on FrozenStencil (#239)
twicki Oct 23, 2025
9d0e44e
Add versioning (#275)
twicki Oct 23, 2025
e65319d
[Translate] Allow slicing of N-Dimensions fields (#273)
FlorianDeconinck Oct 23, 2025
3c94b47
Deprecate usage of ndsl.Namelist (#276)
romanc Oct 23, 2025
cc47585
Refactor: QuantityFactory data dimensions operations (#272)
FlorianDeconinck Oct 23, 2025
69c1b5d
tools: use flake8-bugbear (#277)
romanc Oct 24, 2025
1b13dcf
Update gt4py to version 1.0.10 (#278)
romanc Oct 24, 2025
32672fc
Development setup and early work for a Schedule Tree Optimizer Pipeli…
romanc Oct 24, 2025
53810ea
Native NDSL types for GT4Py 2D temporaries (#280)
FlorianDeconinck Oct 27, 2025
1840768
docs: update examples (#285)
romanc Oct 27, 2025
56ce473
ci: create cache for translate test data (#279)
romanc Oct 27, 2025
ad65c08
build: gt4py update (temp annotation fix) (#286)
romanc Oct 28, 2025
d69aa99
[feature] Add 2D temporary support for NDSL's `BoolFieldIJ` (#288)
FlorianDeconinck Oct 28, 2025
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
11 changes: 7 additions & 4 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,24 @@
**Description**
# Description

Include a summary of the change and which issue is fixed. Please also include
relevant motivation and context. List any dependencies that are required for
this change.

Fixes # (issue)
If this is a hotfix to a released version, please specify it.

**How Has This Been Tested?**
## How has this been tested?

Please describe the tests that you ran to verify your changes. Please also note
any relevant details for your test configuration (e.g. compiler, OS). Include
enough information so someone can reproduce your tests.

**Checklist:**
## Checklist

- [ ] My code follows the style guidelines of this project
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [ ] I have made corresponding changes to the documentation (e.g. add new modules to docs/docstrings/)
- [ ] My changes generate no new warnings
- [ ] Any dependent changes have been merged and published in downstream modules
- [ ] New check tests, if applicable, are included
52 changes: 52 additions & 0 deletions .github/workflows/create-cache.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: "Create GHA cache"

# GitHub puts the following restrictions on cache sharing. PRs can access
#
# - caches that were created by the PR / earlier runs of the PR
# - caches that were created on the target branch
#
# To get effective cache sharing between PRs, we create caches on the `develop`
# branch (which is where almost all PRs merge into).

on:
push:
branches: [develop]

# Cancel running jobs if there's a newer push
concurrency:
group: ${{ github.repository }}-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
# GitHub Actions cache of the pre-commit environment
pre-commit:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v5

- name: Setup Python 3.11
uses: actions/setup-python@v5
with:
python-version: '3.11'

- uses: actions/cache@v4
id: cache
with:
path: ~/.cache/pre-commit
key: pre-commit_${{ env.pythonLocation }}_${{ hashFiles('.pre-commit-config.yaml') }}
lookup-only: true # don't actually download the cache

- name: Populate pre-commit environment (if not cached)
if: steps.cache.outputs.cache-hit != 'true'
run: |
pip install pre-commit
pre-commit install --install-hooks

# GitHub Actions cache of pyFV3 test data
pyFV3_test_data:
uses: NOAA-GFDL/pyFV3/.github/workflows/create_cache.yml@develop

# GitHub Actions cache of pySHiELD test data
pySHiELD_test_data:
uses: NOAA-GFDL/pySHiELD/.github/workflows/create_cache.yml@develop
34 changes: 34 additions & 0 deletions .github/workflows/docs_build.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: "Build docs"

# This workflow builds the docs to catch us when modules are moved/deleted
# and the auto-generated docstrings can't build anymore. This does not catch
# us when new modules are added.

# Run these these whenever ...
on:
pull_request: # ... a PR is opened / updated
merge_group: # ... the PR is added to the merge queue

# cancel running jobs if theres a newer push
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v5

- name: Setup Python 3.11
uses: actions/setup-python@v5
with:
python-version: '3.11'

- name: Install mkdocs
run: pip install mkdocs-material mkdocstrings[python]

- name: Build docs
run: mkdocs build
35 changes: 35 additions & 0 deletions .github/workflows/docs_deploy.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: "NDSL documentation"

# Documentation gets automatically deployed upon merge to develop
on:
push:
branches:
- develop

# Security: Restrict permissions of this workflow to whats needed.
permissions:
contents: write

jobs:
deploy:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v5

- name: Configure Git Credentials
run: |
git config user.name github-actions[bot]
git config user.email github-actions[bot]@users.noreply.github.com

- name: Setup python
uses: actions/setup-python@v5
with:
python-version: 3.11

- name: Install dependencies
run: pip install mkdocs-material mkdocstrings[python]

- name: Deploy docs to GitHub Pages
run: mkdocs gh-deploy --force
10 changes: 8 additions & 2 deletions .github/workflows/fv3_translate_tests.yaml
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
name: "FV3 translate tests"

# Run these these whenever ...
on:
pull_request:
pull_request: # ... a PR is opened / updated
merge_group: # ... the PR is added to the merge queue
push:
branches:
- main # ... when merging into the main branch

jobs:
fv3_translate_tests:
uses: NOAA-GFDL/pyFV3/.github/workflows/translate.yaml@develop
with:
component_trigger: true
component_trigger: true
component_name: NDSL
37 changes: 24 additions & 13 deletions .github/workflows/lint.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
name: "Lint"

# Run these these whenever ...
on:
pull_request:
pull_request: # ... a PR is opened / updated
merge_group: # ... the PR is added to the merge queue
push:
branches:
- main # ... when merging into the main branch

# cancel running jobs if theres a newer push
concurrency:
Expand All @@ -11,18 +17,23 @@ jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: 'recursive'
- name: Checkout repository
uses: actions/checkout@v5

- name: Setup Python 3.11
uses: actions/setup-python@v5
with:
python-version: '3.11'

- name: Setup Python 3.11
uses: actions/setup-python@v5
with:
python-version: '3.11'
# Only restore (don't save) caches on PRs. New caches created from PRs won't be
# accessible from other PRs, see workflows/create-cache.yaml.
- uses: actions/cache/restore@v4
with:
path: ~/.cache/pre-commit
key: pre-commit_${{ env.pythonLocation }}_${{ hashFiles('.pre-commit-config.yaml') }}

- name: Install pre-commit
run: pip install pre-commit
- name: Install pre-commit
run: pip install pre-commit

- name: Run lint via pre-commit
run: pre-commit run --all-files
- name: Run lint via pre-commit
run: pre-commit run --all-files
10 changes: 8 additions & 2 deletions .github/workflows/pace_tests.yaml
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
name: "pace main tests"

# Run these these whenever ...
on:
pull_request:
pull_request: # ... a PR is opened / updated
merge_group: # ... the PR is added to the merge queue
push:
branches:
- main # ... when merging into the main branch

jobs:
pace_main_tests:
uses: NOAA-GFDL/pace/.github/workflows/main_unit_tests.yaml@develop
with:
component_trigger: true
component_trigger: true
component_name: NDSL
10 changes: 8 additions & 2 deletions .github/workflows/shield_tests.yaml
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
name: "SHiELD Translate tests"

# Run these these whenever ...
on:
pull_request:
pull_request: # ... a PR is opened / updated
merge_group: # ... the PR is added to the merge queue
push:
branches:
- main # ... when merging into the main branch

jobs:
shield_translate_tests:
uses: NOAA-GFDL/pySHiELD/.github/workflows/translate.yaml@develop
with:
component_trigger: true
component_trigger: true
component_name: NDSL
47 changes: 28 additions & 19 deletions .github/workflows/unit_tests.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
name: "NDSL unit tests"

# Run these these whenever ...
on:
pull_request:
pull_request: # ... a PR is opened / updated
merge_group: # ... the PR is added to the merge queue
push:
branches:
- main # ... when merging into the main branch

# cancel running jobs if theres a newer push
concurrency:
Expand All @@ -10,28 +16,31 @@ concurrency:
jobs:
ndsl_unit_tests:
runs-on: ubuntu-latest
container:
image: ghcr.io/noaa-gfdl/miniforge:mpich
steps:

- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: 'recursive'
- name: Checkout repository
uses: actions/checkout@v5
with:
submodules: 'recursive'

- name: Setup Python 3.11
uses: actions/setup-python@v5
with:
python-version: '3.11'

- name: Install Python packages
run: pip3 install .[test]
- name: Install mpi (MPICH flavor)
run: pip3 install mpich

- name: prepare input eta files
run: python tests/grid/generate_eta_files.py
- name: Install Python packages
run: pip3 install .[test]

- name: Run serial-cpu tests
run: coverage run --rcfile=setup.cfg -m pytest tests
- name: Run serial-cpu tests
run: coverage run --rcfile=pyproject.toml -m pytest tests

- name: Run parallel-cpu tests
run: mpiexec -np 6 --oversubscribe coverage run --rcfile=setup.cfg -m mpi4py -m pytest tests/mpi
- name: Run parallel-cpu tests
run: mpiexec -np 6 coverage run --rcfile=pyproject.toml -m mpi4py -m pytest tests/mpi

- name: Output code coverage
run: |
coverage combine
coverage report
- name: Output code coverage
run: |
coverage combine
coverage report
Loading