@@ -101,7 +101,7 @@ def get_keyword_arguments(self, name):
101101 kw_method = self .__get_keyword (name )
102102 if kw_method is None :
103103 return None
104- args , defaults , varargs , kwargs = self .__get_arg_spec (kw_method )
104+ args , defaults , varargs , kwargs , kwonlydefaults = self .__get_arg_spec (kw_method )
105105 if robot_version >= '3.2' :
106106 args += self .__new_default_spec (defaults )
107107 else :
@@ -110,6 +110,9 @@ def get_keyword_arguments(self, name):
110110 args .append ('*%s' % varargs )
111111 if kwargs :
112112 args .append ('**%s' % kwargs )
113+ if kwonlydefaults :
114+ for argument , default_value in kwonlydefaults .items ():
115+ args .append ((argument , default_value ))
113116 return args
114117
115118 def __new_default_spec (self , defaults ):
@@ -122,15 +125,17 @@ def __get_arg_spec(self, kw):
122125 if PY2 :
123126 spec = inspect .getargspec (kw )
124127 keywords = spec .keywords
128+ kwonlydefaults = {}
125129 else :
126130 spec = inspect .getfullargspec (kw )
127131 keywords = spec .varkw
132+ kwonlydefaults = spec .kwonlydefaults
128133 args = spec .args [1 :] if inspect .ismethod (kw ) else spec .args # drop self
129134 defaults = spec .defaults or ()
130135 nargs = len (args ) - len (defaults )
131136 mandatory = args [:nargs ]
132137 defaults = zip (args [nargs :], defaults )
133- return mandatory , defaults , spec .varargs , keywords
138+ return mandatory , defaults , spec .varargs , keywords , kwonlydefaults
134139
135140 def get_keyword_tags (self , name ):
136141 self .__get_keyword_tags_supported = True
@@ -181,7 +186,7 @@ def __get_typing_hints(self, method):
181186 return hints
182187
183188 def __join_defaults_with_types (self , method , types ):
184- _ , defaults , _ , _ = self .__get_arg_spec (method )
189+ _ , defaults , _ , _ , _ = self .__get_arg_spec (method )
185190 for name , value in defaults :
186191 if name not in types and isinstance (value , (bool , type (None ))):
187192 types [name ] = type (value )
0 commit comments