o
    HXh*                     @   sJ   d dl Z d dlZd dlmZmZ G dd dejZedkr#e  dS dS )    N)	swap_item	swap_attrc                   @   s^   e Zd Z	 dd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd ZdS )RebindBuiltinsTestsc                 G   s   	 d S N )selffuncargsr   r   ;/opt/python-3.10.19/usr/lib/python3.10/test/test_dynamic.pyconfigure_func   s   z"RebindBuiltinsTests.configure_funcc                 C   sf   dd }|  | | | d tt ddd  | | d W d    d S 1 s,w   Y  d S )Nc                   S      t g dS N)         lenr   r   r   r
   foo      z=RebindBuiltinsTests.test_globals_shadow_builtins.<locals>.foor   r   c                 S      dS N   r   xr   r   r
   <lambda>#       zBRebindBuiltinsTests.test_globals_shadow_builtins.<locals>.<lambda>r   r   assertEqualr   globalsr   r   r   r   r
   test_globals_shadow_builtins   s   
"z0RebindBuiltinsTests.test_globals_shadow_builtinsc                 C   sd   dd }|  | | | d ttddd  | | d W d    d S 1 s+w   Y  d S )Nc                   S   r   r   r   r   r   r   r
   r   (   r   z5RebindBuiltinsTests.test_modify_builtins.<locals>.foor   r   c                 S   r   r   r   r   r   r   r
   r   -   r   z:RebindBuiltinsTests.test_modify_builtins.<locals>.<lambda>r   )r   r   r   builtinsr   r   r   r
   test_modify_builtins&   s   
"z(RebindBuiltinsTests.test_modify_builtinsc                 C   sn   dd }|  | | }| t|d ttddd  | t|d W d    d S 1 s0w   Y  d S )Nc                  s   "    t d} t| V  t| V  d S Nr   ranger   r   r   r   r
   r   2      
zLRebindBuiltinsTests.test_modify_builtins_while_generator_active.<locals>.foor   r   c                 S   r   r   r   r   r   r   r
   r   :   r   zQRebindBuiltinsTests.test_modify_builtins_while_generator_active.<locals>.<lambda>r   )r   r   nextr   r!   r   r   gr   r   r
   +test_modify_builtins_while_generator_active0   s   
"z?RebindBuiltinsTests.test_modify_builtins_while_generator_activec                 C   sf   t tdt# dd }dd }| |dd  | ||dd	g W d    d S 1 s,w   Y  d S )
Nr   c                   S   s   dd t _d S )Nc                 S   r   )N   r   r   r   r   r
   r   B   r   zZRebindBuiltinsTests.test_modify_builtins_from_leaf_function.<locals>.bar.<locals>.<lambda>)r!   r   r   r   r   r
   barA   s   zHRebindBuiltinsTests.test_modify_builtins_from_leaf_function.<locals>.barc                 S   s2   g }| ttd |   | ttd |S r   )appendr   r&   )modifierlr   r   r
   r   D   s
   zHRebindBuiltinsTests.test_modify_builtins_from_leaf_function.<locals>.fooc                   S   s   d S r   r   r   r   r   r
   r   J   r   zMRebindBuiltinsTests.test_modify_builtins_from_leaf_function.<locals>.<lambda>r   r,   )r   r!   r   r   r   )r   r-   r   r   r   r
   'test_modify_builtins_from_leaf_function=   s   "z;RebindBuiltinsTests.test_modify_builtins_from_leaf_functionc                 C   sZ   dd }|  | ddd i}||dd d}| td|d	 | tdd
|id	 d S )Nc                   S   r   r   r   r   r   r   r
   r   O   r   zQRebindBuiltinsTests.test_cannot_change_globals_or_builtins_with_eval.<locals>.foor   c                 S   r   r   r   r   r   r   r
   r   T   r   zVRebindBuiltinsTests.test_cannot_change_globals_or_builtins_with_eval.<locals>.<lambda>c                 S   r   N   r   r   r   r   r
   r   V   r   r   __builtins__r   zfoo()r   r   )r   r   eval)r   r   builtins_dictglobals_dictr   r   r
   0test_cannot_change_globals_or_builtins_with_evalN   s   
zDRebindBuiltinsTests.test_cannot_change_globals_or_builtins_with_evalc                 C   sn   dd }|  | d|i}td| | |d d ddd	 i}||d
d	 d}td| | |d d d S )Nc                   S   r   r   r   r   r   r   r
   r   \   r   zQRebindBuiltinsTests.test_cannot_change_globals_or_builtins_with_exec.<locals>.foor   z	x = foo()r   r   r   c                 S   r   r   r   r   r   r   r
   r   e   r   zVRebindBuiltinsTests.test_cannot_change_globals_or_builtins_with_exec.<locals>.<lambda>c                 S   r   r2   r   r   r   r   r
   r   g   r   r4   )r   execr   )r   r   r8   r7   r   r   r
   0test_cannot_change_globals_or_builtins_with_exec[   s   


zDRebindBuiltinsTests.test_cannot_change_globals_or_builtins_with_execc                 C   st   dd }|  | | }| t|d tt dddd i | t|d W d    d S 1 s3w   Y  d S )Nc                  s   r#   r$   r%   r   r   r   r
   r   m   r'   zORebindBuiltinsTests.test_cannot_replace_builtins_dict_while_active.<locals>.foor   r5   r   c                 S   r   r   r   r   r   r   r
   r   u   r   zTRebindBuiltinsTests.test_cannot_replace_builtins_dict_while_active.<locals>.<lambda>)r   r   r(   r   r   r)   r   r   r
   .test_cannot_replace_builtins_dict_while_activel   s   
"zBRebindBuiltinsTests.test_cannot_replace_builtins_dict_while_activec                 C   sj   dd }|  | | | d tt dddd i | | d W d    d S 1 s.w   Y  d S )Nc                   S   r   r   r   r   r   r   r
   r   y   r   zPRebindBuiltinsTests.test_cannot_replace_builtins_dict_between_calls.<locals>.foor   r5   r   c                 S   r   r   r   r   r   r   r
   r   ~   r   zURebindBuiltinsTests.test_cannot_replace_builtins_dict_between_calls.<locals>.<lambda>r   r   r   r   r
   /test_cannot_replace_builtins_dict_between_callsx   s   
"zCRebindBuiltinsTests.test_cannot_replace_builtins_dict_between_callsc                 C   s2   ddd i}t d|}| | | | d d S )Nr   c                 S   r   r   r   r   r   r   r
   r      r   zKRebindBuiltinsTests.test_eval_gives_lambda_custom_globals.<locals>.<lambda>zlambda: len([])r   )r6   r   r   )r   r8   r   r   r   r
   %test_eval_gives_lambda_custom_globals   s   

z9RebindBuiltinsTests.test_eval_gives_lambda_custom_globalsN)__name__
__module____qualname__r   r    r"   r+   r1   r9   r;   r<   r=   r>   r   r   r   r
   r   	   s    

	r   __main__)	r!   ZunittestZtest.supportr   r   ZTestCaser   r?   mainr   r   r   r
   <module>   s    