Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
311 commits
Select commit Hold shift + click to select a range
63ad958
Remove checkpoint path argument for restarts
jswade-rtx Jun 2, 2026
d2ef1e2
Fix checkpoint restart pytests after refactor
jswade-rtx Jun 2, 2026
5abc8ed
Added catch for >1 gpkg files and more detailed comments for state sa…
jswade-rtx Jun 8, 2026
78bf33a
Add check for multiple realization files
jswade-rtx Jun 9, 2026
da7a7ba
Merge pull request #51 from NGWPC/jwade_NGWPC-10163_checkpointing
jswade-rtx Jun 11, 2026
654b016
Merge pull request #58 from NGWPC/jwade_NGWPC-10183_update_fcst
jswade-rtx Jun 11, 2026
fc150a8
Make SFT a calibratable module
jswade-rtx May 28, 2026
1063378
Add copy_run_folder function
jswade-rtx Apr 2, 2026
ec53a56
Add checkpoint restart function prototype
jswade-rtx Apr 3, 2026
87bb98d
Fix checkpoint restart realization writing typo
jswade-rtx Apr 3, 2026
7432874
Add testing for copy_run_folder and checkpoint_restart
jswade-rtx Apr 3, 2026
4f61a01
Update default and region functions to accept checkpointing and state…
jswade-rtx Apr 7, 2026
26a0b53
Update CLI arguments for default and region fcst
jswade-rtx Apr 7, 2026
7c4f7cf
Fix CLI and testing for checkpointing
jswade-rtx Apr 7, 2026
b338275
Update README for default/region state saving and checkpointing
jswade-rtx Apr 7, 2026
85c0470
Refactor realization handling for default/region state saving and che…
jswade-rtx Apr 7, 2026
6203a45
Update README for checkpoint restart
jswade-rtx Apr 7, 2026
5ef1e5d
Fix minor checkpointing issue and add checkpointing tests
jswade-rtx Apr 8, 2026
cd699a1
Preserve checkpoint symlinks and fix checkpoint save overwriting
jswade-rtx Apr 8, 2026
cc72ffe
Add option to ignore forcing_config folder in copy_run_folder
jswade-rtx Apr 14, 2026
1f23f09
Initial implementation of ewts for checkpointing
jswade-rtx Apr 17, 2026
eeef61d
Update ewts implementation for copy_run_folder and checkpoint_restart
jswade-rtx Apr 17, 2026
40ca63f
Fix rebasing error to NHF
jswade-rtx Apr 29, 2026
04dd1c6
Fix README styling
jswade-rtx May 11, 2026
dda545e
Remove use_checkpoint flag
jswade-rtx May 11, 2026
d530fa1
Update tests for checkpoint refactor
jswade-rtx May 11, 2026
040a047
Update default and region functions to accept checkpointing and state…
jswade-rtx Apr 7, 2026
763c649
Update default and region functions to accept checkpointing and state…
jswade-rtx Apr 7, 2026
19db654
Refactor realization handling for default/region state saving and che…
jswade-rtx Apr 7, 2026
6463b39
Fix rebasing error to NHF
jswade-rtx Apr 29, 2026
af47cfd
Implement prototype update_fcst_run function
jswade-rtx Apr 3, 2026
d789404
Make updates to update_fcst_run workflow
jswade-rtx Apr 6, 2026
706a540
Fix copy_run_folder test
jswade-rtx Apr 6, 2026
08eeb04
Fix reformatting from checkpoint rebase
jswade-rtx Apr 8, 2026
105b21b
Add support for wcoss default/regionalization forecasts
jswade-rtx Apr 9, 2026
1738eca
Fix default/regionalization paths and manger CLI arguments
jswade-rtx Apr 9, 2026
05229cd
Fix pytests for wcoss forecast refactor
jswade-rtx Apr 13, 2026
ab55654
Fix bug in state load logic
jswade-rtx Apr 14, 2026
dfd949e
Add checkpoint support and state saving folder creation to update_fcst
jswade-rtx Apr 14, 2026
f654666
Enfore ignore_forcing_config in update_frcst_run
jswade-rtx Apr 14, 2026
a333483
Refactor build_fcst return, add CLI args for default/region, and upda…
jswade-rtx Apr 15, 2026
3035cab
Fix error handling for non medium range lagged ensemble inputs
jswade-rtx Apr 15, 2026
53c2a4c
Add CLI pytests for lagged ens default/region
jswade-rtx Apr 15, 2026
10c615b
Add lagged ensemble member lags dict
mxkpp Apr 17, 2026
71868eb
Implement ewts for update_fcst
jswade-rtx Apr 17, 2026
32e227a
Updates for update_fcst nwm output variable rebase
jswade-rtx May 4, 2026
4d608b7
Fix checkpoint tests for update_fcst refactor
jswade-rtx May 11, 2026
8257113
Update run type log handling for ewts Payload
jswade-rtx May 27, 2026
245d2fb
Remove checkpoint path argument for restarts
jswade-rtx Jun 2, 2026
6365db3
Fix checkpoint restart pytests after refactor
jswade-rtx Jun 2, 2026
b75e23e
Added catch for >1 gpkg files and more detailed comments for state sa…
jswade-rtx Jun 8, 2026
84d413c
Add check for multiple realization files
jswade-rtx Jun 9, 2026
a9ba287
Honor forcing LookBack override from [Forcing] config
zhengtaocui Jun 11, 2026
dcd495e
Initial removal of time handling from BMI configs
jswade-rtx Apr 22, 2026
bd3b0bf
Fix tests for time handling BMI changes
jswade-rtx Apr 22, 2026
b0fae63
Update nwm output variable code for config time handling
jswade-rtx May 4, 2026
3fb6ad7
Remove duplicate call to update_troute
jswade-rtx Jun 12, 2026
da0f9c5
Merge pull request #75 from NGWPC/jwade_NGWPC-10592_config_times
jswade-rtx Jun 12, 2026
e031edb
Fix bug in topoflow-glacier catchment assignment
jswade-rtx Jun 15, 2026
4c423eb
Fix typo in topoflow group names
jswade-rtx Jun 15, 2026
9cd0f9c
Merge pull request #90 from NGWPC/jwade_topoflow_fix
jswade-rtx Jun 15, 2026
fb8696c
Add copy_run_folder function
jswade-rtx Apr 2, 2026
b05d167
Add checkpoint restart function prototype
jswade-rtx Apr 3, 2026
a7c439a
Fix checkpoint restart realization writing typo
jswade-rtx Apr 3, 2026
eb2b894
Add testing for copy_run_folder and checkpoint_restart
jswade-rtx Apr 3, 2026
205e8f8
Update default and region functions to accept checkpointing and state…
jswade-rtx Apr 7, 2026
3bf66fb
Update CLI arguments for default and region fcst
jswade-rtx Apr 7, 2026
68f9e9c
Fix CLI and testing for checkpointing
jswade-rtx Apr 7, 2026
40c4ee9
Update README for default/region state saving and checkpointing
jswade-rtx Apr 7, 2026
639533c
Update README for checkpoint restart
jswade-rtx Apr 7, 2026
6c01a48
Fix minor checkpointing issue and add checkpointing tests
jswade-rtx Apr 8, 2026
0fe3309
Preserve checkpoint symlinks and fix checkpoint save overwriting
jswade-rtx Apr 8, 2026
c48cb07
Add option to ignore forcing_config folder in copy_run_folder
jswade-rtx Apr 14, 2026
c94ffb8
Initial implementation of ewts for checkpointing
jswade-rtx Apr 17, 2026
3d1170d
Update ewts implementation for copy_run_folder and checkpoint_restart
jswade-rtx Apr 17, 2026
9b461f3
Fix README styling
jswade-rtx May 11, 2026
d877129
Remove use_checkpoint flag
jswade-rtx May 11, 2026
95fb29c
Update tests for checkpoint refactor
jswade-rtx May 11, 2026
969e624
Update logging and error handling in checkpoint restart code
jswade-rtx Jun 9, 2026
6ad693a
Fix directory overwrite checkpoint test
jswade-rtx Jun 9, 2026
1f9c9fd
Add raise from e to checkpoint errors
jswade-rtx Jun 10, 2026
2b57a93
Update default and region functions to accept checkpointing and state…
jswade-rtx Apr 7, 2026
415cce5
Update default and region functions to accept checkpointing and state…
jswade-rtx Apr 7, 2026
b6982ad
Refactor realization handling for default/region state saving and che…
jswade-rtx Apr 7, 2026
e5eb30e
Fix rebasing error to NHF
jswade-rtx Apr 29, 2026
d0538f7
Implement prototype update_fcst_run function
jswade-rtx Apr 3, 2026
f9655a3
Make updates to update_fcst_run workflow
jswade-rtx Apr 6, 2026
7214223
Fix copy_run_folder test
jswade-rtx Apr 6, 2026
5d953db
Fix reformatting from checkpoint rebase
jswade-rtx Apr 8, 2026
7f3f56e
Add support for wcoss default/regionalization forecasts
jswade-rtx Apr 9, 2026
7d48c5e
Fix default/regionalization paths and manger CLI arguments
jswade-rtx Apr 9, 2026
8ce6cb5
Fix pytests for wcoss forecast refactor
jswade-rtx Apr 13, 2026
5238360
Fix bug in state load logic
jswade-rtx Apr 14, 2026
33d5035
Add checkpoint support and state saving folder creation to update_fcst
jswade-rtx Apr 14, 2026
9f6348a
Enfore ignore_forcing_config in update_frcst_run
jswade-rtx Apr 14, 2026
f1b61af
Refactor build_fcst return, add CLI args for default/region, and upda…
jswade-rtx Apr 15, 2026
8817277
Add CLI pytests for lagged ens default/region
jswade-rtx Apr 15, 2026
b45dd7b
Implement ewts for update_fcst
jswade-rtx Apr 17, 2026
4e3782c
Fix checkpoint tests for update_fcst refactor
jswade-rtx May 11, 2026
3e58ade
Remove checkpoint path argument for restarts
jswade-rtx Jun 2, 2026
4470884
Fix checkpoint restart pytests after refactor
jswade-rtx Jun 2, 2026
6ece212
Added catch for >1 gpkg files and more detailed comments for state sa…
jswade-rtx Jun 8, 2026
6de15f0
Add check for multiple realization files
jswade-rtx Jun 9, 2026
1eb7c1e
rebase - Add copy_run_folder function
jswade-rtx Apr 2, 2026
6a6dfb3
rebade - Add checkpoint restart function prototype
jswade-rtx Apr 3, 2026
24fe897
rebase - Add testing for copy_run_folder and checkpoint_restart
jswade-rtx Apr 3, 2026
9a77f63
rebase - Fix CLI and testing for checkpointing
jswade-rtx Apr 7, 2026
4b85932
Update README for checkpoint restart
jswade-rtx Apr 7, 2026
bb67ee5
Fix minor checkpointing issue and add checkpointing tests
jswade-rtx Apr 8, 2026
a82d149
Initial implementation of ewts for checkpointing
jswade-rtx Apr 17, 2026
29383cb
Update ewts implementation for copy_run_folder and checkpoint_restart
jswade-rtx Apr 17, 2026
e4664ee
Fix README styling
jswade-rtx May 11, 2026
65f12a0
Remove use_checkpoint flag
jswade-rtx May 11, 2026
defd32d
Make updates to update_fcst_run workflow
jswade-rtx Apr 6, 2026
64e8654
Add support for wcoss default/regionalization forecasts
jswade-rtx Apr 9, 2026
cc829e0
Add checkpoint support and state saving folder creation to update_fcst
jswade-rtx Apr 14, 2026
0eb8752
Refactor build_fcst return, add CLI args for default/region, and upda…
jswade-rtx Apr 15, 2026
05cd43d
Remove checkpoint path argument for restarts
jswade-rtx Jun 2, 2026
93c4c46
Updated README.md for the lookback option.
zhengtaocui Jun 16, 2026
042f5bc
Add copy_run_folder function
jswade-rtx Apr 2, 2026
116d540
Add checkpoint restart function prototype
jswade-rtx Apr 3, 2026
f139a79
Fix checkpoint restart realization writing typo
jswade-rtx Apr 3, 2026
162810b
Add testing for copy_run_folder and checkpoint_restart
jswade-rtx Apr 3, 2026
ffbac4c
Update default and region functions to accept checkpointing and state…
jswade-rtx Apr 7, 2026
f6df7e8
Update CLI arguments for default and region fcst
jswade-rtx Apr 7, 2026
b60967f
Fix CLI and testing for checkpointing
jswade-rtx Apr 7, 2026
cd6d3e5
Update README for default/region state saving and checkpointing
jswade-rtx Apr 7, 2026
ee97a16
Update README for checkpoint restart
jswade-rtx Apr 7, 2026
0215911
Fix minor checkpointing issue and add checkpointing tests
jswade-rtx Apr 8, 2026
5eb79f4
Preserve checkpoint symlinks and fix checkpoint save overwriting
jswade-rtx Apr 8, 2026
d59c1b4
Add option to ignore forcing_config folder in copy_run_folder
jswade-rtx Apr 14, 2026
ac85c5c
Initial implementation of ewts for checkpointing
jswade-rtx Apr 17, 2026
59513b7
Update ewts implementation for copy_run_folder and checkpoint_restart
jswade-rtx Apr 17, 2026
e2efb00
Fix README styling
jswade-rtx May 11, 2026
fd21392
Remove use_checkpoint flag
jswade-rtx May 11, 2026
29331bf
Update tests for checkpoint refactor
jswade-rtx May 11, 2026
b691472
Update logging and error handling in checkpoint restart code
jswade-rtx Jun 9, 2026
e800435
Fix directory overwrite checkpoint test
jswade-rtx Jun 9, 2026
e668e43
Add raise from e to checkpoint errors
jswade-rtx Jun 10, 2026
da9f42a
Update default and region functions to accept checkpointing and state…
jswade-rtx Apr 7, 2026
ba491b4
Update default and region functions to accept checkpointing and state…
jswade-rtx Apr 7, 2026
ccad6ec
Refactor realization handling for default/region state saving and che…
jswade-rtx Apr 7, 2026
c76c89a
Fix rebasing error to NHF
jswade-rtx Apr 29, 2026
daae489
Implement prototype update_fcst_run function
jswade-rtx Apr 3, 2026
4bd509e
Make updates to update_fcst_run workflow
jswade-rtx Apr 6, 2026
59a4e99
Fix copy_run_folder test
jswade-rtx Apr 6, 2026
7cea5ea
Fix reformatting from checkpoint rebase
jswade-rtx Apr 8, 2026
1fdd606
Add support for wcoss default/regionalization forecasts
jswade-rtx Apr 9, 2026
2f8570a
Fix default/regionalization paths and manger CLI arguments
jswade-rtx Apr 9, 2026
469ccc9
Fix pytests for wcoss forecast refactor
jswade-rtx Apr 13, 2026
f34e745
Fix bug in state load logic
jswade-rtx Apr 14, 2026
3b834b8
Add checkpoint support and state saving folder creation to update_fcst
jswade-rtx Apr 14, 2026
4388bc5
Enfore ignore_forcing_config in update_frcst_run
jswade-rtx Apr 14, 2026
470ad13
Refactor build_fcst return, add CLI args for default/region, and upda…
jswade-rtx Apr 15, 2026
9fe94c0
Add CLI pytests for lagged ens default/region
jswade-rtx Apr 15, 2026
7a2c739
Implement ewts for update_fcst
jswade-rtx Apr 17, 2026
74c6d4d
Fix checkpoint tests for update_fcst refactor
jswade-rtx May 11, 2026
bf3144f
Remove checkpoint path argument for restarts
jswade-rtx Jun 2, 2026
63c84dc
Fix checkpoint restart pytests after refactor
jswade-rtx Jun 2, 2026
4706c12
Added catch for >1 gpkg files and more detailed comments for state sa…
jswade-rtx Jun 8, 2026
587f6e3
Add check for multiple realization files
jswade-rtx Jun 9, 2026
ad37d69
Initial removal of time handling from BMI configs
jswade-rtx Apr 22, 2026
2a7f754
Fix tests for time handling BMI changes
jswade-rtx Apr 22, 2026
92ec4a0
Update nwm output variable code for config time handling
jswade-rtx May 4, 2026
e2d5ce8
Remove duplicate call to update_troute
jswade-rtx Jun 12, 2026
c9c4b17
Fix bug in topoflow-glacier catchment assignment
jswade-rtx Jun 15, 2026
591b3d2
Fix typo in topoflow group names
jswade-rtx Jun 15, 2026
7b4777c
Handle nan glacier percent values for topoflow-glacier
jswade-rtx Jun 16, 2026
2c36da8
Merge pull request #91 from NGWPC/jwade_nan_glacier
jswade-rtx Jun 16, 2026
2554515
Merge branch 'development' into zcui_lookback_override
zhengtaocui Jun 16, 2026
32261c5
Upgrade dependency
peterkronenberg-rtx May 29, 2026
c66ed2b
Merge pull request #88 from NGWPC/zcui_lookback_override
zhengtaocui Jun 17, 2026
0a8a4f1
Fill default attributes in NHF gpkg
jswade-rtx Jun 17, 2026
7cc01bf
Minor updates to default attr handling
jswade-rtx Jun 18, 2026
4c95ed7
Remove unnecessary file
jswade-rtx Jun 18, 2026
bf7e7ce
Merge pull request #93 from NGWPC/jwade_fill_params
jswade-rtx Jun 18, 2026
bd0bcb7
Remove ewts lazy binding
cmaynard-ngwpc Jun 15, 2026
1c78856
Remove deprecated argument from call to ewts setup_logger
cmaynard-ngwpc Jun 18, 2026
89af4cc
Merge pull request #94 Remove EWTS Lazy Binding
cmaynard-ngwpc Jun 18, 2026
bb1086f
Remove is_aet_rootzone from regionalization realization
jswade-rtx Jun 18, 2026
ce9f0ea
Merge pull request #95 from NGWPC/jwade_aet_rootzone_region
jswade-rtx Jun 18, 2026
b5884a8
Remove deprecated mswm inputs
jswade-rtx Jun 23, 2026
6e4e240
Fix regionalization error message to reference catchment group file
jswade-rtx Jun 23, 2026
12eabd5
Update regionalization example files for new div_ids
jswade-rtx Jun 23, 2026
912587c
Merge pull request #96 from NGWPC/jwade_input_updates
jswade-rtx Jun 23, 2026
5bb8591
Add regionalization input example files for gage and vpu
jswade-rtx Jun 24, 2026
38c1ba5
Merge pull request #97 from NGWPC/jwade_region_example_files
jswade-rtx Jun 24, 2026
2dc2d41
Add example_inputs folder to package installation
jswade-rtx Jun 24, 2026
7c213ae
Merge pull request #98 from NGWPC/jwade_install_example_files
jswade-rtx Jun 24, 2026
6823117
Add user configuration of output format
jswade-rtx Jun 1, 2026
3219350
Update example input files for output format variable
jswade-rtx Jun 1, 2026
b73b631
Fix realization fcst update for rebase
jswade-rtx Jun 16, 2026
2b6ee37
Merge pull request #85 from NGWPC/jwade_NGWPC-10866_output_format
jswade-rtx Jun 25, 2026
8b26802
Adjust parallel processing based on number of catchments
jswade-rtx Jun 25, 2026
ebd7add
Relay nprocs changes back to input_config
jswade-rtx Jun 25, 2026
824da2b
Merge pull request #99 from NGWPC/jwade_enforce_single_process
jswade-rtx Jun 26, 2026
a5b4e97
Use new STATUS EWTS log level for metadata Payloads
mxkpp Jun 30, 2026
dee047f
Reimplement mm/h rainmelt units
jswade-rtx Jun 30, 2026
3abae6f
Merge pull request #101 from NGWPC/jwade_reimplement_rainmelt_units
jswade-rtx Jun 30, 2026
c816df5
Add configurable state save and checkpointing directories
jswade-rtx Jun 29, 2026
ae60b86
Fix configurable model states and checkpoint bugs and tests
jswade-rtx Jun 29, 2026
f01f26c
Merge pull request #100 from NGWPC/jwade_configure_state_directory
jswade-rtx Jun 30, 2026
7f3df3d
Merge pull request #102 from NGWPC/maxkipp-status-logs
mxkpp Jul 1, 2026
089748c
Update manager for state save dir and checkpoint dir
jswade-rtx Jul 1, 2026
71c9ebb
Merge pull request #103 from NGWPC/jwade_update_manager
jswade-rtx Jul 1, 2026
e3d4bfb
Update adapter outputs to use 4 soil layers
jswade-rtx Jul 1, 2026
5ad0f84
Adapter and pytest bug fixes
jswade-rtx Jul 1, 2026
02e585e
Allow copy of state save in checkpoint restart
jswade-rtx Jul 6, 2026
7784af0
Prevent substring path collision in copy_run_folder
jswade-rtx Jul 6, 2026
ad8904b
Merge pull request #104 from NGWPC/jwade_soil_layer_adapters
jswade-rtx Jul 6, 2026
2859f95
Merge pull request #105 from NGWPC/jwade_copy_state_save
jswade-rtx Jul 6, 2026
2377e54
Add example regionalization inputs for VPU 03N
jswade-rtx Jul 9, 2026
0217cf8
Merge pull request #107 from NGWPC/jwade_vpu_03N
jswade-rtx Jul 9, 2026
59ad4cd
updates to add new fields for flow threshold type in input.config
Jun 11, 2026
b035514
minor updates to accept only quantile and absolute threshold types
Jun 11, 2026
4046b54
update sample config file for calibration to add the new threshold fi…
Jun 11, 2026
2f702df
Configure T-route to produce lake output by default
jswade-rtx Jul 9, 2026
2a759cd
Update path to lakeout_output
jswade-rtx Jul 10, 2026
5ec4ba6
Merge pull request #87 from NGWPC/yliu_NGWPC-10475_refactor_for_eval_mgr
yuqiong77 Jul 10, 2026
f31c9de
Update documentation to address code merge issues
jswade-rtx Jul 13, 2026
a545d28
Merge pull request #108 from NGWPC/jwade_cde_merge
jswade-rtx Jul 13, 2026
bce0ba9
Update dockerfile to add configurable ownership, ewts, and working dir
jswade-rtx Jul 14, 2026
0c8a337
Update dockerfile to set APP_DIR to /ngen-app
jswade-rtx Jul 14, 2026
7bd6d16
Re-expose APP_DIR arg
jswade-rtx Jul 14, 2026
1ed5f6c
Updated Dockerfile to USE_EWTS
jswade-rtx Jul 14, 2026
3603628
Merge pull request #109 from NGWPC/jwade_dockerfile
jswade-rtx Jul 15, 2026
d78ea5a
Remove request for layers for NHF 1.2.2
jswade-rtx Jul 16, 2026
ee89dba
Merge pull request #111 from NGWPC/jwade_nhf_1.2.2
jswade-rtx Jul 16, 2026
d009a3b
Add user configuration for reservoir data assimilation
jswade-rtx Jul 14, 2026
2499bf1
Fix typo in DA input config
jswade-rtx Jul 14, 2026
308dbe6
Fix reservoir da bugs and update example files
jswade-rtx Jul 15, 2026
559cb56
Merge pull request #112 from NGWPC/jwade_lakeout
jswade-rtx Jul 16, 2026
9a9b3c5
Disable non-RFC reservoir assimilation
jswade-rtx Jul 16, 2026
2301936
Remove testing logging and add log for configuring RFC reservoir DA.
jswade-rtx Jul 20, 2026
7b61917
Minor bug fixes to restart utility
jswade-rtx Jul 21, 2026
01a7e92
Add check for output format when restarting run
jswade-rtx Jul 21, 2026
37bd8b0
Update pytests for checkpoint restart CSV check
jswade-rtx Jul 21, 2026
1085f57
Remove typo in CSV output warning message
jswade-rtx Jul 21, 2026
691b8f1
Merge pull request #113 from NGWPC/jwade_restart_updates
jswade-rtx Jul 21, 2026
f8ef8f8
Merge pull request #110 from NGWPC/jwade_reservoir_da
jswade-rtx Jul 22, 2026
2773f7b
Update sac-sma to send total sm to SMP
jswade-rtx Jul 23, 2026
acc3952
Merge pull request #115 from NGWPC/jwade_sac_sm
jswade-rtx Jul 23, 2026
3050c4c
Update Topmodel water_table_based_method to deficit based
jswade-rtx Jul 27, 2026
42f3a42
Merge pull request #116 from NGWPC/jwade_topmodel_deficit
jswade-rtx Jul 27, 2026
f3cfeb0
Shift troute start time -1h for realtime forcing
jswade-rtx Jul 27, 2026
b7ca339
Merge pull request #117 from NGWPC/jwade_troute_timing
jswade-rtx Jul 27, 2026
f64ccbe
Adjust troute output time for AnA runs
jswade-rtx Jul 30, 2026
a49623b
Remove typo character
jswade-rtx Jul 30, 2026
658867f
Merge pull request #119 from NGWPC/jwade_troute_lookback
jswade-rtx Jul 30, 2026
06a0a8f
bumped github actions to node 24 versions
miguelp1986 Jul 30, 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
4 changes: 2 additions & 2 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ jobs:

steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v6

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
Expand Down
147 changes: 139 additions & 8 deletions Dockerfile.mswm
Original file line number Diff line number Diff line change
@@ -1,16 +1,147 @@
# syntax=docker/dockerfile:1.4

ARG ORG=ngwpc
ARG NGEN_IMAGE_TAG=latest
ARG NGEN_IMAGE=ghcr.io/${ORG}/ngen:${NGEN_IMAGE_TAG}
############################################################################
# Change/Verify these values when adopting this Dockerfile into another org:
# GH_ORG, GHCR_ORG, IMAGE_NAMESPACE, APP_DIR,
# MSW_MGR_ORG, MSW_MGR_REF, EWTS_ORG, EWTS_REF
############################################################################

# Ownership / branding overrides
ARG GH_ORG=NGWPC
ARG GHCR_ORG=ngwpc
ARG IMAGE_NAMESPACE=ngwpc

# Configurable application working directory. Defaults to /ngen-app, but
# can be overriden for environments where creating directories off root is restricted
ARG APP_DIR=/ngen-app

# External repository sources
ARG EWTS_ORG=${GH_ORG}
ARG EWTS_REF=development

ARG USE_EWTS=ON
ARG EWTS_CACHE_BUST=0

############################################################################
# Image selection
############################################################################

