
    ;e                         d dl Z d dlZd dlZd dlmZmZ  G d dej                  Z G d dej                  Ze	dk    r ej
                     dS dS )    N)	swap_item	swap_attrc                   R    e 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 )RebindBuiltinsTestsc                     	 d S N )selffuncargss      (/usr/lib/python3.11/test/test_dynamic.pyconfigure_funcz"RebindBuiltinsTests.configure_func   s    	 	    c                    d }|                      |           |                      |            d           t          t                      dd           5  |                      |            d           d d d            d S # 1 swxY w Y   d S )Nc                  $    t          g d          S N)         lenr	   r   r   fooz=RebindBuiltinsTests.test_globals_shadow_builtins.<locals>.foo       yyy>>!r   r   r   c                     dS N   r	   xs    r   <lambda>zBRebindBuiltinsTests.test_globals_shadow_builtins.<locals>.<lambda>$   s    1 r   r   r   assertEqualr   globalsr
   r   s     r   test_globals_shadow_builtinsz0RebindBuiltinsTests.test_globals_shadow_builtins   s    	" 	" 	"C   """wyy%55 	' 	'SSUUA&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's   BBBc                    d }|                      |           |                      |            d           t          t          dd           5  |                      |            d           d d d            d S # 1 swxY w Y   d S )Nc                  $    t          g d          S r   r   r	   r   r   r   z5RebindBuiltinsTests.test_modify_builtins.<locals>.foo)   r   r   r   r   c                     dS r   r	   r   s    r   r   z:RebindBuiltinsTests.test_modify_builtins.<locals>.<lambda>.       ! r   r   )r   r!   r   builtinsr#   s     r   test_modify_builtinsz(RebindBuiltinsTests.test_modify_builtins'   s    	" 	" 	"C   """x44 	' 	'SSUUA&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's   A::A>A>c                 6   d }|                      |            |            }|                     t          |          d           t          t          dd           5  |                     t          |          d           d d d            d S # 1 swxY w Y   d S )Nc               3   l   K   t          d          } t          |           V  t          |           V  d S Nr   ranger   r   s    r   r   zLRebindBuiltinsTests.test_modify_builtins_while_generator_active.<locals>.foo3   3      aAa&&LLLa&&LLLLLr   r   r   c                     dS r   r	   r   s    r   r   zQRebindBuiltinsTests.test_modify_builtins_while_generator_active.<locals>.<lambda>;   r(   r   r   )r   r!   nextr   r)   r
   r   gs      r   +test_modify_builtins_while_generator_activez?RebindBuiltinsTests.test_modify_builtins_while_generator_active1   s    	 	 	 	C   CEEa!$$$x44 	) 	)T!WWa(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   $BBBc                     t          t          dt                    5  d }d }|                     |d            |                      ||          ddg           d d d            d S # 1 swxY w Y   d S )Nr   c                       d t           _        d S )Nc                     dS )N   r	   r   s    r   r   zZRebindBuiltinsTests.test_modify_builtins_from_leaf_function.<locals>.bar.<locals>.<lambda>C        r   )r)   r   r	   r   r   barzHRebindBuiltinsTests.test_modify_builtins_from_leaf_function.<locals>.barB   s    *{r   c                     g }|                     t          t          d                                |              |                     t          t          d                               |S r   )appendr   r/   )modifierls     r   r   zHRebindBuiltinsTests.test_modify_builtins_from_leaf_function.<locals>.fooE   sS    U1XX'''


