o
    GXhW                    @   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% d dl&m'Z'm(Z(m)Z) d dl*m+Z+ d dl,m-Z- d dl.m/Z/m0Z0 z
d dl1Z1d dl2Z2W n e3y   d Z1Z2Y nw G dd dZ4G dd dZ5G dd dZ6dddddddddde7ej8ej8fde9fd d!e9fd"e9fd#e9fd$e9fe:d%d&d'fe;d(e9fgZ<dddddddd)e9fdd*e9fe7ej8ej8fde9fd+e9fd!e9fd"e9fd#e9fd$e9fe:d%d&d'fe;d(e9fgZ=G d,d- d-Z>G d.d/ d/Z?d0d1 Z@d2d3 ZAG d4d5 d5ejBZCG d6d7 d7ejBZDeEe1d8G d9d: d:ejBZFG d;d< d<ejBZGG d=d> d>ejBZHG d?d@ d@ejBZIdAdB ZJeKdCkreL  dS dS )D    N)	ExitStack)partial)CO_COROUTINE)product)dedent)AsyncGeneratorTypeFunctionType)neg)support)	swap_attrmaybe_get_event_loop_policy)EnvironmentVarGuardTESTFNunlink)assert_python_ok)check_warnings)	MagicMockpatchc                   @   $   e Zd Zdd Zdd Zdd ZdS )Squaresc                 C      || _ g | _d S Nmaxsofarselfr    r   ;/opt/python-3.10.19/usr/lib/python3.10/test/test_builtin.py__init__+      
zSquares.__init__c                 C   
   t | jS r   lenr   r   r   r   r   __len__/   s   
 zSquares.__len__c                 C   sZ   d|  kr| j k st tt| j}||kr(| j||  |d7 }||ks| 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                   @   r   )
StrSquaresc                 C   r   r   r   r   r   r   r   r   ;   r    zStrSquares.__init__c                 C   r!   r   r"   r$   r   r   r   r%   ?      
zStrSquares.__len__c                 C   s^   d|  kr| j k st tt| j}||kr*| jt||  |d7 }||ks| j| S r&   )r   r(   r#   r   r)   strr*   r   r   r   r-   B   s   

zStrSquares.__getitem__Nr.   r   r   r   r   r2   9   s    r2   c                   @      e Zd Zdd ZdS )	BitBucketc                 C      d S r   r   )r   liner   r   r   writeL      zBitBucket.writeN)r/   r0   r1   r9   r   r   r   r   r6   K       r6   )0r   )1r'   )9	   )10
   )Z99c   )Z100d   )Z314:  ) 314rD   )z314 rD   )  		  314  		  rD   z  1x)  1  r'   z  1    z  		  s   \u0663\u0661\u0664 zraw-unicode-escaperD   i   rE   rF   rG   c                   @   r5   )TestFailingBoolc                 C      t r   RuntimeErrorr$   r   r   r   __bool__|   r:   zTestFailingBool.__bool__N)r/   r0   r1   rN   r   r   r   r   rJ   {   r;   rJ   c                   @   r5   )TestFailingIterc                 C   rK   r   rL   r$   r   r   r   __iter__   r:   zTestFailingIter.__iter__Nr/   r0   r1   rP   r   r   r   r   rO      r;   rO   c                 C   s   t | t dkS )Nd)ordargr   r   r   filter_char      rV   c                 C   s   t t| d S Nr'   )chrrS   rT   r   r   r   map_char   rW   rZ   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,dUdV Z-e./e0j1j2dWdXdY Z3dZd[ Z4d\d] Z5d^d_ Z6d`da Z7dbdc Z8ddde Z9e:; <dfoe:= <dgZ>e?dhdhkZ@e./e>oe@didjdk ZAdldm ZBdndo ZCdpdq ZDdrds ZEeFdtdu ZGeFdvdw ZHG dxdy dyeIZJdzd{ ZKd|d} ZLd~d ZMdd ZNdd ZOdd ZPdd ZQdd ZRdd ZSdd ZTdd ZUeVjWdd ZXdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^dS )BuiltinTestc                 C   s   |}t ||}t |}| t|t| | t|| t |}zt| W n
 ty4   Y d S w t ||}t |}| t||dd   d S rX   )pickledumpsloadsassertEqualtypelistnextStopIteration)r   itseqprotoZitorgrR   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 | jtt dd d ddi ddd W d    n1 sXw   Y  | tt d d S )Nsystimestringnamer   )rl   levelZspamspamr'            rH   __main__)__package____spec__r/   )foo)localsfromlistrm   zstring )
__import__assertRaisesModuleNotFoundError	TypeError
ValueErrorassertWarnsImportWarningImportErrorr$   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                   @   r5   )z&BuiltinTest.test_abs.<locals>.AbsClassc                 S      dS )Nr   r$   r   r   r   __abs__   r:   z.BuiltinTest.test_abs.<locals>.AbsClass.__abs__N)r/   r0   r1   r   r   r   r   r   AbsClass   r;   r   r   )r_   abs
assertTruerh   maxsizerx   rz   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rn   rp      T)rn   Nr   Frn   r   rA   r   2   <   c                 s       | ]}|d kV  qdS *   Nr   .0xr   r   r   	<genexpr>       z'BuiltinTest.test_all.<locals>.<genexpr>)r   (   r   c                 s   r   r   r   r   r   r   r   r      r   )r_   allrx   rM   rJ   rO   rz   r   Sr   r   r   test_all      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)Nrp   NTr   rA   r   r'   )r   r      c                 s   r   r   r   r   r   r   r   r      r   z'BuiltinTest.test_any.<locals>.<genexpr>)rA      r   c                 s   r   r   r   r   r   r   r   r      r   )r_   anyrx   rM   rJ   rO   rz   r   r   r   r   test_any   r   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 )NrH   ''r   r<   r   ()[]{}[[...]]
{0: {...}}c                    s     t| t|  d S r   )r_   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.')r_   r   r)   )r   r   r   r   r   r$   r   
test_ascii   s6   

zBuiltinTest.test_asciic                 C   s4   t j d }| t|t | | t jd  d S rX   )rh   r   r   
isinstanceintr_   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 )Nr   c                 S      | | S r   r   r   yr   r   r   <lambda>      z+BuiltinTest.test_callable.<locals>.<lambda>c                   S   r7   r   r   r   r   r   r   f      z$BuiltinTest.test_callable.<locals>.fc                   @   r5   )z%BuiltinTest.test_callable.<locals>.C1c                 S   r7   r   r   r$   r   r   r   meth  r   z*BuiltinTest.test_callable.<locals>.C1.methN)r/   r0   r1   r   r   r   r   r   C1  r;   r   c                 S   r   Nr   r   r$   r   r   r   r     r   c                   @   r5   )z%BuiltinTest.test_callable.<locals>.C2c                 S   r7   r   r   r$   r   r   r   __call__$  r   z.BuiltinTest.test_callable.<locals>.C2.__call__N)r/   r0   r1   r   r   r   r   r   C2#  r;   r   c                   @      e Zd ZdS )z%BuiltinTest.test_callable.<locals>.C3Nr/   r0   r1   r   r   r   r   C3)      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    rI   A   Aa   r         ÿi   z
\U0010ffffr   zunicode-escape     ￿      𐀀     𐀁    󿿾    󿿿      􀀀     􀀁    􏿾    􏿿i   l        )
r_   rY   rx   r{   rh   
maxunicoder4   encoderz   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 ]:^}}g }|t |d$d|d% t	
|}|t |d$d|d% |D ]}	i }
t|	|
 |
d  }| |t| qqd S )&Nz	print(1)
rH   exec   ﻿s	   print(1)
pass?)sourcefilenamemodeFtmpr<   eval)dont_inheritr   r   r   T)r   r   s   textrl   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   r   )docNr   r   r   r   r   r   f  r   z#BuiltinTest.test_compile.<locals>.fr   )r   Tr   TT)r'   Fr   FF)rn   FNFFz<test>)optimize)compile
memoryviewrx   rz   r{   rY   r4   __doc__r)   astparser   r_   tuple)r   bomZcodestrr   valuesZoptvalexpectedZcodeobjsZtreecodensrvr   r   r   test_compileF  sH   


zBuiltinTest.test_compilec                 C   s`   d}g d}t ||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   s,  dd }d}g d}t  }zt||D ]t\}}t|}| jtd| d| d t|d| W d	   n1 s9w   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| d	S t| w )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     t | D ]}|V  qd S r   ranger,   r+   r   r   r   arange     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   )asyncior   r  r   r'   )r   r   r   rx   SyntaxErrorr   r   r  r_   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  s:   

