
    6bh                         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                          yy)    N)	swap_item	swap_attrc                   P    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y)RebindBuiltinsTestsc                      	 y N )selffuncargss      ;/opt/python-3.12.12/usr/lib/python3.12/test/test_dynamic.pyconfigure_funcz"RebindBuiltinsTests.configure_func   s    	 	    c                     d }| j                  |       | j                   |       d       t        t               dd       5  | j                   |       d       d d d        y # 1 sw Y   y xY w)Nc                      t        g d      S N)         lenr	   r   r   fooz=RebindBuiltinsTests.test_globals_shadow_builtins.<locals>.foo       y>!r   r   r   c                      yN   r	   xs    r   <lambda>zBRebindBuiltinsTests.test_globals_shadow_builtins.<locals>.<lambda>$   s    1r   r   r   assertEqualr   globalsr
   r   s     r   test_globals_shadow_builtinsz0RebindBuiltinsTests.test_globals_shadow_builtins   sS    	"C "wy%5SUA& 655s   A##A,c                     d }| j                  |       | j                   |       d       t        t        dd       5  | j                   |       d       d d d        y # 1 sw Y   y xY w)Nc                      t        g d      S r   r   r	   r   r   r   z5RebindBuiltinsTests.test_modify_builtins.<locals>.foo)   r   r   r   r   c                      y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'   sQ    	"C "x4SUA& 544s   AA(c                     d }| j                  |        |       }| j                  t        |      d       t        t        dd       5  | j                  t        |      d       d d d        y # 1 sw Y   y xY w)Nc               3   V   K   t        d      } t        |        t        |        y wNr   ranger   r   s    r   r   zLRebindBuiltinsTests.test_modify_builtins_while_generator_active.<locals>.foo3   !     aAa&La&L   ')r   r   c                      y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 Ea!$x4T!Wa( 544s   	A..A7c                     t        t        dt              5  d }d }| j                  |d        | j	                   ||      ddg       d d d        y # 1 sw Y   y xY w)Nr   c                      d t         _        y )Nc                      y)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 }|j                  t        t        d                    |         |j                  t        t        d                   |S r   )appendr   r/   )modifierls     r   r   zHRebindBuiltinsTests.test_modify_builtins_from_leaf_function.<locals>.fooE   s9    U1X'
