@@ -226,20 +226,18 @@ def __init__(
226226 bat_id : None for bat_id , _ in self ._bat_inv_map .items ()
227227 }
228228
229- def _get_bounds (self , batteries : abc .Set [int ], include_broken : bool ) -> PowerBounds :
229+ def _get_bounds (
230+ self ,
231+ pairs_data : list [InvBatPair ],
232+ ) -> PowerBounds :
230233 """Get power bounds for given batteries.
231234
232235 Args:
233- batteries: List of batteries
234- include_broken: whether all batteries in the batteries set in the
235- request must be used regardless the status.
236+ pairs_data: list of battery and adjacent inverter data pairs.
236237
237238 Returns:
238239 Power bounds for given batteries.
239240 """
240- pairs_data : List [InvBatPair ] = self ._get_components_data (
241- batteries , include_broken
242- )
243241 return PowerBounds (
244242 inclusion_lower = sum (
245243 max (
@@ -352,11 +350,6 @@ async def run(self) -> None:
352350 await asyncio .sleep (self ._wait_for_data_sec )
353351
354352 async for request in self ._requests_receiver :
355- error = self ._check_request (request )
356- if error :
357- await self ._send_result (request .namespace , error )
358- continue
359-
360353 try :
361354 pairs_data : List [InvBatPair ] = self ._get_components_data (
362355 request .batteries , request .include_broken_batteries
@@ -374,6 +367,11 @@ async def run(self) -> None:
374367 )
375368 continue
376369
370+ error = self ._check_request (request , pairs_data )
371+ if error :
372+ await self ._send_result (request .namespace , error )
373+ continue
374+
377375 try :
378376 distribution = self ._get_power_distribution (request , pairs_data )
379377 except ValueError as err :
@@ -497,11 +495,16 @@ def _get_power_distribution(
497495
498496 return result
499497
500- def _check_request (self , request : Request ) -> Optional [Result ]:
498+ def _check_request (
499+ self ,
500+ request : Request ,
501+ pairs_data : List [InvBatPair ],
502+ ) -> Optional [Result ]:
501503 """Check whether the given request if correct.
502504
503505 Args:
504506 request: request to check
507+ pairs_data: list of battery and adjacent inverter data pairs.
505508
506509 Returns:
507510 Result for the user if the request is wrong, None otherwise.
@@ -517,7 +520,7 @@ def _check_request(self, request: Request) -> Optional[Result]:
517520 )
518521 return Error (request = request , msg = msg )
519522
520- bounds = self ._get_bounds (request . batteries , request . include_broken_batteries )
523+ bounds = self ._get_bounds (pairs_data )
521524 if request .adjust_power :
522525 # Automatic power adjustments can only bring down the requested power down
523526 # to the inclusion bounds.
0 commit comments