z(BuiltinTest.test_compile_top_level_awaitc           	   	   C   s   dd }d}g d}t  }z_t||D ]Q\}}t|}| jtd| d| d t|d| W d    n1 s9w   Y  | jtd| d| d t|d|tjd	}W d    n1 s_w   Y  qW t	| d S t	| w )
Nc                 S  r  r   r  r  r   r   r   r    r  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   rx   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  s0   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   r_   r`   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)rh   r&  delattrrx   rz   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 ty } z| tt|jd W Y d }~nd }~ww | tg  tg  d S )Nr   r'   	local_varexitc                   @      e Zd ZdZdS )!BuiltinTest.test_dir.<locals>.Foo   N)r/   r0   r1   __dict__r   r   r   r   Foo      r/  rt   strip__mro__c                   @   r5   )r,  c                 S   s   d| _ d| _d| _d S )N   r-  r?   )r   r   zr$   r   r   r   r     s   
*BuiltinTest.test_dir.<locals>.Foo.__init__N)r/   r0   r1   r   r   r   r   r   r/    r;   r   c                   @   s   e Zd Zg ZdS )r,  N)r/   r0   r1   	__slots__r   r   r   r   r/     r0  __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   )  r3   r5  N)r/   r0   r1   r6  r   r   r   r   r   r/  '  s    r9  c                   @   r5   )r,  c                 S   s   g dS )N)kangaroor   r$   r   r   r   __dir__1     )BuiltinTest.test_dir.<locals>.Foo.__dir__Nr/   r0   r1   r=  r   r   r   r   r/  0  r;   )r;  r:  r<  c                   @   r5   )r,  c                 S   r   )N)br   r   r   r$   r   r   r   r=  8  r:   r?  Nr@  r   r   r   r   r/  7  r;   r   rA  r   c                   @   r5   )r,  c                 S   r   )Nr3  r   r$   r   r   r   r=  @  r:   r?  Nr@  r   r   r   r   r/  ?  r;   rp   )rx   rz   dirassertInrh   types
ModuleTyper4   assertNotInr   r   ZassertIsInstancera   r(   r_   r#   __traceback__sortedr=  )r   r)  r/  r   reser   r   r   test_dir  sH   
"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	  q8| tt d S )N   r3  )r'      i)rn   i)rO  rO  )r'   r   r'   r   r   ))      
@      ?)      @g      ?)      
rQ  )      g      ?)rP        )rT  g      )rS  rU  )rR  g      п)r_   divmodrh   r   assertAlmostEqualrx   rz   )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+1rn   z 1+1
r'   r   rA     ,  )rA  r   r   rA  r   r      au   "å"   år   c                   @   r5   )z BuiltinTest.test_eval.<locals>.Xc                 S   rK   r   r{   r   keyr   r   r   r-   s  r:   z,BuiltinTest.test_eval.<locals>.X.__getitem__Nr/   r0   r1   r-   r   r   r   r   Xr  r;   re  rt   )r_   r   rx   rz   r  r{   )r   globalsru   r   re  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 Nr   rM  KeyErrorrb  r   r   r   r-   |     z4BuiltinTest.test_general_eval.<locals>.M.__getitem__c                 S      t dS Nxyzra   r$   r   r   r   keys  r>  z-BuiltinTest.test_general_eval.<locals>.M.keysN)r/   r0   r1   r   r-   rp  r   r   r   r   Mz  s    rq  r   rM  rA  zdir()rn  z	globals()zlocals()c                   @   r+  )z(BuiltinTest.test_general_eval.<locals>.AzNon-mappingN)r/   r0   r1   r   r   r   r   r   r     s    r   c                   @      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 rh  )dictr-   rb  r   r   r   r-     s   z4BuiltinTest.test_general_eval.<locals>.D.__getitem__c                 S   rl  rm  ro  r$   r   r   r   rp    r>  z-BuiltinTest.test_general_eval.<locals>.D.keysNr/   r0   r1   r-   rp  r   r   r   r   D  s    ru  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   rc  Zformular   r   r   __setitem__     z>BuiltinTest.test_general_eval.<locals>.SpreadSheet.__setitem__c                 S   s   t | j| t | S r   )r   rv  rf  rb  r   r   r   r-     s   z>BuiltinTest.test_general_eval.<locals>.SpreadSheet.__getitem__N)r/   r0   r1   r   rv  rw  r-   r   r   r   r   SpreadSheet  s
    ry  5Za1za1*6Za2za2*7a3   c                   @   rr  )z(BuiltinTest.test_general_eval.<locals>.Cc                 S   s   t |r   ri  )r   itemr   r   r   r-     r>  z4BuiltinTest.test_general_eval.<locals>.C.__getitem__c                 S   r   rX   r   r$   r   r   r   rp    r:   z-BuiltinTest.test_general_eval.<locals>.C.keysNrt  r   r   r   r   C      r~  )
rf  r_   r   rx   	NameErrorra   rz   rs  collectionsUserDict)
r   rq  mgr   ru  rR   ry  ssr~  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 r"|d= | |ddi i }i }t  tjddd	d
 t d|| W d    n1 sJw   Y  d|v rV|d= d|v r]|d= | ||fddiddif d S )Nzz = 1r   r4  r'   zz = 1+1rn   ignorezglobal statementr   )modulezglobal a; a = 1; b = 2r   rA  )r   r_   r   warningsfilterwarnings)r   r  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rJ|t	j}n|t	}t ddd}|  t|d|i |i }t ddd}|  t|| d S )Nzprint('Hello World!')rH   r   zname 'print' is not definedr   {   zclass A: passz__build_class__ not foundc                   @   r   )z7BuiltinTest.test_exec_globals.<locals>.frozendict_errorNr   r   r   r   r   frozendict_error      r  c                          e Zd Z fddZdS )z1BuiltinTest.test_exec_globals.<locals>.frozendictc                    s    d)Nzfrozendict is readonlyr   )r   rc  valuer  r   r   rw    r>  z=BuiltinTest.test_exec_globals.<locals>.frozendict.__setitem__N)r/   r0   r1   rw  r   r  r   r   
frozendict      r  z1__builtins__['superglobal']=2; print(superglobal)testzx=1)r   assertRaisesRegexr  r   rx   rz   	Exceptionrs  r   r   rE  rF  r.  )r   r  r  Zfrozen_builtins	namespacer   r  r   test_exec_globals  s2   



zBuiltinTest.test_exec_globalsc                 C   sN   t j}d t _zztd W n	 ty   Y nw W |t _d S W |t _d S |t _w )Nr   )rh   stdoutr   r  )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 )Nr   r4  r   )r   r   r   r   r     s    z)BuiltinTest.test_filter.<locals>.<lambda>zHello WorldZelloorldr'   Zhelloro   rH   r?   r   c                 S   s   | dkS r   r   r   r   r   r   r     r   )r'   r?   r   rn   )r'   r?   rn   rA   )	r'   rp   r?         $   1   @   Q   c                 S   s   | d S )Nrn   r   r  r   r   r   r     r   )r'   r?   r  r  r  c                 S   r   rX   r   )r}  r   r   r   identity	  r:   z)BuiltinTest.test_filter.<locals>.identityrN  c                   @   r5   )z'BuiltinTest.test_filter.<locals>.BadSeqc                 S   s   |dk rdS t )Nrp   r   ra  r   indexr   r   r   r-     rk  z3BuiltinTest.test_filter.<locals>.BadSeq.__getitem__Nrd  r   r   r   r   BadSeq  r;   r  c                 S      | S r   r   r  r   r   r   r     r   c                   S   r7   r   r   r   r   r   r   badfunc  r:   z(BuiltinTest.test_filter.<locals>.badfuncr'   rn   rn   c                 S   s   | dkS )Nro   r   r  r   r   r   r     r   r'   rn   ro   rp   rp   r   )	r_   ra   filterr   rx   rz   r   r{   r  )r   r  r  r  r   r   r   test_filter  s   2""zBuiltinTest.test_filterc                 C   >   t tjd D ]}ttd}ttd}| |t|| qd S )Nr'   Z
abcdeabcde)r  r\   HIGHEST_PROTOCOLr  rV   rg   ra   )r   rf   f1f2r   r   r   test_filter_pickle  
   

zBuiltinTest.test_filter_picklec                 C   s8   d}t tt|}t|D ]}t t|}q~t  d S )Ni@B )r  boolr  gccollect)r   Z	max_itersr+   _r   r   r   test_filter_dealloc"  s   zBuiltinTest.test_filter_deallocc                 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 )Nr  r'   rt   u   픞)	r   getattrrh   r  rx   rz   AttributeErrorrY   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 )	Nr  r'   Fc                   @   r5   )z#BuiltinTest.test_hasattr.<locals>.Ac                 S   rK   r   )
SystemExitr   Zwhatr   r   r   __getattr__>  r:   z/BuiltinTest.test_hasattr.<locals>.A.__getattr__Nr/   r0   r1   r  r   r   r   r   r   =  r;   r   rA  c                   @   r5   )z#BuiltinTest.test_hasattr.<locals>.Bc                 S   rK   r   ra  r  r   r   r   r  B  r:   z/BuiltinTest.test_hasattr.<locals>.B.__getattr__Nr  r   r   r   r   BA  r;   r  )
r   r   rh   rx   rz   r_   rY   r   r  r{   )r   r   r  r   r   r   test_hasattr5  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'   rQ  r&  s   spamr   r'   rn   ro   c                   S   r7   r   r   r   r   r   r   r   M  r   z BuiltinTest.test_hash.<locals>.fc                   @   r5   )z BuiltinTest.test_hash.<locals>.Xc                 S   s   dd S )Nrn   rC   r   r$   r   r   r   __hash__S  r>  z)BuiltinTest.test_hash.<locals>.X.__hash__Nr/   r0   r1   r  r   r   r   r   re  R  r;   re  c                   @   r5   )z BuiltinTest.test_hash.<locals>.Zc                 S   r  r   r   r$   r   r   r   r  W  r:   z)BuiltinTest.test_hash.<locals>.Z.__hash__Nr  r   r   r   r   ZV  r;   r  r   )hashr_   rx   rz   r`   r   )r   r   re  r  r   r   r   	test_hashF  s   zBuiltinTest.test_hashc                 C   s2   |  tdd |  tdd | tti  d S )Nr  Z0x10iz-0x10)r_   hexrx   rz   r$   r   r   r   test_hex[     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'   rQ  r&  r  rn   ro   )r&  Zeggsham)idr$   r   r   r   test_id`  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   )r=   2r=   r  Z12)rx   rz   iterr_   rb   rc   )r   Zlistsr  r+   r   r   r   	test_iterk  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                   @   r   )z&BuiltinTest.test_isinstance.<locals>.CNr   r   r   r   r   r~  v  r  r~  c                   @   r   )z&BuiltinTest.test_isinstance.<locals>.DNr   r   r   r   r   ru  x  r  ru  c                   @   r   )z&BuiltinTest.test_isinstance.<locals>.ENr   r   r   r   r   Ez  r  r  rt   )r   r   rx   rz   r   r~  ru  r  r   rR   rK  r   r   r   test_isinstanceu  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                   @   r   )z&BuiltinTest.test_issubclass.<locals>.CNr   r   r   r   r   r~    r  r~  c                   @   r   )z&BuiltinTest.test_issubclass.<locals>.DNr   r   r   r   r   ru    r  ru  c                   @   r   )z&BuiltinTest.test_issubclass.<locals>.ENr   r   r   r   r   r    r  r  rt   )r   
issubclassrx   rz   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123ro   r   r   r  rp   r'   rn   r\  c                   @   r5   )z$BuiltinTest.test_len.<locals>.BadSeqc                 S   rK   r   ra  r$   r   r   r   r%     r:   z,BuiltinTest.test_len.<locals>.BadSeq.__len__Nr/   r0   r1   r%   r   r   r   r   r    r;   r  c                   @   r5   )z(BuiltinTest.test_len.<locals>.InvalidLenc                 S   r7   r   r   r$   r   r   r   r%     r:   z0BuiltinTest.test_len.<locals>.InvalidLen.__len__Nr  r   r   r   r   
InvalidLen  r;   r  c                   @   r5   )z&BuiltinTest.test_len.<locals>.FloatLenc                 S   r   )Ng      @r   r$   r   r   r   r%     r:   z.BuiltinTest.test_len.<locals>.FloatLen.__len__Nr  r   r   r   r   FloatLen  r;   r  c                   @   r5   )z)BuiltinTest.test_len.<locals>.NegativeLenc                 S   r   )Nir   r$   r   r   r   r%     r:   z1BuiltinTest.test_len.<locals>.NegativeLen.__len__Nr  r   r   r   r   NegativeLen  r;   r  c                   @   r5   )z%BuiltinTest.test_len.<locals>.HugeLenc                 S   s
   t jd S rX   rh   r   r$   r   r   r   r%     r3   z-BuiltinTest.test_len.<locals>.HugeLen.__len__Nr  r   r   r   r   HugeLen  r;   r  c                   @   r5   )z-BuiltinTest.test_len.<locals>.HugeNegativeLenc                 S   s   t j d S )NrA   r  r$   r   r   r   r%     s   z5BuiltinTest.test_len.<locals>.HugeNegativeLen.__len__Nr  r   r   r   r   HugeNegativeLen  r;   r  c                   @   r   )z)BuiltinTest.test_len.<locals>.NoLenMethodNr   r   r   r   r   NoLenMethod  r   r  )r_   r#   rx   r{   rz   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y'   dd	  Y nw |  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'   rp   )r'   rp   r?   r   sqrtc                 S   s
   t | dS )N      ?)powr  r   r   r   r    r3   z"BuiltinTest.test_map.<locals>.sqrtc                    s   t t | S r   )ra   mapr  r  r   r   r     s    r  r  r?         @       @g      "@rR  c                 S   r   r   r   r   r   r   r   r     r   )r'   ro   rn   )r?   r'   rp   )rA   rp   r   c                  W   s   d}| D ]}|| }q|S r   r   )vZaccur+   r   r   r   plus  s   z"BuiltinTest.test_map.<locals>.plus)r'   ro   r3  )rp   r?   rn   )rN  rM  r?   )r'   r'   r   )r      r?   rA   )
