diff --git a/changelog.d/fix-apply-uprating-redundant-copy.changed.md b/changelog.d/fix-apply-uprating-redundant-copy.changed.md new file mode 100644 index 000000000..3adbe304f --- /dev/null +++ b/changelog.d/fix-apply-uprating-redundant-copy.changed.md @@ -0,0 +1 @@ +Added `copy` parameter to `apply_uprating` (default `True`); `extend_single_year_dataset` now passes `copy=False` to skip the redundant deep copy of the multi-year dataset since each year is already copied individually. diff --git a/policyengine_uk/data/economic_assumptions.py b/policyengine_uk/data/economic_assumptions.py index 9c6d84946..1b33994f9 100644 --- a/policyengine_uk/data/economic_assumptions.py +++ b/policyengine_uk/data/economic_assumptions.py @@ -48,21 +48,23 @@ def extend_single_year_dataset( return apply_uprating( multi_year_dataset, tax_benefit_system_parameters=tax_benefit_system_parameters, + copy=False, ) def apply_uprating( dataset: UKMultiYearDataset, tax_benefit_system_parameters: ParameterNode = None, + copy: bool = True, ): from policyengine_uk.system import system - # Apply uprating to the dataset. - dataset = dataset.copy() - if not isinstance(dataset, UKMultiYearDataset): raise TypeError("dataset must be of type UKMultiYearDataset.") + if copy: + dataset = dataset.copy() + for year in dataset.datasets.keys(): if year == min(dataset.datasets.keys()): continue # Don't uprate the first year