11import logging
2- from typing import Any , Callable , Optional , Tuple , Union
2+ from collections .abc import Callable
3+ from typing import Any
34
45from buildingsync_asset_extractor .bae_types import SystemData
56from buildingsync_asset_extractor .converter import unify_units
@@ -25,7 +26,7 @@ def __init__(self, export_asset: Callable[[str, Any], None], export_asset_units:
2526 self .export_asset = export_asset
2627 self .export_asset_units = export_asset_units
2728
28- def format_age_results (self , name : str , results : list [SystemData ], process_type : str , units : Optional [ str ] ) -> None :
29+ def format_age_results (self , name : str , results : list [SystemData ], process_type : str , units : str | None ) -> None :
2930 # process results
3031 value = None
3132 if process_type .endswith ("oldest" ):
@@ -48,7 +49,7 @@ def format_age_results(self, name: str, results: list[SystemData], process_type:
4849 elif process_type .endswith ("average" ):
4950 self .format_custom_avg_results (name , results , units )
5051
51- def format_80_percent_results (self , name : str , results : list [SystemData ], units : Optional [ str ] ) -> None :
52+ def format_80_percent_results (self , name : str , results : list [SystemData ], units : str | None ) -> None :
5253 """format 80% rule results
5354 the "primary" type returned must at least serve 80% of the area by
5455 1. Capacity
@@ -68,7 +69,7 @@ def format_80_percent_results(self, name: str, results: list[SystemData], units:
6869
6970 results = unify_units (results )
7071
71- values , capacities , cap_units , sqfts = self .remap_results (results )
72+ _values , capacities , cap_units , sqfts = self .remap_results (results )
7273 if None not in capacities and len (set (cap_units )) <= 1 :
7374 # capacity method
7475 # add all capacities
@@ -82,8 +83,8 @@ def format_80_percent_results(self, name: str, results: list[SystemData], units:
8283 primaries [res .value ] = 0.0
8384 primaries [res .value ] += float (res .cap ) # type: ignore[arg-type]
8485
85- for p in primaries :
86- if float (primaries [ p ] ) / total >= 0.8 :
86+ for p , value in primaries . items () :
87+ if float (value ) / total >= 0.8 :
8788 # this fuel meets the 80% threshold by capacity
8889 found = 1
8990 self .export_asset (name , p )
@@ -126,7 +127,7 @@ def format_80_percent_results(self, name: str, results: list[SystemData], units:
126127 self .export_asset (name , "unknown" )
127128 self .export_asset_units (name , units )
128129
129- def format_lighting_results (self , name : str , results : list [LightingData ], units : Optional [ str ] ) -> None :
130+ def format_lighting_results (self , name : str , results : list [LightingData ], units : str | None ) -> None :
130131 """custom processing for lighting efficiency
131132 1. if 'lpd' is present, average the values
132133 2. else if percentpremisesserved
@@ -191,7 +192,7 @@ def format_lighting_results(self, name: str, results: list[LightingData], units:
191192 self .export_asset_units (name , units )
192193 return
193194
194- def format_custom_avg_results (self , name : str , results : list [SystemData ], units : Optional [ str ] ) -> None :
195+ def format_custom_avg_results (self , name : str , results : list [SystemData ], units : str | None ) -> None :
195196 """format weighted average
196197 1. Ensure all units are the same
197198 2. Attempt to calculate with installed power (NOT IMPLEMENTED)
@@ -229,7 +230,7 @@ def format_custom_avg_results(self, name: str, results: list[SystemData], units:
229230 for res in results :
230231 cap_total = cap_total + float (res .cap ) # type: ignore[arg-type]
231232 eff_total = eff_total + (float (res .value ) * float (res .cap )) # type: ignore[arg-type]
232- total : Union [ float , str ] = eff_total / cap_total
233+ total : float | str = eff_total / cap_total
233234
234235 # special case for average age: take the floor since partial year doesn't make sense
235236 if name .lower ().endswith ("age" ):
@@ -254,7 +255,7 @@ def format_custom_avg_results(self, name: str, results: list[SystemData], units:
254255 self .export_asset_units (name , units )
255256 return
256257
257- def format_sqft_results (self , name : str , results : dict [str , float ], units : Optional [ str ] ) -> None :
258+ def format_sqft_results (self , name : str , results : dict [str , float ], units : str | None ) -> None :
258259 """return primary and secondary for top 2 results by sqft"""
259260 # NOTE: this is the only method that modifies the export name '
260261 # by appending 'primary' and 'secondary'
@@ -279,13 +280,13 @@ def format_sqft_results(self, name: str, results: dict[str, float], units: Optio
279280 self .export_asset ("Secondary " + name , value2 )
280281 self .export_asset_units ("Secondary " + name , units )
281282
282- def format_avg_sqft_results (self , name : str , results : dict [Any , float ], units : Optional [ str ] ) -> None :
283+ def format_avg_sqft_results (self , name : str , results : dict [Any , float ], units : str | None ) -> None :
283284 """weighted average of results"""
284285
285286 # in this case the result keys will convert to numbers
286287 # to calculate the weighted average
287288
288- total : Union [ str , float , None ] = None
289+ total : str | float | None = None
289290
290291 if results :
291292 total_sqft = sum (results .values ())
@@ -304,7 +305,7 @@ def format_avg_sqft_results(self, name: str, results: dict[Any, float], units: O
304305 self .export_asset (name , total )
305306 self .export_asset_units (name , units )
306307
307- def format_electrification_potential (self , name : str , results : list [SystemData ], units : Optional [ str ] ) -> None :
308+ def format_electrification_potential (self , name : str , results : list [SystemData ], units : str | None ) -> None :
308309 """Sum non electric capacities"""
309310 # If no SystemDatas, then None
310311 if len (results ) == 0 :
@@ -340,7 +341,7 @@ def format_electrification_potential(self, name: str, results: list[SystemData],
340341 def remap_results (
341342 self ,
342343 results : list [SystemData ],
343- ) -> Tuple [list [Optional [ float ]] , list [Optional [ float ]] , list [Optional [ str ]] , list [Optional [ float ] ]]:
344+ ) -> tuple [list [float | None ] , list [float | None ] , list [str | None ] , list [float | None ]]:
344345 """Remap results from a list of dictionaries to 4 lists"""
345346 try :
346347 values = [sub .value if sub .value is None else float (sub .value ) for sub in results ]
0 commit comments