@@ -2122,6 +2122,7 @@ def foo():
21222122
21232123 def test_signature_str_positional_only (self ):
21242124 P = inspect .Parameter
2125+ S = inspect .Signature
21252126
21262127 def test (a_po , * , b , ** kwargs ):
21272128 return a_po , kwargs
@@ -2132,14 +2133,20 @@ def test(a_po, *, b, **kwargs):
21322133 test .__signature__ = sig .replace (parameters = new_params )
21332134
21342135 self .assertEqual (str (inspect .signature (test )),
2135- '(< a_po> , *, b, **kwargs)' )
2136+ '(a_po, / , *, b, **kwargs)' )
21362137
2137- sig = inspect .signature (test )
2138- new_params = list (sig .parameters .values ())
2139- new_params [0 ] = new_params [0 ].replace (name = None )
2140- test .__signature__ = sig .replace (parameters = new_params )
2141- self .assertEqual (str (inspect .signature (test )),
2142- '(<0>, *, b, **kwargs)' )
2138+ self .assertEqual (str (S (parameters = [P ('foo' , P .POSITIONAL_ONLY )])),
2139+ '(foo, /)' )
2140+
2141+ self .assertEqual (str (S (parameters = [
2142+ P ('foo' , P .POSITIONAL_ONLY ),
2143+ P ('bar' , P .VAR_KEYWORD )])),
2144+ '(foo, /, **bar)' )
2145+
2146+ self .assertEqual (str (S (parameters = [
2147+ P ('foo' , P .POSITIONAL_ONLY ),
2148+ P ('bar' , P .VAR_POSITIONAL )])),
2149+ '(foo, /, *bar)' )
21432150
21442151 def test_signature_replace_anno (self ):
21452152 def test () -> 42 :
@@ -2178,10 +2185,13 @@ def test_signature_parameter_object(self):
21782185 with self .assertRaisesRegex (ValueError , 'not a valid parameter name' ):
21792186 inspect .Parameter ('1' , kind = inspect .Parameter .VAR_KEYWORD )
21802187
2181- with self .assertRaisesRegex (ValueError ,
2182- 'non-positional-only parameter' ):
2188+ with self .assertRaisesRegex (TypeError , 'name must be a str' ):
21832189 inspect .Parameter (None , kind = inspect .Parameter .VAR_KEYWORD )
21842190
2191+ with self .assertRaisesRegex (ValueError ,
2192+ 'is not a valid parameter name' ):
2193+ inspect .Parameter ('$' , kind = inspect .Parameter .VAR_KEYWORD )
2194+
21852195 with self .assertRaisesRegex (ValueError , 'cannot have default values' ):
21862196 inspect .Parameter ('a' , default = 42 ,
21872197 kind = inspect .Parameter .VAR_KEYWORD )
@@ -2230,7 +2240,8 @@ def test_signature_parameter_replace(self):
22302240 self .assertEqual (p2 .name , 'bar' )
22312241 self .assertNotEqual (p2 , p )
22322242
2233- with self .assertRaisesRegex (ValueError , 'not a valid parameter name' ):
2243+ with self .assertRaisesRegex (ValueError ,
2244+ 'name is a required attribute' ):
22342245 p2 = p2 .replace (name = p2 .empty )
22352246
22362247 p2 = p2 .replace (name = 'foo' , default = None )
@@ -2252,14 +2263,11 @@ def test_signature_parameter_replace(self):
22522263 self .assertEqual (p2 , p )
22532264
22542265 def test_signature_parameter_positional_only (self ):
2255- p = inspect .Parameter (None , kind = inspect .Parameter .POSITIONAL_ONLY )
2256- self .assertEqual (str (p ), '<>' )
2257-
2258- p = p .replace (name = '1' )
2259- self .assertEqual (str (p ), '<1>' )
2266+ with self .assertRaisesRegex (TypeError , 'name must be a str' ):
2267+ inspect .Parameter (None , kind = inspect .Parameter .POSITIONAL_ONLY )
22602268
22612269 def test_signature_parameter_immutability (self ):
2262- p = inspect .Parameter (None , kind = inspect .Parameter .POSITIONAL_ONLY )
2270+ p = inspect .Parameter ('spam' , kind = inspect .Parameter .KEYWORD_ONLY )
22632271
22642272 with self .assertRaises (AttributeError ):
22652273 p .foo = 'bar'
0 commit comments