@@ -18,7 +18,6 @@ def squeeze(x, /, axis):
1818 ...
1919
2020"""
21- from copy import copy
2221from inspect import Parameter , Signature , signature
2322from itertools import chain
2423from types import FunctionType
@@ -47,11 +46,11 @@ def squeeze(x, /, axis):
4746ALL_KINDS = get_args (ParameterKind )
4847VAR_KINDS = (Parameter .VAR_POSITIONAL , Parameter .VAR_KEYWORD )
4948kind_to_str : Dict [ParameterKind , str ] = {
50- Parameter .POSITIONAL_OR_KEYWORD : "normal argument" ,
49+ Parameter .POSITIONAL_OR_KEYWORD : "pos or kw argument" ,
5150 Parameter .POSITIONAL_ONLY : "pos-only argument" ,
5251 Parameter .KEYWORD_ONLY : "keyword-only argument" ,
5352 Parameter .VAR_POSITIONAL : "star-args (i.e. *args) argument" ,
54- Parameter .VAR_KEYWORD : "star-kwonly (i.e. **kwonly ) argument" ,
53+ Parameter .VAR_KEYWORD : "star-kwargs (i.e. **kwargs ) argument" ,
5554}
5655
5756
@@ -100,13 +99,13 @@ def get_dtypes_strategy(func_name: str) -> st.SearchStrategy[DataType]:
10099 return xps .scalar_dtypes ()
101100
102101
103- def make_pretty_func (func_name : str , args : Sequence [Any ], kwonly : Dict [str , Any ]):
102+ def make_pretty_func (func_name : str , args : Sequence [Any ], kwargs : Dict [str , Any ]):
104103 f_sig = f"{ func_name } ("
105104 f_sig += ", " .join (str (a ) for a in args )
106- if len (kwonly ) != 0 :
105+ if len (kwargs ) != 0 :
107106 if len (args ) != 0 :
108107 f_sig += ", "
109- f_sig += ", " .join (f"{ k } ={ v } " for k , v in kwonly .items ())
108+ f_sig += ", " .join (f"{ k } ={ v } " for k , v in kwargs .items ())
110109 f_sig += ")"
111110 return f_sig
112111
@@ -131,17 +130,17 @@ def _test_uninspectable_func(func_name: str, func: Callable, stub_sig: Signature
131130 "pow" ,
132131 "bitwise_left_shift" ,
133132 "bitwise_right_shift" ,
134- "broadcast_to" ,
135- "permute_dims" ,
136133 "sort" ,
137134 * matrixy_funcs ,
138135 ]:
139136 pytest .skip (skip_msg )
140137
141138 param_to_value : Dict [Parameter , Any ] = {}
142139 for param in stub_sig .parameters .values ():
143- if param .kind in VAR_KINDS :
144- pytest .skip (skip_msg )
140+ if param .kind in [Parameter .POSITIONAL_OR_KEYWORD , * VAR_KINDS ]:
141+ pytest .skip (
142+ skip_msg + f" (because '{ param .name } ' is a { kind_to_str [param .kind ]} )"
143+ )
145144 elif param .default != Parameter .empty :
146145 value = param .default
147146 elif param .name in ["x" , "x1" ]:
@@ -153,41 +152,20 @@ def _test_uninspectable_func(func_name: str, func: Callable, stub_sig: Signature
153152 x1 = next (v for p , v in param_to_value .items () if p .name == "x1" )
154153 value = xps .arrays (dtype = x1 .dtype , shape = x1 .shape ).example ()
155154 else :
156- pytest .skip (skip_msg )
155+ pytest .skip (
156+ skip_msg + f" (because no default was found for argument { param .name } )"
157+ )
157158 param_to_value [param ] = value
158159
159- posonly : List [Any ] = [
160+ args : List [Any ] = [
160161 v for p , v in param_to_value .items () if p .kind == Parameter .POSITIONAL_ONLY
161162 ]
162- kwonly : Dict [str , Any ] = {
163+ kwargs : Dict [str , Any ] = {
163164 p .name : v for p , v in param_to_value .items () if p .kind == Parameter .KEYWORD_ONLY
164165 }
165- if (
166- sum (p .kind == Parameter .POSITIONAL_OR_KEYWORD for p in param_to_value .keys ())
167- == 0
168- ):
169- f_func = make_pretty_func (func_name , posonly , kwonly )
170- print (f"trying { f_func } " )
171- func (* posonly , ** kwonly )
172- else :
173- either_argname_value_pairs = list (
174- (p .name , v )
175- for p , v in param_to_value .items ()
176- if p .kind == Parameter .POSITIONAL_OR_KEYWORD
177- )
178- n_either_args = len (either_argname_value_pairs )
179- for n_extra_args in reversed (range (n_either_args + 1 )):
180- extra_posargs = [v for _ , v in either_argname_value_pairs [:n_extra_args ]]
181- if n_extra_args < n_either_args :
182- extra_kwargs = dict (either_argname_value_pairs [n_extra_args :])
183- else :
184- extra_kwargs = {}
185- args = copy (posonly )
186- args += extra_posargs
187- kwargs = {** kwonly , ** extra_kwargs }
188- f_func = make_pretty_func (func_name , args , kwargs )
189- print (f"trying { f_func } " )
190- func (* args , ** kwargs )
166+ f_func = make_pretty_func (func_name , args , kwargs )
167+ print (f"trying { f_func } " )
168+ func (* args , ** kwargs )
191169
192170
193171def _test_func_signature (
0 commit comments