@@ -236,7 +236,7 @@ def add_body_param_type(
236236 body_parameter ["type" ]["types" ].insert (1 , any_obj_list_or_dict )
237237 code_model ["types" ].append (body_parameter ["type" ])
238238
239- def pad_reserved_words (self , name : str , pad_type : PadType ) :
239+ def pad_reserved_words (self , name : str , pad_type : PadType , yaml_type : dict [ str , Any ]) -> str :
240240 # we want to pad hidden variables as well
241241 if not name :
242242 # we'll pass in empty operation groups sometime etc.
@@ -250,26 +250,32 @@ def pad_reserved_words(self, name: str, pad_type: PadType):
250250 name_prefix = "_" if name [0 ] == "_" else ""
251251 name = name [1 :] if name [0 ] == "_" else name
252252 if name .lower () in reserved_words [pad_type ]:
253+ if self .is_tsp and name .lower () in TSP_RESERVED_WORDS .get (pad_type , []):
254+ # to maintain backcompat for cases where we pad in tsp but not in autorest,
255+ # if we have a tsp reserved word, we also want to keep track of the original name for backcompat
256+ yaml_type ["originalTspName" ] = name_prefix + name
253257 return name_prefix + name + pad_type
254258 return name_prefix + name
255259
256260 def update_types (self , yaml_data : list [dict [str , Any ]]) -> None :
257261 for type in yaml_data :
258262 for property in type .get ("properties" , []):
259263 property ["description" ] = update_description (property .get ("description" , "" ))
260- property ["clientName" ] = self .pad_reserved_words (property ["clientName" ].lower (), PadType .PROPERTY )
264+ property ["clientName" ] = self .pad_reserved_words (
265+ property ["clientName" ].lower (), PadType .PROPERTY , property
266+ )
261267 add_redefined_builtin_info (property ["clientName" ], property )
262268 if type .get ("name" ):
263269 pad_type = PadType .MODEL if type ["type" ] == "model" else PadType .ENUM_CLASS
264- name = self .pad_reserved_words (type ["name" ], pad_type )
270+ name = self .pad_reserved_words (type ["name" ], pad_type , type )
265271 type ["name" ] = name [0 ].upper () + name [1 :]
266272 type["description" ] = update_description (type .get ("description" , "" ), type ["name" ])
267273 type["snakeCaseName" ] = to_snake_case (type ["name" ])
268274 if type .get ("values" ):
269275 # we're enums
270276 values_to_add = []
271277 for value in type ["values" ]:
272- padded_name = self .pad_reserved_words (value ["name" ].lower (), PadType .ENUM_VALUE ).upper ()
278+ padded_name = self .pad_reserved_words (value ["name" ].lower (), PadType .ENUM_VALUE , value ).upper ()
273279 if self .version_tolerant :
274280 if padded_name [0 ] in "0123456789" :
275281 padded_name = "ENUM_" + padded_name
@@ -364,12 +370,14 @@ def get_operation_updater(self, yaml_data: dict[str, Any]) -> Callable[[dict[str
364370 def update_parameter (self , yaml_data : dict [str , Any ]) -> None :
365371 yaml_data ["description" ] = update_description (yaml_data .get ("description" , "" ))
366372 if not (yaml_data ["location" ] == "header" and yaml_data ["clientName" ] in ("content_type" , "accept" )):
367- yaml_data ["clientName" ] = self .pad_reserved_words (yaml_data ["clientName" ].lower (), PadType .PARAMETER )
373+ yaml_data ["clientName" ] = self .pad_reserved_words (
374+ yaml_data ["clientName" ].lower (), PadType .PARAMETER , yaml_data
375+ )
368376 if yaml_data .get ("propertyToParameterName" ):
369377 # need to create a new one with padded keys and values
370378 yaml_data ["propertyToParameterName" ] = {
371- self .pad_reserved_words (prop , PadType .PROPERTY ): self .pad_reserved_words (
372- param_name , PadType .PARAMETER
379+ self .pad_reserved_words (prop , PadType .PROPERTY , yaml_data ): self .pad_reserved_words (
380+ param_name , PadType .PARAMETER , yaml_data
373381 ).lower ()
374382 for prop , param_name in yaml_data ["propertyToParameterName" ].items ()
375383 }
@@ -390,15 +398,17 @@ def update_operation(
390398 * ,
391399 is_overload : bool = False ,
392400 ) -> None :
393- yaml_data ["groupName" ] = self .pad_reserved_words (yaml_data ["groupName" ], PadType .OPERATION_GROUP )
401+ yaml_data ["groupName" ] = self .pad_reserved_words (yaml_data ["groupName" ], PadType .OPERATION_GROUP , yaml_data )
394402 yaml_data ["groupName" ] = to_snake_case (yaml_data ["groupName" ])
395403 yaml_data ["name" ] = yaml_data ["name" ].lower ()
396404 if yaml_data .get ("isLroInitialOperation" ) is True :
397405 yaml_data ["name" ] = (
398- "_" + self .pad_reserved_words (extract_original_name (yaml_data ["name" ]), PadType .METHOD ) + "_initial"
406+ "_"
407+ + self .pad_reserved_words (extract_original_name (yaml_data ["name" ]), PadType .METHOD , yaml_data )
408+ + "_initial"
399409 )
400410 else :
401- yaml_data ["name" ] = self .pad_reserved_words (yaml_data ["name" ], PadType .METHOD )
411+ yaml_data ["name" ] = self .pad_reserved_words (yaml_data ["name" ], PadType .METHOD , yaml_data )
402412 yaml_data ["description" ] = update_description (yaml_data ["description" ], yaml_data ["name" ])
403413 yaml_data ["summary" ] = update_description (yaml_data .get ("summary" , "" ))
404414 body_parameter = yaml_data .get ("bodyParameter" )
@@ -485,7 +495,7 @@ def update_paging_operation(
485495 item_type = item_type or yaml_data ["itemType" ]["elementType" ]
486496 if yaml_data .get ("nextOperation" ):
487497 yaml_data ["nextOperation" ]["groupName" ] = self .pad_reserved_words (
488- yaml_data ["nextOperation" ]["groupName" ], PadType .OPERATION_GROUP
498+ yaml_data ["nextOperation" ]["groupName" ], PadType .OPERATION_GROUP , yaml_data [ "nextOperation" ]
489499 )
490500 yaml_data ["nextOperation" ]["groupName" ] = to_snake_case (yaml_data ["nextOperation" ]["groupName" ])
491501 for response in yaml_data ["nextOperation" ].get ("responses" , []):
@@ -503,10 +513,11 @@ def update_operation_groups(self, code_model: dict[str, Any], client: dict[str,
503513 operation_group ["identifyName" ] = self .pad_reserved_words (
504514 operation_group .get ("name" , operation_group ["propertyName" ]),
505515 PadType .OPERATION_GROUP ,
516+ operation_group ,
506517 )
507518 operation_group ["identifyName" ] = to_snake_case (operation_group ["identifyName" ])
508519 operation_group ["propertyName" ] = self .pad_reserved_words (
509- operation_group ["propertyName" ], PadType .OPERATION_GROUP
520+ operation_group ["propertyName" ], PadType .OPERATION_GROUP , operation_group
510521 )
511522 operation_group ["propertyName" ] = to_snake_case (operation_group ["propertyName" ])
512523 operation_group ["className" ] = update_operation_group_class_name (
0 commit comments