
    dafI                         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                          yy)zHUnit tests for the positional only argument syntax specified in PEP 570.    Ncheck_syntax_errorc                
    | |fS N abs     8/root/Python-3.12.4/Lib/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y) PositionalOnlyTestCasec                 z    | j                  t        |      5  t        |dz   dd       d d d        y # 1 sw Y   y xY w)N
<test>single)assertRaisesRegexSyntaxErrorcompile)selfcodestrregexs      r   assertRaisesSyntaxErrorz.PositionalOnlyTestCase.assertRaisesSyntaxError   s7    ##K7 	8GdNHh7	8 	8 	8s   1:c                    t        | dd       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       y )Nzdef f(a, b = 5, /, c): pass<parameter without a default follows parameter with a defaultz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(a, /, b = 5, c): 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!>@~4!>@~4!H  KI  	J4!;={|4!>@~4!894!;<4!;<4!894!454!124!784!784!79hi4!:<kl4!9:4!:;4!=>4!CD4!@Ar   c                    t        | dd       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       y )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(a, /, b = 5, c): 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!D  GE  	F4!D  GE  	F4!K  NL  	M4!A  DB  	C4!D  GE  	F4!>?4!AB4!AB4!>?4!:;4!784!=>4!=>4!=?no4!@Bqr4!?@4!@A4!CD4!IJ4!FGr   c                 b   dd}| j                   |ddd      d       | j                   |ddd      d       | j                  t        d      5   |ddd       d d d        | j                   |dd      d	       | j                  t        d      5   |dd
       d d d        | j                   |dd      d       dd}| j                   |ddd      d       | j                   |ddd      d       | j                  t        d      5   |ddd       d d d        | j                   |dd      d	       | j                  t        d      5   |dd
       d d d        | j                   |dd      d       y # 1 sw Y   &xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   IxY w)Nc                    | |z   |z   S r   r   r	   r
   cs      r   fzDPositionalOnlyTestCase.test_optional_positional_only_args.<locals>.fF       q519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   r+   zDPositionalOnlyTestCase.test_optional_positional_only_args.<locals>.fS   r,   r   )
   d   )r-   r8   r9   assertEqualr   	TypeErrorr   r+   s     r   "test_optional_positional_only_argsz9PositionalOnlyTestCase.test_optional_positional_only_argsE   s   	 	1aQ'1a1q)##I/{| 	a1N	 	1a#&##I/{| 	a1I	1B'	 	1aQ'1a1q)##I/{| 	a1N	 	1a#&##I/{| 	a1I	1B''	 		 		 		 	s0   F FFF% F
FF"%F.c                 f    ddj                  d t        d      D              z  }t        |dd       y )Ndef f(%s, /):
  pass
