
    <eG                         d Z ddlZddlZddlZddlmZ d Zd ZddZ G d	 d
ej	                  Z
edk    r ej                     dS dS )zHUnit tests for the positional only argument syntax specified in PEP 570.    Ncheck_syntax_errorc                
    | |fS N abs     4/usr/lib/python3.11/test/test_positional_only_arg.pyglobal_pos_only_fr   
       a4K    c                
    | |fS r   r   r   s     r   global_pos_only_and_normalr      r   r         c                
    | |fS r   r   r   s     r   global_pos_only_defaultsr      r   r   c                       e Zd Zd dZd Zd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )!PositionalOnlyTestCaseinvalid syntaxc                     |                      t          |          5  t          |dz   dd           d d d            d S # 1 swxY w Y   d S )N
<test>single)assertRaisesRegexSyntaxErrorcompile)selfcodestrregexs      r   assertRaisesSyntaxErrorz.PositionalOnlyTestCase.assertRaisesSyntaxError   s    ##K77 	8 	8GdNHh777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s   >AAc                 r   t          | dd           t          | dd           t          | dd           t          | dd           t          | d           t          | d           t          | d           t          | d	           t          | d
           t          | d           t          | d           t          | d           t          | dd           t          | dd           t          | d           t          | d           t          | d           t          | d           t          | d           d S )Nzdef f(a, b = 5, /, c): pass-non-default argument follows default argumentzdef f(a = 5, b, /, c): passz%def f(a = 5, b=1, /, c, *, d=2): passzdef f(a = 5, b, /): passzdef f(*args, /): passzdef f(*args, a, /): passzdef f(**kwargs, /): passzdef f(/, a = 1): passzdef f(/, a): passzdef f(/): passzdef f(*, a, /): passzdef f(*, /, a): passzdef f(a, /, a): pass-duplicate argument 'a' in function definitionzdef f(a, /, *, a): passzdef f(a, b/2, c): passzdef f(a, /, c, /): passzdef f(a, /, c, /, d): passz def f(a, /, c, /, d, *, e): passzdef f(a, *, c, /, d, e): passr   r   s    r   test_invalid_syntax_errorsz1PositionalOnlyTestCase.test_invalid_syntax_errors   s]   4!>@oppp4!>@oppp4!HJyzzz4!;=lmmm4!89994!;<<<4!;<<<4!89994!45554!12224!78884!78884!79hiii4!:<klll4!9:::4!:;;;4!=>>>4!CDDD4!@AAAAAr   c                 r   t          | dd           t          | dd           t          | dd           t          | dd           t          | d           t          | d           t          | d           t          | d	           t          | d
           t          | d           t          | d           t          | d           t          | dd           t          | dd           t          | d           t          | d           t          | d           t          | d           t          | d           d S )Nz!async def f(a, b = 5, /, c): passr$   z!async def f(a = 5, b, /, c): passz(async def f(a = 5, b=1, /, c, d=2): passzasync def f(a = 5, b, /): passzasync def f(*args, /): passzasync def f(*args, a, /): passzasync def f(**kwargs, /): passzasync def f(/, a = 1): passzasync def f(/, a): passzasync def f(/): passzasync def f(*, a, /): passzasync def f(*, /, a): passzasync def f(a, /, a): passr%   zasync def f(a, /, *, a): passzasync def f(a, b/2, c): passzasync def f(a, /, c, /): passz async def f(a, /, c, /, d): passz&async def f(a, /, c, /, d, *, e): passz#async def f(a, *, c, /, d, e): passr   r&   s    r    test_invalid_syntax_errors_asyncz7PositionalOnlyTestCase.test_invalid_syntax_errors_async.   s]   4!DFuvvv4!DFuvvv4!KM|}}}4!ACrsss4!>???4!ABBB4!ABBB4!>???4!:;;;4!78884!=>>>4!=>>>4!=?nooo4!@Bqrrr4!?@@@4!@AAA4!CDDD4!IJJJ4!FGGGGGr   c                 *   dd}|                       |ddd          d           |                       |ddd          d           |                     t          d	          5   |ddd
           d d d            n# 1 swxY w Y   |                       |dd          d           |                     t          d	          5   |dd           d d d            n# 1 swxY w Y   |                       |dd          d           dd}|                       |ddd          d           |                       |ddd          d           |                     t          d	          5   |ddd
           d d d            n# 1 swxY w Y   |                       |dd          d           |                     t          d	          5   |dd           d d d            n# 1 swxY w Y   |                       |dd          d           d S )N
   d   c                    | |z   |z   S r   r   r	   r
   cs      r   fzDPositionalOnlyTestCase.test_optional_positional_only_args.<locals>.fD       q519r   r   r         r/   If\(\) got some positional-only arguments passed as keyword arguments: 'b'r
   r/   g   r
      c                    | |z   |z   S r   r   r.   s      r   r0   zDPositionalOnlyTestCase.test_optional_positional_only_args.<locals>.fQ   r1   r   )r+   r,   )r   r+   r,   assertEqualr   	TypeErrorr   r0   s     r   "test_optional_positional_only_argsz9PositionalOnlyTestCase.test_optional_positional_only_argsC   s@   	 	 	 	 	1aQ'''1a1q)))##I/{|| 	 	Aa1NNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	1a#&&&##I/{|| 	 	Aa1IIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	1B'''	 	 	 	 	1aQ'''1a1q)))##I/{|| 	 	Aa1NNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	1a#&&&##I/{|| 	 	Aa1IIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	1B'''''sH   #A>>BBCC"%C",FFFG''G+.G+c                     dd                     d t          d          D                       z  }t          |dd           d S )Ndef f(%s, /):
  pass
