a
    zeD                    @   s  d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZmZ d dlm Z  d d	l!m"Z" d d
l#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z) d dl*m+Z+ d dl,m-Z-m.Z. zd dl/Z/d dl0Z0W n e1yh   d Z/Z0Y n0 G dd dZ2G dd dZ3G dd dZ4dddddddddde5ej6ej6fde7fdde7fd e7fd!e7fd"e7fe8d#d$d%fe9d&e7fgZ:dddddddd'e7fdd(e7fe5ej6ej6fde7fd)e7fde7fd e7fd!e7fd"e7fe8d#d$d%fe9d&e7fgZ;G d*d+ d+Z<G d,d- d-Z=d.d/ Z>d0d1 Z?G d2d3 d3ej@ZAG d4d5 d5ej@ZBeCe/d6G d7d8 d8ej@ZDG d9d: d:ej@ZEG d;d< d<ej@ZFG d=d> d>ej@ZGd?d@ ZHeIdAkreJ  dS )B    N)	ExitStack)partial)CO_COROUTINE)product)dedent)AsyncGeneratorTypeFunctionType)neg)support)EnvironmentVarGuardTESTFNcheck_warnings	swap_attrunlinkmaybe_get_event_loop_policy)assert_python_ok)	MagicMockpatchc                   @   s$   e Zd Zdd Zdd Zdd ZdS )Squaresc                 C   s   || _ g | _d S Nmaxsofarselfr    r   '/usr/lib/python3.9/test/test_builtin.py__init__+   s    zSquares.__init__c                 C   s
   t | jS r   lenr   r   r   r   r   __len__/       zSquares.__len__c                 C   sR   d|  kr| j k sn tt| j}||krH| j||  |d7 }q&| j| S Nr      )r   
IndexErrorr   r   appendr   inr   r   r   __getitem__1   s    

zSquares.__getitem__N__name__
__module____qualname__r   r!   r*   r   r   r   r   r   )   s   r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )
StrSquaresc                 C   s   || _ g | _d S r   r   r   r   r   r   r   ;   s    zStrSquares.__init__c                 C   s
   t | jS r   r   r    r   r   r   r!   ?   s    zStrSquares.__len__c                 C   sV   d|  kr| j k sn tt| j}||krL| jt||  |d7 }q&| j| S r#   )r   r%   r   r   r&   strr'   r   r   r   r*   B   s    

zStrSquares.__getitem__Nr+   r   r   r   r   r/   9   s   r/   c                   @   s   e Zd Zdd ZdS )	BitBucketc                 C   s   d S r   r   )r   liner   r   r   writeL   s    zBitBucket.writeN)r,   r-   r.   r3   r   r   r   r   r1   K   s   r1   )0r   )1r$   )9	   )10
   )Z99c   )Z100d   )Z314:  ) 314r<   )z314 r<   )  		  314  		  r<   z  1x)  1  r$   z  1    z  		  s   \u0663\u0661\u0664 zraw-unicode-escaper<   i   r=   r>   r?   c                   @   s   e Zd Zdd ZdS )TestFailingBoolc                 C   s   t d S r   RuntimeErrorr    r   r   r   __bool__|   s    zTestFailingBool.__bool__N)r,   r-   r.   rE   r   r   r   r   rB   {   s   rB   c                   @   s   e Zd Zdd ZdS )TestFailingIterc                 C   s   t d S r   rC   r    r   r   r   __iter__   s    zTestFailingIter.__iter__Nr,   r-   r.   rG   r   r   r   r   rF      s   rF   c                 C   s   t | t dkS )Nd)ordargr   r   r   filter_char   s    rM   c                 C   s   t t| d S Nr$   )chrrJ   rK   r   r   r   map_char   s    rP   c                   @   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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+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Z d=d> Z!d?d@ Z"dAdB Z#dCdD Z$dEdF Z%dGdH Z&dIdJ Z'dKdL Z(dMdN Z)dOdP Z*dQdR Z+dSdT Z,e-.e/j0j1dUdVdW Z2dXdY Z3dZd[ Z4d\d] Z5d^d_ Z6d`da Z7dbdc Z8e9: ;ddoe9< ;deZ=e>dfdfkZ?e-.e=oe?dgdhdi Z@djdk ZAdldm ZBdndo ZCdpdq ZDeEdrds ZFeEdtdu ZGG dvdw dweHZIdxdy ZJdzd{ ZKd|d} ZLd~d ZMeNjOdd ZPdd ZQdd ZRdd ZSdd ZTdd ZUdd ZVdS )BuiltinTestc                 C   s   |}t ||}t |}| t|t| | t|| t |}zt| W n tyh   Y d S 0 t ||}t |}| t||dd   d S rN   )pickledumpsloadsassertEqualtypelistnextStopIteration)r   itseqprotoZitorgrI   r   r   r   check_iter_pickle   s    


zBuiltinTest.check_iter_picklec              
   C   s   t d t d t d t dd t ddd | tt d | tt dd	d
d | tt d | jtt ddd | t0 | jtt dd d ddi ddd W d    n1 s0    Y  | tt d d S )Nsystimestringnamer   )rb   levelZspamspamr$            r@   __main__)__package____spec__r,   )foo)localsfromlistrc   zstring )
__import__assertRaisesImportError	TypeError
ValueErrorassertWarnsImportWarningModuleNotFoundErrorr    r   r   r   test_import   s    


$zBuiltinTest.test_importc                 C   s   |  tdd |  tdd |  tdd | ttj d dk |  tdd |  tdd |  tdd | ttd |  td	d |  td
d | tt | ttd  G dd dt}|  t| d d S )Nr     i.r$           gQ	@gQ	aTFc                   @   s   e Zd Zdd ZdS )z&BuiltinTest.test_abs.<locals>.AbsClassc                 S   s   dS )Nr   r    r   r   r   __abs__   s    z.BuiltinTest.test_abs.<locals>.AbsClass.__abs__N)r,   r-   r.   rz   r   r   r   r   AbsClass   s   r{   ry   )rU   abs
assertTruer^   maxsizern   rp   object)r   r{   r   r   r   test_abs   s    zBuiltinTest.test_absc                 C   s   |  tg dd |  tg dd | ttdt dg | ttt  | ttd | tt | ttg dg  |  tg d |  tdt gd d	d
g}|  tdd |D d g d}|  tdd |D d d S )Nrd   rf      T)rd   Nr   Frd   r   r9   r   2   <   c                 s   s   | ]}|d kV  qdS *   Nr   .0xr   r   r   	<genexpr>   r"   z'BuiltinTest.test_all.<locals>.<genexpr>)r   (   r   c                 s   s   | ]}|d kV  qdS r   r   r   r   r   r   r      r"   )rU   allrn   rD   rB   rF   rp   r   Sr   r   r   test_all   s    zBuiltinTest.test_allc                 C   s   |  tg dd |  tg dd | ttd t dg | ttt  | ttd | tt | ttg dg  |  tg d |  tdt gd g d	}|  td
d |D d g d}|  tdd |D d d S )N)NNNF)Nrf   NTr   r9   r   r$   )r   r      c                 s   s   | ]}|d kV  qdS r   r   r   r   r   r   r      r"   z'BuiltinTest.test_any.<locals>.<genexpr>)r9      r   c                 s   s   | ]}|d kV  qdS r   r   r   r   r   r   r      r"   )rU   anyrn   rD   rB   rF   rp   r   r   r   r   test_any   s    zBuiltinTest.test_anyc                    s    tdd   tdd   tdd   tg d   ti d g }||   t|d	 i }||d<   t|d
  fdd}|d |d |d |d |d |d |d |d |d |d   tdd d}  t|d d S )Nr@   ''r   r4   r   ()[]{}[[...]]
{0: {...}}c                    s     t| t|  d S r   )rU   asciirepr)sr    r   r   
_check_uni   s    z*BuiltinTest.test_ascii.<locals>._check_uni'"z"' z
	 .   u   ῿u   𒿿u   u   u   𝄡z'\U0001d121'u   ' "
	 abcdé𒿿𝄡xxx.z:'\'\x00"\n\r\t abcd\x85\xe9\U00012fff\ud800\U0001d121xxx.')rU   r   r&   )r   rx   r   r   r   r    r   
test_ascii   s6    

