21
21
import inspect
22
22
import os
23
23
from dataclasses import dataclass
24
- from typing import Any , List , Optional , get_type_hints
24
+ from typing import Any , Callable , List , Optional , get_type_hints
25
25
26
26
from robot .api .deco import keyword # noqa F401
27
27
from robot .errors import DataError
28
28
from robot .utils import Importer # noqa F401
29
29
30
- __version__ = "4.1.1 "
30
+ __version__ = "4.1.2 "
31
31
32
32
33
33
class PythonLibCoreException (Exception ):
@@ -196,20 +196,18 @@ def unwrap(cls, function):
196
196
def _get_arguments (cls , function ):
197
197
unwrap_function = cls .unwrap (function )
198
198
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 ))
204
202
argument_specification .extend (cls ._get_kwargs (arg_spec ))
205
203
return argument_specification
206
204
207
205
@classmethod
208
- def _get_arg_spec (cls , function ):
206
+ def _get_arg_spec (cls , function : Callable ):
209
207
return inspect .getfullargspec (function )
210
208
211
209
@classmethod
212
- def _get_default_and_named_args (cls , arg_spec , function ):
210
+ def _get_args (cls , arg_spec : inspect . FullArgSpec , function : Callable ):
213
211
args = cls ._drop_self_from_args (function , arg_spec )
214
212
args .reverse ()
215
213
defaults = list (arg_spec .defaults ) if arg_spec .defaults else []
@@ -223,33 +221,30 @@ def _get_default_and_named_args(cls, arg_spec, function):
223
221
return formated_args
224
222
225
223
@classmethod
226
- def _drop_self_from_args (cls , function , arg_spec ):
224
+ def _drop_self_from_args (cls , function : Callable , arg_spec : inspect . FullArgSpec ):
227
225
return arg_spec .args [1 :] if inspect .ismethod (function ) else arg_spec .args
228
226
229
227
@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 []
234
230
235
231
@classmethod
236
- def _get_kwargs (cls , arg_spec ) :
232
+ def _get_kwargs (cls , arg_spec : inspect . FullArgSpec ) -> list :
237
233
return [f"**{ arg_spec .varkw } " ] if arg_spec .varkw else []
238
234
239
235
@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 ("*" )
242
241
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 ]))
249
245
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
253
248
254
249
@classmethod
255
250
def _get_types (cls , function ):
0 commit comments