# Use the ngen image as the base.
#
# Default build:
# docker build -t nwm-msw-mgr .
#
# Build from a different published ngen image:
# docker build \
# --build-arg NGEN_IMAGE=ghcr.io/ngwpc/ngen:development \
# -t nwm-msw-mgr .
#
# Build from a locally built ngen image:
# docker build \
# --build-arg NGEN_IMAGE=ngen \
# -t nwm-msw-mgr .
ARG NGEN_IMAGE=ghcr.io/${GHCR_ORG}/ngen:latest

#FROM ngen-int:${NGEN_IMAGE_TAG}
FROM ${NGEN_IMAGE}

WORKDIR /ngen-app/mswm/
# Re-expose args after FROM for the remaining build stage
ARG GH_ORG
ARG GHCR_ORG
ARG IMAGE_NAMESPACE
ARG EWTS_ORG
ARG EWTS_REF
ARG USE_EWTS
ARG EWTS_CACHE_BUST
ARG NGEN_IMAGE
ARG APP_DIR

# OCI Metadata Arguments
#
# BASE_IMAGE_* refers to the ngen image this image is built FROM.
ARG BASE_IMAGE_DIGEST="unknown"
ARG BASE_IMAGE_REVISION="unknown"
ARG IMAGE_SOURCE="unknown"
ARG IMAGE_VENDOR="unknown"
ARG IMAGE_VERSION="unknown"
ARG IMAGE_REVISION="unknown"