, c              3       K   | ]	}d |z  V  
dS zi%dNr   .0is     r   	<genexpr>zNPositionalOnlyTestCase.test_syntax_for_many_positional_only.<locals>.<genexpr>`   &      6U6UQuqy6U6U6U6U6U6Ur   ,  r   r   joinranger   r   fundefs     r   $test_syntax_for_many_positional_onlyz;PositionalOnlyTestCase.test_syntax_for_many_positional_only^   F    *TYY6U6U%PS**6U6U6U-U-UU(+++++r   c                    dddd}|                      d|j        j                   |                      d|j        j                   |                      d|j                   d
ddd	}|                      d|j        j                   |                      d|j        j                   |                      d
|j                   d S )Nr   r   )gc                   d S r   r   r	   r
   r/   der0   rS   s          r   r0   z:PositionalOnlyTestCase.test_pos_only_definition.<locals>.fd       Dr      r2   )r      c                   d S r   r   rU   s          r   r0   z:PositionalOnlyTestCase.test_pos_only_definition.<locals>.fk   rX   r   r   r   r2   )r<   __code__co_argcountco_posonlyargcount__defaults__r>   s     r   test_pos_only_definitionz/PositionalOnlyTestCase.test_pos_only_definitionc   s    	! 	 	 	 	 	 	AJ2333AJ9:::q~...	a 	 	 	 	 	 	AJ2333AJ9:::AN33333r   c                 B    d }|                       |ddg d           d S )Nc                    | |z   S r   r   r   s     r   r0   zBPositionalOnlyTestCase.test_pos_only_call_via_unpacking.<locals>.fs   s    q5Lr   r   r   r2   r<   r>   s     r    test_pos_only_call_via_unpackingz7PositionalOnlyTestCase.test_pos_only_call_via_unpackingr   s9    	 	 	 	QFQ'''''r   c                    d }d}|                      t          |          5   |d           d d d            n# 1 swxY w Y   d }d}|                      t          |          5   |dd           d d d            n# 1 swxY w Y   d }d	}|                      t          |          5   |dd           d d d            d S # 1 swxY w Y   d S )
Nc                    d S r   r   r	   s    r   r0   z@PositionalOnlyTestCase.test_use_positional_as_keyword.<locals>.fy   rX   r   If\(\) got some positional-only arguments passed as keyword arguments: 'a'r   rh   c                    d S r   r   r   s     r   r0   z@PositionalOnlyTestCase.test_use_positional_as_keyword.<locals>.f   rX   r   r   r   c                    d S r   r   r   s     r   r0   z@PositionalOnlyTestCase.test_use_positional_as_keyword.<locals>.f   rX   r   zLf\(\) got some positional-only arguments passed as keyword arguments: 'a, b'r   r=   )r   r0   expecteds      r   test_use_positional_as_keywordz5PositionalOnlyTestCase.test_use_positional_as_keywordx   s   	 	 	_##Ix88 	 	AFFFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 		 	 	_##Ix88 	 	AQKKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 		 	 	b##Ix88 	 	AQKKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s1   :>>%A??BB*CC	C	c                    d }|                      t          d          5   |dd           d d d            n# 1 swxY w Y   |                      t          d          5   |d           d d d            n# 1 swxY w Y   |                      t          d          5   |             d d d            n# 1 swxY w Y   |                      t          d          5   |dddd	           d d d            d S # 1 swxY w Y   d S )
Nc                    d S r   r   r.   s      r   r0   zLPositionalOnlyTestCase.test_positional_only_and_arg_invalid_calls.<locals>.f   rX   r   1f\(\) missing 1 required positional argument: 'c'r   r   :f\(\) missing 2 required positional arguments: 'b' and 'c'z@f\(\) missing 3 required positional arguments: 'a', 'b', and 'c'z3f\(\) takes 3 positional arguments but 4 were givenr2   rZ   rl   r>   s     r   *test_positional_only_and_arg_invalid_callszAPositionalOnlyTestCase.test_positional_only_and_arg_invalid_calls   s
   	 	 	##I/cdd 	 	AaGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	##I/lmm 	 	AaDDD	 	 	 	 	 	 	 	 	 	 	 	 	 	 	##I/rss 	 	ACCC	 	 	 	 	 	 	 	 	 	 	 	 	 	 	##I/eff 	 	AaAqMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sB   8<<A66A:=A:B33B7:B7C55C9<C9c                    d	d} |dd           |                      t          d          5   |d           d d d            n# 1 swxY w Y   |                      t          d          5   |             d d d            n# 1 swxY w Y   |                      t          d          5   |dddd           d d d            d S # 1 swxY w Y   d S )
Nr2   c                    d S r   r   r.   s      r   r0   zUPositionalOnlyTestCase.test_positional_only_and_optional_arg_invalid_calls.<locals>.f   rX   r   r   r   1f\(\) missing 1 required positional argument: 'b':f\(\) missing 2 required positional arguments: 'a' and 'b'z=f\(\) takes from 2 to 3 positional arguments but 4 were givenrZ   )r2   rl   r>   s     r   3test_positional_only_and_optional_arg_invalid_callszJPositionalOnlyTestCase.test_positional_only_and_optional_arg_invalid_calls   s   	 	 	 		!Q##I/cdd 	 	AaDDD	 	 	 	 	 	 	 	 	 	 	 	 	 	 	##I/lmm 	 	ACCC	 	 	 	 	 	 	 	 	 	 	 	 	 	 	##I/opp 	 	AaAqMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s5   AAA*BBB'CC
Cc                    d } |ddddd           |                      t          d          5   |dddd           d d d            n# 1 swxY w Y   |                      t          d          5   |ddd           d d d            n# 1 swxY w Y   |                      t          d	          5   |dd           d d d            n# 1 swxY w Y   |                      t          d
          5   |d           d d d            n# 1 swxY w Y   |                      t          d          5   |             d d d            n# 1 swxY w Y   |                      t          d          5   |dddddddd           d d d            n# 1 swxY w Y   |                      t          d          5   |dddddd           d d d            d S # 1 swxY w Y   d S )Nc                   d S r   r   )r	   r
   r/   rV   rW   s        r   r0   zSPositionalOnlyTestCase.test_positional_only_and_kwonlyargs_invalid_calls.<locals>.f   rX   r   r   r   r2   )rV   rW   z-missing 1 required keyword-only argument: 'd')rW   z6missing 2 required keyword-only arguments: 'd' and 'e'rq   rr   z; missing 3 required positional arguments: 'a', 'b', and 'c'zif\(\) takes 3 positional arguments but 6 positional arguments \(and 2 keyword-only arguments\) were givenrZ   rY   r3         z,f\(\) got an unexpected keyword argument 'f'8   )rV   rW   r0   rl   r>   s     r   1test_positional_only_and_kwonlyargs_invalid_callszHPositionalOnlyTestCase.test_positional_only_and_kwonlyargs_invalid_calls   s   	 	 		!QQ!##I/_`` 	 	AaAOOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	##I/hii 	 	AaAJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	##I/cdd 	 	AaGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	##I/lmm 	 	AaDDD	 	 	 	 	 	 	 	 	 	 	 	 	 	 	##I/mnn 	 	ACCC	 	 	 	 	 	 	 	 	 	 	 	 	 	 	##I 0^ _ _ 	* 	*AaAq!Q!q))))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* ##I/^__ 	' 	'AaAa2&&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's}   AAA1BBB1C

CC0DDD.EE	E	+FFF1GGGc                    d } |dd           |                      t          d          5   |d           d d d            n# 1 swxY w Y   |                      t          d          5   |             d d d            n# 1 swxY w Y   |                      t          d          5   |ddd           d d d            d S # 1 swxY w Y   d S )Nc                    d S r   r   r   s     r   r0   zDPositionalOnlyTestCase.test_positional_only_invalid_calls.<locals>.f   rX   r   r   r   rv   rw   z3f\(\) takes 2 positional arguments but 3 were givenr2   rl   r>   s     r   "test_positional_only_invalid_callsz9PositionalOnlyTestCase.test_positional_only_invalid_calls   s   	 	 		!Q##I/cdd 	 	AaDDD	 	 	 	 	 	 	 	 	 	 	 	 	 	 	##I/lmm 	 	ACCC	 	 	 	 	 	 	 	 	 	 	 	 	 	 	##I/eff 	 	AaAJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s5   AA
A)B  BB&CCCc                     dd} |d           |                      t          d          5   |             d d d            n# 1 swxY w Y   |                      t          d          5   |ddd           d d d            d S # 1 swxY w Y   d S )Nr   c                    d S r   r   r   s     r   r0   zRPositionalOnlyTestCase.test_positional_only_with_optional_invalid_calls.<locals>.f   rX   r   r   z1f\(\) missing 1 required positional argument: 'a'z=f\(\) takes from 1 to 2 positional arguments but 3 were givenr2   r   rl   r>   s     r   0test_positional_only_with_optional_invalid_callszGPositionalOnlyTestCase.test_positional_only_with_optional_invalid_calls   s(   	 	 	 		!##I/cdd 	 	ACCC	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ##I/opp 	 	AaAJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s#   AA	A(BB
Bc                     d } |ddd           |                      t                    5   |ddd           d d d            d S # 1 swxY w Y   d S )Nc                   d S r   r   r.   s      r   r0   z=PositionalOnlyTestCase.test_no_standard_args_usage.<locals>.f   rX   r   r   r   r2   r4   r6   )assertRaisesr=   r>   s     r   test_no_standard_args_usagez2PositionalOnlyTestCase.test_no_standard_args_usage   s    	 	 	 	
!Q!y)) 	 	Aa1NNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAAc                     dd}|                      d|j                   d|_        |                       |ddd          d           d S )Nr   r2   c                    | |z   |z   S r   r   r.   s      r   r0   z>PositionalOnlyTestCase.test_change_default_pos_only.<locals>.f   r1   r   )r   r2   r\   r   r3   )r<   r`   r>   s     r   test_change_default_pos_onlyz3PositionalOnlyTestCase.test_change_default_pos_only   s_    	 	 	 	 	///"1aQ'''''r   c                 `   d }|                       |dd          d           |                       |dd          d           d	d}|                       |d          d           d }|                       |dd          d           d }|                       |dd          d           d S )
Nc                    | |z   S r   r   r   s     r   <lambda>z5PositionalOnlyTestCase.test_lambdas.<locals>.<lambda>   
    AE r   r   r   r2   r8   c                    | |z   S r   r   r   s     r   r   z5PositionalOnlyTestCase.test_lambdas.<locals>.<lambda>   
    a!e r   c                    | |z   S r   r   r   s     r   r   z5PositionalOnlyTestCase.test_lambdas.<locals>.<lambda>   r   r   c                    | |z   S r   r   r   s     r   r   z5PositionalOnlyTestCase.test_lambdas.<locals>.<lambda>   r   r   r   rd   )r   xs     r   test_lambdasz#PositionalOnlyTestCase.test_lambdas   s    !!1Q###1q1%%%###1q!!!!!1a!$$$##1a!$$$$$r   c                 0   t          | dd           t          | dd           t          | dd           t          | d           t          | d           t          | d           t          | d           t          | d	           t          | d
           t          | d           t          | d           t          | dd           t          | dd           t          | d           t          | d           t          | d           t          | d           d S )Nzlambda a, b = 5, /, c: Noner$   zlambda a = 5, b, /, c: Nonezlambda a = 5, b, /: Nonezlambda *args, /: Nonezlambda *args, a, /: Nonezlambda **kwargs, /: Nonezlambda /, a = 1: Nonezlambda /, a: Nonezlambda /: Nonezlambda *, a, /: Nonezlambda *, /, a: Nonezlambda a, /, a: Noner%   zlambda a, /, *, a: Nonezlambda a, /, b, /: Nonezlambda a, /, b, /, c: Nonez lambda a, /, b, /, c, *, d: Nonezlambda a, *, b, /, c: Noner   r&   s    r   test_invalid_syntax_lambdaz1PositionalOnlyTestCase.test_invalid_syntax_lambda   s8   4!>@oppp4!>@oppp4!;=lmmm4!89994!;<<<4!;<<<4!89994!45554!12224!78884!78884!79hiii4!:<klll4!:;;;4!=>>>4!CDDD4!=>>>>>r   c                     G d d          }|                       |                                dd          d           |                      |                     |            dd          d           |                     t          |j        dd           d}|                     t          |          5   |                                dd           d d d            d S # 1 swxY w Y   d S )Nc                       e Zd Zd ZdS )<PositionalOnlyTestCase.test_posonly_methods.<locals>.Examplec                
    ||fS r   r   )r   r	   r
   s      r   r0   z>PositionalOnlyTestCase.test_posonly_methods.<locals>.Example.f   s    !tr   N)__name__