, c              3   &   K   | ]	  }d |z    ywzi%dNr   .0is     r   	<genexpr>zNPositionalOnlyTestCase.test_syntax_for_many_positional_only.<locals>.<genexpr>b        6UQuqy6U   ,  r   r   joinranger   r   fundefs     r   $test_syntax_for_many_positional_onlyz;PositionalOnlyTestCase.test_syntax_for_many_positional_only`   ,    *TYY6U%PS*6U-UU(+r   c                    dddd}| j                  d|j                  j                         | j                  d|j                  j                         | j                  d|j                         d	ddd}| j                  d|j                  j                         | j                  d|j                  j                         | j                  d	|j                         y )
Nr.   )gc                    y r   r   r	   r
   r*   der+   rS   s          r   r+   z:PositionalOnlyTestCase.test_pos_only_definition.<locals>.ff       r      r/   )r-      c                    y r   r   rU   s          r   r+   z:PositionalOnlyTestCase.test_pos_only_definition.<locals>.fm   rX   r   r-   r.   r/   )r;   __code__co_argcountco_posonlyargcount__defaults__r=   s     r   test_pos_only_definitionz/PositionalOnlyTestCase.test_pos_only_definitione   s    	! 	 	AJJ223AJJ99:q~~.	a 	 	AJJ223AJJ99:ANN3r   c                 8    d }| j                   |ddg d       y )Nc                    | |z   S r   r   r   s     r   r+   zBPositionalOnlyTestCase.test_pos_only_call_via_unpacking.<locals>.fu   s    q5Lr   r-   r.   r/   r;   r=   s     r    test_pos_only_call_via_unpackingz7PositionalOnlyTestCase.test_pos_only_call_via_unpackingt   s!    	 	QFQ'r   c                 ^   d }d}| j                  t        |      5   |d       d d d        d }d}| j                  t        |      5   |dd       d d d        d }d	}| j                  t        |      5   |dd       d d d        y # 1 sw Y   fxY w# 1 sw Y   DxY w# 1 sw Y   y xY w)
Nc                     y r   r   r	   s    r   r+   z@PositionalOnlyTestCase.test_use_positional_as_keyword.<locals>.f{   rX   r   If\(\) got some positional-only arguments passed as keyword arguments: 'a'r-   rh   c                     y r   r   r   s     r   r+   z@PositionalOnlyTestCase.test_use_positional_as_keyword.<locals>.f   rX   r   r.   r   c                     y r   r   r   s     r   r+   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   r+   expecteds      r   test_use_positional_as_keywordz5PositionalOnlyTestCase.test_use_positional_as_keywordz   s    	_##Ix8 	F		_##Ix8 	QK		b##Ix8 	QK	 		 		 		 	s#   
B	B7B#BB #B,c                    d }| j                  t        d      5   |dd       d d d        | j                  t        d      5   |d       d d d        | j                  t        d      5   |        d d d        | j                  t        d      5   |dddd	       d d d        y # 1 sw Y   xY w# 1 sw Y   fxY w# 1 sw Y   LxY w# 1 sw Y   y xY w)
Nc                     y r   r   r)   s      r   r+   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 givenr/   rZ   rl   r=   s     r   *test_positional_only_and_arg_invalid_callszAPositionalOnlyTestCase.test_positional_only_and_arg_invalid_calls   s    	##I/cd 	aG	##I/lm 	aD	##I/rs 	C	##I/ef 	aAqM	 		 		 		 		 	s/   
B$	B0)B<C$B-0B9<CCc                 T   d	d} |dd       | j                  t        d      5   |d       d d d        | j                  t        d      5   |        d d d        | j                  t        d      5   |dddd       d d d        y # 1 sw Y   ZxY w# 1 sw Y   @xY w# 1 sw Y   y xY w)
Nr/   c                     y r   r   r)   s      r   r+   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   )r/   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 	aD	##I/lm 	C	##I/op 	aAqM	 			 		 		 	s#   	BB1BBBB'c                    d } |ddddd       | j                  t        d      5   |dddd       d d d        | j                  t        d      5   |ddd       d d d        | j                  t        d	      5   |dd       d d d        | j                  t        d
      5   |d       d d d        | j                  t        d      5   |        d d d        | j                  t        d      5   |dddddddd       d d d        | j                  t        d      5   |dddddd       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   txY w# 1 sw Y   y xY w)Nc                    y r   r   )r	   r
   r*   rV   rW   s        r   r+   zSPositionalOnlyTestCase.test_positional_only_and_kwonlyargs_invalid_calls.<locals>.f   rX   r   r-   r.   r/   )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   r0         z,f\(\) got an unexpected keyword argument 'f'8   )rV   rW   r+   rl   r=   s     r   1test_positional_only_and_kwonlyargs_invalid_callszHPositionalOnlyTestCase.test_positional_only_and_kwonlyargs_invalid_calls   s   		!QQ!##I/_` 	aAO	##I/hi 	aAJ	##I/cd 	aG	##I/lm 	aD	##I/mn 	C	##I 0^ _ 	*aAq!Q!q)	* ##I/^_ 	'aAa2&	' 	'	 		 		 		 		 		* 	*	' 	'sS   D7E;