# Image Labels: OCI-spec annotations followed by custom source-repo metadata.
LABEL org.opencontainers.image.base.name="${NGEN_IMAGE}" \
org.opencontainers.image.base.digest="${BASE_IMAGE_DIGEST}" \
org.opencontainers.image.source="${IMAGE_SOURCE}" \
org.opencontainers.image.vendor="${IMAGE_VENDOR}" \
org.opencontainers.image.version="${IMAGE_VERSION}" \
org.opencontainers.image.revision="${IMAGE_REVISION}" \
org.opencontainers.image.title="NGEN Model Setup Workflow Manager" \
org.opencontainers.image.description="Docker image for the NGEN Model Setup Workflow Manager" \
io.${IMAGE_NAMESPACE}.image.base.revision="${BASE_IMAGE_REVISION}"

# Re-expose the Python virtual environment inherited from ngen.
# The dependency image creates the venv and the unversioned `python` symlink.
# ngen-bmi-forcing and ngen install their Python packages into that venv.
# forecast should reuse it rather than recreating it.
ENV VIRTUAL_ENV="/ngen-app/ngen-python" \
PATH="${VIRTUAL_ENV}/bin:${PATH}" \
PYTHONPATH="${VIRTUAL_ENV}/lib/python3.11/site-packages:/usr/local/lib64/python3.11/site-packages:${PYTHONPATH}"