r   r'   rp   r?   r  r  r  r  r  r  c                 S   s"   | d u r|S |d u r| S t | |S r   )r   r\  r   r   r   Max  s
   
z!BuiltinTest.test_map.<locals>.Maxro   rn   c                 S   r  r   r   r  r   r   r   r     r   r   c                   @   r5   )z$BuiltinTest.test_map.<locals>.BadSeqc                 s   s    t r   ra  r$   r   r   r   rP     s   z-BuiltinTest.test_map.<locals>.BadSeq.__iter__NrQ   r   r   r   r   r    r;   r  c                 S   r  r   r   r  r   r   r   r     r   c                 S   rK   r   rL   r  r   r   r   r    r:   z%BuiltinTest.test_map.<locals>.badfuncrN  )r_   ra   r  r  mathr  r~   r   r   rx   rz   r{   rM   )r   r  r  r  r  r   r  r   test_map  sZ    zBuiltinTest.test_mapc                 C   r  )Nr'   zIs this the real life?)r  r\   r  r  rZ   rg   ra   )r   rf   Zm1Zm2r   r   r   test_map_pickle  r  zBuiltinTest.test_map_picklec              	   C   s4  |  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 sVw   Y  | ttd | ttd G dd d}| tt|  dD ]}zt|t  W n	 ty   Y qzw | | qz|  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'   rn   ro   r'   rn   ro   r'   rn   ro   rR  r  rQ  z'max expected at least 1 argument, got 0r   r   c                   @   r5   )z$BuiltinTest.test_max.<locals>.BadSeqc                 S   rK   r   ra  r  r   r   r   r-     r:   z0BuiltinTest.test_max.<locals>.BadSeq.__getitem__Nrd  r   r   r   r   r    r;   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'   rc  r  defaultr  rc  c                 S      g | ]}t d qS r]  random	randranger   r+   r   r   r   
<listcomp>1      z(BuiltinTest.test_max.<locals>.<listcomp>rC   c                 s       | ]
}|t d fV  qdS r   Nr  r   elemr   r   r   r   2      z'BuiltinTest.test_max.<locals>.<genexpr>r   )r_   r   r  rz   rx   r{   r   rf  failr	   r  rs  r-   rI  reversedr   r  Zstmtdatarp  r   r   r   r   test_max  sN   
zBuiltinTest.test_maxc              	   C   s0  |  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 sVw   Y  | ttd | ttd G dd d}| tt|  dD ]}zt|t  W n	 ty   Y qzw | | qz|  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  r=   r'   rn   ro   r  rR  r  rQ  z'min expected at least 1 argument, got 0r   r   c                   @   r5   )z$BuiltinTest.test_min.<locals>.BadSeqc                 S   rK   r   ra  r  r   r   r   r-   J  r:   z0BuiltinTest.test_min.<locals>.BadSeq.__getitem__Nrd  r   r   r   r   r  I  r;   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   r  r  r  r  r   r   r   r  l  r  z(BuiltinTest.test_min.<locals>.<listcomp>rC   c                 s   r  r   r  r  r   r   r   r   m  r  z'BuiltinTest.test_min.<locals>.<genexpr>r   )r_   minr  rz   rx   r{   r   rf  r  r	   r  rs  r-   rI  r  r   r   r   test_min7  sN   
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 )	Nrn   r   r'   r   c                   @   rr  )z#BuiltinTest.test_next.<locals>.Iterc                 S   r  r   r   r$   r   r   r   rP   {  r:   z,BuiltinTest.test_next.<locals>.Iter.__iter__c                 S   rK   r   )rc   r$   r   r   r   __next__}  r:   z,BuiltinTest.test_next.<locals>.Iter.__next__N)r/   r0   r1   rP   r  r   r   r   r   Iterz  r  r  c                   s   s    dV  d S rX   r   r   r   r   r   gen  s   z"BuiltinTest.test_next.<locals>.gen)r  r  r_   rb   rx   rc   r   )r   rd   r  r  r   r   r   	test_nextr  s   
zBuiltinTest.test_nextc                 C   s2   |  tdd |  tdd | ttd d S )NrC   Z0o144iz-0o144r   )r_   octrx   rz   r$   r   r   r   test_oct  r  zBuiltinTest.test_octc                 C   s   t tddd}| tt |' |d |d |d |d |d |d	 W d    d S 1 s9w   Y  d S )
Nwutf-8encoding1+1
z+The quick brown fox jumps over the lazy dogz.
z
Dear John
,  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,  YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY)openr   
addCleanupr   r9   r   fpr   r   r   write_testfile  s   