zBuiltinTest.test_asciic                 C   s4   t j d }| t|t | | t jd  d S rN   )r^   r~   r}   
isinstanceintrU   r   r   r   r   r   test_neg  s    zBuiltinTest.test_negc                 C   s>  |  tt | td |  tt |  tdd  | tt dd }|  t| G dd d}|  t| | }|  t|j | t| d |_| t| dd |_| t| |`| t| G d	d
 d
t}| }|  t| d |_|  t| G dd d|}| }|  t| d S )Nrx   c                 S   s   | | S r   r   r   yr   r   r   <lambda>  r"   z+BuiltinTest.test_callable.<locals>.<lambda>c                   S   s   d S r   r   r   r   r   r   f  r"   z$BuiltinTest.test_callable.<locals>.fc                   @   s   e Zd Zdd ZdS )z%BuiltinTest.test_callable.<locals>.C1c                 S   s   d S r   r   r    r   r   r   meth  r"   z*BuiltinTest.test_callable.<locals>.C1.methN)r,   r-   r.   r   r   r   r   r   C1  s   r   c                 S   s   dS Nr   r   r    r   r   r   r     r"   c                   @   s   e Zd Zdd ZdS )z%BuiltinTest.test_callable.<locals>.C2c                 S   s   d S r   r   r    r   r   r   __call__$  r"   z.BuiltinTest.test_callable.<locals>.C2.__call__N)r,   r-   r.   r   r   r   r   r   C2#  s   r   c                   @   s   e Zd ZdS )z%BuiltinTest.test_callable.<locals>.C3Nr,   r-   r.   r   r   r   r   C3)  r"   r   )r}   callabler   assertFalse__builtins__r   r   r   )r   r   r   cr   c2r   Zc3r   r   r   test_callable  s4    
zBuiltinTest.test_callablec                 C   s:  |  tdd |  tdd |  tdd |  tdd | ttd	 |  ttjtd
dd | tt |  tdd |  tdd |  tdd |  tdd |  tdd |  tdd |  tdd |  tdd |  tdd | ttd | ttd  | t	tftd! d S )"N    rA   A   Aa   rx         ÿi   z
\U0010ffffr   zunicode-escape     ￿      𐀀     𐀁    󿿾    󿿿      􀀀     􀀁    􏿾    􏿿i   l        )
rU   rO   rn   rq   r^   
maxunicoder0   encoderp   OverflowErrorr    r   r   r   test_chr-  s*    zBuiltinTest.test_chrc                 C   s   |  ttd  d S )Ncmp)r}   hasattrbuiltinsr    r   r   r   test_cmpC  s    zBuiltinTest.test_cmpc              
   C   s  t ddd d}t |d dd t dddd t d	d
ddd t ddddd t tddd | tt  | tt ddd | tt dddd | tt tddd | jtt dddddd
d t ddd | tt tddd | tt tddd d}dd }d d	|jd	d	fd!d"d#g}|D ]x^}}g }|t |d$d|d% t	
|}|t |d$d|d% |D ].}	i }
t|	|
 |
d  }| |t| qfq d S )&Nz	print(1)
r@   exec   ﻿s	   print(1)
pass?)sourcefilenamemodeFtmpr4   eval)dont_inheritr   r   r   T)r   r   s   textrb   z
print(42)
<string>Zbadmodesingler   r   r   )r   r   r   u   print("å")
za = 1ZbadaJ  def f():
        """doc"""
        debug_enabled = False
        if __debug__:
            debug_enabled = True
        try:
            assert False
        except AssertionError:
            return (True, f.__doc__, debug_enabled, __debug__)
        else:
            return (False, f.__doc__, debug_enabled, __debug__)
        c                   S   s   d S r   r   r   r   r   r   r   f  r"   z#BuiltinTest.test_compile.<locals>.fr   )r   TdocTT)r$   Fr   FF)rd   FNFFz<test>)optimize)compile
memoryviewrn   rp   rq   rO   r0   __doc__r&   astparser   rU   tuple)r   bomZcodestrr   valuesZoptvalexpectedZcodeobjsZtreecodensrvr   r   r   test_compileF  sD    


zBuiltinTest.test_compilec                 C   s`   d}g d}t ||D ]D\}}t|}t|d|tjd}| j|jt@ td| d| d qd S )Nr   r   )zdef f():pass
z[x for x in l]z{x for x in l}z(x for x in l)z{x:x for x in l}r   flagssource= mode=msg)r   r   r   r   PyCF_ALLOW_TOP_LEVEL_AWAITassertNotEqualco_flagsr   )r   modescode_samplesr   code_sampler   cor   r   r   $test_compile_top_level_await_no_corow  s    z0BuiltinTest.test_compile_top_level_await_no_coroc              	   C   s0  dd }d}g d}t  }zt||D ]\}}t|}| jtd| d| d t|d| W d    n1 st0    Y  t|d|tjd	}| j|j	t
@ t
d| d| d td
|d}	t||	}
t|
  | |	d d td
|d}	tt||	 | |	d d q(W t| nt| 0 d S )Nc                 S  s   t | D ]
}|V  qd S r   ranger)   r(   r   r   r   arange  s    z8BuiltinTest.test_compile_top_level_await.<locals>.aranger   )
z$a = await asyncio.sleep(0, result=1)z2async for i in arange(1):
                   a = 1z8async with asyncio.Lock() as l:
                   a = 1z#a = [x async for x in arange(2)][1]z%a = 1 in {x async for x in arange(2)}z%a = {x:1 async for x in arange(1)}[0]z<a = [x async for x in arange(2) async for x in arange(2)][1]z6a = [x async for x in (x async for x in arange(5))][1]z.a, = [1 for x in {x async for x in arange(1)}]z;a = [await asyncio.sleep(0, x) async for x in arange(2)][1]r   r   r   r   r   r   )asynciorx   r  rx   r$   )r   r   r   rn   SyntaxErrorr   r   r   rU   r   r   r  r   runr   set_event_loop_policy)r   r  r   r   policyr   r   r   r  globals_Zasync_fr   r   r   test_compile_top_level_await  s6    
*
z(BuiltinTest.test_compile_top_level_awaitc           	   	   C   s   dd }d}g d}t  }zt||D ]\}}t|}| jtd| d| d t|d| W d    n1 sr0    Y  | jtd| d| d" t|d|tjd	}W d    q&1 s0    Y  q&W t	| nt	| 0 d S )
Nc                 S  s   t | D ]
}|V  qd S r   r  r  r   r   r   r    s    zFBuiltinTest.test_compile_top_level_await_invalid_cases.<locals>.aranger   )zdef f():  await arange(10)
z(def f():  [x async for x in arange(10)]
z.def f():  [await x async for x in arange(10)]
z_def f():
                   async for i in arange(1):
                       a = 1
            zedef f():
                   async with asyncio.Lock() as l:
                       a = 1
            r   r   r   r   r   )
r   r   r   rn   r  r   r   r   r  r
  )	r   r  r   r   r  r   r   r   r  r   r   r   *test_compile_top_level_await_invalid_cases  s(    *(z6BuiltinTest.test_compile_top_level_await_invalid_casesc                 C   sB   t d}t|ddtjd}i }t|| | t|d  t d S )Nz~async def ticker():
                for i in range(10):
                    yield i
                    await asyncio.sleep(0)r   r   r   Zticker)r   r   r   r   r   rU   rV   r   )r   r   r  globr   r   r   test_compile_async_generator  s
    
z(BuiltinTest.test_compile_async_generatorc                 C   s    dt _tt d | tt d S )Nr$   spam)r^   r  delattrrn   rp   r    r   r   r   test_delattr  s    
zBuiltinTest.test_delattrc              
   C   s  |  ttdd d}| dt  | dtt G dd dtj}|d}|  tt| | dtt | d	tt G d
d dt	}| }| dt| G dd dt	}| }| dt| G dd dt	}| }| dt| | dt| G dd dt	}| }| 
t|g dk G dd dt	}t| }| |t | 
|g dk G dd dt	}| }|  tt| ztW n< ty } z"| tt|jd W Y d }~n
d }~0 0 | tg  tg  d S )Nr   r$   	local_varexitc                   @   s   e Zd ZdZdS )!BuiltinTest.test_dir.<locals>.Foo   N)r,   r-   r.   __dict__r   r   r   r   Foo  s   r  rj   strip__mro__c                   @   s   e Zd Zdd ZdS )r  c                 S   s   d| _ d| _d| _d S )N   r  r7   )r   r   zr    r   r   r   r     s    *BuiltinTest.test_dir.<locals>.Foo.__init__N)r,   r-   r.   r   r   r   r   r   r    s   r   c                   @   s   e Zd Zg ZdS )r  N)r,   r-   r.   	__slots__r   r   r   r   r     s   __repr__c                   @   s   e Zd ZddgZdd ZdS )r  	__class__r  c                 S   s
   d| _ d S )NZwow)barr    r   r   r   r   )  s    r  N)r,   r-   r.   r  r   r   r   r   r   r  '  s   r"  c                   @   s   e Zd Zdd ZdS )r  c                 S   s   g dS )N)kangaroor   r    r   r   r   __dir__1  s    )BuiltinTest.test_dir.<locals>.Foo.__dir__Nr,   r-   r.   r&  r   r   r   r   r  0  s   )r$  r#  r%  c                   @   s   e Zd Zdd ZdS )r  c                 S   s   dS )N)br   rx   r   r    r   r   r   r&  8  s    r'  Nr(  r   r   r   r   r  7  s   rx   r)  r   c                   @   s   e Zd Zdd ZdS )r  c                 S   s   dS )Nr  r   r    r   r   r   r&  @  s    r'  Nr(  r   r   r   r   r  ?  s   rf   )rn   rp   dirassertInr^   types
