@@ -57,35 +57,47 @@ def _translation(translation: Optional[Path] = None):
57
57
return {}
58
58
59
59
60
+ def _translated_keywords (translation_data : dict ) -> list :
61
+ return [item .get ("name" ) for item in translation_data .values () if item .get ("name" )]
62
+
63
+
60
64
class HybridCore :
61
65
def __init__ (self , library_components : List , translation : Optional [Path ] = None ) -> None :
62
66
self .keywords = {}
63
67
self .keywords_spec = {}
64
68
self .attributes = {}
65
69
translation_data = _translation (translation )
66
- self .add_library_components (library_components , translation_data )
67
- self .add_library_components ([self ], translation_data )
70
+ translated_kw_names = _translated_keywords (translation_data )
71
+ self .add_library_components (library_components , translation_data , translated_kw_names )
72
+ self .add_library_components ([self ], translation_data , translated_kw_names )
68
73
self .__set_library_listeners (library_components )
69
74
70
- def add_library_components (self , library_components : List , translation : Optional [dict ] = None ):
75
+ def add_library_components (
76
+ self ,
77
+ library_components : List ,
78
+ translation : Optional [dict ] = None ,
79
+ translated_kw_names : Optional [list ] = None ,
80
+ ):
71
81
translation = translation if translation else {}
82
+ translated_kw_names = translated_kw_names if translated_kw_names else []
72
83
self .keywords_spec ["__init__" ] = KeywordBuilder .build (self .__init__ , translation ) # type: ignore
73
84
self .__replace_intro_doc (translation )
74
85
for component in library_components :
75
86
for name , func in self .__get_members (component ):
76
87
if callable (func ) and hasattr (func , "robot_name" ):
77
88
kw = getattr (component , name )
78
- kw_name = self .__get_keyword_name (func , name , translation )
89
+ kw_name = self .__get_keyword_name (func , name , translation , translated_kw_names )
79
90
self .keywords [kw_name ] = kw
80
91
self .keywords_spec [kw_name ] = KeywordBuilder .build (kw , translation )
81
92
# Expose keywords as attributes both using original
82
93
# method names as well as possible custom names.
83
94
self .attributes [name ] = self .attributes [kw_name ] = kw
84
95
85
- def __get_keyword_name (self , func : Callable , name : str , translation : dict ):
86
- if name in translation : # noqa: SIM102
87
- if new_name := translation [name ].get ("name" ):
88
- return new_name
96
+ def __get_keyword_name (self , func : Callable , name : str , translation : dict , translated_kw_names : list ):
97
+ if name in translated_kw_names :
98
+ return name
99
+ if name in translation and translation [name ].get ("name" ):
100
+ return translation [name ].get ("name" )
89
101
return func .robot_name or name
90
102
91
103
def __replace_intro_doc (self , translation : dict ):
0 commit comments