E#	E
E(0E4F 7EEEE%(E14E= F	c                 P   d } |dd       | j                  t        d      5   |d       d d d        | j                  t        d      5   |        d d d        | j                  t        d      5   |ddd       d d d        y # 1 sw Y   YxY w# 1 sw Y   ?xY w# 1 sw Y   y xY w)Nc                     y r   r   r   s     r   r+   zDPositionalOnlyTestCase.test_positional_only_invalid_calls.<locals>.f   rX   r   r-   r.   rv   rw   z3f\(\) takes 2 positional arguments but 3 were givenr/   rl   r=   s     r   "test_positional_only_invalid_callsz9PositionalOnlyTestCase.test_positional_only_invalid_calls   s    		!Q##I/cd 	aD	##I/lm 	C	##I/ef 	aAJ	 			 		 		 	s#   	B
B0BBBB%c                     dd} |d       | j                  t        d      5   |        d d d        | j                  t        d      5   |ddd       d d d        y # 1 sw Y   3xY w# 1 sw Y   y xY w)Nr.   c                     y r   r   r   s     r   r+   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 givenr/   r.   rl   r=   s     r   0test_positional_only_with_optional_invalid_callszGPositionalOnlyTestCase.test_positional_only_with_optional_invalid_calls   sq    		!##I/cd 	C	 ##I/op 	aAJ	 		 		 	s   A	A)A&)A2c                     d } |ddd       | j                  t              5   |ddd       d d d        y # 1 sw Y   y xY w)Nc                    y r   r   r)   s      r   r+   z=PositionalOnlyTestCase.test_no_standard_args_usage.<locals>.f   rX   r   r-   r.   r/   r1   r3   )assertRaisesr<   r=   s     r   test_no_standard_args_usagez2PositionalOnlyTestCase.test_no_standard_args_usage   sB    	 	
!Q!y) 	a1N	 	 	s	   9Ac                     dd}| j                  d|j                         d|_        | j                   |ddd      d       y )Nr.   r/   c                    | |z   |z   S r   r   r)   s      r   r+   z>PositionalOnlyTestCase.test_change_default_pos_only.<locals>.f   r,   r   )r.   r/   r\   r-   r0   )r;   r`   r=   s     r   test_change_default_pos_onlyz3PositionalOnlyTestCase.test_change_default_pos_only   s<    	 	/"1aQ'r   c                    d }| j                   |dd      d       | j                   |dd      d       d	d}| j                   |d      d       d }| j                   |dd      d       d }| j                   |dd      d       y )
Nc                    | |z   S r   r   r   s     r   <lambda>z5PositionalOnlyTestCase.test_lambdas.<locals>.<lambda>   
    AE r   r-   r.   r/   r5   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                    t        | dd       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       y )Nzlambda a, b = 5, /, c: Noner!   zlambda a = 5, b, /, c: Nonez%lambda a = 5, b=1, /, c, *, d=2: Nonezlambda a = 5, b, /: Nonezlambda a, /, b = 5, c: 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   s    4!>@~4!>@~4!H  KI  	J4!;={|4!>@~4!894!;<4!;<4!894!454!124!784!784!79hi4!:<kl4!:;4!=>4!CD4!=>r   c                     G d d      }| j                   |       j                  dd      d       | j                  |j                   |       dd      d       | j                  t        |j                  dd       d}| j	                  t        |      5   |       j                  dd       d d d        y # 1 sw Y   y xY w)Nc                       e Zd Zd Zy)<PositionalOnlyTestCase.test_posonly_methods.<locals>.Examplec                
    ||fS r   r   )r   r	   r
   s      r   r+   z>PositionalOnlyTestCase.test_posonly_methods.<locals>.Example.f  s    !tr   N)__name__
__module____qualname__r+   r   r   r   Exampler     s    r   r   r-   r.   r-   r.   r2   r5   )r;   r+   r   r<   r   )r   r   rm   s      r   test_posonly_methodsz+PositionalOnlyTestCase.test_posonly_methods   s    	 	 	Q*F379a3V<)WYY15_##Ix8 	 IKKQK	  	  	 s   B66B?c                 n    | j                  t        d      5  t                d d d        y # 1 sw Y   y xY w)Nrw   )r   r<   r   r#   s    r   test_module_functionz+PositionalOnlyTestCase.test_module_function  s.    ##I/lm 	 	  	  	 s   +4c                    d }| j                    |dd      dd      d       | j                  t        d      5    |dd      d       d d d        | j                  t        d      5    |dd      ddd	       d d d        d
 }| j                    |dd      dd      d       d }| j                    |dd      dd      d       | j                  t        d      5    |dd      d       d d d        | j                  t        d      5    |dd      ddd	       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   RxY w# 1 sw Y   y xY w)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   r+   z/PositionalOnlyTestCase.test_closures.<locals>.f      'Hr   r-   r.   r/   rZ   r8   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   r+   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   r+   z/PositionalOnlyTestCase.test_closures.<locals>.f$  r   r   r:   r=   s     r   test_closuresz$PositionalOnlyTestCase.test_closures  sR   	
 	1Q!b)##I/de 	AaF1I	##I/ef 	AaF1QqM		
 	1Q!b)	
 	1Q!b)##I/de 	AaF1I	##I/ef 	AaF1QqM	 	)	 		 	 	 		 	s/   D'(D3D?E'D03D<?EEc                     d } |       j                   dt        ik(  sJ  G d d      } |       j                         j                   dt        ik(  sJ d } |       j                   dt        ik(  sJ y )Nc                      dt         fd} | S )Nr   c                     y r   r   r   s    r   r+   zZPositionalOnlyTestCase.test_annotations_in_closures.<locals>.inner_has_pos_only.<locals>.f2  s    cr   intr+   s    r   inner_has_pos_onlyzOPositionalOnlyTestCase.test_annotations_in_closures.<locals>.inner_has_pos_only1  s    !S!Hr   r   c                       e Zd Zd Zy)FPositionalOnlyTestCase.test_annotations_in_closures.<locals>.Somethingc                     dt         fd}|S )Nr   c                     y r   r   r   s    r   r+   zXPositionalOnlyTestCase.test_annotations_in_closures.<locals>.Something.method.<locals>.f9      #r   r   r=   s     r   methodzMPositionalOnlyTestCase.test_annotations_in_closures.<locals>.Something.method8      %%r   Nr   r   r   r   r   r   r   	Somethingr   7  s    r   r   c                      d }  |        S )Nc                      dt         fd} | S )Nr   c                     y r   r   r   s    r   r+   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   )__annotations__r   r   )r   r   r   r   s       r   test_annotations_in_closuresz3PositionalOnlyTestCase.test_annotations_in_closures/  su    	 "#33SzAAA	 	
 {!!#33SzAAA	(  00S#J>>>r   c                     d }| j                   |dd      dddif       | j                  t        d      5   |d       d d d        | j                   |d      di f       y # 1 sw Y   $xY w)Nc                
    | |fS r   r   )	somethingkwargss     r   r+   zMPositionalOnlyTestCase.test_same_keyword_as_positional_with_kwargs.<locals>.fG  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_kwargsF  sq    	' 	2,rK3D.EF##I/kl 	O	 	2R)	 	s   
A%%A.c                      G d d      }| j                   |       j                         d       | j                   |       j                         d       | j                   |       j                         d       y )Nc                   *    e Zd ZddZddZddddZy)	/PositionalOnlyTestCase.test_mangling.<locals>.Xc                    |S r   r   )r   _X__as     r   r+   z1PositionalOnlyTestCase.test_mangling.<locals>.X.fS  s    
r   c                
    ||fS r   r   )r   r   _X__bs      r   f2z2PositionalOnlyTestCase.test_mangling.<locals>.X.f2V  s    Sz!r   ,   )_X__cc                   |||fS r   r   )r   r   r   r   s       r   f3z2PositionalOnlyTestCase.test_mangling.<locals>.X.f3Y  s    S#&r   N)r   r   +   )r   r   r   r+   r   r   r   r   r   Xr   R  s    "'2 'r   r   r   r   )r   r   r   )r;   r+   r   r   )r   r   s     r   test_manglingz$PositionalOnlyTestCase.test_manglingQ  sV    	' 	' 	"%8,<0r   c                 f    ddj                  d t        d      D              z  }t        |dd       y )Nr@   rA   c              3   &   K   | ]	  }d |z    ywrC   r   rD   s     r   rG   zAPositionalOnlyTestCase.test_too_many_arguments.<locals>.<genexpr>b  rH   rI   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
                  |      }| j                   |dd      d       d}| j                  t        |      5   |dd       d d d        | j                   |dd      d       d}| j                  t        |      5   |dd       d d d        | j                   |       d       d}| j                  t        |      5   |dd       d d d        y # 1 sw Y   xY w# 1 sw Y   XxY w# 1 sw Y   y xY w)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_serializatione  sO    ,,'89!<<(BC!<<(@A"LL9#\\*:;#\\*:;*1Q/7:##Ix8 	'A&	' 	+Aa0%87##Ix8 	(Q'	( 	+-u57##Ix8 	(Q'	( 	(	' 	'	( 	(	( 	(s$   <E E"E.E"E+.E7c                      dd j                  t        d      5   dd       d d d         fd} |dd        |dd        |d        |        y # 1 sw Y   2xY w)	Nr-   r.   c                   K   | |fS wr   r   r   s     r   r+   z,PositionalOnlyTestCase.test_async.<locals>.f  s     a4Ks   ri   r   c                      	  | i |}|j                  d        j                  d       y # t        $ r}|j                  }Y d }~-d }~ww xY w)Nr   )sendStopIterationvaluer;   )argsr   cororW   resultr+   r   s        r   _check_callz6PositionalOnlyTestCase.test_async.<locals>._check_call  sO    !$)&)		$ VV, ! !!s   / 	AA		Ar5   r   rl   )r   r   r+   s   ` @r   