"zBuiltinTest.write_testfilec                 C   s   |    ttdd}|= | |dd | | d | |dd | |dd | |d	d
 | |dd W d    n1 sLw   Y  | ttd | ttd d S )Nr  r  rp   r  z-The quick brown fox jumps over the lazy dog.
ZDearrC   z John
r^  r    r  za bs   a b)r  r  r   r_   readlinereadrx   r{   r  r   r   r   	test_open  s   	zBuiltinTest.test_openzutf-8 mode is enabledc              	   C   s   t tj}zkdD ]}|tjv rtj|= q|   td}t  tdt	 t
td}W d    n1 s7w   Y  | | |j| W d    n1 sPw   Y  W tj  tj| d S W tj  tj| d S tj  tj| w )N)LC_ALLLANGLC_CTYPEFr  r  )rs  osenvironr  localegetpreferredencodingr  catch_warningssimplefilterEncodingWarningr  r   r_   r  clearupdate)r   Zold_environrc  Zcurrent_locale_encodingr  r   r   r   test_open_default_encoding  s,   






z&BuiltinTest.test_open_default_encodingc                 C   sJ   t tdd}| | t|  W d    d S 1 sw   Y  d S )Nr  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 )#NrI   r   r   r   r   r         r   r          Ar_        r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r_   rS   rY   rh   r   rx   rz   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 ]/}dD ]*}dD ]%}t|tst|tst|tr| tt||| q| t|||d qqq| 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'   rn   rA   i   r   r   r      @rO  rp   ro   r   rQ  r  g      @g      0Ag      Ag       r         )rn   r  )rA         $@)r  g     @@g      8@r   r  y              ?gUUUUUU?y      ?LXz?)exp)baser>  r  rN     )r?  r>  mod   )r?  r   )rA  r   )r>  r?  )	r_   r  rW  r   floatrx   rz   r{   r   )r   r   r   r4  ZtwopowZfifth_powerZmod10r   r   r   test_pow  sf   
	zBuiltinTest.test_powc                 C   s   |    ttdd}tj}tj}zt|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_|	  d S |t_|t_|	  w )Nr  r  r[  z,The quick brown fox jumps over the lazy dog.ztesting
z	Dear JohnzNULL r   z    'whitespace'prompt)r  r  r   rh   stdinr  r6   r_   inputcloserx   r{   ioStringIOrz   EOFErrorrM   )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 )NrH   r   r   r<   r   r   r   r   r   r   )r_   r   r)   )r   r   r   r   r   	test_reprF  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 )-Nr   rQ  r=  g    eAg@xDrU  g      $g    eg@xg?g?g333333$@g eAgg333333$g eg?g#@g33dAgg#g33dr<  r   r   r'   g      @r   g      @g      ig      r-  r;  )numberZndigitsc                   @   r5   )z)BuiltinTest.test_round.<locals>.TestRoundc                 S   r   )N   r   r$   r   r   r   	__round__  r:   z3BuiltinTest.test_round.<locals>.TestRound.__round__N)r/   r0   r1   rP  r   r   r   r   	TestRound  r;   rQ  c                   @   r   )z+BuiltinTest.test_round.<locals>.TestNoRoundNr   r   r   r   r   TestNoRound  r  rR  rO  rn   ro   c                  W   r  r   r   )argsr   r   r   r     r   z(BuiltinTest.test_round.<locals>.<lambda>)r_   roundr`   r   rC  rx   rz   rP  )r   rQ  rR  tr   r   r   
test_roundS  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 7y1CrX  g7y1Cg7y1C)r_   rT  r$   r   r   r   test_round_large  s
   zBuiltinTest.test_round_largec                 C   sX   ddt dtddfD ]}| t|d t| | tt|d tt| qd S )Nr   g
