Skip to content

Commit 9f8e681

Browse files
committed
Add checks for lat_lon_land
1 parent f759fdc commit 9f8e681

File tree

5 files changed

+50
-8
lines changed

5 files changed

+50
-8
lines changed

tests/integration/template_min_case_e3sm_diags_lat_lon_land_mvm_2.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ short_name = "#expand case_name#"
3434
walltime = "#expand diags_walltime#"
3535

3636
[[ lnd_monthly_mvm_lnd ]]
37-
climo_subsection = "land_monthly_climo"
37+
climo_land_subsection = "land_monthly_climo"
3838
diff_title = "Difference"
3939
ref_final_yr = 1988
4040
ref_name = "#expand case_name#"

tests/test_zppy_e3sm_diags.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -533,6 +533,32 @@ def test_add_climo_dependencies(self):
533533
dependencies = []
534534
add_climo_dependencies(c, dependencies, "script_dir")
535535
self.assertEqual(dependencies, ["script_dir/climo_cdsub_1980-1990.status"])
536+
c = {"sets": ["diurnal_cycle"]}
537+
c.update(base)
538+
dependencies = []
539+
self.assertRaises(
540+
ParameterNotProvidedError,
541+
add_climo_dependencies,
542+
c,
543+
dependencies,
544+
"script_dir",
545+
)
546+
547+
c = {"sets": ["lat_lon_land"], "climo_land_subsection": "lndsub"}
548+
c.update(base)
549+
dependencies = []
550+
add_climo_dependencies(c, dependencies, "script_dir")
551+
self.assertEqual(dependencies, ["script_dir/climo_lndsub_1980-1990.status"])
552+
c = {"sets": ["lat_lon_land"]}
553+
c.update(base)
554+
dependencies = []
555+
self.assertRaises(
556+
ParameterNotProvidedError,
557+
add_climo_dependencies,
558+
c,
559+
dependencies,
560+
"script_dir",
561+
)
536562

537563
c = {"sets": ["tc_analysis"]}
538564
c.update(base)

tests/test_zppy_utils.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
ParameterGuessType,
66
ParameterNotProvidedError,
77
add_dependencies,
8+
check_parameter_defined,
89
check_required_parameters,
910
define_or_guess,
1011
define_or_guess2,
@@ -460,6 +461,11 @@ def test_define_or_guess2(self):
460461
)
461462
self.assertEqual(c["required_parameter"], "backup_option")
462463

464+
def test_check_parameter_defined(self):
465+
c = {"a": 1, "b": 2, "c": 3}
466+
check_parameter_defined(c, "a")
467+
self.assertRaises(ParameterNotProvidedError, check_parameter_defined, c, "d")
468+
463469
def test_get_file_names(self):
464470
bash, settings, status = get_file_names("script_dir", "prefix")
465471
self.assertEqual(bash, "script_dir/prefix.bash")

zppy/e3sm_diags.py

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
from zppy.bundle import handle_bundles
77
from zppy.utils import (
88
ParameterGuessType,
9-
ParameterNotProvidedError,
109
add_dependencies,
10+
check_parameter_defined,
1111
check_required_parameters,
1212
check_status,
1313
define_or_guess,
@@ -111,12 +111,9 @@ def check_parameters_for_bash(c: Dict[str, Any]) -> None:
111111

112112
def check_mvm_only_parameters_for_bash(c: Dict[str, Any]) -> None:
113113
# Check mvm-specific parameters that aren't used until e3sm_diags.bash is run.
114-
if c["diff_title"] == "":
115-
raise ParameterNotProvidedError("diff_title")
116-
if c["ref_name"] == "":
117-
raise ParameterNotProvidedError("ref_name")
118-
if c["short_ref_name"] == "":
119-
raise ParameterNotProvidedError("short_ref_name")
114+
check_parameter_defined(c, "diff_title")
115+
check_parameter_defined(c, "ref_name")
116+
check_parameter_defined(c, "short_ref_name")
120117

121118
check_required_parameters(
122119
c,
@@ -256,11 +253,19 @@ def add_climo_dependencies(
256253
os.path.join(script_dir, f"climo_{climo_sub}{status_suffix}"),
257254
)
258255
if "diurnal_cycle" in c["sets"]:
256+
check_parameter_defined(c, "climo_diurnal_subsection")
259257
dependencies.append(
260258
os.path.join(
261259
script_dir, f"climo_{c['climo_diurnal_subsection']}{status_suffix}"
262260
)
263261
)
262+
if "lat_lon_land" in c["sets"]:
263+
check_parameter_defined(c, "climo_land_subsection")
264+
dependencies.append(
265+
os.path.join(
266+
script_dir, f"climo_{c['climo_land_subsection']}{status_suffix}"
267+
)
268+
)
264269
if "tc_analysis" in c["sets"]:
265270
dependencies.append(os.path.join(script_dir, f"tc_analysis{status_suffix}"))
266271

zppy/utils.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,11 @@ def define_or_guess2(
314314
raise ParameterNotProvidedError(parameter)
315315

316316

317+
def check_parameter_defined(c: Dict[str, Any], relevant_parameter: str) -> None:
318+
if (relevant_parameter not in c.keys()) or (c[relevant_parameter] == ""):
319+
raise ParameterNotProvidedError(relevant_parameter)
320+
321+
317322
def get_file_names(script_dir: str, prefix: str):
318323
return tuple(
319324
[

0 commit comments

Comments
 (0)