test_asyncz!PositionalOnlyTestCase.test_async  s`    	 ##I/{| 	QK		- 	AqAA	 	s   AA"c                    dd}| j                  t        d      5   |dd       d d d         |dd      }| j                  t        |      d        |dd      }| j                  t        |      d        |d      }| j                  t        |      d        |       }| j                  t        |      d       y # 1 sw Y   xY w)Nr-   r.   c             3      K   | |f y wr   r   r   s     r   r+   z0PositionalOnlyTestCase.test_generator.<locals>.f  s     Q$Js   
ri   r   r   r5   )r   r<   r;   next)r   r+   gens      r   test_generatorz%PositionalOnlyTestCase.test_generator  s    	 ##I/{| 	QK	 1gcF+QicF+dcF+ccF+	 	s   B==Cc                     t                G fdd      } G d d|      }| j                   |       j                                y )Nc                       e Zd Z fdZy),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                     t         |          S r   )superr   )r   	__class__s    r   r   z3PositionalOnlyTestCase.test_super.<locals>.C.method  s    w~''r   )r   r   r   r   __classcell__)r	  s   @r   Cr    s    ( (r   r  )objectr;   r   )r   r  r  r  s      @r   
test_superz!PositionalOnlyTestCase.test_super  s:    8	  	 	( 	( 	x0r   c                     d }t        j                  |      D cg c]  }|j                  |j                  f }}| j	                  d|       | j                  d|       y c c}w )Nc                  $    dt         t         ufd} y )Nr   c                     y r   r   r   s    r   r+   zKPositionalOnlyTestCase.test_annotations_constant_fold.<locals>.g.<locals>.f  s    3r   r   r   s    r   rS   z@PositionalOnlyTestCase.test_annotations_constant_fold.<locals>.g  s    .#*.r   )	UNARY_NOTN)IS_OPr-   )disget_instructionsopnameargvalassertNotInassertIn)r   rS   rF   codess       r   test_annotations_constant_foldz5PositionalOnlyTestCase.test_annotations_constant_fold  sY    	/ 03/C/CA/FG!!((AHH%GG,e4lE* Hs   A!N)zinvalid syntax) 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B,H,(6,
4(&
	'(	(%?*
  
<?.	*1,
(6*,"1	+r   r   __main__r   )__doc__r  r   unittesttest.supportr   r   r   r   TestCaser   r   mainr   r   r   <module>r!     sR    N 
   +j+X.. j+Z zHMMO r   