U1XX'''r   c                      d S r   r	   r	   r   r   r   zMRebindBuiltinsTests.test_modify_builtins_from_leaf_function.<locals>.<lambda>K   s    T r   r   r9   )r   r)   r   r   r!   )r
   r;   r   s      r   'test_modify_builtins_from_leaf_functionz;RebindBuiltinsTests.test_modify_builtins_from_leaf_function>   s     x,, 	/ 	/+ + +   \\222SSXX1v...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   ?A((A,/A,c                     d }|                      |           dd i}||d d}|                     t          d|          d           |                     t          dd|i          d           d S )	Nc                  $    t          g d          S r   r   r	   r   r   r   zQRebindBuiltinsTests.test_cannot_change_globals_or_builtins_with_eval.<locals>.fooP   r   r   r   c                     dS r   r	   r   s    r   r   zVRebindBuiltinsTests.test_cannot_change_globals_or_builtins_with_eval.<locals>.<lambda>U       ! r   c                     dS N   r	   r   s    r   r   zVRebindBuiltinsTests.test_cannot_change_globals_or_builtins_with_eval.<locals>.<lambda>W   r:   r   r   __builtins__r   zfoo()r   r   )r   r!   eval)r
   r   builtins_dictglobals_dicts       r   0test_cannot_change_globals_or_builtins_with_evalzDRebindBuiltinsTests.test_cannot_change_globals_or_builtins_with_evalO   s    	" 	" 	"C    ,"M*{, ,g|44a888gs|44a88888r   c                    d }|                      |           d|i}t          d|           |                     |d         d           dd i}||d d	}t          d|           |                     |d         d           d S )
Nc                  $    t          g d          S r   r   r	   r   r   r   zQRebindBuiltinsTests.test_cannot_change_globals_or_builtins_with_exec.<locals>.foo]   r   r   r   z	x = foo()r   r   r   c                     dS r   r	   r   s    r   r   zVRebindBuiltinsTests.test_cannot_change_globals_or_builtins_with_exec.<locals>.<lambda>f   rE   r   c                     dS rG   r	   r   s    r   r   zVRebindBuiltinsTests.test_cannot_change_globals_or_builtins_with_exec.<locals>.<lambda>h   r:   r   rI   )r   execr!   )r
   r   rM   rL   s       r   0test_cannot_change_globals_or_builtins_with_execzDRebindBuiltinsTests.test_cannot_change_globals_or_builtins_with_exec\   s    	" 	" 	"C   s|[,'''c*A... ,"M*{, , 	[,'''c*A.....r   c                 H   d }|                      |            |            }|                     t          |          d           t          t	                      ddd i          5  |                     t          |          d           d d d            d S # 1 swxY w Y   d S )Nc               3   l   K   t          d          } t          |           V  t          |           V  d S r-   r.   r   s    r   r   zORebindBuiltinsTests.test_cannot_replace_builtins_dict_while_active.<locals>.foon   r0   r   r   rJ   r   c                     dS r   r	   r   s    r   r   zTRebindBuiltinsTests.test_cannot_replace_builtins_dict_while_active.<locals>.<lambda>v       A r   )r   r!   r2   r   r"   r3   s      r   .test_cannot_replace_builtins_dict_while_activezBRebindBuiltinsTests.test_cannot_replace_builtins_dict_while_activem   s    	 	 	 	C   CEEa!$$$wyy.5++2FGG 	) 	)T!WWa(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   &$BBBc                     d }|                      |           |                      |            d           t          t                      ddd i          5  |                      |            d           d d d            d S # 1 swxY w Y   d S )Nc                  $    t          g d          S r   r   r	   r   r   r   zPRebindBuiltinsTests.test_cannot_replace_builtins_dict_between_calls.<locals>.fooz   r   r   r   rJ   r   c                     dS r   r	   r   s    r   r   zURebindBuiltinsTests.test_cannot_replace_builtins_dict_between_calls.<locals>.<lambda>   rX   r   r    r#   s     r   /test_cannot_replace_builtins_dict_between_callszCRebindBuiltinsTests.test_cannot_replace_builtins_dict_between_callsy   s    	" 	" 	"C   """wyy.5++2FGG 	' 	'SSUUA&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's   BB