ףp=J@z1234.56i@ rC   )decimalZDecimal	fractionsZFractionr_   rT  r`   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'   )setattrrh   r_   r&  rx   rz   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   rn   r-     rA   i  r'   ro   r'   rn   ro   r  i  )startil   (    l    l   (        c                 s       | ]	}|d  dkV  qdS rn   r   Nr   r  r   r   r   r         z'BuiltinTest.test_sum.<locals>.<genexpr>rN  c                 s   rb  rc  r   r  r   r   r   r     rd  il       c                 s   rb  rc  r   r  r   r   r   r     rd  l    l           Fc                 s       | ]}|d  V  qdS rn   Nr   r  r   r   r   r     r   g     6@c                 s   re  rf  r   r  r   r   r   r     r   g     @c                 s   re  rf  r   r  r   r   r   r     r   g     B@g     @r  g      ?g       z0.0z-0.0r   rB  rH   r_     c       bc                   @   r5   )z$BuiltinTest.test_sum.<locals>.BadSeqc                 S   rK   r   ra  r  r   r   r   r-     r:   z0BuiltinTest.test_sum.<locals>.BadSeq.__getitem__Nrd  r   r   r   r   r    r;   r  c                 s   s    | ]}|gV  qd S r   r   r   r   r   r   r     s    )r_   sumra   r  r  r   assertIsr   rx   rz   	bytearrayr{   )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 )NrH   r  r   )r_   r`   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'   rn   )r[   rq  rp  r\  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 )Nr   rn   r   r$   r   r   r   getDict	  r>  zBuiltinTest.C_get_vars.getDict)fgetN)r/   r0   r1   rs  propertyr.  r   r   r   r   
C_get_vars  s    rv  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'   rn   r\  r   r   )
r_   setrp  rC  rh   rq  rr  rx   rz   rv  r$   r   r   r   	test_vars  s   zBuiltinTest.test_varsc                 C   sH   g }|  | |D ]}|| q
W d   |S 1 sw   Y  |S )z=Collect `iterable` into a list, catching an expected `error`.N)rx   r)   )r   iterableerroritemsr}  r   r   r   
iter_error  s   
zBuiltinTest.iter_errorc                 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`  rp   rN  r   )r'   rp   )rn   rN  )ro   r   rp   rN  r   r3  c                   @   r5   )zBuiltinTest.test_zip.<locals>.Ic                 S   s   |dk s|dkr
t |d S )Nr   rn   rp   r(   r   r+   r   r   r   r-   (  s   z+BuiltinTest.test_zip.<locals>.I.__getitem__Nrd  r   r   r   r   I'  r;   r  c                   @   r   )zBuiltinTest.test_zip.<locals>.GNr   r   r   r   r   G/  r  r  c                   @   r5   )z4BuiltinTest.test_zip.<locals>.SequenceWithoutALengthc                 S      |dkrt |S NrN  r  r  r   r   r   r-   8     z@BuiltinTest.test_zip.<locals>.SequenceWithoutALength.__getitem__Nrd  r   r   r   r   SequenceWithoutALength7  r;   r  r:  rN  c                   @   r5   )z$BuiltinTest.test_zip.<locals>.BadSeqc                 S   r  r  ra  r  r   r   r   r-   C  r  z0BuiltinTest.test_zip.<locals>.BadSeq.__getitem__Nrd  r   r   r   r   r  B  r;   r  )
r_   ra   ziprx   rz   rM   rO   r  	enumerater{   )r   r   rA  rU  r  r  r  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`  r}  r~  r'   r  r\   r  r  rg   r   r   rA  rU  rf   z1r   r   r   test_zip_pickleJ  s   
zBuiltinTest.test_zip_picklec                 C   sD   d}d}g d}t tjd D ]}t||dd}| ||| qd S )Nr`  r}  r~  r'   Tstrictr  r  r   r   r   test_zip_pickle_strictR  s   z"BuiltinTest.test_zip_pickle_strictc                 C   sp   d}d}g d}t tjd D ]&}t||dd}tt||}| | |t| | | |t| qd S )Nr`  r  r~  r'   Tr  )	r  r\   r  r  r^   r]   r_   r|  r{   )r   r   rA  rU  rf   r  Zz2r   r   r   test_zip_pickle_strict_failZ  s   z'BuiltinTest.test_zip_pickle_strict_failc                    s^   t   G  fddd}| t }t|  W d    n1 s!w   Y  | |j  d S )Nc                       r  )z6BuiltinTest.test_zip_bad_iterable.<locals>.BadIterablec                    s    r   r   r$   	exceptionr   r   rP   h  r:   z?BuiltinTest.test_zip_bad_iterable.<locals>.BadIterable.__iter__NrQ   r   r  r   r   BadIterableg  r  r  )rz   rx   r  rk  r  )r   r  cmr   r  r   test_zip_bad_iterabled  s   z!BuiltinTest.test_zip_bad_iterablec              
   C   sh   |  ttddddd | tttdddd | tttdddd | tttddddd d S )Nr`  abcTr  ))r'   r   )rn   rA  )ro   r   r  r  )r_   r   r  rx   r{   r$   r   r   r   test_zip_strictp  s   zBuiltinTest.test_zip_strictc              
   C   s\   t td}dg}t td}| ttt|||dd | t|d | t|d d S )NrN  r   Tr  rn   r'   )r  r  rx   r{   ra   r  r_   rb   )r   r   r   r4  r   r   r   test_zip_strict_iteratorsz  s   z%BuiltinTest.test_zip_strict_iteratorsc           
         sr  G dd dt  G  fddd}| td|ddd }| |d	g | td|d
dddt}| |dg | td|d
ddd }| |ddg | td|dddt}| |ddg | t|dddd }| |dg | t|d
dddt}| |dg | t|d
ddd }| |ddg | t|ddddt}	| |	ddg d S )Nc                   @   r   )z9BuiltinTest.test_zip_strict_error_handling.<locals>.ErrorNr   r   r   r   r   Error  r  r  c                       s(   e Zd Zdd Zdd Z fddZdS )z8BuiltinTest.test_zip_strict_error_handling.<locals>.Iterc                 S   
   || _ d S r   sizer   r  r   r   r   r     r3   zABuiltinTest.test_zip_strict_error_handling.<locals>.Iter.__init__c                 S   r  r   r   r$   r   r   r   rP     r:   zABuiltinTest.test_zip_strict_error_handling.<locals>.Iter.__iter__c                    s"   |  j d8  _ | j dk r | j S Nr'   r   r  r$   r  r   r   r       
zABuiltinTest.test_zip_strict_error_handling.<locals>.Iter.__next__Nr/   r0   r1   r   rP   r  r   r  r   r   r    s    r  ABr'   Tr  r   r   rn   r   r   r'   r   ABCr  r   r  ro   r   rn   r  r'   r   r   r'   r   r   r  rn   r   r'   r  )r  r|  r  r_   r{   
r   r  l1l2l3l4l5l6l7l8r   r  r   test_zip_strict_error_handling  s$   z*BuiltinTest.test_zip_strict_error_handlingc           
      C   s^  G dd d}|  td|dddt}| |dg |  td|dd	ddt}| |d
g |  td|ddddt}| |d
dg |  td|dddt}| |ddg |  t|ddddt}| |dg |  t|dd	ddt}| |dg |  t|ddddt}| |ddg |  t|ddddt}	| |	ddg d S )Nc                   @   r   )zFBuiltinTest.test_zip_strict_error_handling_stopiteration.<locals>.Iterc                 S   r  r   r  r  r   r   r   r     r3   zOBuiltinTest.test_zip_strict_error_handling_stopiteration.<locals>.Iter.__init__c                 S   r  r   r   r$   r   r   r   rP     r:   zOBuiltinTest.test_zip_strict_error_handling_stopiteration.<locals>.Iter.__iter__c                 S   s"   |  j d8  _ | j dk rt| j S r  )r  rc   r$   r   r   r   r    r  zOBuiltinTest.test_zip_strict_error_handling_stopiteration.<locals>.Iter.__next__Nr  r   r   r   r   r    s    r  r  r'   Tr  r  rn   r   r  r  r  ro   r  r  r  r  r  r  r  )r|  r  r{   r_   r  r   r   r   ,test_zip_strict_error_handling_stopiteration  s"   z8BuiltinTest.test_zip_strict_error_handling_stopiterationc                 C   s*   t g g}t  | tt| d S r   )r  r  r  r   Z
is_trackedrb   )r   rd   r   r   r   test_zip_result_gc  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 ];}	|	 }
  t|
t|
   t|
dt|
  	tdt
|	j  t|
d W d    n1 sw   Y  qG dd dt}  td|dd  d S )!Nro   rH   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                   @   rr  )z7BuiltinTest.test_format.<locals>.classes_new.<locals>.Ac                 S   r  r   r  r   r   r   r   r     r3   z@BuiltinTest.test_format.<locals>.classes_new.<locals>.A.__init__c                 S      t | j| S r   r4   r   r   format_specr   r   r   
__format__  rx  zBBuiltinTest.test_format.<locals>.classes_new.<locals>.A.__format__Nr/   r0   r1   r   r  r   r   r   r   r     r  r   c                   @   r   )zBBuiltinTest.test_format.<locals>.classes_new.<locals>.DerivedFromANr   r   r   r   r   DerivedFromA  r  r  c                   @   r   )z<BuiltinTest.test_format.<locals>.classes_new.<locals>.SimpleNr   r   r   r   r   Simple  r   r  c                   @   rr  )zGBuiltinTest.test_format.<locals>.classes_new.<locals>.DerivedFromSimplec                 S   r  r   r  r   r   r   r   r     r3   zPBuiltinTest.test_format.<locals>.classes_new.<locals>.DerivedFromSimple.__init__c                 S   r  r   r  r  r   r   r   r    rx  zRBuiltinTest.test_format.<locals>.classes_new.<locals>.DerivedFromSimple.__format__Nr  r   r   r   r   DerivedFromSimple  r  r  c                   @   r   )zHBuiltinTest.test_format.<locals>.classes_new.<locals>.DerivedFromSimple2Nr   r   r   r   r   DerivedFromSimple2  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 )Nro   specZ3specrp   Z4specrN  r  Z5abcrA   ZabcdefZ10abcdef)r_   format)r   r  r  r  r$   r   r   
class_test  s   z+BuiltinTest.test_format.<locals>.class_testc                    s.     t| dt|    t| t|  d S NrH   )r_   r  r4   )r  r$   r   r   empty_format_spec  s   z2BuiltinTest.test_format.<locals>.empty_format_specl   .@rQ  g]]^Ug]]^g;q7r*g;q7rc                   @   r5   )z0BuiltinTest.test_format.<locals>.BadFormatResultc                 S   r   )NrQ  r   r  r   r   r   r    r:   z;BuiltinTest.test_format.<locals>.BadFormatResult.__format__Nr/   r0   r1   r  r   r   r   r   BadFormatResult  r;   r  rp   z<object object atc                   @   r5   )z"BuiltinTest.test_format.<locals>.Ac                 S   s
   t d|S r  )r  )r   Zfmt_strr   r   r   r    r3   z-BuiltinTest.test_format.<locals>.A.__format__Nr  r   r   r   r   r     r;   r   r   c                   @   r   )z"BuiltinTest.test_format.<locals>.BNr   r   r   r   r   r     r  r  c                   @   r   )z"BuiltinTest.test_format.<locals>.CNr   r   r   r   r   r~  #  r  r~  z\b%s\bc                   @   r   )z/BuiltinTest.test_format.<locals>.DerivedFromStrNr   r   r   r   r   DerivedFromStr0  r   r  r   r@   z
         0)r_   r  r   rx   rz   r  r   
startswithr4   r  reescaper/   )r   r  r  r  r  r   r   r  r~  clsobjr  r   r$   r   test_format  sP   
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-0b1rn   r   ZD0b100000000000000000000000000000000000000000000000000000000000000000ZC0b11111111111111111111111111111111111111111111111111111111111111111zE-0b100000000000000000000000000000000000000000000000000000000000000000zD-0b11111111111111111111111111111111111111111111111111111111111111111)r_   binr$   r   r   r   test_bin3  s   zBuiltinTest.test_binc                 C   s0   t d}| t|jdd | t|jdd d S )Ns   abc   1r'   s   1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111)rl  rx   r{   	translaterz   r   r   r   r   test_bytearray_translate<  s   z$BuiltinTest.test_bytearray_translatec                 C   s$   t  }ttd}| t|j| d S )Nre  )rl  r  r   rx   r{   extend)r   arrayZbad_iterr   r   r   test_bytearray_extend_errorA  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'   rn   r\  )EllipsisNotImplementedr`   rk  rx   rz   )r   consttpr   r   r   test_construct_singletonsF  s   z%BuiltinTest.test_construct_singletonsc                 C   s~   |  ttt |  t | t W d    n1 sw   Y  |  t | t  W d    d S 1 s8w   Y  d S r   )r|   DeprecationWarningr  r  r   r   r$   r   r   r   test_warning_notimplementedM  s   "z'BuiltinTest.test_warning_notimplementedN)_r/   r0   r1   rg   r   r   r   r   r   r   r   r   r   r  r  r"  r#  r%  r(  rL  rZ  rg  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r   unittestskipIfrh   r	  	utf8_moder-  r2  r9  rD  rL  rM  rV  platformsystemr  machineZlinux_alpharT  Zsystem_round_bugrY  r\  r^  rn  ro  staticmethodrq  rr  r   rv  rx  r|  r  r  r  r  r  r  r  r  r  r
   Zcpython_onlyr  r  r  r  r  r  r  r   r   r   r   r[      s    #"1:&ME$
	
"<;;
>%Q

	4

	,

	!
e	r[   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  rH  enter_contextr   envr   rh   __breakpointhook__r$   r   r   r   setUp]  s   zTestBreakpoint.setUpc                 C   s:   t d}t  W d    n1 sw   Y  |  d S Npdb.set_trace)r   
breakpointZassert_called_oncer   mockr   r   r   test_breakpointk  s   
zTestBreakpoint.test_breakpointc                 C   s   t  }|t_t  |  d S r   r   rh   r  r  assert_called_once_withr   my_breakpointhookr   r   r   'test_breakpoint_with_breakpointhook_setp  s   z6TestBreakpoint.test_breakpoint_with_breakpointhook_setc                 C   sd   t  }|t_t  |  tjt_td}t  |  W d    n1 s'w   Y  |  d S r  )r   rh   r  r  r  r  r   )r   r  r  r   r   r   )test_breakpoint_with_breakpointhook_resetv  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'   rn   ro   rp   rN  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   r7   r   r   r   r   r   r   r    r:   zMTestBreakpoint.test_breakpoint_with_passthru_error.<locals>.my_breakpointhookr'   rn   ro   rp   rN  r  )rh   r  rx   rz   r  r  r   r   r   #test_breakpoint_with_passthru_error  s   z2TestBreakpoint.test_breakpoint_with_passthru_errorz-E was givenc                 C   sJ   d| j d< td}td |d W d    d S 1 sw   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   sF   d| j d< td}t  |  W d    d S 1 sw   Y  d S Nzsys.exitr  r  r  r   r   r   test_envar_good_path_other  
   


