2121import inspect
2222import os
2323from dataclasses import dataclass
24- from typing import Any , List , Optional , get_type_hints
24+ from typing import Any , Callable , List , Optional , get_type_hints
2525
2626from robot .api .deco import keyword # noqa F401
2727from robot .errors import DataError
2828from robot .utils import Importer # noqa F401
2929
30- __version__ = "4.1.1 "
30+ __version__ = "4.1.2 "
3131
3232
3333class PythonLibCoreException (Exception ):
@@ -196,20 +196,18 @@ def unwrap(cls, function):
196196 def _get_arguments (cls , function ):
197197 unwrap_function = cls .unwrap (function )
198198 arg_spec = cls ._get_arg_spec (unwrap_function )
199- argument_specification = cls ._get_default_and_named_args (arg_spec , function )
200- argument_specification .extend (cls ._get_var_args (arg_spec ))
201- kw_only_args = cls ._get_kw_only (arg_spec )
202- if kw_only_args :
203- argument_specification .extend (kw_only_args )
199+ argument_specification = cls ._get_args (arg_spec , function )
200+ argument_specification .extend (cls ._get_varargs (arg_spec ))
201+ argument_specification .extend (cls ._get_named_only_args (arg_spec ))
204202 argument_specification .extend (cls ._get_kwargs (arg_spec ))
205203 return argument_specification
206204
207205 @classmethod
208- def _get_arg_spec (cls , function ):
206+ def _get_arg_spec (cls , function : Callable ):
209207 return inspect .getfullargspec (function )
210208
211209 @classmethod
212- def _get_default_and_named_args (cls , arg_spec , function ):
210+ def _get_args (cls , arg_spec : inspect . FullArgSpec , function : Callable ):
213211 args = cls ._drop_self_from_args (function , arg_spec )
214212 args .reverse ()
215213 defaults = list (arg_spec .defaults ) if arg_spec .defaults else []
@@ -223,33 +221,30 @@ def _get_default_and_named_args(cls, arg_spec, function):
223221 return formated_args
224222
225223 @classmethod
226- def _drop_self_from_args (cls , function , arg_spec ):
224+ def _drop_self_from_args (cls , function : Callable , arg_spec : inspect . FullArgSpec ):
227225 return arg_spec .args [1 :] if inspect .ismethod (function ) else arg_spec .args
228226
229227 @classmethod
230- def _get_var_args (cls , arg_spec ):
231- if arg_spec .varargs :
232- return [f"*{ arg_spec .varargs } " ]
233- return []
228+ def _get_varargs (cls , arg_spec : inspect .FullArgSpec ) -> list :
229+ return [f"*{ arg_spec .varargs } " ] if arg_spec .varargs else []
234230
235231 @classmethod
236- def _get_kwargs (cls , arg_spec ) :
232+ def _get_kwargs (cls , arg_spec : inspect . FullArgSpec ) -> list :
237233 return [f"**{ arg_spec .varkw } " ] if arg_spec .varkw else []
238234
239235 @classmethod
240- def _get_kw_only (cls , arg_spec ):
241- kw_only_args = []
236+ def _get_named_only_args (cls , arg_spec : inspect .FullArgSpec ) -> list :
237+ rf_spec = []
238+ kw_only_args = arg_spec .kwonlyargs if arg_spec .kwonlyargs else []
239+ if not arg_spec .varargs and kw_only_args :
240+ rf_spec .append ("*" )
242241 kw_only_defaults = arg_spec .kwonlydefaults if arg_spec .kwonlydefaults else []
243- for arg in arg_spec .kwonlyargs :
244- if not arg_spec .varargs and arg not in kw_only_defaults and not kw_only_args :
245- kw_only_args .append ("*" )
246- kw_only_args .append (arg )
247- elif arg not in kw_only_defaults :
248- kw_only_args .append (arg )
242+ for kw_only_arg in kw_only_args :
243+ if kw_only_arg in kw_only_defaults :
244+ rf_spec .append ((kw_only_arg , kw_only_defaults [kw_only_arg ]))
249245 else :
250- value = arg_spec .kwonlydefaults .get (arg , "" )
251- kw_only_args .append ((arg , value ))
252- return kw_only_args
246+ rf_spec .append (kw_only_arg )
247+ return rf_spec
253248
254249 @classmethod
255250 def _get_types (cls , function ):
0 commit comments