__module____qualname__r0   r   r   r   Exampler      s#            r   r   r   r   r   r   r5   r8   )r<   r0   r   r=   r   )r   r   rm   s      r   test_posonly_methodsz+PositionalOnlyTestCase.test_posonly_methods   s9   	 	 	 	 	 	 	 	 	Q**F3337799a33V<<<)WY1555_##Ix88 	  	 GIIKKQK	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s   2 CC#&C#c                     |                      t          d          5  t                       d d d            d S # 1 swxY w Y   d S )Nrw   )r   r=   r   r&   s    r   test_module_functionz+PositionalOnlyTestCase.test_module_function  s    ##I/lmm 	  	 	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s   8<<c                 ^   d }|                        |dd          dd          d           |                     t          d          5    |dd          d           d d d            n# 1 swxY w Y   |                     t          d          5    |dd          ddd	           d d d            n# 1 swxY w Y   d
 }|                        |dd          dd          d           d }|                        |dd          dd          d           |                     t          d          5    |dd          d           d d d            n# 1 swxY w Y   |                     t          d          5    |dd          ddd	           d d d            d S # 1 swxY w Y   d S )Nc                       fd}|S )Nc                    z   | z   |z   S r   r   x2y2r   ys     r   rS   z:PositionalOnlyTestCase.test_closures.<locals>.f.<locals>.g      1urzB&r   r   r   r   rS   s   `` r   r0   z/PositionalOnlyTestCase.test_closures.<locals>.f  '    ' ' ' ' ' 'Hr   r   r   r2   rZ   r+   z2g\(\) missing 1 required positional argument: 'y2'z3g\(\) takes 2 positional arguments but 3 were givenrY   c                      fd}|S )Nc                     z   | z   |z   S r   r   r   s     r   rS   z:PositionalOnlyTestCase.test_closures.<locals>.f.<locals>.g  r   r   r   r   s   `` r   r0   z/PositionalOnlyTestCase.test_closures.<locals>.f  r   r   c                      fd}|S )Nc                    z   | z   |z   S r   r   r   s     r   rS   z:PositionalOnlyTestCase.test_closures.<locals>.f.<locals>.g!  r   r   r   r   s   `` r   r0   z/PositionalOnlyTestCase.test_closures.<locals>.f   r   r   r;   r>   s     r   test_closuresz$PositionalOnlyTestCase.test_closures  s   	 	 	
 	1Q!b)))##I/dee 	 	AAaFF1III	 	 	 	 	 	 	 	 	 	 	 	 	 	 	##I/eff 	 	AAaFF1QqMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 		 	 	
 	1Q!b)))	 	 	
 	1Q!b)))##I/dee 	 	AAaFF1III	 	 	 	 	 	 	 	 	 	 	 	 	 	 	##I/eff 	 	AAaFF1QqMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sH   	A++A/2A/B55B9<B95EEE=F""F&)F&c                 ,    d } G d d          }d }d S )Nc                      dt           fd} | S )Nr   c                    d S r   r   r   s    r   r0   zZPositionalOnlyTestCase.test_annotations_in_closures.<locals>.inner_has_pos_only.<locals>.f.        r   intr0   s    r   inner_has_pos_onlyzOPositionalOnlyTestCase.test_annotations_in_closures.<locals>.inner_has_pos_only-  s    !S!!!!Hr   c                       e Zd Zd ZdS )FPositionalOnlyTestCase.test_annotations_in_closures.<locals>.Somethingc                     dt           fd}|S )Nr   c                    d S r   r   r   s    r   r0   zXPositionalOnlyTestCase.test_annotations_in_closures.<locals>.Something.method.<locals>.f5  r   r   r   r>   s     r   methodzMPositionalOnlyTestCase.test_annotations_in_closures.<locals>.Something.method4      %%%%%r   Nr   r   r   r   r   r   r   	Somethingr   3  s#            r   r   c                      d }  |             S )Nc                      dt           fd} | S )Nr   c                    d S r   r   r   s    r   r0   zsPositionalOnlyTestCase.test_annotations_in_closures.<locals>.multiple_levels.<locals>.inner_has_pos_only.<locals>.f<  r   r   r   r   s    r   r   zhPositionalOnlyTestCase.test_annotations_in_closures.<locals>.multiple_levels.<locals>.inner_has_pos_only;  r   r   r   )r   s    r   multiple_levelszLPositionalOnlyTestCase.test_annotations_in_closures.<locals>.multiple_levels:  s"       &%'''r   r   )r   r   r   r   s       r   test_annotations_in_closuresz3PositionalOnlyTestCase.test_annotations_in_closures+  sR    	 	 		 	 	 	 	 	 	 		( 	( 	( 	( 	(r   c                    d }|                       |dd          dddif           |                     t          d          5   |d           d d d            n# 1 swxY w Y   |                       |d          di f           d S )Nc                
    | |fS r   r   )	somethingkwargss     r   r0   zMPositionalOnlyTestCase.test_same_keyword_as_positional_with_kwargs.<locals>.fC  s    v&&r   *   )r   r   z9f\(\) missing 1 required positional argument: 'something'r;   r>   s     r   +test_same_keyword_as_positional_with_kwargszBPositionalOnlyTestCase.test_same_keyword_as_positional_with_kwargsB  s    	' 	' 	' 	2,,,rK3D.EFFF##I/kll 	 	AOOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	2R)))))s   AA!$A!c                 @    G d d          }|                       |                                            d           |                       |                                            d           |                       |                                            d           d S )Nc                   ,    e Zd Zd	dZd