"z)TestBreakpoint.test_envar_good_path_otherc                 C   F   d| j d< td}t  |  W d    d S 1 sw   Y  d S )Nr<   r  r  )r  r   r  assert_not_calledr  r   r   r   test_envar_good_path_noop_0  r  z*TestBreakpoint.test_envar_good_path_noop_0c                 C   r  )NrH   r  r  r  r  r   r   r   !test_envar_good_path_empty_string  r  z0TestBreakpoint.test_envar_good_path_empty_stringc              	   C   s   dD ]I}| j |d9 || jd< | jtd}| jtdd}t  | t|j	d| d | |j
t |  W d    n1 sFw   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  r_   r4   messagecategoryRuntimeWarningr	  )r   r  r  r  r   r   r   test_envar_unimportable  s   


z&TestBreakpoint.test_envar_unimportablec                 C   sL   d| j d< td}tt_t  |  W d    d S 1 sw   Y  d S r  )r  r   r   rh   r  r  r	  r  r   r   r   #test_envar_ignored_when_hook_is_set  s   


"z2TestBreakpoint.test_envar_ignored_when_hook_is_setN)r/   r0   r1   r  r  r  r  r   r  r  r  rh   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   r7   r   r   )signumframer   r   r   handle_sighup  s   zPtyTests.handle_sighupc              
   C   s>   t  t j| j}z| ||W t  t j| S t  t j| w r   )signalSIGHUPr  
