Three unrelated issues that came up while reviewing #45. None of them are introduced by that PR, so noting them here instead.
-
ww3_input_generator.py:80 disables the Generate button for the duration of on_btn_generate_clicked, and restores it at lines 92 and 102, i.e., on the two error paths only. The success path at line 99 doesn't restore it, and reset() (lines 49-52) clears WW3_INPUT_STATUS without re-enabling the button. So after a successful generation, returning to the Wave Grid stage leaves it blocked on a None status, with the only button that can set that status disabled. Adding self.disabled = False after line 99, or moving the restore into reset(), should cover it.
-
case_creator.py:44:
assert is_ccs_config_writeable or not add_grids_to_ccs_config, "Cannot write to ccs_config xml files. ..."
is_ccs_config_writeable is a function (case_tools.py:12), so the bare name is always truthy and this assert can never fail. It is called correctly at line 276. Should be is_ccs_config_writeable(cime).
case_creator.py:717 and 722, in _apply_mom_namelist_changes, open two datasets that are never closed, and the vgrid one isn't even bound to a name:
ds_topo = xr.open_dataset(topo_file_path)
...
nk = len(xr.open_dataset(vgrid_file_path).dz)
Both should be with xr.open_dataset(...) as ds:.
Three unrelated issues that came up while reviewing #45. None of them are introduced by that PR, so noting them here instead.
ww3_input_generator.py:80disables the Generate button for the duration ofon_btn_generate_clicked, and restores it at lines 92 and 102, i.e., on the two error paths only. The success path at line 99 doesn't restore it, andreset()(lines 49-52) clearsWW3_INPUT_STATUSwithout re-enabling the button. So after a successful generation, returning to the Wave Grid stage leaves it blocked on aNonestatus, with the only button that can set that status disabled. Addingself.disabled = Falseafter line 99, or moving the restore intoreset(), should cover it.case_creator.py:44:is_ccs_config_writeableis a function (case_tools.py:12), so the bare name is always truthy and this assert can never fail. It is called correctly at line 276. Should beis_ccs_config_writeable(cime).case_creator.py:717and722, in_apply_mom_namelist_changes, open two datasets that are never closed, and the vgrid one isn't even bound to a name:Both should be
with xr.open_dataset(...) as ds:.