@@ -98,9 +98,15 @@ def _get_function_names(
9898 )
9999 if not resolved_function_name :
100100 continue
101- self .function_names .setdefault (api_name , "" )
102- self .function_names [api_name ] += str (resolved_function_name )
103- return self .function_names
101+ # OLD APPROACH: String concatenation in loop
102+ # self.function_names.setdefault(api_name, "")
103+ # self.function_names[api_name] += str(resolved_function_name)
104+ # NEW APPROACH: Collect in list
105+ if api_name not in self .function_names :
106+ self .function_names [api_name ]= []
107+ self .function_names [api_name ].append (str (resolved_function_name ))
108+ #backward compatibility
109+ return {api : "" .join (names ) for api , names in self .function_names .items ()}
104110
105111 def translate ( # noqa: PLR0912, PLR0915
106112 self ,
@@ -127,7 +133,9 @@ def translate( # noqa: PLR0912, PLR0915
127133 self .feature_toggle = feature_toggle or FeatureToggle (
128134 FeatureToggleDefaultConfigProvider (), stage = None , account_id = None , region = None
129135 )
130- self .function_names : Dict [Any , Any ] = {}
136+ # OLD: self.function_names: Dict[Any, Any] = {}
137+ # NEW: Use List[str] for efficient accumulation, convert to str when needed
138+ self .function_names : Dict [str , List [str ]] = {}
131139 self .redeploy_restapi_parameters = {}
132140 sam_parameter_values = SamParameterValues (parameter_values )
133141 sam_parameter_values .add_default_parameter_values (sam_template )
0 commit comments