ModuleTyper0   assertNotInr   r}   ZassertIsInstancerW   r%   rU   r   __traceback__sortedr&  )r   r  r  r   reser   r   r   test_dir  sD    
,zBuiltinTest.test_dirc                 C   s   |  tddd |  tddd |  tddd |  tddd |  ttj d	 d
tjd	 df dD ]<\}}}t||}| |d |d  | |d	 |d	  qp| tt d S )N   r  )r$      i)rd   i)r7  r7  )r$   ry   r$   r   r   ))      
@      ?)      @g      ?)      
r9  )      g      ?)r8        )r<  g      )r;  r=  )r:  g      п)rU   divmodr^   r~   assertAlmostEqualrn   rp   )r   numZdenomZ
exp_resultresultr   r   r   test_divmodN  s    $
zBuiltinTest.test_divmodc                 C   s  |  tdd |  tdd ddd}ddd}|  td	|d |  td	||d |  td
||d |  td||d ddd}ddd}d}|  t|d ||d |  td|d | tt | ttd | tt|d d d  G dd d}| ttdi |  d S )N1+1rd   z 1+1
r$   rx   r)     ,  )r)  r   rx   r)  r   r      au   "å"   år   c                   @   s   e Zd Zdd ZdS )z BuiltinTest.test_eval.<locals>.Xc                 S   s   t d S r   rq   r   keyr   r   r   r*   s  s    z,BuiltinTest.test_eval.<locals>.X.__getitem__Nr,   r-   r.   r*   r   r   r   r   Xr  s   rM  rj   )rU   r   rn   rp   r  rq   )r   globalsrk   r   rM  r   r   r   	test_eval`  s$    



zBuiltinTest.test_evalc           
      C   s  G dd d}| }t  }| td||d | ttd|| | td||td | td||| | td	||| | ttd| G d
d d}| }| ttd|| G dd dt}| }| td||d | ttd|| | td||td | td||| | td	||| td|| td|t	  G dd d}| }d|d< d|d< d|d< | |d d G dd d}	| ttdt  |	  d S )Nc                   @   s   e Zd Zdd Zdd ZdS )z(BuiltinTest.test_general_eval.<locals>.Mc                 S   s   |dkrdS t d S Nrx   r5  KeyErrorrJ  r   r   r   r*   |  s    z4BuiltinTest.test_general_eval.<locals>.M.__getitem__c                 S   s   t dS NxyzrW   r    r   r   r   keys  s    z-BuiltinTest.test_general_eval.<locals>.M.keysNr,   r-   r.   r*   rV  r   r   r   r   Mz  s   rX  rx   r5  r)  zdir()rT  z	globals()zlocals()c                   @   s   e Zd ZdS )z(BuiltinTest.test_general_eval.<locals>.ANr   r   r   r   r   r     s   r   c                   @   s   e Zd Zdd Zdd ZdS )z(BuiltinTest.test_general_eval.<locals>.Dc                 S   s   |dkrdS t | |S rP  )dictr*   rJ  r   r   r   r*     s    z4BuiltinTest.test_general_eval.<locals>.D.__getitem__c                 S   s   t dS rS  rU  r    r   r   r   rV    s    z-BuiltinTest.test_general_eval.<locals>.D.keysNrW  r   r   r   r   D  s   rZ  z[locals() for i in (2,3)]c                   @   s    e Zd Zi Zdd Zdd ZdS )z2BuiltinTest.test_general_eval.<locals>.SpreadSheetc                 S   s   || j |< d S r   )_cells)r   rK  Zformular   r   r   __setitem__  s    z>BuiltinTest.test_general_eval.<locals>.SpreadSheet.__setitem__c                 S   s   t | j| t | S r   )r   r[  rN  rJ  r   r   r   r*     s    z>BuiltinTest.test_general_eval.<locals>.SpreadSheet.__getitem__N)r,   r-   r.   r[  r\  r*   r   r   r   r   SpreadSheet  s   r]  5Za1za1*6Za2za2*7a3   c                   @   s   e Zd Zdd Zdd ZdS )z(BuiltinTest.test_general_eval.<locals>.Cc                 S   s   t |d S r   rQ  )r   itemr   r   r   r*     s    z4BuiltinTest.test_general_eval.<locals>.C.__getitem__c                 S   s   dS rN   r   r    r   r   r   rV    s    z-BuiltinTest.test_general_eval.<locals>.C.keysNrW  r   r   r   r   C  s   rb  )
rN  rU   r   rn   	NameErrorrW   rp   rY  collectionsUserDict)
r   rX  mgr   rZ  rI   r]  ssrb  r   r   r   test_general_evalw  s:    	zBuiltinTest.test_general_evalc                 C   s   i }t d| d|v r|d= | |ddi t d| d|v rD|d= | |ddi i }i }t , tjddd	d
 t d|| W d    n1 s0    Y  d|v r|d= d|v r|d= | ||fddiddif d S )Nzz = 1r   r  r$   zz = 1+1rd   ignorezglobal statementr   )modulezglobal a; a = 1; b = 2rx   r)  )r   rU   r   warningsfilterwarnings)r   rg  lr   r   r   	test_exec  s*    

*zBuiltinTest.test_execc                    s   t ddd}| tdt|di i | tt|ddi t ddd}| tdt|di i G d	d
 d
t G  fdddt}tt	t
jr|t	j}n|t	}t ddd}|  t|d|i |i }t ddd}|  t|| d S )Nzprint('Hello World!')r@   r   zname 'print' is not definedr   {   zclass A: passz__build_class__ not foundc                   @   s   e Zd ZdS )z7BuiltinTest.test_exec_globals.<locals>.frozendict_errorNr   r   r   r   r   frozendict_error  s   rq  c                       s   e Zd Z fddZdS )z1BuiltinTest.test_exec_globals.<locals>.frozendictc                    s    dd S )Nzfrozendict is readonlyr   )r   rK  valuerq  r   r   r\    s    z=BuiltinTest.test_exec_globals.<locals>.frozendict.__setitem__N)r,   r-   r.   r\  r   rs  r   r   
frozendict  s   rt  z1__builtins__['superglobal']=2; print(superglobal)testzx=1)r   assertRaisesRegexrc  r   rn   rp   	ExceptionrY  r   r   r-  r.  r  )r   r   rt  Zfrozen_builtins	namespacer   rs  r   test_exec_globals  s2    



zBuiltinTest.test_exec_globalsc                 C   sD   t j}d t _z*ztd W n ty,   Y n0 W |t _n|t _0 d S )Nrx   )r^   stdoutr   rc  )r   
savestdoutr   r   r   test_exec_redirected  s    z BuiltinTest.test_exec_redirectedc                 C   sn  |  ttdd dtd |  ttd ddg dgdd d	d
gdddgd	g |  ttdd g dg d |  ttd tdg d |  ttdd tdg d dd }t|td | tt G dd dt}| tttdd |  dd }| ttt|td |  ttd dddg |  ttdd dddg | tttdd d S ) Nc                 S   s   d|   kodkS   S )Nrx   r  r   )r   r   r   r   r     r"   z)BuiltinTest.test_filter.<locals>.<lambda>zHello WorldZelloorldr$   Zhellore   r@   r7   r   c                 S   s   | dkS r   r   r   r   r   r   r     r"   )r$   r7   r   rd   )r$   r7   rd   r9   )	r$   rf   r7         $   1   @   Q   c                 S   s   | d S )Nrd   r   r}  r   r   r   r     r"   )r$   r7   r  r  r  c                 S   s   dS rN   r   )ra  r   r   r   identity	  s    z)BuiltinTest.test_filter.<locals>.identityr6  c                   @   s   e Zd Zdd ZdS )z'BuiltinTest.test_filter.<locals>.BadSeqc                 S   s   |dk rdS t d S )Nrf   r   rI  r   indexr   r   r   r*     s    z3BuiltinTest.test_filter.<locals>.BadSeq.__getitem__NrL  r   r   r   r   BadSeq  s   r  c                 S   s   | S r   r   r}  r   r   r   r     r"   c                   S   s   d S r   r   r   r   r   r   badfunc  s    z(BuiltinTest.test_filter.<locals>.badfuncr$   rd   rd   c                 S   s   | dkS )Nre   r   r}  r   r   r   r     r"   r$   rd   re   rf   rf   r   )	rU   rW   filterr   rn   rp   r   rq   r  )r   r  r  r  r   r   r   test_filter  s    2""zBuiltinTest.test_filterc                 C   s>   t tjd D ]*}ttd}ttd}| |t|| qd S )Nr$   Z
abcdeabcde)r  rR   HIGHEST_PROTOCOLr  rM   r]   rW   )r   r\   f1f2r   r   r   test_filter_pickle  s    

zBuiltinTest.test_filter_picklec                 C   sn   |  ttdtju  | tttd | tttdd | tt | tttttj | ttdd d S )Nrz  r$   rj   u   픞)	r}   getattrr^   rz  rn   rp   AttributeErrorrO   r   r    r   r   r   test_getattr"  s    zBuiltinTest.test_getattrc                 C   s   |  ttd | tttd | tt | dttttj G dd d}| tt| d G dd d}| t	t| d d S )	Nrz  r$   Fc                   @   s   e Zd Zdd ZdS )z#BuiltinTest.test_hasattr.<locals>.Ac                 S   s   t d S r   )
SystemExitr   Zwhatr   r   r   __getattr__4  s    z/BuiltinTest.test_hasattr.<locals>.A.__getattr__Nr,   r-   r.   r  r   r   r   r   r   3  s   r   r)  c                   @   s   e Zd Zdd ZdS )z#BuiltinTest.test_hasattr.<locals>.Bc                 S   s   t d S r   rI  r  r   r   r   r  8  s    z/BuiltinTest.test_hasattr.<locals>.B.__getattr__Nr  r   r   r   r   B7  s   r  )
r}   r   r^   rn   rp   rU   rO   r   r  rq   )r   r   r  r   r   r   test_hasattr+  s    zBuiltinTest.test_hasattrc                 C   s   t d  | t dt d | t dt d t d | t dt d t d dd }t | | tt g  | tt i  G dd	 d	}| tt | t G d
d dt}| t |dt d d S )Nr$   r9  r  s   spamr   r$   rd   re   c                   S   s   d S r   r   r   r   r   r   r   C  r"   z BuiltinTest.test_hash.<locals>.fc                   @   s   e Zd Zdd ZdS )z BuiltinTest.test_hash.<locals>.Xc                 S   s   dd S )Nrd   r;   r   r    r   r   r   __hash__I  s    z)BuiltinTest.test_hash.<locals>.X.__hash__Nr,   r-   r.   r  r   r   r   r   rM  H  s   rM  c                   @   s   e Zd Zdd ZdS )z BuiltinTest.test_hash.<locals>.Zc                 S   s   | S r   r   r    r   r   r   r  M  s    z)BuiltinTest.test_hash.<locals>.Z.__hash__Nr  r   r   r   r   ZL  s   r  r   )hashrU   rn   rp   rV   r   )r   r   rM  r  r   r   r   	test_hash<  s    zBuiltinTest.test_hashc                 C   s2   |  tdd |  tdd | tti  d S )Nr  Z0x10iz-0x10)rU   hexrn   rp   r    r   r   r   test_hexQ  s    zBuiltinTest.test_hexc                 C   sH   t d  t d t d t d t d t g d t dddd d S )Nr$   r9  r  r  rd   re   )r  Zeggsham)idr    r   r   r   test_idV  s    zBuiltinTest.test_idc                 C   sn   |  tt |  ttdd dddgdg}|D ]:}t|}| t|d | t|d |  tt| q.d S )Nr   )r5   2r5   r  Z12)rn   rp   iterrU   rX   rY   )r   Zlistsrn  r(   r   r   r   	test_itera  s    zBuiltinTest.test_iterc                 C   s   G dd d}G dd d|}G dd d}| }| }| }|  t|| |  t|| |  t||  |  t||  |  td|  | tt|d | tt d S )Nc                   @   s   e Zd ZdS )z&BuiltinTest.test_isinstance.<locals>.CNr   r   r   r   r   rb  l  s   rb  c                   @   s   e Zd ZdS )z&BuiltinTest.test_isinstance.<locals>.DNr   r   r   r   r   rZ  n  s   rZ  c                   @   s   e Zd ZdS )z&BuiltinTest.test_isinstance.<locals>.ENr   r   r   r   r   Ep  s   r  rj   )r}   r   rn   rp   r   rb  rZ  r  r   rI   r3  r   r   r   test_isinstancek  s    zBuiltinTest.test_isinstancec                 C   s   G dd d}G dd d|}G dd d}| }| }| }|  t|| |  t|| |  t||  | ttd| | tt|d | tt d S )Nc                   @   s   e Zd ZdS )z&BuiltinTest.test_issubclass.<locals>.CNr   r   r   r   r   rb  ~  s   rb  c                   @   s   e Zd ZdS )z&BuiltinTest.test_issubclass.<locals>.DNr   r   r   r   r   rZ    s   rZ  c                   @   s   e Zd ZdS )z&BuiltinTest.test_issubclass.<locals>.ENr   r   r   r   r   r    s   r  rj   )r}   
issubclassrn   rp   r  r   r   r   test_issubclass}  s    zBuiltinTest.test_issubclassc                 C   sB  |  tdd |  tdd |  tdd |  tg dd |  ti d |  tddd	d G d
d d}| tt|  G dd d}| tt|  G dd d}| tt|  G dd d}| tt|  G dd d}| tt|  G dd d}| tt|  G dd dt}| tt|  d S )N123re   r   r   r  rf   r$   rd   rD  c                   @   s   e Zd Zdd ZdS )z$BuiltinTest.test_len.<locals>.BadSeqc                 S   s   t d S r   rI  r    r   r   r   r!     s    z,BuiltinTest.test_len.<locals>.BadSeq.__len__Nr,   r-   r.   r!   r   r   r   r   r    s   r  c                   @   s   e Zd Zdd ZdS )z(BuiltinTest.test_len.<locals>.InvalidLenc                 S   s   d S r   r   r    r   r   r   r!     s    z0BuiltinTest.test_len.<locals>.InvalidLen.__len__Nr  r   r   r   r   
InvalidLen  s   r  c                   @   s   e Zd Zdd ZdS )z&BuiltinTest.test_len.<locals>.FloatLenc                 S   s   dS )Ng      @r   r    r   r   r   r!     s    z.BuiltinTest.test_len.<locals>.FloatLen.__len__Nr  r   r   r   r   FloatLen  s   r  c                   @   s   e Zd Zdd ZdS )z)BuiltinTest.test_len.<locals>.NegativeLenc                 S   s   dS )Nir   r    r   r   r   r!     s    z1BuiltinTest.test_len.<locals>.NegativeLen.__len__Nr  r   r   r   r   NegativeLen  s   r  c                   @   s   e Zd Zdd ZdS )z%BuiltinTest.test_len.<locals>.HugeLenc                 S   s
   t jd S rN   r^   r~   r    r   r   r   r!     s    z-BuiltinTest.test_len.<locals>.HugeLen.__len__Nr  r   r   r   r   HugeLen  s   r  c                   @   s   e Zd Zdd ZdS )z-BuiltinTest.test_len.<locals>.HugeNegativeLenc                 S   s   t j d S )Nr9   r  r    r   r   r   r!     s    z5BuiltinTest.test_len.<locals>.HugeNegativeLen.__len__Nr  r   r   r   r   HugeNegativeLen  s   r  c                   @   s   e Zd ZdS )z)BuiltinTest.test_len.<locals>.NoLenMethodNr   r   r   r   r   NoLenMethod  r"   r  )rU   r   rn   rq   rp   r   r   )r   r  r  r  r  r  r  r  r   r   r   test_len  s(    zBuiltinTest.test_lenc              	      s  |  ttdd tddg d zddlm  W n tyN   dd	  Y n0 |  tt fd
dddgddggddgddgg |  ttdd g dg dg d dd }|  tt|g dg d |  tt|g dg dg d |  tt|g dg dg dg d |  ttttdg d dd  }|  tt|td!td"ddg | 	t
t | 	t
td#d d$ G d%d& d&}| 	tttd'd |  d(d) }| 	ttt|td* d S )+Nc                 S   s   | |  S r   r   r}  r   r   r   r     r"   z&BuiltinTest.test_map.<locals>.<lambda>r$   rf   )r$   rf   r7   r   sqrtc                 S   s
   t | dS )N      ?)powr}  r   r   r   r    s    z"BuiltinTest.test_map.<locals>.sqrtc                    s   t t | S r   )rW   mapr}  r  r   r   r     r"   r  r  r7         @       @g      "@r:  c                 S   s   | | S r   r   r   r   r   r   r     r"   )r$   re   rd   )r7   r$   rf   )r9   rf   r   c                  W   s   d}| D ]}|| }q|S r   r   )vZaccur(   r   r   r   plus  s    z"BuiltinTest.test_map.<locals>.plus)r$   re   r  )rf   r7   rd   )r6  r5  r7   )r$   r$   r   )r      r7   r9   )
r   r$   rf   r7   r  r  r  r  r  r  c                 S   s"   | d u r|S |d u r| S t | |S r   )r   rD  r   r   r   Max  s
    z!BuiltinTest.test_map.<locals>.Maxre   rd   c                 S   s   | S r   r   r}  r   r   r   r     r"   r   c                   @   s   e Zd Zdd ZdS )z$BuiltinTest.test_map.<locals>.BadSeqc                 s   s   t d V  d S r   rI  r    r   r   r   rG     s    z-BuiltinTest.test_map.<locals>.BadSeq.__iter__NrH   r   r   r   r   r    s   r  c                 S   s   | S r   r   r}  r   r   r   r     r"   c                 S   s   t d S r   rC   r}  r   r   r   r    s    z%BuiltinTest.test_map.<locals>.badfuncr6  )rU   rW   r  r  mathr  ro   r   r   rn   rp   rq   rD   )r   r  r  r  r  r   r  r   test_map  sX     zBuiltinTest.test_mapc                 C   s>   t tjd D ]*}ttd}ttd}| |t|| qd S )Nr$   zIs this the real life?)r  rR   r  r  rP   r]   rW   )r   r\   Zm1Zm2r   r   r   test_map_pickle  s    

zBuiltinTest.test_map_picklec              	   C   s6  |  tdd |  tdddd |  tdd |  tg dd |  tdddd |  tdddd |  td	ddd | td
 t  W d    n1 s0    Y  | ttd | ttd G dd d}| tt|  dD ]4}zt|t  W n ty   Y q0 | | q|  tdt	dd |  tdt	dd |  tddt	dd |  tdd dd  |  tdd dd |  tdd dd |  tddt	dd |  tddt	dd |  tdd dd dd t
dD }tdd |D }|j}|  t||dtt||dd  d S )N1231233r$   rd   re   r$   rd   re   r$   rd   re   r:  r  r9  z'max expected at least 1 argument, got 0r   r   c                   @   s   e Zd Zdd ZdS )z$BuiltinTest.test_max.<locals>.BadSeqc                 S   s   t d S r   rI  r  r   r   r   r*     s    z0BuiltinTest.test_max.<locals>.BadSeq.__getitem__NrL  r   r   r   r   r    s   r  )zmax(key=int)zmax(default=None)zmax(1, 2, default=None)zmax(default=None, key=int)zmax(1, key=int)zmax(1, 2, keystone=int)zmax(1, 2, key=int, abc=int)zmax(1, 2, key=1)r$   rK  r  defaultr  rK  c                 S   s   g | ]}t d qS rE  random	randranger   r(   r   r   r   
<listcomp>'  r"   z(BuiltinTest.test_max.<locals>.<listcomp>r;   c                 s   s   | ]}|t d fV  qdS r   Nr  r   elemr   r   r   r   (  r"   z'BuiltinTest.test_max.<locals>.<genexpr>r   )rU   r   rv  rp   rn   rq   r   rN  failr	   r  rY  r*   r1  reversedr   r  ZstmtdatarV  r   r   r   r   test_max  sJ    $
zBuiltinTest.test_maxc              	   C   s2  |  tdd |  tdddd |  tdd |  tg dd |  tdddd |  tdddd |  td	ddd	 | td
 t  W d    n1 s0    Y  | ttd | ttd G dd d}| tt|  dD ]4}zt|t  W n ty   Y q0 | | q|  tdt	dd |  tdt	dd |  tddt	dd |  tdd dd  |  tdd dd |  tdd dd |  tddt	dd |  tddt	dd |  tdd dd dd t
dD }tdd |D }|j}|  t||dt||dd  d S )Nr  r5   r$   rd   re   r  r:  r  r9  z'min expected at least 1 argument, got 0r   r   c                   @   s   e Zd Zdd ZdS )z$BuiltinTest.test_min.<locals>.BadSeqc                 S   s   t d S r   rI  r  r   r   r   r*   @  s    z0BuiltinTest.test_min.<locals>.BadSeq.__getitem__NrL  r   r   r   r   r  ?  s   r  )zmin(key=int)zmin(default=None)zmin(1, 2, default=None)zmin(default=None, key=int)zmin(1, key=int)zmin(1, 2, keystone=int)zmin(1, 2, key=int, abc=int)zmin(1, 2, key=1)r  r  r  r  r  c                 S   s   g | ]}t d qS r  r  r  r   r   r   r  b  r"   z(BuiltinTest.test_min.<locals>.<listcomp>r;   c                 s   s   | ]}|t d fV  qdS r  r  r  r   r   r   r   c  r"   z'BuiltinTest.test_min.<locals>.<genexpr>r   )rU   minrv  rp   rn   rq   r   rN  r  r	   r  rY  r*   r1  r  r   r   r   test_min-  sJ    $
zBuiltinTest.test_minc                 C   s   t td}| t|d | t|d | tt| | tt| | t|dd G dd dt}t | }| t|dd | tt| dd }| }| t|d | tt| | t|dd d S )	Nrd   r   r$   r   c                   @   s   e Zd Zdd Zdd ZdS )z#BuiltinTest.test_next.<locals>.Iterc                 S   s   | S r   r   r    r   r   r   rG   q  s    z,BuiltinTest.test_next.<locals>.Iter.__iter__c                 S   s   t d S r   )rY   r    r   r   r   __next__s  s    z,BuiltinTest.test_next.<locals>.Iter.__next__N)r,   r-   r.   rG   r  r   r   r   r   Iterp  s   r  c                   s   s
   dV  d S rN   r   r   r   r   r   genz  s    z"BuiltinTest.test_next.<locals>.gen)r  r  rU   rX   rn   rY   r   )r   rZ   r  r  r   r   r   	test_nexth  s    
zBuiltinTest.test_nextc                 C   s2   |  tdd |  tdd | ttd d S )Nr;   Z0o144iz-0o144r   )rU   octrn   rp   r    r   r   r   test_oct  s    zBuiltinTest.test_octc                 C   sz   t td}| tt |L |d |d |d |d |d |d W d    n1 sl0    Y  d S )Nw1+1
z+The quick brown fox jumps over the lazy dogz.
z
Dear John
,  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,  YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY)openr   
addCleanupr   r3   r   fpr   r   r   write_testfile  s    





zBuiltinTest.write_testfilec                 C   s   |    ttd}|z | |dd | | d | |dd | |dd | |dd	 | |d
d W d    n1 s0    Y  | ttd | ttd d S )Nrrf   r  z-The quick brown fox jumps over the lazy dog.
ZDearr;   z John
rF  r    r  za bs   a b)r  r  r   rU   readlinereadrn   rq   r  r   r   r   	test_open  s    
0zBuiltinTest.test_openzutf-8 mode is enabledc              	   C   s   t tj}zdD ]}|tjv rtj|= q|   td}ttd}| | |j	| W d    n1 sl0    Y  W tj
  tj| ntj
  tj| 0 d S )N)LC_ALLLANGLC_CTYPEFr  )rY  osenvironr  localegetpreferredencodingr  r   rU   encodingclearupdate)r   Zold_environrK  Zcurrent_locale_encodingr  r   r   r   test_open_default_encoding  s    




.

z&BuiltinTest.test_open_default_encodingc                 C   sD   t t}|$ | t|  W d    n1 s60    Y  d S r   )r  __file__r   r  get_inheritablefileno)r   fileobjr   r   r   test_open_non_inheritable  s    z%BuiltinTest.test_open_non_inheritablec                 C   sn  |  tdd |  tdd |  tdd |  tdd |  td	d
 |  tdd |  tdd |  tdd |  tdd |  tdd
 |  tttjtj | ttd |  ttdd |  tdd |  tdd |  tdd |  tdd |  tdd |  tdd |  tdd |  td d! |  td"d d S )#NrA   r   r   r   rx   r         r   r          ArG        r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )rU   rJ   rO   r^   r   rn   rp   r    r   r   r   test_ord  s,    zBuiltinTest.test_ordc              
   C   s$  |  tddd |  tddd |  tddd |  tddd |  tddd |  tddd |  tddd |  tddd	 |  td
dd |  td
dd
 |  td
dd |  td
dd | tddd | tddd | tddd | tddd | tddd | tddd | tddd | tddd | tddd | tddd | tddd | tddd dD ]j}dD ]^}dD ]R}t|tst|tst|tr | tt||| n| t|||d qĐqq| tddd | tddd |  tdd
dd | ttddd | tt |  tddd d |  tddd!d" |  td#dd$d%d& ttdd'}|  |d#d d( ttd#d }|  |dd( ttdd)}|  |dd*d |  |d*dd+d d S ),Nr   r$   rd   r9   i   r   r   r      @r7  rf   re   rw   r9  r  g      @g      0Ag      Ag       r         )rd   r  )r9         $@)r  g     @@g      8@r   r  y              ?gUUUUUU?y      ?LXz?)exp)baser  r  r6     )r  r  mod   )r  r   )r  r   )r  r  )	rU   r  r?  r   floatrn   rp   rq   r   )r   r   r   r  ZtwopowZfifth_powerZmod10r   r   r   test_pow  sb     zBuiltinTest.test_powc                 C   s   |    ttd}tj}tj}z|t_t t_| t d | t d | tdd |t_tj	  | 
tt t t_tdt_| 
ttdd tdt_| t d t t_| 
tt t`| 
ttd	 t`| 
ttd	 W |t_|t_|	  n|t_|t_|	  0 d S )
Nr  rC  z,The quick brown fox jumps over the lazy dog.ztesting
z	Dear JohnzNULL r   z    'whitespace'prompt)r  r  r   r^   stdinrz  r1   rU   inputclosern   rq   ioStringIOrp   EOFErrorrD   )r   r  Z	savestdinr{  r   r   r   
test_input  s<    



zBuiltinTest.test_inputc                 C   s   |  tdd |  tdd |  tdd |  tg d |  ti d g }|| |  t|d	 i }||d< |  t|d
 d S )Nr@   r   r   r4   r   r   r   r   r   r   )rU   r   r&   )r   rx   r   r   r   	test_repr:  s    
zBuiltinTest.test_reprc                 C   s0  |  tdd |  ttdt |  tdd |  tdd |  tdd |  tdd |  tdd |  tdd |  tdd |  td	d	 |  td
d |  tdd |  tdd |  tdd |  tdd |  tdd |  tdd |  tdd |  tdd |  tdd |  tdd |  tdd |  tdd |  tddd |  ttddt |  ttddt |  ttddt |  tdd |  tdd |  tdd |  td d |  tdd |  td!d! |  td"d" |  ttdt |  ttd"dt |  ttd"dt |  ttd"dt |  tddd#d | tt G d$d% d%}G d&d' d'}|  t| d( | ttdd)d* | tt|  | }d+d, |_| tt| | tt|d d S )-Nrw   r9  r  g    eAg@xDr=  g      $g    eg@xg?g?g333333$@g eAgg333333$g eg?g#@g33dAgg#g33dr  r   r   r$   g      @r   g      @g      ig      r  r
  )Znumberndigitsc                   @   s   e Zd Zdd ZdS )z)BuiltinTest.test_round.<locals>.TestRoundc                 S   s   dS )N   r   r    r   r   r   	__round__  s    z3BuiltinTest.test_round.<locals>.TestRound.__round__N)r,   r-   r.   r  r   r   r   r   	TestRound  s   r   c                   @   s   e Zd ZdS )z+BuiltinTest.test_round.<locals>.TestNoRoundNr   r   r   r   r   TestNoRound  s   r!  r  rd   re   c                  W   s   | S r   r   )argsr   r   r   r     r"   z(BuiltinTest.test_round.<locals>.<lambda>)rU   roundrV   r   r  rn   rp   r  )r   r   r!  tr   r   r   
test_roundG  sb    
zBuiltinTest.test_roundZLinuxalpha7y1CzItest will fail;  failure is probably due to a buggy system round functionc                 C   sT   |  tdd |  tdd |  tdd |  tdd |  tdd d S )Ng7y1Cg 7y1Cr'  g7y1Cg7y1C)rU   r#  r    r   r   r   test_round_large  s
    zBuiltinTest.test_round_largec                 C   sX   ddt dtddfD ]8}| t|d t| | tt|d tt| qd S )Nrv   g
ףp=J@z1234.56i@ r;   )decimalZDecimal	fractionsZFractionrU   r#  rV   r   r   r   r   test_bug_27936  s    
zBuiltinTest.test_bug_27936c                 C   s<   t tdd | tjd | tt tdd | tt  d S )Nr  r$   )setattrr^   rU   r  rn   rp   r    r   r   r   test_setattr  s    zBuiltinTest.test_setattrc                 C   sj  |  tg d |  tttddd |  ttttddd |  ttdd |  tttdd |  tdgdgdggg g d	 |  ttdd
d |  ttdd
dd |  ttddd |  ttddd |  tdd tdD d |  tdd tdD dd |  tdd tdD dd | tg dd |  tdd tdD d |  tdd tdD d
d |  tdd tdD d d! |  td"dgd# |  tdd"gd# |  ttd$gd% |  ttd$gd$d& |  ttg d$d& | t	t | t	td' | t	tg d( | t	tg d(d) | t	td*d+gd, t
d*t
d-g}| t	t|t
d, | t	tdgdgdgg | t	tddig | t	tddigd ddi | t	tg d) | t	tg d, | t	tg t
  G d.d/ d/}| tt|  g }td0d tdD | |  |g  d S )1Nr   rd   r     r9   i  r$   re   r$   rd   re   r  i  )startil   (    l    l   (        c                 s   s   | ]}|d  dkV  qdS rd   r   Nr   r  r   r   r   r     r"   z'BuiltinTest.test_sum.<locals>.<genexpr>r6  c                 s   s   | ]}|d  dkV  qdS r1  r   r  r   r   r   r     r"   il       c                 s   s   | ]}|d  dkV  qdS r1  r   r  r   r   r   r     r"   l    l           Fc                 s   s   | ]}|d  V  qdS rd   Nr   r  r   r   r   r     r"   g     6@c                 s   s   | ]}|d  V  qdS r2  r   r  r   r   r   r     r"   g     @c                 s   s   | ]}|d  V  qdS r2  r   r  r   r   r   r     r"   g     B@g     @r  g      ?g       z0.0z-0.0r   r*  r@   rG     cr"      bc                   @   s   e Zd Zdd ZdS )z$BuiltinTest.test_sum.<locals>.BadSeqc                 S   s   t d S r   rI  r  r   r   r   r*     s    z0BuiltinTest.test_sum.<locals>.BadSeq.__getitem__NrL  r   r   r   r   r    s   r  c                 s   s   | ]}|gV  qd S r   r   r   r   r   r   r     r"   )rU   sumrW   r  r  r   assertIsr   rn   rp   	bytearrayrq   )r   r   r  emptyr   r   r   test_sum  sX    "  zBuiltinTest.test_sumc                 C   s,   |  tdtd | tdtd d S )Nr@   r  r   )rU   rV   r   r    r   r   r   	test_type  s    zBuiltinTest.test_typec                   C   s   t  S r   )varsr   r   r   r   get_vars_f0  s    zBuiltinTest.get_vars_f0c                  C   s   t   d} d}t S )Nr$   rd   )rQ   r<  r;  rD  r   r   r   get_vars_f2  s    zBuiltinTest.get_vars_f2c                   @   s   e Zd Zdd ZeedZdS )zBuiltinTest.C_get_varsc                 C   s   ddiS )Nrx   rd   r   r    r   r   r   getDict  s    zBuiltinTest.C_get_vars.getDict)fgetN)r,   r-   r.   r>  propertyr  r   r   r   r   
C_get_vars  s   rA  c                 C   s   |  tt tt  |  tttttt |  |  i  |  |  ddd | ttdd | ttd |  t| 	 ddi d S )Nr$   rd   rD  r   rx   )
rU   setr;  r+  r^   r<  r=  rn   rp   rA  r    r   r   r   	test_vars  s    zBuiltinTest.test_varsc                 C   sJ  d}d}g d}|  tt||| g d}|  tt||| d}|  tt||| G dd d}|  tt|| | |  tt g  |  ttg  g  | ttd  G dd d}| tt||  | tt|t  G d	d
 d
}|  tt| tdtttd G dd d}| t	tt| |  d S )Nr/  rf   r6  r   )r$   rf   )rd   r6  )re   r   )rf   r6  r   r  c                   @   s   e Zd Zdd ZdS )zBuiltinTest.test_zip.<locals>.Ic                 S   s   |dk s|dkrt |d S )Nr   rd   rf   r%   r   r(   r   r   r   r*     s    z+BuiltinTest.test_zip.<locals>.I.__getitem__NrL  r   r   r   r   I  s   rH  c                   @   s   e Zd ZdS )zBuiltinTest.test_zip.<locals>.GNr   r   r   r   r   G  s   rI  c                   @   s   e Zd Zdd ZdS )z4BuiltinTest.test_zip.<locals>.SequenceWithoutALengthc                 S   s   |dkrt n|S d S Nr6  rF  rG  r   r   r   r*   $  s    z@BuiltinTest.test_zip.<locals>.SequenceWithoutALength.__getitem__NrL  r   r   r   r   SequenceWithoutALength#  s   rK  r	  r6  c                   @   s   e Zd Zdd ZdS )z$BuiltinTest.test_zip.<locals>.BadSeqc                 S   s   |dkrt n|S d S rJ  rI  rG  r   r   r   r*   /  s    z0BuiltinTest.test_zip.<locals>.BadSeq.__getitem__NrL  r   r   r   r   r  .  s   r  )
rU   rW   ziprn   rp   rD   rF   r  	enumeraterq   )r   rx   r)  r$  rH  rI  rK  r  r   r   r   test_zip
  s.    zBuiltinTest.test_zipc                 C   s@   d}d}g d}t tjd D ]}t||}| ||| qd S )Nr/  rD  rE  r$   )r  rR   r  rL  r]   )r   rx   r)  r$  r\   Zz1r   r   r   test_zip_pickle6  s    
zBuiltinTest.test_zip_picklec                    s^   t   G  fddd}| t }t|  W d    n1 sB0    Y  | |j  d S )Nc                       s   e Zd Z fddZdS )z6BuiltinTest.test_zip_bad_iterable.<locals>.BadIterablec                    s    d S r   r   r    	exceptionr   r   rG   B  s    z?BuiltinTest.test_zip_bad_iterable.<locals>.BadIterable.__iter__NrH   r   rP  r   r   BadIterableA  s   rR  )rp   rn   rL  r6  rQ  )r   rR  cmr   rP  r   test_zip_bad_iterable>  s
    (z!BuiltinTest.test_zip_bad_iterablec                 C   s*   t g g}t  | tt| d S r   )rL  gcZcollectr}   Z
is_trackedrX   )r   rZ   r   r   r   test_zip_result_gcJ  s    
zBuiltinTest.test_zip_result_gcc              	      s,    tddd dd } fdd}||    fdd	}|d
 |d |d |d |d |d |t |d  G dd d} tt| d  ttt d  ttt t  t d} |d  tt jd  tt jt   tt jd  G dd d}  t| d   t| dd   t| dd G dd d}G dd dt}t||fD ]z}	|	 }
  t|
t|
   t|
dt|
  	tdt
|	j  t|
d W d    n1 s0    Y  qG dd dt}  td|dd  d S )!Nre   r@   r  c                  S   s\   G dd dt } G dd d| }G dd dt }G dd d|}G d	d
 d
|}| |||fS )Nc                   @   s   e Zd Zdd Zdd ZdS )z7BuiltinTest.test_format.<locals>.classes_new.<locals>.Ac                 S   s
   || _ d S r   r}  r   r   r   r   r   _  s    z@BuiltinTest.test_format.<locals>.classes_new.<locals>.A.__init__c                 S   s   t | j| S r   r0   r   r   format_specr   r   r   
__format__a  s    zBBuiltinTest.test_format.<locals>.classes_new.<locals>.A.__format__Nr,   r-   r.   r   rZ  r   r   r   r   r   ^  s   r   c                   @   s   e Zd ZdS )zBBuiltinTest.test_format.<locals>.classes_new.<locals>.DerivedFromANr   r   r   r   r   DerivedFromAc  s   r\  c                   @   s   e Zd ZdS )z<BuiltinTest.test_format.<locals>.classes_new.<locals>.SimpleNr   r   r   r   r   Simplef  r"   r]  c                   @   s   e Zd Zdd Zdd ZdS )zGBuiltinTest.test_format.<locals>.classes_new.<locals>.DerivedFromSimplec                 S   s
   || _ d S r   r}  r   r   r   r   r   h  s    zPBuiltinTest.test_format.<locals>.classes_new.<locals>.DerivedFromSimple.__init__c                 S   s   t | j| S r   rW  rX  r   r   r   rZ  j  s    zRBuiltinTest.test_format.<locals>.classes_new.<locals>.DerivedFromSimple.__format__Nr[  r   r   r   r   DerivedFromSimpleg  s   r^  c                   @   s   e Zd ZdS )zHBuiltinTest.test_format.<locals>.classes_new.<locals>.DerivedFromSimple2Nr   r   r   r   r   DerivedFromSimple2l  r"   r_  )r   )r   r\  r]  r^  r_  r   r   r   classes_new]  s    z,BuiltinTest.test_format.<locals>.classes_newc                    s\     t| ddd   t|ddd   t|ddd   t|d	d
d d S )Nre   specZ3specrf   Z4specr6  abcZ5abcr9   ZabcdefZ10abcdef)rU   format)r   r\  r^  r_  r    r   r   
class_testo  s    z+BuiltinTest.test_format.<locals>.class_testc                    s.     t| dt|    t| t|  d S Nr@   )rU   rc  r0   )rr  r    r   r   empty_format_specx  s    z2BuiltinTest.test_format.<locals>.empty_format_specl   .@r9  g]]^Ug]]^g;q7r*g;q7rc                   @   s   e Zd Zdd ZdS )z0BuiltinTest.test_format.<locals>.BadFormatResultc                 S   s   dS )Nr9  r   rX  r   r   r   rZ    s    z;BuiltinTest.test_format.<locals>.BadFormatResult.__format__Nr,   r-   r.   rZ  r   r   r   r   BadFormatResult  s   rh  rf   z<object object atc                   @   s   e Zd Zdd ZdS )z"BuiltinTest.test_format.<locals>.Ac                 S   s
   t d|S re  )rc  )r   Zfmt_strr   r   r   rZ    s    z-BuiltinTest.test_format.<locals>.A.__format__Nrg  r   r   r   r   r     s   r   r   c                   @   s   e Zd ZdS )z"BuiltinTest.test_format.<locals>.BNr   r   r   r   r   r    s   r  c                   @   s   e Zd ZdS )z"BuiltinTest.test_format.<locals>.CNr   r   r   r   r   rb    s   rb  z\b%s\bc                   @   s   e Zd ZdS )z/BuiltinTest.test_format.<locals>.DerivedFromStrNr   r   r   r   r   DerivedFromStr  r"   ri  r   r8   z
         0)rU   rc  r   rn   rp   rZ  r}   
startswithr0   rv  reescaper,   )r   r`  rd  rf  rh  r   r   r  rb  clsobjri  r   r    r   test_formatV  sL    
.zBuiltinTest.test_formatc                 C   s   |  tdd |  tdd |  tdd |  tdd d	 |  tdd d d
 |  tdd  d |  tdd d  d d S )Nr   Z0b0r$   Z0b1r   z-0b1rd   r   ZD0b100000000000000000000000000000000000000000000000000000000000000000ZC0b11111111111111111111111111111111111111111111111111111111111111111zE-0b100000000000000000000000000000000000000000000000000000000000000000zD-0b11111111111111111111111111111111111111111111111111111111111111111)rU   binr    r   r   r   test_bin  s    zBuiltinTest.test_binc                 C   s0   t d}| t|jdd | t|jdd d S )Ns   abc   1r$   s   1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111)r7  rn   rq   	translaterp   r   r   r   r   test_bytearray_translate  s    z$BuiltinTest.test_bytearray_translatec                 C   s$   t  }ttd}| t|j| d S )NrM  )r7  r  r   rn   rq   extend)r   arrayZbad_iterr   r   r   test_bytearray_extend_error  s    