dZd
dddZdS )/PositionalOnlyTestCase.test_mangling.<locals>.Xr   c                    |S r   r   )r   _X__as     r   r0   z1PositionalOnlyTestCase.test_mangling.<locals>.X.fO  s    
r   +   c                
    ||fS r   r   )r   r   _X__bs      r   f2z2PositionalOnlyTestCase.test_mangling.<locals>.X.f2R  s    Sz!r   ,   )_X__cc                   |||fS r   r   )r   r   r   r   s       r   f3z2PositionalOnlyTestCase.test_mangling.<locals>.X.f3U  s    S#&r   N)r   r   r   )r   r   r   r0   r   r   r   r   r   Xr   N  s\           " " " "'2 ' ' ' ' ' ' 'r   r   r   r   )r   r   r   )r<   r0   r   r   )r   r   s     r   test_manglingz$PositionalOnlyTestCase.test_manglingM  s    	' 	' 	' 	' 	' 	' 	' 	' 	"%%%8,,,<00000r   c                     dd                     d t          d          D                       z  }t          |dd           d S )NrA   rB   c              3       K   | ]	}d |z  V  
dS rD   r   rE   s     r   rH   zAPositionalOnlyTestCase.test_too_many_arguments.<locals>.<genexpr>^  rI   r   rJ   r   r   rK   rN   s     r   test_too_many_argumentsz.PositionalOnlyTestCase.test_too_many_arguments\  rQ   r   c                 ^   t          j        t                    }t          j        t                    }t          j        t                    }t          j        |          }t          j        |          }t          j        |          }|                      |dd          d           d}|                     t          |          5   |dd           d d d            n# 1 swxY w Y   |                      |dd          d           d}|                     t          |          5   |dd           d d d            n# 1 swxY w Y   |                      |            d           d}|                     t          |          5   |dd           d d d            d S # 1 swxY w Y   d S )Nr   r   r   z\global_pos_only_f\(\) got some positional-only arguments passed as keyword arguments: 'a, b'r   zbglobal_pos_only_and_normal\(\) got some positional-only arguments passed as keyword arguments: 'a'z`global_pos_only_defaults\(\) got some positional-only arguments passed as keyword arguments: 'a')	pickledumpsr   r   r   loadsr<   r   r=   )r   pickled_posonlypickled_optionalpickled_defaultsunpickled_posonlyunpickled_optionalunpickled_defaultsrm   s           r   test_serializationz)PositionalOnlyTestCase.test_serializationa  sy    ,'899!<(BCC!<(@AA"L99#\*:;;#\*:;;**1Q//777:##Ix88 	' 	'A&&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	++Aa00%8887##Ix88 	( 	(Q''''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	++--u5557##Ix88 	( 	(Q''''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s6   CC#&C#'EEEF""F&)F&c                      dd                      t          d          5   dd           d d d            n# 1 swxY w Y    fd} |dd            |dd            |d            |             d S )	Nr   r   c                   K   | |fS r   r   r   s     r   r0   z,PositionalOnlyTestCase.test_async.<locals>.f~  s      a4Kr   ri   r   c                      	  | i |}|                     d            n# t          $ r}|j        }Y d }~nd }~ww xY w                    |d           d S )Nr   )sendStopIterationvaluer<   )argsr   cororW   resultr0   r   s        r   _check_callz6PositionalOnlyTestCase.test_async.<locals>._check_call  sy    !q$)&))		$  ! ! !!VV,,,,,s   ! 
<7<r8   r   rl   )r   r   r0   s   ` @r   
test_asyncz!PositionalOnlyTestCase.test_async|  s    	 	 	 	 ##I/{|| 	 	AQKKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 		- 	- 	- 	- 	- 	- 	AqAAs   <A A c                    dd}|                      t          d          5   |dd           d d d            n# 1 swxY w Y    |dd          }|                     t          |          d            |dd          }|                     t          |          d            |d          }|                     t          |          d            |            }|                     t          |          d           d S )Nr   r   c             3      K   | |fV  d S r   r   r   s     r   r0   z0PositionalOnlyTestCase.test_generator.<locals>.f  s      Q$JJJJJr   ri   r   r   r8   )r   r=   r<   next)r   r0   gens      r   test_generatorz%PositionalOnlyTestCase.test_generator  sE   	 	 	 	 ##I/{|| 	 	AQKKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 a1ggcF+++aQiiicF+++addcF+++acccF+++++s   :>>c                     t                       G fdd          } G d d|          }|                      |                                                       d S )Nc                       e Zd Z fdZdS ),PositionalOnlyTestCase.test_super.<locals>.Ac                     S r   r   )r   sentinels    r   r   z3PositionalOnlyTestCase.test_super.<locals>.A.method  s    r   Nr   )r  s   r   Ar     s.                     r   r  c                        e Zd Z fdZ xZS ),PositionalOnlyTestCase.test_super.<locals>.Cc                D    t                                                      S r   )superr   )r   	__class__s    r   r   z3PositionalOnlyTestCase.test_super.<locals>.C.method  s    ww~~'''r   )r   r   r   r   __classcell__)r  s   @r   Cr    s8        ( ( ( ( ( ( ( ( (r   r
  )objectr<   r   )r   r  r
  r  s      @r   
test_superz!PositionalOnlyTestCase.test_super  s    88	  	  	  	  	  	  	  	  	  	 	( 	( 	( 	( 	( 	( 	( 	( 	x00000r   c                     d }d t          j        |          D             }|                     d|           |                     d|           d S )Nc                  *    dt           t           ufd} d S )Nr   c                    d S r   r   r   s    r   r0   zKPositionalOnlyTestCase.test_annotations_constant_fold.<locals>.g.<locals>.f  r   r   r   r   s    r   rS   z@PositionalOnlyTestCase.test_annotations_constant_fold.<locals>.g  s    .#*......r   c                 *    g | ]}|j         |j        fS r   )opnameargvalrE   s     r   
<listcomp>zIPositionalOnlyTestCase.test_annotations_constant_fold.<locals>.<listcomp>  s!    GGG!!(AH%GGGr   )	UNARY_NOTN)IS_OPr   )disget_instructionsassertNotInassertIn)r   rS   codess      r   test_annotations_constant_foldz5PositionalOnlyTestCase.test_annotations_constant_fold  sc    	/ 	/ 	/ HGs/CA/F/FGGG,e444lE*****r   N)r   ) r   r   r   r"   r'   r)   r?   rP   ra   re   rn   rs   rx   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r   r   r   r   r      s       8 8 8 8B B B*H H H*( ( (6, , ,
4 4 4( ( (  &
 
 
	 	 	' ' '(	 	 	    ( ( (% % %? ? ?&
  
  
      
  <? ? ?.	* 	* 	*1 1 1, , ,
( ( (6  *, , ,"1 1 1	+ 	+ 	+ 	+ 	+r   r   __main__r   )__doc__r  r   unittesttest.supportr   r   r   r   TestCaser   r   mainr   r   r   <module>r"     s    N N 



   + + + + + +       f+ f+ f+ f+ f+X. f+ f+ f+R zHMOOOOO r   