SHELL ["/bin/bash", "-c"]

# Optional development-only EWTS Python override.
#
# Production images should inherit EWTS from ngen. Set USE_EWTS=ON
# only when testing a new EWTS Python package without rebuilding forcing/ngen.
#
# To specify EWTS for development only:
# docker build \
# --build-arg USE_EWTS=ON \
# --build-arg EWTS_REF=my-ewts-branch \
# --build-arg EWTS_CACHE_BUST=$(date +%s) \
# -t nwm-msw-mgr .
RUN --mount=type=cache,target=/root/.cache/pip,id=pip-cache-rocky \
set -eux; \
USE_EWTS="${USE_EWTS:-ON}"; \
echo "USE_EWTS=${USE_EWTS}; EWTS ref: ${EWTS_REF}; cache bust: ${EWTS_CACHE_BUST}"; \
USE_EWTS_NORMALIZED="$(echo "${USE_EWTS}" | tr '[:lower:]' '[:upper:]')"; \
if [[ "${USE_EWTS_NORMALIZED}" =~ ^(ON|YES|TRUE|1)$ ]]; then \
echo "Installing development EWTS Python override"; \
rm -rf /tmp/nwm-ewts; \
(git clone --depth 1 -b "${EWTS_REF}" \
"https://github.com/${EWTS_ORG}/nwm-ewts.git" /tmp/nwm-ewts \
|| (git clone "https://github.com/${EWTS_ORG}/nwm-ewts.git" /tmp/nwm-ewts && \
cd /tmp/nwm-ewts && git checkout "${EWTS_REF}")); \
python -m pip install --force-reinstall --no-deps /tmp/nwm-ewts/runtime/python/ewts; \
rm -rf /tmp/nwm-ewts; \
else \
echo "Using EWTS inherited from ngen"; \
fi

