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99éc   )Z100éd   )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¡o¼e9 <¡  ;de¡Z=e>dfƒdfkZ?e- .e=oÖe?dg¡dhdi„ ƒZ@djdk„ ZAdldm„ ZBdndo„ ZCdpdq„ ZDeEdrds„ ƒZFeEdtdu„ ƒZGG dvdw„ dweHƒZIdxdy„ ZJdzd{„ ZKd|d}„ ZLd~d„ ZMeNjOd€d„ ƒZPd‚dƒ„ ZQd„d…„ ZRd†d‡„ ZSdˆd‰„ ZTdŠd‹„ ZUdŒd„ ZVdŽS )Ú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 s°0    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 )Néûÿÿÿr   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   ÚAéa   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 )ÚdocNr   r   r   r   r   rª   f  r"   z#BuiltinTest.test_compile.<locals>.frÐ   )r   Trå   TT)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 )	zCMake sure top level non-await codes get the correct coroutine flags©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=©ÚmsgN)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 )aI  Test whether code some top level await can be compiled.

        Make sure it compiles only with the PyCF_ALLOW_TOP_LEVEL_AWAIT flag
        set, and make sure the generated code object has the CO_COROUTINE flag
        set in order to execute it with  `await eval(.....)` instead of exec,
        or via a FunctionType.
        c                 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Ü   Nrõ   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 ƒ }z¼t||ƒ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 s¾0    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 )z·
        With the PyCF_ALLOW_TOP_LEVEL_AWAIT flag added in 3.8, we want to
        make sure AsyncGenerators are still properly not marked with the
        CO_COROUTINE flag.
        z~async def ticker():
                for i in range(10):
                    yield i
                    await asyncio.sleep(0)rÜ   rÙ   rõ   ZtickerN)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Zdd„ Zdd„ ZdS )z(BuiltinTest.test_general_eval.<locals>.Mz9Test mapping interface versus possible calls from eval().c                 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é   r*   rV  r   r   r   r   ÚMz  s   rW  rx   r5  r)  zdir()rT  z	globals()zlocals()c                   @   s   e Zd ZdZdS )z(BuiltinTest.test_general_eval.<locals>.AzNon-mappingN)r,   r-   r.   ré   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.keysN©r,   r-   r.   r*   rV  r   r   r   r   ÚD’  s   rZ  z[locals() for i in (2,3)]c                   @   s$   e Zd ZdZi Zdd„ Zdd„ ZdS )z2BuiltinTest.test_general_eval.<locals>.SpreadSheetz6Sample application showing nested, calculated lookups.c                 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   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.keysNrY  r   r   r   r   ÚCµ  s   rb  )
rN  rU   rá   rn   Ú	NameErrorrW   rp   rX  ÚcollectionsÚUserDict)
r   rW  Ú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 s”0    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   Ú	ExceptionrX  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0x10iðÿÿÿz-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 )Niöÿÿÿr   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 s¬0    Y  |  ttd¡ |  ttd¡ G dd„ dƒ}|  tt|ƒ ¡ dD ]4}zt|tƒ ƒ W n ty   Y qô0 |  |¡ 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  rX  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 s¬0    Y  |  ttd¡ |  ttd¡ G dd„ dƒ}|  tt|ƒ ¡ dD ]4}zt|tƒ ƒ W n ty   Y qô0 |  |¡ 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  rX  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0o144iœÿÿÿz-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 s–0    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ƒ}z„d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ä  )rX  Ú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ƒsìt|tƒsìt|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      à?ªLXèz¶ë?)Ú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    eÍÍAg@Œµx¯Dr=  g      $Àg    eÍÍÁg@Œµx¯Ägš™™™™™¹?gš™™™™™ñ?g333333$@gÍÌ eÍÍAgš™™™™™ñ¿g333333$ÀgÍÌ eÍÍÁgÍÌÌÌÌÌì?gÍÌÌÌÌÌ#@g33óÿdÍÍAgÍÌÌÌÌÌì¿gÍÌÌÌÌÌ#Àg33óÿdÍÍÁr  rÐ   r   r$   g      @r‚   g      @g      Àiúÿÿÿg      À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ç€à7yÃ1CzItest 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ÿà7yÃ1Cg €à7yÃ1Cr'  g€à7yÃ1Cg€à7yÃ1C)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 sô0    Y  q†G 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rªc                   @   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 sŒ0    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                   @   s^   e Zd 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 )ÚPtyTestszhTests that use a pseudo terminal to guarantee stdin and stdout are
    terminals in the test environmentc                 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rðznzJt	 
d¡ t  |¡ t|dƒ}||ƒ W d   ƒ n1 s´0    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râtƒ }zt  |d¡}W n tyœ   Y q¶Y 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Ã©ó   quuxéz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   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  Ú	frozensetrX  Ú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}  ©rX  )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 s˜0    Y  |  t¡ tddi ƒ W d   ƒ n1 sÎ0    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 sº0    Y  |  |jd¡ |  t¡ d|_W d   ƒ n1 sú0    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   Aí³œBr  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 sÊ0    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|¡ q€d S )N)r‰   rþ  rÿ  úx yó   xr†   Nrº   r   ré   õ   xí³œy)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 s’0    Y  |   t¡ tddi d W d   ƒ n1 sÊ0    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 s²0    Y  |   t¡  tdttfi ƒ W d   ƒ n1 sî0    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 s¦0    Y  |   t¡  tddddiƒ W d   ƒ n1 sà0    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 s–0    Y  |   t¡  tddddiƒ W d   ƒ n1 sÒ0    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
 +" 