_run_child)r   childterminal_inputZ
old_sighupr   r   r   	run_child  s    zPtyTests.run_childc              
   C   s  t  \}}zt \}}W n! ttfy/ } zt | t | | d|  d }~ww |dkrpz5z%t	
d t | t|d}|| W d    n1 sTw   Y  W n   t  Y W t d nt d w t | t || t|dd}	g }
	 |	  }|dkrn|
| qW d    n1 sw   Y  t|
dkrt }	 zt |d	}W n	 ty   Y n
w |sn|| qt | |d
d}| dt|
|f  t | tj|dd |
S )Nzpty.fork() raised {}r   rn   r  r  r  TrH   i  r   r  z9got %d lines in pipe but expected 2, child output was:
%s)exitcode)r$  pipeptyforkOSErrorr  rH  skipTestr  r  alarmr  	traceback	print_exc_exitr9   r  r1  r)   r#   rl  r  r  decoder  r
   Zwait_process)r   r  r  rr  pidfdrK  wpipeZrpipelinesr8   Zchild_outputchunkr   r   r   r    sl   












zPtyTests._run_childNc                    s   t j r
t j s| d  fdd}| ||d }| |d ddh |d dkr3| d t|d	 }rB|d
}n|t jj	}| 
|| d S )Nzstdin and stdout must be ttysc                    sj   rt jtj ddt_t jtj ddt_tdtj o%tj | d ttt	 | d d S )Nsurrogateescape)r  errorsreplaceztty =file)
rI  TextIOWrapperrh   rF  detachr  printisattyr   rG  r.  rE  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'   r1  )rh   rF  r9  r  r%  r  rD  r   r*  r  r_   )r   rE  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 )NrE  s   quux)r=  r$   r   r   r   test_input_tty2  s   zPtyTests.test_input_ttyc                 C   s   dt jv r| d d S d S )Nr  zthe readline module is loaded)rh   modulesr%  r$   r   r   r   skip_if_readline7  s   
zPtyTests.skip_if_readlinec                 C      |    | ddd d S )N   prompté   quuxr  r@  r=  r$   r   r   r   test_input_tty_non_asciiA     z!PtyTests.test_input_tty_non_asciic                 C   rA  )NrB  rC  r   rD  r$   r   r   r   'test_input_tty_non_ascii_unicode_errorsF  rF  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():r4  rE  z	captured:)
r8  rh   rF  r9  rI  rJ  r  rG  r   getvaluer:  r   r   r   r  N  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_filenoK  s   z$PtyTests.test_input_no_stdout_filenor   )r/   r0   r1   r   r  r  r  r  r=  r>  r@  rE  rG  rI  r   r   r   r   r    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 )NrC   c                 S   s   |  S r   r   r  r   r   r   r   e  s    z'TestSorted.test_basic.<locals>.<lambda>r  T)reverse)ra   r  r  shuffler_   rI  r  rK  )r   r  copyr   r   r   
test_basic\  s   