z'BuiltinTest.test_bytearray_extend_errorc                 C   sL   d t tfD ]<}t|}| | | | t|dd | jt|ddd q
d S )Nr$   rd   rD  )EllipsisNotImplementedrV   r6  rn   rp   )r   consttpr   r   r   test_construct_singletons  s
    z%BuiltinTest.test_construct_singletonsc                 C   s|   |  ttt |  t | t W d    n1 s80    Y  |  t | t  W d    n1 sn0    Y  d S r   )rr   DeprecationWarningboolry  r}   r   r    r   r   r   test_warning_notimplemented  s
    (z'BuiltinTest.test_warning_notimplementedN)Wr,   r-   r.   r]   ru   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r4  rB  rO  ri  ro  ry  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  unittestskipIfr^   r   	utf8_moder  r  r  r  r  r  r%  platformsystemrj  machineZlinux_alphar#  Zsystem_round_bugr(  r+  r-  r9  r:  staticmethodr<  r=  r   rA  rC  rN  rO  rT  r
   Zcpython_onlyrV  ro  rq  rt  rw  r|  r  r   r   r   r   rQ      s   #"1:&ME$	
"<;;
>%Q
	4

	,
e	rQ   c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Ze	
ejjddd Ze	
ejjddd Ze	
ejjddd Zdd Ze	
ejjddd Zdd ZdS )TestBreakpointc                 C   sH   t  | _| | jj | jt | _| jd= | jttdtj	 d S )NPYTHONBREAKPOINTbreakpointhook)
r   	resourcesr  r  enter_contextr   envr   r^   __breakpointhook__r    r   r   r   setUp  s    zTestBreakpoint.setUpc                 C   s:   t d}t  W d    n1 s$0    Y  |  d S Npdb.set_trace)r   
breakpointZassert_called_oncer   mockr   r   r   test_breakpoint  s    
$zTestBreakpoint.test_breakpointc                 C   s   t  }|t_t  |  d S r   r   r^   r  r  assert_called_once_withr   my_breakpointhookr   r   r   'test_breakpoint_with_breakpointhook_set  s    z6TestBreakpoint.test_breakpoint_with_breakpointhook_setc                 C   sd   t  }|t_t  |  tjt_td}t  |  W d    n1 sN0    Y  |  d S r  )r   r^   r  r  r  r  r   )r   r  r  r   r   r   )test_breakpoint_with_breakpointhook_reset  s    
&z8TestBreakpoint.test_breakpoint_with_breakpointhook_resetc                 C   s6   t  }|t_tdddddd |jdddddd d S )Nr$   rd   re   rf   r6  ZfourZfiver  r  r   r   r   &test_breakpoint_with_args_and_keywords
  s    z5TestBreakpoint.test_breakpoint_with_args_and_keywordsc              	   C   s*   dd }|t _| jttdddddd d S )	Nc                   S   s   d S r   r   r   r   r   r   r    s    zMTestBreakpoint.test_breakpoint_with_passthru_error.<locals>.my_breakpointhookr$   rd   re   rf   r6  r  )r^   r  rn   rp   r  r  r   r   r   #test_breakpoint_with_passthru_error  s    z2TestBreakpoint.test_breakpoint_with_passthru_errorz-E was givenc                 C   sH   d| j d< td"}td |d W d    n1 s:0    Y  d S )Nr   r  zbuiltins.int7r  r   r  r  r  r   r   r   test_envar_good_path_builtin  s    

