Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
10 changes: 6 additions & 4 deletions zppy/e3sm_diags.py
Original file line number Diff line number Diff line change
Expand Up @@ -110,9 +110,9 @@ def check_parameters_for_bash(c: Dict[str, Any]) -> None:

def check_mvm_only_parameters_for_bash(c: Dict[str, Any]) -> None:
# Check mvm-specific parameters that aren't used until e3sm_diags.bash is run.
check_parameter_defined(c, "diff_title")
check_parameter_defined(c, "ref_name")
check_parameter_defined(c, "short_ref_name")
check_parameter_defined(c, "diff_title", "mvm requires it.")
check_parameter_defined(c, "ref_name", "mvm requires it.")
check_parameter_defined(c, "short_ref_name", "mvm requires it.")

check_required_parameters(
c,
Expand Down Expand Up @@ -258,7 +258,9 @@ def add_climo_dependencies(
os.path.join(script_dir, f"climo_{climo_sub}{status_suffix}"),
)
if "diurnal_cycle" in c["sets"]:
check_parameter_defined(c, "climo_diurnal_subsection")
check_parameter_defined(
c, "climo_diurnal_subsection", "the set `diurnal_cycle` requires it."
)
dependencies.append(
os.path.join(
script_dir, f"climo_{c['climo_diurnal_subsection']}{status_suffix}"
Expand Down
25 changes: 19 additions & 6 deletions zppy/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -233,12 +233,15 @@ def check_required_parameters(
c: Dict[str, Any], sets_with_requirement: Set[str], relevant_parameter: str
) -> None:
requested_sets = set(c["sets"])
intersection = sets_with_requirement & requested_sets
if (
(sets_with_requirement & requested_sets)
intersection
and (relevant_parameter in c.keys())
and (c[relevant_parameter] == "")
):
raise ParameterNotProvidedError(relevant_parameter)
raise ParameterNotProvidedError(
f"{relevant_parameter} is required because the sets {intersection} were requested."
)


# Return all year sets from a configuration given by a list of strings
Expand Down Expand Up @@ -297,7 +300,9 @@ def define_or_guess(
# so let's make a guess for the value.
value = c[second_choice_parameter]
else:
raise ParameterNotProvidedError(first_choice_parameter)
raise ParameterNotProvidedError(
f"{first_choice_parameter} was not provided, and guessing is turned off. Turn on guessing by setting {guess_type_parameter} to True."
)
return value


Expand All @@ -315,12 +320,20 @@ def define_or_guess2(
if c[guess_type_parameter]:
c[parameter] = backup_option
else:
raise ParameterNotProvidedError(parameter)
raise ParameterNotProvidedError(
f"{parameter} was not provided, and guessing is turned off. Turn on guessing by setting {guess_type_parameter} to True."
)


def check_parameter_defined(c: Dict[str, Any], relevant_parameter: str) -> None:
def check_parameter_defined(
c: Dict[str, Any], relevant_parameter: str, explanation: str = ""
) -> None:
if (relevant_parameter not in c.keys()) or (c[relevant_parameter] == ""):
raise ParameterNotProvidedError(relevant_parameter)
if explanation:
message = f"{relevant_parameter} is needed because {explanation}"
else:
message = f"{relevant_parameter} is not defined."
raise ParameterNotProvidedError(message)


def get_file_names(script_dir: str, prefix: str):
Expand Down
Loading