U1X'r   c                       y r   r	   r	   r   r   r   zMRebindBuiltinsTests.test_modify_builtins_from_leaf_function.<locals>.<lambda>K   s    Tr   r   r:   )r   r)   r   r   r!   )r
   r<   r   s      r   'test_modify_builtins_from_leaf_functionz;RebindBuiltinsTests.test_modify_builtins_from_leaf_function>   sP     x,+ \2SX1v. -,,s   4AAc                     d }| j                  |       dd i}||d d}| j                  t        d|      d       | j                  t        dd|i      d       y )	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                      yr   r	   r   s    r   r   zVRebindBuiltinsTests.test_cannot_change_globals_or_builtins_with_eval.<locals>.<lambda>U       !r   c                      y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   sb    	"C  ,"M*,g|4a8gs|4a8r   c                     d }| j                  |       d|i}t        d|       | j                  |d   d       dd i}||d d	}t        d|       | j                  |d   d       y )
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                      yr   r	   r   s    r   r   zVRebindBuiltinsTests.test_cannot_change_globals_or_builtins_with_exec.<locals>.<lambda>f   rF   r   c                      yrH   r	   r   s    r   r   zVRebindBuiltinsTests.test_cannot_change_globals_or_builtins_with_exec.<locals>.<lambda>h   r;   r   rJ   )r   execr!   )r
   r   rN   rM   s       r   0test_cannot_change_globals_or_builtins_with_execzDRebindBuiltinsTests.test_cannot_change_globals_or_builtins_with_exec\   sy    	"C s|[,'c*A. ,"M*, 	[,'c*A.r   c                     d }| j                  |        |       }| j                  t        |      d       t        t	               ddd i      5  | j                  t        |      d       d d d        y # 1 sw Y   y xY w)Nc               3   V   K   t        d      } t        |        t        |        y wr-   r.   r   s    r   r   zORebindBuiltinsTests.test_cannot_replace_builtins_dict_while_active.<locals>.foon   r0   r1   r   rK   r   c                      yr   r	   r   s    r   r   zTRebindBuiltinsTests.test_cannot_replace_builtins_dict_while_active.<locals>.<lambda>v       Ar   )r   r!   r3   r   r"   r4   s      r   .test_cannot_replace_builtins_dict_while_activezBRebindBuiltinsTests.test_cannot_replace_builtins_dict_while_activem   sf    	 	C Ea!$wy.5+2FGT!Wa( HGGs   A44A=c                     d }| j                  |       | j                   |       d       t        t               ddd i      5  | j                   |       d       d d d        y # 1 sw Y   y xY w)Nc                      t        g d      S r   r   r	   r   r   r   zPRebindBuiltinsTests.test_cannot_replace_builtins_dict_between_calls.<locals>.fooz   r   r   r   rK   r   c                      yr   r	   r   s    r   r   zURebindBuiltinsTests.test_cannot_replace_builtins_dict_between_calls.<locals>.<lambda>   rY   r   r    r#   s     r   /test_cannot_replace_builtins_dict_between_callszCRebindBuiltinsTests.test_cannot_replace_builtins_dict_between_callsy   sY    	"C "wy.5+2FGSUA& HGGs   A%%A.c                 v    dd i}t        d|      }| j                  |       | j                   |       d       y )Nr   c                      yr   r	   r   s    r   r   zKRebindBuiltinsTests.test_eval_gives_lambda_custom_globals.<locals>.<lambda>   r;   r   zlambda: len([])r   )rL   r   r!   )r
   rN   r   s      r   %test_eval_gives_lambda_custom_globalsz9RebindBuiltinsTests.test_eval_gives_lambda_custom_globals   s9    {+$l3C "r   c                     G d dt               }d}ddj                  d t        |      D              z   }t        | |             }t	        t        |            }t        d      D ]  }| j                   |       |        y )Nc                       e Zd Zd Zy)ZRebindBuiltinsTests.test_load_global_specialization_failure_keeps_oparg.<locals>.MyGlobalsc                 6    t        |j                  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88r   N)__name__
__module____qualname__rj   r	   r   r   	MyGlobalsrd      s    9r   rn   i  zlambda: +c              3   &   K   | ]	  }d |   yw)rf   Nr	   ).0is     r   	<genexpr>zZRebindBuiltinsTests.test_load_global_specialization_failure_keeps_oparg.<locals>.<genexpr>   s     $N=Mxs^=Ms      )dictjoinr/   rL   sumr!   )r
   rn   	variablescodesum_funcexpected_s          r   3test_load_global_specialization_failure_keeps_opargzGRebindBuiltinsTests.test_load_global_specialization_failure_keeps_oparg   sp    	9 	9
 	CHH$NU9=M$NNNik*uY'(rAXZ2 r   N)rk   rl   rm   r   r$   r*   r6   rB   rO   rU   rZ   r^   ra   r}   r	   r   r   r   r   
   s<    G'')/"9/"
)'#3r   r   c                       e Zd Zd Zd Zy)TestTracingc                     | j                  t        j                  t        j                                t        j                  d        y r   )
addCleanupsyssettracegettrace)r
   s    r   setUpzTestTracing.setUp   s&    clln5Tr   c                 2   fdd G fdd      fd}fd}fd}|||fD ]]  }| j                  |j                        5  t        d      D ]	  } |         d	 |        t        j                  d        dd d d        _ y # 1 sw Y   jxY w)
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y)0TestTracing.test_after_specialization.<locals>.Cc                     || _         y r   r   )r
   r   s     r   __init__z9TestTracing.test_after_specialization.<locals>.C.__init__   s	    r   c                 6    rt        j                         y y r   )r   r   )r
   r   turn_on_traces    r   __del__z8TestTracing.test_after_specialization.<locals>.C.__del__   s     LL' !r   N)rk   rl   rm   r   r   )r   r   s   r   Cr      s    (r   r   c                  6      d      j                   t        f y Nr   )r   r   r   s   r   fz0TestTracing.test_after_specialization.<locals>.f   s    aDFFCKr   c                  2    dg  d      j                       y r   r   r   s   r   r5   z0TestTracing.test_after_specialization.<locals>.g   s    C!Kr   c                  0    d  d      j                   z    y r   r   r   s   r   hz0TestTracing.test_after_specialization.<locals>.h   s    !Jr   :   T)subTestrk   r/   r   r   )	r
   r   r5   r   r   r|   r   r   r   s	         @@@r   test_after_specializationz%TestTracing.test_after_specialization   s    	 	( 	(			 1IDdmm,rAF # $T" % -, ,,s   
8BB	N)rk   rl   rm   r   r   r	   r   r   r   r      s    !&r   r   __main__)r)   r   unittesttest.supportr   r   TestCaser   r   rk   mainr	   r   r   <module>r      sU     
  -L3(++ L3^'&(## '&T zHMMO r   