z+TestBreakpoint.test_envar_good_path_builtinc                 C   sD   d| j d< td}t  |  W d    n1 s60    Y  d S Nzsys.exitr  r  r  r   r   r   test_envar_good_path_other  s    

z)TestBreakpoint.test_envar_good_path_otherc                 C   sD   d| j d< td}t  |  W d    n1 s60    Y  d S )Nr4   r  r  )r  r   r  assert_not_calledr  r   r   r   test_envar_good_path_noop_0$  s    

z*TestBreakpoint.test_envar_good_path_noop_0c                 C   sD   d| j d< td}t  |  W d    n1 s60    Y  d S )Nr@   r  r  r  r  r   r   r   !test_envar_good_path_empty_string+  s    

z0TestBreakpoint.test_envar_good_path_empty_stringc              	   C   s   dD ]}| j |dr || jd< | jtd}| jtdd}t  | t|j	d| d | |j
t |  W d    q1 s0    Y  qd S )	N).z..z.foozfoo.z.intzint.z.foo.barz	..foo.barz/./Znosuchbuiltinznosuchmodule.nosuchcallable)envarr  r  T)quietz*Ignoring unimportable $PYTHONBREAKPOINT: "r   )subTestr  r  r  r   r   r  rU   r0   messagecategoryRuntimeWarningr  )r   r  r  r  r   r   r   test_envar_unimportable2  s    

