Skip to content

Commit

Permalink
Merge pull request #86 from ImperialCollegeLondon/distribution-overrides
Browse files Browse the repository at this point in the history
Apply overrides in Distribution
  • Loading branch information
barneydobson authored Oct 1, 2024
2 parents 1bad6b4 + 4ffca04 commit 36c5933
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 1 deletion.
5 changes: 5 additions & 0 deletions tests/test_distribution.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,11 @@ def test_leakage(self):
self.assertEqual(v2, arc1.vqip_in["volume"])
self.assertEqual(v2 * 0.2, arc2.vqip_in["volume"])

def test_distribution_overrides(self):
distribution = Distribution(name="", leakage=0.2)
distribution.apply_overrides({"leakage": 0})
self.assertEqual(distribution.leakage, 0)


if __name__ == "__main__":
unittest.main()
20 changes: 19 additions & 1 deletion wsimod/nodes/distribution.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
@author: bdobson
"""

from typing import Any, Dict

from wsimod.core import constants
from wsimod.nodes.nodes import Node

Expand Down Expand Up @@ -125,15 +127,31 @@ def __init__(self, leakage=0, **kwargs):
# Update handlers
self.push_set_handler["default"] = self.push_set_deny
self.push_check_handler["default"] = self.push_check_deny
self.decorate_pull_handlers()

if leakage > 0:
def decorate_pull_handlers(self):
"""Decorate handlers if there is leakage ratio."""
if self.leakage > 0:
self.pull_set_handler["default"] = decorate_leakage_set(
self, self.pull_set_handler["default"]
)
self.pull_check_handler["default"] = decorate_leakage_check(
self, self.pull_check_handler["default"]
)

def apply_overrides(self, overrides: Dict[str, Any] = {}):
"""Apply overrides to the sewer.
Enables a user to override any of the following parameters:
leakage.
Args:
overrides (dict, optional): Dictionary of overrides. Defaults to {}.
"""
self.leakage = overrides.pop("leakage", self.leakage)
self.decorate_pull_handlers()
super().apply_overrides(overrides)


class UnlimitedDistribution(Distribution):
""""""
Expand Down

0 comments on commit 36c5933

Please sign in to comment.