@@ -368,20 +368,25 @@ def get_matching_class_attribute_name(
368368 return name
369369 else :
370370 class_fields = get_class_fields (cls )
371-
372- # a search with the exact value
373- for name , cf in class_fields .items ():
374- if snake_case (name ) == snake_case (attribute_name ) or (
375- "name" in cf .metadata and cf .metadata ["name" ] == attribute_name
376- ):
377- return name
378-
379- # search regex after to avoid shadowing perfect match
380- pattern = re .compile (attribute_name , flags = re_flags )
381- for name , cf in class_fields .items ():
382- # logging.error(f"\t->{name} : {attribute_name} {pattern.match(name)} {('name' in cf.metadata and pattern.match(cf.metadata['name']))}")
383- if pattern .match (name ) or ("name" in cf .metadata and pattern .match (cf .metadata ["name" ])):
384- return name
371+ try :
372+ # a search with the exact value
373+ for name , cf in class_fields .items ():
374+ if snake_case (name ) == snake_case (attribute_name ) or (
375+ hasattr (cf , "metadata" ) and "name" in cf .metadata and cf .metadata ["name" ] == attribute_name
376+ ):
377+ return name
378+
379+ # search regex after to avoid shadowing perfect match
380+ pattern = re .compile (attribute_name , flags = re_flags )
381+ for name , cf in class_fields .items ():
382+ # logging.error(f"\t->{name} : {attribute_name} {pattern.match(name)} {('name' in cf.metadata and pattern.match(cf.metadata['name']))}")
383+ if pattern .match (name ) or (
384+ hasattr (cf , "metadata" ) and "name" in cf .metadata and pattern .match (cf .metadata ["name" ])
385+ ):
386+ return name
387+ except Exception as e :
388+ logging .error (f"Failed to get attribute { attribute_name } from class { cls } " )
389+ logging .error (e )
385390
386391 return None
387392
0 commit comments