From 6916d611ce21cf99d766250e0c93bddff5b55efd Mon Sep 17 00:00:00 2001 From: Paul Slavin Date: Fri, 27 Jun 2025 17:10:28 +0100 Subject: [PATCH 1/2] Changes to allow alternate ConstantParameter and ControlCurveParameter definitions --- pywrparser/types/network.py | 5 ++++- pywrparser/types/parameter.py | 8 -------- pywrparser/types/timestepper.py | 6 +++--- 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/pywrparser/types/network.py b/pywrparser/types/network.py index f540d59..d09f3b1 100644 --- a/pywrparser/types/network.py +++ b/pywrparser/types/network.py @@ -268,7 +268,10 @@ def attach_reference_parameters(self): attached_parameters.append(value) for attached_parameter in attached_parameters: - del(self.parameters[attached_parameter]) + try: + del(self.parameters[attached_parameter]) + except KeyError: + pass def attach_reference_recorders(self): """ diff --git a/pywrparser/types/parameter.py b/pywrparser/types/parameter.py index 2fb1970..77e2b7b 100644 --- a/pywrparser/types/parameter.py +++ b/pywrparser/types/parameter.py @@ -39,14 +39,6 @@ def rule_aggregated_has_paramlist(self): assert "parameters" in self.data and isinstance(self.data["parameters"], list),\ f"AggregatedParameter <{self.name}> has invalid parameters" - @match("constantparameter") - def rule_constant_has_value(self): - assert "value" in self.data, f"ConstantParameter <{self.name}> does not define 'value'" - - @match("controlcurveparameter") - def rule_cc_has_controlcurve(self): - assert "control_curve" in self.data, f"ControlCurveParameter <{self.name}> does not define 'control_curve'" - @match("controlcurveparameter") def rule_cc_has_storage(self): assert "storage_node" in self.data, f"ControlCurveParameter <{self.name}> does not define 'storage_node'" diff --git a/pywrparser/types/timestepper.py b/pywrparser/types/timestepper.py index 5d165db..2334eb0 100644 --- a/pywrparser/types/timestepper.py +++ b/pywrparser/types/timestepper.py @@ -5,12 +5,12 @@ class PywrTimestepper(PywrType): def __init__(self, data): self.data = data - """ Validation rules """ - def rule_start_required(self): assert "start" in self.data, "Timestepper does not define 'start' key" - def rule_end_required(self): assert "end" in self.data, "Timestepper does not define 'end' key" + + def rule_start_before_end(self): + pass From 59a08f6e2487e6592e141cf9213d6bfa9f818ce6 Mon Sep 17 00:00:00 2001 From: knoxsp Date: Tue, 1 Jul 2025 18:29:24 +0100 Subject: [PATCH 2/2] Update pywrparser/types/network.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- pywrparser/types/network.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/pywrparser/types/network.py b/pywrparser/types/network.py index d09f3b1..4eac525 100644 --- a/pywrparser/types/network.py +++ b/pywrparser/types/network.py @@ -268,10 +268,7 @@ def attach_reference_parameters(self): attached_parameters.append(value) for attached_parameter in attached_parameters: - try: - del(self.parameters[attached_parameter]) - except KeyError: - pass + self.parameters.pop(attached_parameter, None) def attach_reference_recorders(self): """