z&TestBreakpoint.test_envar_unimportablec                 C   sJ   d| j d< td$}tt_t  |  W d    n1 s<0    Y  d S r  )r  r   r   r^   r  r  r  r  r   r   r   #test_envar_ignored_when_hook_is_setE  s
    

z2TestBreakpoint.test_envar_ignored_when_hook_is_setN)r,   r-   r.   r  r  r  r  r  r  r  r  r^   r   ignore_environmentr  r  r  r  r  r  r   r   r   r   r    s    



r  z,the pty and signal modules must be availablec                   @   sZ   e Zd Zedd Zdd Zdd Zddd	Zd
d Zdd Z	dd Z
dd Zdd ZdS )PtyTestsc                 C   s   d S r   r   )signumframer   r   r   handle_sighupR  s    zPtyTests.handle_sighupc              
   C   sB   t  t j| j}z| ||W t  t j| S t  t j| 0 d S r   )signalSIGHUPr  
_run_child)r   childterminal_inputZ
old_sighupr   r   r   	run_childY  s    zPtyTests.run_childc              
   C   s  t  \}}zt \}}W nN ttfyj } z2t | t | | d|  W Y d }~n
d }~0 0 |dkrznzJt	
d t | t|d}|| W d    n1 s0    Y  W n   t  Y n0 W t d nt d 0 t | t || t|d<}	g }
|	  }|dkr0q>|
| qW d    n1 sT0    Y  t|
dkrt }zt |d}W n ty   Y qY n0 |sq|| qrt | |dd	}| d
t|
|f  t | tj|dd |
S )Nzpty.fork() raised {}r   rd   r  r  r@   i  r   rj  z9got %d lines in pipe but expected 2, child output was:
%s)exitcode)r  pipeptyforkOSErrorr  r  skipTestrc  r  alarmr  	traceback	print_exc_exitr3   r  r  r&   r   r7  r  ru  decoder  r
   Zwait_process)r   r  r  r  r  pidfdr3  wpipeZrpipelinesr2   Zchild_outputchunkr   r   r   r  `  sT    



*

.


zPtyTests._run_childNc                    s   t j rt j s| d  fdd}| ||d }| |d ddh |d dkrf| d t|d	 }r|d
}n|t jj	}| 
|| d S )Nzstdin and stdout must be ttysc                    sj   r4t jtj ddt_t jtj ddt_tdtj oJtj | d ttt	 | d d S )Nsurrogateescape)r  errorsreplaceztty =file)
r  TextIOWrapperr^   r  detachrz  printisattyr   r  r  r  stdio_encodingr   r   r    s    z'PtyTests.check_input_tty.<locals>.childs   
r   z
tty = Trueztty = Falsez%standard IO in should have been a ttyr$   r  )r^   r  r  rz  r  r  r,  r   r  r  rU   )r   r  r  r  r  r  Zinput_resultr   r   r  r   check_input_tty  s    

zPtyTests.check_input_ttyc                 C   s   |  dd d S )Nr  s   quux)r  r    r   r   r   test_input_tty  s    zPtyTests.test_input_ttyc                 C   s   dt jv r| d d S )Nr  zthe readline module is loaded)r^   modulesr  r    r   r   r   skip_if_readline  s    
zPtyTests.skip_if_readlinec                 C   s   |    | ddd d S )N   prompté   quuxzutf-8r  r  r    r   r   r   test_input_tty_non_ascii  s    z!PtyTests.test_input_tty_non_asciic                 C   s   |    | ddd d S )Nr  r  r   r  r    r   r   r   'test_input_tty_non_ascii_unicode_errors  s    z0PtyTests.test_input_tty_non_ascii_unicode_errorsc                 C   s(   dd }|  |d}d}| || d S )Nc                 S   sB   t dtj | d t t_td t dttj	 | d d S )Nzstdin.isatty():r  r  z	captured:)
r  r^   r  r  r  r  rz  r  r   getvaluer  r   r   r   r    s    
z3PtyTests.test_input_no_stdout_fileno.<locals>.childs   quux)zstdin.isatty(): Truezcaptured: 'prompt')r  ZassertSequenceEqual)r   r  r  r   r   r   r   test_input_no_stdout_fileno  s    z$PtyTests.test_input_no_stdout_fileno)N)r,   r-   r.   r  r  r  r  r  r  r  r  r  r  r   r   r   r   r  M  s   
@

r  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )

TestSortedc                 C   s   t td}|d d  }t| | |t| | || |  t| | |t|dd d | || t| | |t|dd | || d S )Nr;   c                 S   s   |  S r   r   r}  r   r   r   r     r"   z'TestSorted.test_basic.<locals>.<lambda>r  T)reverse)rW   r  r  shufflerU   r1  r   r  )r   r  copyr   r   r   
test_basic  s    


zTestSorted.test_basicc                 C   s   t g  | t t g d W d    n1 s20    Y  t g d d | t t g d  W d    n1 sr0    Y  d S )N)iterabler  )r1  rn   rp   r    r   r   r   test_bad_arguments  s    (zTestSorted.test_bad_argumentsc                 C   sv   d}t ttg}|D ]}| t|t|| qdt|}tttt ttj	g}|D ]}| t|t|| qTd S )NZabracadabrar@   )
rW   r   r0   rU   r1  joinrB  	frozensetrY  fromkeys)r   r   r-  Tr   r   r   test_inputtypes  s    
zTestSorted.test_inputtypesc                 C   s"   d  }| tt|d dd  d S )Nz,The quick Brown fox Jumped over The lazy Dogc                 S   s   dS r   r   r   r   r   r   r   
  r"   z.TestSorted.test_baddecorator.<locals>.<lambda>)splitrn   rp   r1  )r   r  r   r   r   test_baddecorator  s    zTestSorted.test_baddecoratorN)r,   r-   r.   r  r  r  r  r   r   r   r   r    s   
r  c                   @   s   e Zd Zdd ZdS )ShutdownTestc                 C   s4   d}t d|dd\}}}| ddg|   d S )Naf  if 1:
            import builtins
            import sys

            class C:
                def __del__(self):
                    print("before")
                    # Check that builtins still exist
                    len(())
                    print("after")

            c = C()
            # Make this module survive until builtins and sys are cleaned
            builtins.here = sys.modules[__name__]
            sys.here = sys.modules[__name__]
            # Create a reference loop so that this module needs to go
            # through a GC phase.
            here = sys.modules[__name__]
            z-cr   )ZPYTHONIOENCODINGbeforeZafter)r   rU   r  
splitlines)r   r   rcouterrr   r   r   test_cleanup  s
    zShutdownTest.test_cleanupN)r,   r-   r.   r  r   r   r   r   r    s   r  c                   @   sL   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S )TestTypec                 C   sn  t ddi }| |jd | |jd | |jt | |jtf | |jt | }| t || | |j	| G dd d}t d|t
fddd i}| |jd | |jd | |jt | |j|t
f | |jt
 | d|j | d	|j |d
}| |d
 | t || | |j	| | | d | | d | |ddd d S )Nr   r   c                   @   s   e Zd Zdd ZdS )z!TestType.test_new_type.<locals>.Bc                 S   s   d|  S )Nzham%dr   r    r   r   r   r  <  s    z%TestType.test_new_type.<locals>.B.hamN)r,   r-   r.   r  r   r   r   r   r  ;  s   r  rb  r  c                 S   s   d|  S )Nzspam%sr   r    r   r   r   r   >  r"   z(TestType.test_new_type.<locals>.<lambda>r  r   Zham42Zspam42rd   littles   * )rV   rU   r,   r.   r-   	__bases__r   r6  __base__r!  r   r,  r  r/  r  r  to_bytes)r   r   r   r  rb  r   r   r   test_new_type0  s2    zTestType.test_new_typec                 C   sv   |  t  tddi dd W d    n1 s00    Y  |  t tddi d W d    n1 sh0    Y  d S )Nrx   r   r6  r}  rY  )rn   rp   rV   r    r   r   r   test_type_nokwargsN  s    .zTestType.test_type_nokwargsc              	   C   sV  dD ]f}| j |dF t|di }| |j| | |j| | |jt W d    q1 s`0    Y  q| t tddi  W d    n1 s0    Y  | t tddi  W d    n1 s0    Y  | t tddi  W d    n1 s0    Y  tddi }dD ]d}| j |d@ ||_| |j| | |jd | |jt W d    n1 sx0    Y  q tddi }| t d|_W d    n1 s0    Y  | |jd | t d|_W d    n1 s0    Y  | |jd | t d|_W d    n1 s:0    Y  | |jd d S )N)r      Ä   🐍zB.A42r@   ra   r   zA Bu   ABr  rb  )	r  rV   rU   r,   r.   r-   rn   rq   rp   )r   rb   r   rb  r   r   r   test_type_nameT  s:    .**,2&&&zTestType.test_type_namec                 C   s   t ddddi}| |jd | |jd | |jt | t  t ddddi W d    n1 sj0    Y  | |jd d|_| |jd | |jd | t d|_W d    n1 s0    Y  | |jd d S )Nr   r   r.   zB.C   BzD.E)rV   rU   r,   r.   r-   rn   rp   )r   r   r   r   r   test_type_qualnameu  s    .$zTestType.test_type_qualnamec                 C   s   dD ]"}t ddd|i}| |j| q| t  t ddddi W d    n1 sX0    Y  t ddi }| |jd  dD ]}||_| |j| qd S )N)r   r  r  x y   xr   Nr   r   r      xy)r   r  r  r  r  r  r   N)rV   rU   r   rn   UnicodeEncodeError)r   r   r   r   r   r   test_type_doc  s    .zTestType.test_type_docc                 C   s  |  t t  W d    n1 s&0    Y  |  t tdd W d    n1 sZ0    Y  |  t tddi d W d    n1 s0    Y  |  t tddi d W d    n1 s0    Y  |  t tdg i  W d    n1 s0    Y  |  t" tddti  W d    n1 s@0    Y  |  t tddi  W d    n1 sx0    Y  |  t tdtfi  W d    n1 s0    Y  |  t  tdttfi  W d    n1 s0    Y  d S )Nr   r   r  r   )rn   rp   rV   r-  MappingProxyTyper~  r   r0   r    r   r   r   test_bad_args  s$    $(,,,2,.zTestType.test_bad_argsc                 C   sj  |  t  tddddi W d    n1 s00    Y  |  t" tdtfddi W d    n1 sl0    Y  |  t  tddddi W d    n1 s0    Y  |  t  tddddi W d    n1 s0    Y  |  t  tddddi W d    n1 s0    Y  |  t" tdddd	d
 W d    n1 sZ0    Y  |  t  tddddi W d    n1 s0    Y  |  t  tddddi W d    n1 s0    Y  G dd d}|  t" td|fddi W d    n1 s0    Y  |  t" td|fddi W d    n1 s\0    Y  d S )Nr   r   r  r  r   r@   r   r  r   )r  r   )r  r  )__weakref__r  c                   @   s   e Zd ZdS )z"TestType.test_bad_slots.<locals>.BNr   r   r   r   r   r    s   r  r  r  )rn   rp   rV   r   rq   )r   r  r   r   r   test_bad_slots  s*    .0..02002zTestType.test_bad_slotsc                 C   sV   t ddg}|d t| }tdd|}| t|j d d ddg d S )N)rx   r$   )r)  rd   rx   rb  r   rd   )rd  OrderedDictmove_to_endrW   itemsrV   rU   r  )r   Zodr   rb  r   r   r   test_namespace_order  s
    
zTestType.test_namespace_orderN)r,   r-   r.   r  r  r  r  r  r
  r  r  r   r   r   r   r  /  s   !r  c                 C   s   ddl m} ||t |S )Nr   )DocTestSuite)doctestr  ZaddTestr   )loaderZtestspatternr  r   r   r   
load_tests  s    r  rg   )Kr   r  r   rd  r)  r*  rU  r  r  r  rR   r  r  rk  r^   r  r-  r  rl  
contextlibr   	functoolsr   inspectr   	itertoolsr   textwrapr   r   r   operatorr	   ru  r
   Ztest.supportr   r   r   r   r   r   Ztest.support.script_helperr   Zunittest.mockr   r   r  r  ro   r   r/   r1   r   r~   rq   r0   rO   Ztest_conv_no_signZtest_conv_signrB   rF   rM   rP   ZTestCaserQ   r  Z
skipUnlessr  r  r  r  r  r,   mainr   r   r   r   <module>   s    

            gi
 +" 