Bc                     dd i}t          d|          }|                     |           |                      |            d           d S )Nr   c                     dS r   r	   r   s    r   r   zKRebindBuiltinsTests.test_eval_gives_lambda_custom_globals.<locals>.<lambda>   r:   r   zlambda: len([])r   )rK   r   r!   )r
   rM   r   s      r   %test_eval_gives_lambda_custom_globalsz9RebindBuiltinsTests.test_eval_gives_lambda_custom_globals   sT    {{+$l33C   """""r   c                 R    G d dt                     }dd                    d t          d          D                       z   }t          | |                      }t	          t          d                    }t          d          D ] }|                      |            |           !d S )Nc                       e Zd Zd ZdS )ZRebindBuiltinsTests.test_load_global_specialization_failure_keeps_oparg.<locals>.MyGlobalsc                 F    t          |                    d                    S )N_number_)intremoveprefix)r
   keys     r   __missing__zfRebindBuiltinsTests.test_load_global_specialization_failure_keeps_oparg.<locals>.MyGlobals.__missing__   s    3++J77888r   N)__name__
__module____qualname__ri   r	   r   r   	MyGlobalsrc      s#        9 9 9 9 9r   rm   zlambda: +c              3       K   | ]	}d | V  
dS )re   Nr	   ).0is     r   	<genexpr>zZRebindBuiltinsTests.test_load_global_specialization_failure_keeps_oparg.<locals>.<genexpr>   s(      $I$I^^^$I$I$I$I$I$Ir   i     )dictjoinr/   rK   sumr!   )r
   rm   codesum_1000expected_s         r   3test_load_global_specialization_failure_keeps_opargzGRebindBuiltinsTests.test_load_global_specialization_failure_keeps_oparg   s    	9 	9 	9 	9 	9 	9 	9 	9 CHH$I$IU4[[$I$I$IIIIiikk**uT{{##r 	3 	3AXXZZ2222	3 	3r   N)rj   rk   rl   r   r$   r*   r5   rA   rN   rT   rY   r]   r`   r{   r	   r   r   r   r   
   s        G  ' ' '' ' ') ) )/ / /"9 9 9/ / /"
) 
) 
)' ' '# # #3 3 3 3 3r   r   c                       e Zd Zd Zd ZdS )TestTracingc                     |                      t          j        t          j                               t          j        d            d S r   )
addCleanupsyssettracegettrace)r
   s    r   setUpzTestTracing.setUp   s4    clnn555Tr   c                 H   fdd G fdd          fd}fd}fd}|||fD ]r}|                      |j                  5  t          d          D ]} |             d	 |             t          j        d            dd d d            n# 1 swxY w Y   sd S )
Nc                     S r   r	   )frameeventargtraces      r   r   z4TestTracing.test_after_specialization.<locals>.trace   s    Lr   Fc                   "    e Zd Zd Z fdZdS )0TestTracing.test_after_specialization.<locals>.Cc                     || _         d S r   r   )r
   r   s     r   __init__z9TestTracing.test_after_specialization.<locals>.C.__init__   s    r   c                 8    rt          j                   d S d S r   )r   r   )r
   r   turn_on_traces    r   __del__z8TestTracing.test_after_specialization.<locals>.C.__del__   s+      (L'''''( (r   N)rj   rk   rl   r   r   )r   r   s   r   Cr      sB          ( ( ( ( ( ( ( (r   r   c                  6      d          j         t          f d S Nr   )r   r   r   s   r   fz0TestTracing.test_after_specialization.<locals>.f   s    AaDDFCKKKKr   c                  6    dg  d          j                   d S r   r   r   s   r   r4   z0TestTracing.test_after_specialization.<locals>.g   s    C!KKKKr   c                  .    d  d          j         z    d S r   r   r   s   r   hz0TestTracing.test_after_specialization.<locals>.h   s    !JJJJr   :   T)subTestrj   r/   r   r   )	r
   r   r4   r   r   rz   r   r   r   s	         @@@r   test_after_specializationz%TestTracing.test_after_specialization   sy   	 	 	 	 	 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(	 	 	 	 		 	 	 	 		 	 	 	 	 1I 	& 	&Ddm,, & &r  ADFFFF $T""" %& & & & & & & & & & & & & & &	& 	&s   ?BB	B	N)rj   rk   rl   r   r   r	   r   r   r}   r}      s2          !& !& !& !& !&r   r}   __main__)r)   r   unittesttest.supportr   r   TestCaser   r}   rj   mainr	   r   r   <module>r      s     



  - - - - - - - -J3 J3 J3 J3 J3(+ J3 J3 J3Z'& '& '& '& '&(# '& '& '&T zHMOOOOO r   