zTestSorted.test_basicc                 C   s   t g  | t t g d W d    n1 sw   Y  t g d d | t t g d  W d    d S 1 s:w   Y  d S )N)ry  r  )rI  rx   rz   r$   r   r   r   test_bad_argumentsk  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|| q*d S )NZabracadabrarH   )
ra   r   r4   r_   rI  joinrw  	frozensetrs  fromkeys)r   r   rE  Tr   r   r   test_inputtypesu  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   r   r   r   r   r   r   r   r     r   z.TestSorted.test_baddecorator.<locals>.<lambda>)splitrx   rz   rI  )r   r  r   r   r   test_baddecorator  s   zTestSorted.test_baddecoratorN)r/   r0   r1   rN  rO  rT  rV  r   r   r   r   rJ  Z  s
    
rJ  c                   @   r5   )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   r_   r*  
splitlines)r   r  rcouterrr   r   r   test_cleanup  s
   zShutdownTest.test_cleanupN)r/   r0   r1   r]  r   r   r   r   rW    s    rW  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                   @   r5   )z!TestType.test_new_type.<locals>.Bc                 S      d|  S )Nzham%dr   r$   r   r   r   r    r>  z%TestType.test_new_type.<locals>.B.hamN)r/   r0   r1   r  r   r   r   r   r    r;   r  r~  r&  c                 S   r_  )Nzspam%sr   r$   r   r   r   r     r   z(TestType.test_new_type.<locals>.<lambda>r  r   Zham42Zspam42rn   littles   * )r`   r_   r/   r1   r0   	__bases__r   rk  __base__r8  r   rD  r.  rG  r  r&  to_bytes)r   r   r   r  r~  r   r   r   test_new_type  s2   zTestType.test_new_typec                 C   sx   |  t tddi dd W d    n1 sw   Y  |  t tddi d W d    d S 1 s5w   Y  d S )Nr   r   rN  r  rs  )rx   rz   r`   r$   r   r   r   test_type_nokwargs  s   "zTestType.test_type_nokwargsc              	   C   sL  dD ]3}| j |d# t|di }| |j| | |j| | |jt W d    n1 s0w   Y  q| t tddi  W d    n1 sLw   Y  | t tddi  W d    n1 sgw   Y  | t	 tddi  W d    n1 sw   Y  tddi }dD ]0}| j |d  ||_| |j| | |jd | |jt W d    n1 sw   Y  qtddi }| t d|_W d    n1 sw   Y  | |jd | t d|_W d    n1 sw   Y  | |jd | t	 d|_W d    n	1 sw   Y  | |jd d S )N)r      Ä   🐍zB.A42rH   rk   r   zA Bu   ABr6  r~  )
r  r`   r_   r/   r1   r0   rx   r{   UnicodeEncodeErrorrz   )r   rl   r   r~  r   r   r   test_type_name  sN   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 s5w   Y  | |jd d|_| |jd | |jd | t d|_W d    n1 sew   Y  | |jd d S )Nr   r   r1   zB.C   BzD.E)r`   r_   r/   r1   r0   rx   rz   )r   r   r   r   r   test_type_qualname  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 s,w   Y  t ddi }| |jd  dD ]}||_| |j| q@d S )N)r   rg  rh  x y   xr   Nr   r   r      xy)r   rg  rh  rn  rp  ro  r   N)r`   r_   r   rx   rj  )r   r   r   r   r   r   test_type_doc  s   zTestType.test_type_docc                 C   s  |  t t  W d    n1 sw   Y  |  t tdd W d    n1 s-w   Y  |  t tddi d W d    n1 sIw   Y  |  t tddi d W d    n1 sew   Y  |  t tdg i  W d    n1 sw   Y  |  t tddti  W d    n1 sw   Y  |  t tddi  W d    n1 sw   Y  |  t tdtfi  W d    n1 sw   Y  |  t tdttfi  W d    d S 1 sw   Y  d S )Nr   r   re  r   )rx   rz   r`   rE  MappingProxyTyper  r   r4   r$   r   r   r   test_bad_args
	  s6   "zTestType.test_bad_argsc                 C   sd  |  t tddddi W d    n1 sw   Y  |  t tdtfddi W d    n1 s6w   Y  |  t tddddi W d    n1 sSw   Y  |  t tddddi W d    n1 spw   Y  |  t tddddi W d    n1 sw   Y  |  t tdddd	d
 W d    n1 sw   Y  |  t tddddi W d    n1 sw   Y  |  t tddddi W d    n1 sw   Y  G dd d}|  t td|fddi W d    n	1 sw   Y  |  t td|fddi W d    d S 1 s+w   Y  d S )Nr   r   r6  ro  r   rH   ri  rn  r   )r6  r   )r.  r.  )__weakref__rt  c                   @   r   )z"TestType.test_bad_slots.<locals>.BNr   r   r   r   r   r  0	  r  r  r.  rt  )rx   rz   r`   r   r{   )r   r  r   r   r   test_bad_slots	  s>   $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)r   r'   )rA  rn   r   r~  r   rn   )r  OrderedDictmove_to_endra   r{  r`   r_   r.  )r   Zodr  r~  r   r   r   test_namespace_order7	  s
   
&zTestType.test_namespace_orderN)r/   r0   r1   rd  rf  rk  rm  rq  rs  ru  rx  r   r   r   r   r^    s    !r^  c                 C   s   ddl m} ||t |S )Nr   )DocTestSuite)doctestry  ZaddTestr   )loaderZtestspatternry  r   r   r   
load_testsA	  s   r}  rq   )Mr   r  r   r  rZ  r[  r  rI  r&  r$  r\   r  r  r  rh   r'  rE  r  r  
contextlibr   	functoolsr   inspectr   	itertoolsr   textwrapr   r   r   operatorr	   r  r
   Ztest.supportr   r   Ztest.support.os_helperr   r   r   Ztest.support.script_helperr   Ztest.support.warnings_helperr   Zunittest.mockr   r   r"  r  r~   r   r2   r6   r   r   r{   r4   rY   Ztest_conv_no_signZtest_conv_signrJ   rO   rV   rZ   ZTestCaser[   r  Z
skipUnlessr  rJ  rW  r^  r}  r/   mainr   r   r   r   <module>   s   

             `
i +" 