COPY . ${APP_DIR}/mswm
WORKDIR ${APP_DIR}/mswm

COPY pyproject.toml ./
RUN --mount=type=cache,target=/root/.cache/pip,id=pip-cache-rocky \
set -eux; \
python -m pip install -e .; \
python -m pip cache purge

COPY src/ ./src/
ARG CI_COMMIT_REF_NAME

RUN pip install -e .
RUN set -eux; \
# Get the remote URL from Git configuration
repo_url=$(git config --get remote.origin.url); \
# Extract the repo name (everything after the last slash) and remove any trailing .git
key=${repo_url##*/}; \
key=${key%.git}; \
# Construct the file path using the derived key
GIT_INFO_PATH="/ngen-app/${key}_git_info.json"; \
# Determine branch name: use CI_COMMIT_REF_NAME if set; otherwise, use git's current branch
branch=$( [ -n "${CI_COMMIT_REF_NAME:-}" ] && echo "${CI_COMMIT_REF_NAME}" || git rev-parse --abbrev-ref HEAD ); \
jq -n \
--arg commit_hash "$(git rev-parse HEAD)" \
--arg branch "$branch" \
--arg tags "$(git tag --points-at HEAD | tr '\n' ' ')" \
--arg author "$(git log -1 --pretty=format:'%an')" \
--arg commit_date "$(date -u -d @$(git log -1 --pretty=format:'%ct') +'%Y-%m-%d %H:%M:%S UTC')" \
--arg message "$(git log -1 --pretty=format:'%s' | tr '\n' ';')" \
--arg build_date "$(date -u +'%Y-%m-%d %H:%M:%S UTC')" \
"{\"$key\": {commit_hash: \$commit_hash, branch: \$branch, tags: \$tags, author: \$author, commit_date: \$commit_date, message: \$message, build_date: \$build_date}}" \
> $GIT_INFO_PATH
Loading