B
    18\;                @   s:  d 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m	Z	 ddl
Z
ddlZddlZddlmZ ddlZddlZddlmZmZ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mZ dd
lmZmZmZ ddlm Z m!Z!m"Z"m#Z#m$Z$ ddlm%Z%m&Z&m'Z'm(Z( ddlm)Z)m*Z* ddlm+Z+m,Z,m-Z-m.Z.m/Z/ ddlm0Z0m1Z1 ddlm2Z2 G dd dej3Z4G dd dej3Z5eddZ6G dd dej3Z7G dd dej3Z8dd Z9G dd de8Z:G dd  d e*Z;G d!d" d"e8Z<G d#d$ d$eZ=G d%d& d&eZ>G d'd( d(ej3Z?d.d)d*Z@eAd+kr6e@d,d- dS )/zUnit tests for collections.py.    N)choice	randrange)support)
namedtupleCounterOrderedDict_count_elements)UserDict
UserStringUserList)ChainMap)deque)	Awaitable	Coroutine)AsyncIteratorAsyncIterableAsyncGenerator)HashableIterableIterator	Generator
Reversible)Sized	ContainerCallable
Collection)Set
MutableSet)MappingMutableMappingKeysView	ItemsView
ValuesView)SequenceMutableSequence)
ByteStringc               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestUserObjectsc             C   s0   |  tt|tt|dj|j|jd d S )Nz&{a} should have all the methods of {b})ab)assertGreaterEqualsetdirformat__name__)selfr'   r(    r/   Y/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Lib/test/test_collections.py_superset_test    s    

zTestUserObjects._superset_testc             C   s   |  tt d S )N)r1   r
   str)r.   r/   r/   r0   test_str_protocol)   s    z!TestUserObjects.test_str_protocolc             C   s   |  tt d S )N)r1   r   list)r.   r/   r/   r0   test_list_protocol,   s    z"TestUserObjects.test_list_protocolc             C   s   |  tt d S )N)r1   r	   dict)r.   r/   r/   r0   test_dict_protocol/   s    z"TestUserObjects.test_dict_protocolN)r-   
__module____qualname__r1   r3   r5   r7   r/   r/   r/   r0   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 )TestChainMapc             C   s  t  }d|d< d|d< | }d|d< d|d< | |jdddddd	g | | tdddd
  | t|d xdD ]}| || qW x4tddddd D ]\}}| ||d| qW |d= | |jddiddd	g | | tdddd
  | t|d xdD ]}| || q W x6tddddd D ]\}}| ||d| qLW | t	|t
|jd t
|jd g x| t|fD ]}| || | |j|j | || | |jd |jd  x8t|jdd  |jdd  D ]\}}| || qW qW x~ttjd D ]l}	tt||	}| || | |j|j | || x*t|j|jD ]\}}| ||| qW q>W xtt|tt	|gD ]Z}| || | |j|j | || x*t|j|jD ]\}}| ||| qW qW | }
d|
d< | |
jddiddiddd	g | |
jjddiddd	g | |
d d | |
jd d d S )N   r'      r(         c)r(   r?   )r'   r(   )r'   r(   r?      abcd   )r'   r(   r?   zz({'c': 30}, {'a': 1, 'b': 2})z({'c': 30}, {'b': 2, 'a': 1})r      )r   	new_childassertEqualmapsitemsr6   lenassertIngetreprtyper-   copyassertIsNotzipassertIsrangepickleHIGHEST_PROTOCOLloadsdumpsdeepcopyevalparents)r.   r?   dkeykvem1m2protofr/   r/   r0   test_basics9   sf    


(
"zTestChainMap.test_basicsc             C   sP   ddd}ddd}t ||}| }|| | t| t|  d S )NZbachZ	rembrandt)Zmusicartzvan goghZcarmen)rd   Zopera)r   rN   updaterF   r4   rH   )r.   ZbaselineZadjustmentscmZcombinedr/   r/   r0   test_orderingu   s    



zTestChainMap.test_orderingc             C   s2   |  t ji g |  tddijddig d S )Nr;   r<   )rF   r   rG   )r.   r/   r/   r0   test_constructor   s    zTestChainMap.test_constructorc             C   sH   |  t  |  ti i  | tddii  | ti ddi d S )Nr;   r<   )assertFalser   
assertTrue)r.   r/   r/   r0   	test_bool   s    zTestChainMap.test_boolc          	   C   s   G dd dt }|tdddtddd}x0tdddd	d
 D ]\}}| || | q@W x4tddddd
 D ]\}}| ||d| qrW x0tddddd
 D ]\}}| ||k| qW | |ddd| | |ddd | | d | t |  W d Q R X d S )Nc               @   s   e Zd Zdd ZdS )z2TestChainMap.test_missing.<locals>.DefaultChainMapc             S   s   dS )Ni  r/   )r.   r[   r/   r/   r0   __missing__   s    z>TestChainMap.test_missing.<locals>.DefaultChainMap.__missing__N)r-   r8   r9   rl   r/   r/   r/   r0   DefaultChainMap   s   rm   r;   r<   )r'   r(   r=   r>   )r(   r?   i  )r'   r(   r?   rZ   M   TFr'   i  i  )r(   r<   )	r   r6   rH   rF   rK   poppopitemassertRaisesKeyError)r.   rm   rZ   r\   r]   r/   r/   r0   test_missing   s    zTestChainMap.test_missingc             C   s   t tdddt tddddtdd	d
dddt tdddtddddddt }| d|d | t| dddddddd d!d"g
 d S )#Nr   i8[ )jhi'  i\  i  )irZ   r?   i     i	  iM  ix  )rb   r(   gr?   ru   7      )r^   r(   r;   r<   r@      rD   )r'   r(   r?   rZ   r^    Z
abcdefghij)r'   r;   )r(   rw   )r?   i  )rZ   i\  )r^   ry   )rb   i  )rx   i	  )ru   i8[ )rv   i'  )rt   r   )r   r   rF   joinr4   rH   )r.   rZ   r/   r/   r0   test_order_preservation   s    

z$TestChainMap.test_order_preservationc             C   sV   t tdddtddd}| t|tdddd | t| tdddd d S )Nr;   r<   )r'   r(   r=   r>   )r(   r?   )r'   r(   r?   )r   r6   rF   rH   )r.   rZ   r/   r/   r0   test_dict_coercion   s    zTestChainMap.test_dict_coercionc             C   s   t  }d|d< d|d< ddd}||}| |jddddddg | ||jd	  G d
d dt}t  }d|d< d|d< |ddd}||}| ||jd	  xdD ]}| || qW x4tddddd D ]\}}| ||d| qW dS )z#Tests for changes for issue #16613.r;   r'   r<   r(   r=   r>   )r(   r?   )r'   r(   r   c               @   s   e Zd Zdd Zdd ZdS )z.TestChainMap.test_new_child.<locals>.lowerdictc             S   s   t |tr| }t| |S )N)
isinstancer2   lowerr6   __getitem__)r.   r[   r/   r/   r0   r      s    
z:TestChainMap.test_new_child.<locals>.lowerdict.__getitem__c             S   s   t |tr| }t| |S )N)r   r2   r   r6   __contains__)r.   r[   r/   r/   r0   r      s    
z;TestChainMap.test_new_child.<locals>.lowerdict.__contains__N)r-   r8   r9   r   r   r/   r/   r/   r0   	lowerdict   s   r   rA   rB   )r'   BCrC   N)	r   rE   rF   rG   rQ   r6   rJ   rH   rK   )r.   r?   mrZ   r   r[   r\   r]   r/   r/   r0   test_new_child   s$    




zTestChainMap.test_new_childN)r-   r8   r9   rc   rg   rh   rk   rs   r~   r   r   r/   r/   r/   r0   r:   7   s   <r:   TestNTzx y zc               @   s   e Zd Zdd Zdd Zeejj	dkddd Z
eejj	dkd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!S )"TestNamedTuplec             C   sJ  t dd}| |jd | |jd | |jt | |jtj | |jd | t	t dd | t	t dd | t	t dd | t	t d	d
 | t	t d	d | t	t d	d | t	t d	d | t	t d	d t dd t dd t dd}| 
dt|j t dd}| 
dt|j | t|jdg | t|jdddg d S )NPointzx yr/   )xyzabc%zefg ghiclassZ9abcrA   zefg g%hiz	abc classz	8efg 9ghiz_efg ghizefg efg ghiZPoint0zx1 y2_za b cntzthe quick brown foxzu')theZquick   rz   !   )r   rF   r-   	__slots__r8   r   tuple_fieldsrq   
ValueErrorassertNotInrL   	TypeError_make)r.   r   r   r/   r/   r0   test_factory   s,    




zTestNamedTuple.test_factoryc          	   C   s  t dddd}| |jddd | |dd	d
 | |dd | | d t dddd}| |jddi | |dd	d
 | |dd t dddd}| |ji  | |dd	d
 | t |d W d Q R X | t |  W d Q R X | t |dd	d W d Q R X | t t dddd}W d Q R X | t t dddd}W d Q R X | t t dddd}W d Q R X t ddd d}| |ji  | |jjd  | |ddd | t |d W d Q R X t ddddgd}| |jddd | |jjd | |dd	d
 | |dd | | d t ddtddgd}| |jddd | |jjd | |dd	d
 | |dd | | d d S )Nr   zx y)
   r=   )defaultsr   r=   )r   r   r;   r<   )r;   r<   )r;   r=   )r=   r   r/   r@   )r   r=   r>   F)	r   rF   _fields_defaultsrq   r   assertIsNone__new____defaults__iter)r.   r   r/   r/   r0   test_defaults   sT    zTestNamedTuple.test_defaultsr<   z)Docstrings are omitted with -O2 and abovec             C   s   t dd}| |jd d S )Nr   zx yzPoint(x, y))r   rF   __doc__)r.   r   r/   r/   r0   test_factory_doc_attr-  s    
z$TestNamedTuple.test_factory_doc_attrc             C   s6   t dd}| |jjd d|j_| |jjd d S )Nr   zx yzAlias for field number 0zdocstring for Point.x)r   rF   r   r   )r.   r   r/   r/   r0   test_doc_writable3  s    
z TestNamedTuple.test_doc_writablec             C   sR   xLddgddgddgddgdd	gd
dggD ] \}}|  td|ddj| q*W d S )N)efgzg%hi)r   _1)rA   r   )rA   r   )Z8efgZ9ghi)Z_0r   )rA   Z_efg)rA   r   r   ghi)rA   r   Z_2r   )rA   r|   r   )rA   r   r   NTT)rename)rF   r   r   )r.   specZrenamedr/   r/   r0   test_name_fixer;  s    zTestNamedTuple.test_name_fixerc             C   s$   t dddgtd}| |jt d S )Nr   r   r   )module)r   collectionsrF   r8   )r.   r   r/   r/   r0   test_module_parameterF  s    z$TestNamedTuple.test_module_parameterc          	   C   s  t dd}|dd}| ||ddd | ||ddd | ||ddd | ||d  | ||f tddd | t|d	 | t|d	d
d | ttdt  | ttdt  | t|d | dt	| | ||
ddg | |jd | |jd	dd | | tddd y|jd	d
d W n tk
rV   Y nX | d t dd}|ddd}| t|d t dd}|ddd}| t|d d S )Nr   zx yr   rz   )r   r   )r   )r   r   )r   rz   r;   r<   r@   zPoint(XXX=1, y=2)z
Point(x=1)zPoint(x=11, y=22)__weakref__)r   )r;   rz   )r   errorz%Did not detect an incorrect fieldnamezx, y)r   rF   r6   rq   r   rX   localsrL   r   r+   r   r   _replace_asdictr   Z_fail)r.   r   pr/   r/   r0   test_instanceJ  s8    




zTestNamedTuple.test_instancec             C   s   t dd}|dd}| |t | |d | t|d | t|ddg | t|d | t| d |\}}| |||f | |d |d fd | t|jd | |j	| | |j
| | ttd	t  d S )
Nr   zx yr   rz   )r   rz   r   r;   r@   zp.z)r   assertIsInstancer   rF   r4   maxrq   
IndexErrorr   r   r   AttributeErrorrX   r   )r.   r   r   r   r   r/   r/   r0   test_tuplenessn  s    

zTestNamedTuple.test_tuplenessc             C   s   t dd}| | d | |g d | t| d | |  i  | | jd t dd}| |dd | |dgd | |djd | t|dd	 | |d ddi | |djd
dd | |djd d}tt	dd t
|D }t|}t d|}|t
| }| |tt
| | |t
|tt
| x(t|D ]\}}| t||| qlW t| | }	tt|t
|}
| |	|
 |jf t|d d
f|d dfg}tt
|}d
|d< d|d< | |t| | |jt| d S )NZeror|   r/   zZero()DotrZ   r;   )r;   zDot(d=1)i  )rZ   )i  i  c             s   s&   | ]}d  dd tdD V  qdS )r|   c             S   s   g | ]}t tjqS r/   )r   stringascii_letters).0rt   r/   r/   r0   
<listcomp>  s   z;TestNamedTuple.test_odd_sizes.<locals>.<genexpr>.<listcomp>r   N)r}   rR   )r   rv   r/   r/   r0   	<genexpr>  s   z0TestNamedTuple.test_odd_sizes.<locals>.<genexpr>Big*   )r   rF   r   rL   r   r   rZ   r   r4   r*   rR   rI   r   	enumerategetattrr6   rP   )r.   r   r   nnamesr   r(   posnamerZ   Z
d_expectedZb2Zb2_expectedr/   r/   r0   test_odd_sizes  sD    



$zTestNamedTuple.test_odd_sizesc             C   s   t dddd}xxtfD ]n}t|d}t|d}xTtd|jd D ]@}||||}| || | |j|j | d	||| q@W qW d S )
Nr   r=   r>   )r   r   rC   rU   rV   r;   s   OrderedDict)r   rS   r   rR   rT   rF   r   r   )r.   r   r   rU   rV   protocolqr/   r/   r0   test_pickle  s    

zTestNamedTuple.test_picklec             C   sL   t dddd}x8tjtjfD ](}||}| || | |j|j qW d S )Nr   r=   r>   )r   r   rC   )r   rN   rW   rF   r   )r.   r   copierr   r/   r/   r0   	test_copy  s
    zTestNamedTuple.test_copyc             C   s  t dd}|ddddd}| |d |jd	d
dddd}| |d ddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddh}t d|}ttt|}|| }| || |f tt|j|}| || |	|}| || t
| | | tt|j| |	|}tdd΄ |D }|jf tt|j|}| || | |jt| | | | d S )NTz"itemgetter property self cls tupler;   r<   r@   r{   rD   )r;   r<   r@   r{   rD   r   r=   r>   (   2   )
itemgetterpropertyr.   clsr   )r   r=   r>   r   r   ZAliasZAtr   ZBuildZBypassZCreateZEncounteredZExpectedZFieldZForZGotZHelper
IronPythonJythonrr   ZMakeZModifyZNoter   r   ZReturnZReturnsZTyper   ZUsedZValidater   	Variablesr'   Z
accessibleaddZaddedallZalsoZanarg_listargs	argumentsZautomaticallybebuildbuiltinsZbutZbyZcannotclass_namespaceclassmethodr   r   convertrN   createdZcreationrZ   	debuggingZdefinedr6   
dictionarydocZ	docstringZ
docstringsZ	duplicateZeffectZeitherr   Zenvironmentsr   Zexampleexecrb   	f_globalsZfieldfield_namesfields	formattedframefunctionZ	functionsZgeneraterK   getterZgotZgreaterZhashelpZidentifiersindexZ	indexableinstanceZinstantiateZ	interningZintrospectionisidentifierr   r   iterabler}   keywordkeywordskwdsrI   Zliker4   maprG   messageZmetadatamethodmethodsr   module_nameZmustr   namedr   namedtuple_r   	namespaceZneedsnewZnicely
num_fieldsnumberobjectZofoperatoroptionr   Z
particularrS   ZpicklingZplainro   
positionalr   rZregularr   replaceZ	replacingrL   repr_fmtZrepresentationresultZreuse_itemgettersseenr.   sequencer*   sideZ	specifiedsplitstart
startswithstepr2   r   stringssubclasssysZtargetsZthanr   Ztheirthistor   	tuple_newrM   typenameZ
underscore
unexpectedunpackZupuseuseduserZvalidvaluesvariableverbosewherewhichZworkr   r   rC   rP   c             s   s   | ]}|d  V  qdS )r   Nr/   )r   r]   r/   r/   r0   r     s    z5TestNamedTuple.test_name_conflicts.<locals>.<genexpr>)r   rF   r   r   rR   rI   r6   rP   r   r   rL   r   __getnewargs__)r.   r   tZnewtwordsr#  Z	newvaluesr/   r/   r0   test_name_conflicts  sd    




z"TestNamedTuple.test_name_conflictsc             C   sF   t dd}| t|dd G dd d|}| t|dd d S )NAr   r;   zA(x=1)c               @   s   e Zd ZdS )z#TestNamedTuple.test_repr.<locals>.BN)r-   r8   r9   r/   r/   r/   r0   r     s   r   zB(x=1))r   rF   rL   )r.   r,  r   r/   r/   r0   	test_repr  s    
zTestNamedTuple.test_reprc          	   C   sr   |  t tdddgd}W d Q R X tdddgdd}| |jd |  t tdddgd	d}W d Q R X d S )
Nr   r   r   TrA   def)r   )rA   r   F)rq   r   r   rF   r   )r.   r   r/   r/   r0   test_keyword_only_arguments  s    z*TestNamedTuple.test_keyword_only_argumentsc             C   sX   G dd dt dddg}|dd}| | tdd	g d
|_| |jdd
i d S )Nc               @   s   e Zd ZdS )zBTestNamedTuple.test_namedtuple_subclass_issue_24931.<locals>.PointN)r-   r8   r9   r/   r/   r/   r0   r     s   r   Z_Pointr   r   r@   r{   )r   r@   )r   r{   rD   w)r   rF   r   r   r0  __dict__)r.   r   r'   r/   r/   r0   $test_namedtuple_subclass_issue_24931  s
    
z3TestNamedTuple.test_namedtuple_subclass_issue_24931N)r-   r8   r9   r   r   unittestskipIfr  flagsoptimizer   r   r   r   r   r   r   r   r   r+  r-  r/  r2  r/   r/   r/   r0   r      s"   3$&@
r   c               @   s$   e Zd Zdd Zdd Zdd ZdS )ABCTestCasec             G   s`   t |dd }td|f|}|  x6|D ].}| }||= td|f|}| t|| q*W d S )Nc             W   s   dS )Nr   r/   )r  r   r/   r/   r0   <lambda>      z7ABCTestCase.validate_abstract_methods.<locals>.<lambda>r   )r6   fromkeysrM   rN   rq   r   )r.   rA   r   Zmethodstubsr   r   Zstubsr/   r/   r0   validate_abstract_methods  s    
z%ABCTestCase.validate_abstract_methodsc             C   sx   dd }t dtfdd i}t||| | | | | t|| t dtfdd i}| | | | t|| d S )Nc             W   s   dS )Nr   r/   )r  r   r/   r/   r0   r8  +  r9  z1ABCTestCase.validate_isinstance.<locals>.<lambda>r   __hash__)rM   r  setattrr   rj   
issubclassassertNotIsInstanceri   )r.   rA   r   Zstubr   r/   r/   r0   validate_isinstance*  s    zABCTestCase.validate_isinstancec          	   C   s   ddddddddd	g	}i }x&|D ]}d
| d
 }t t|||< q W G dd d}xJ| D ]>\}}t||snqZ| }||| | |jdt||f  qZW d S )Nltgtlegeneorandxorsub__c               @   s@   e Zd Zdd Zdd ZeZeZeZeZeZ	eZ
eZeZeZdS )z.ABCTestCase.validate_comparison.<locals>.Otherc             S   s
   d| _ d S )NF)
right_side)r.   r/   r/   r0   __init__>  s    z7ABCTestCase.validate_comparison.<locals>.Other.__init__c             S   s
   d| _ dS )NT)rK  )r.   otherr/   r/   r0   __eq__@  s    z5ABCTestCase.validate_comparison.<locals>.Other.__eq__N)r-   r8   r9   rL  rN  __lt____gt____le____ge____ne____ror____rand____rxor____rsub__r/   r/   r/   r0   Other=  s   rX  zRight side not called for %s.%s)r   r  rH   hasattrrj   rK  rM   )r.   r   opsZ	operatorsopr   rX  rM  r/   r/   r0   validate_comparison6  s    



zABCTestCase.validate_comparisonN)r-   r8   r9   r;  r@  r\  r/   r/   r/   r0   r7    s   r7  c               c   s
   d V  d S )Nr/   r/   r/   r/   r0   	_test_genU  s    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dd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!S )"TestOneTrickPonyABCsc             C   s6  dd }t jdd }dd }G dd d}G d	d
 d
t}d t | t g}x6|D ].}| |t | tt	|tt
t	| qTW | | g}x,|D ]$}| |t | tt	|t qW | }	| |	t | }	| |	t |	  G dd d}
t|
 | t|
 t | t|
t d }
t  d S )Nc               s   s
   d V  d S )Nr/   r/   r/   r/   r0   gen[  s    z0TestOneTrickPonyABCs.test_Awaitable.<locals>.genc               s   s
   d V  d S )Nr/   r/   r/   r/   r0   coro^  s    z1TestOneTrickPonyABCs.test_Awaitable.<locals>.coroc                  s   d S )Nr/   r/   r/   r/   r0   new_corob  s    z5TestOneTrickPonyABCs.test_Awaitable.<locals>.new_coroc               @   s   e Zd Zdd ZdS )z0TestOneTrickPonyABCs.test_Awaitable.<locals>.Barc             s   s
   d V  d S )Nr/   )r.   r/   r/   r0   	__await__f  s    z:TestOneTrickPonyABCs.test_Awaitable.<locals>.Bar.__await__N)r-   r8   r9   rb  r/   r/   r/   r0   Bare  s   rc  c                   s.   e Zd Zdd Zd fdd	Zdd Z  ZS )	z8TestOneTrickPonyABCs.test_Awaitable.<locals>.MinimalCoroc             S   s   |S )Nr/   )r.   valuer/   r/   r0   sendj  s    z=TestOneTrickPonyABCs.test_Awaitable.<locals>.MinimalCoro.sendNc                s   t  ||| d S )N)superthrow)r.   typvaltb)	__class__r/   r0   rg  l  s    z>TestOneTrickPonyABCs.test_Awaitable.<locals>.MinimalCoro.throwc             s   s
   d V  d S )Nr/   )r.   r/   r/   r0   rb  n  s    zBTestOneTrickPonyABCs.test_Awaitable.<locals>.MinimalCoro.__await__)NN)r-   r8   r9   re  rg  rb  __classcell__r/   r/   )rk  r0   MinimalCoroi  s   rm  c               @   s   e Zd ZdS )z5TestOneTrickPonyABCs.test_Awaitable.<locals>.CoroLikeN)r-   r8   r9   r/   r/   r/   r0   CoroLike  s    rn  )types	coroutiner   intr  r?  r   ri   r>  rM   rL   r   rj   closeregisterr   r   
gc_collect)r.   r_  r`  ra  rc  rm  non_samplesr   samplesr?   rn  r/   r/   r0   test_AwaitableZ  s0    
"

z#TestOneTrickPonyABCs.test_Awaitablec             C   sP  dd }t jdd }dd }G dd d}G d	d
 d
t}d t | t | g}x6|D ].}| |t | tt|tt	t| qXW | g}x,|D ]$}| 
|t | tt|t qW | }	| |	t | }	| 
|	t |	  G dd d}
| t|
 t | t|
t G dd d}
| t|
 t | t|
t d S )Nc               s   s
   d V  d S )Nr/   r/   r/   r/   r0   r_    s    z0TestOneTrickPonyABCs.test_Coroutine.<locals>.genc               s   s
   d V  d S )Nr/   r/   r/   r/   r0   r`    s    z1TestOneTrickPonyABCs.test_Coroutine.<locals>.coroc                  s   d S )Nr/   r/   r/   r/   r0   ra    s    z5TestOneTrickPonyABCs.test_Coroutine.<locals>.new_coroc               @   s   e Zd Zdd ZdS )z0TestOneTrickPonyABCs.test_Coroutine.<locals>.Barc             s   s
   d V  d S )Nr/   )r.   r/   r/   r0   rb    s    z:TestOneTrickPonyABCs.test_Coroutine.<locals>.Bar.__await__N)r-   r8   r9   rb  r/   r/   r/   r0   rc    s   rc  c                   s.   e Zd Zdd Zd fdd	Zdd Z  ZS )	z8TestOneTrickPonyABCs.test_Coroutine.<locals>.MinimalCoroc             S   s   |S )Nr/   )r.   rd  r/   r/   r0   re    s    z=TestOneTrickPonyABCs.test_Coroutine.<locals>.MinimalCoro.sendNc                s   t  ||| d S )N)rf  rg  )r.   rh  ri  rj  )rk  r/   r0   rg    s    z>TestOneTrickPonyABCs.test_Coroutine.<locals>.MinimalCoro.throwc             s   s
   d V  d S )Nr/   )r.   r/   r/   r0   rb    s    zBTestOneTrickPonyABCs.test_Coroutine.<locals>.MinimalCoro.__await__)NN)r-   r8   r9   re  rg  rb  rl  r/   r/   )rk  r0   rm    s   rm  c               @   s.   e Zd Zdd Zd
ddZdd Zdd	 ZdS )z5TestOneTrickPonyABCs.test_Coroutine.<locals>.CoroLikec             S   s   d S )Nr/   )r.   rd  r/   r/   r0   re    s    z:TestOneTrickPonyABCs.test_Coroutine.<locals>.CoroLike.sendNc             S   s   d S )Nr/   )r.   rh  ri  rj  r/   r/   r0   rg    s    z;TestOneTrickPonyABCs.test_Coroutine.<locals>.CoroLike.throwc             S   s   d S )Nr/   )r.   r/   r/   r0   rr    s    z;TestOneTrickPonyABCs.test_Coroutine.<locals>.CoroLike.closec             S   s   d S )Nr/   )r.   r/   r/   r0   rb    s    z?TestOneTrickPonyABCs.test_Coroutine.<locals>.CoroLike.__await__)NN)r-   r8   r9   re  rg  rr  rb  r/   r/   r/   r0   rn    s   
rn  c               @   s$   e Zd Zdd Zdd Zdd ZdS )z5TestOneTrickPonyABCs.test_Coroutine.<locals>.CoroLikec             S   s   d S )Nr/   )r.   rd  r/   r/   r0   re    s    z:TestOneTrickPonyABCs.test_Coroutine.<locals>.CoroLike.sendc             S   s   d S )Nr/   )r.   r/   r/   r0   rr    s    z;TestOneTrickPonyABCs.test_Coroutine.<locals>.CoroLike.closec             S   s   d S )Nr/   )r.   r/   r/   r0   rb    s    z?TestOneTrickPonyABCs.test_Coroutine.<locals>.CoroLike.__await__N)r-   r8   r9   re  rr  rb  r/   r/   r/   r0   rn    s   )ro  rp  r   rq  r  r?  ri   r>  rM   rL   r   r   rj   rr  r   )r.   r_  r`  ra  rc  rm  ru  r   rv  r?   rn  r/   r/   r0   test_Coroutine  s0    
"
	z#TestOneTrickPonyABCs.test_Coroutinec             C   s  t  t t t g}x6|D ].}| |t | tt|tt	t| qW d t
 t t t t t t
tttt g}x6|D ].}| |t | tt|tt	t| q|W | tt G dd dt}| t| d | tt
| | td | td d S )Nc                   s   e Zd Z fddZ  ZS )z-TestOneTrickPonyABCs.test_Hashable.<locals>.Hc                s
   t   S )N)rf  r<  )r.   )rk  r/   r0   r<    s    z6TestOneTrickPonyABCs.test_Hashable.<locals>.H.__hash__)r-   r8   r9   r<  rl  r/   r/   )rk  r0   H  s   ry  r   r<  )	bytearrayr4   r*   r6   r?  r   ri   r>  rM   rL   rq  floatcomplexr2   r   	frozensetr  bytesr   rj   rq   r   rF   hashr;  r@  )r.   ru  r   rv  ry  r/   r/   r0   test_Hashable  s$    
"
"z"TestOneTrickPonyABCs.test_Hashablec             C   s   G dd d}|  t| t |  t|t d tg g}x6|D ].}| |t | tt|ttt| q@W | 	td | 
td d S )Nc               @   s   e Zd Zdd ZdS )z3TestOneTrickPonyABCs.test_AsyncIterable.<locals>.AIc             S   s   | S )Nr/   )r.   r/   r/   r0   	__aiter__  s    z=TestOneTrickPonyABCs.test_AsyncIterable.<locals>.AI.__aiter__N)r-   r8   r9   r  r/   r/   r/   r0   AI  s   r  r  )rj   r   r   r>  r  r?  ri   rM   rL   r;  r@  )r.   r  ru  r   r/   r/   r0   test_AsyncIterable  s    

"z'TestOneTrickPonyABCs.test_AsyncIterablec             C   s   G dd d}|  t| t |  t|t d tg g}x6|D ].}| |t | tt|ttt| q@W G dd d}| | t | 	tdd d S )Nc               @   s   e Zd Zdd Zdd ZdS )z3TestOneTrickPonyABCs.test_AsyncIterator.<locals>.AIc             S   s   | S )Nr/   )r.   r/   r/   r0   r    s    z=TestOneTrickPonyABCs.test_AsyncIterator.<locals>.AI.__aiter__c                s   t d S )N)StopAsyncIteration)r.   r/   r/   r0   	__anext__  s    z=TestOneTrickPonyABCs.test_AsyncIterator.<locals>.AI.__anext__N)r-   r8   r9   r  r  r/   r/   r/   r0   r    s   r  c               @   s   e Zd Zdd ZdS )z:TestOneTrickPonyABCs.test_AsyncIterator.<locals>.AnextOnlyc                s   t d S )N)r  )r.   r/   r/   r0   r    s    zDTestOneTrickPonyABCs.test_AsyncIterator.<locals>.AnextOnly.__anext__N)r-   r8   r9   r  r/   r/   r/   r0   	AnextOnly  s   r  r  r  )
rj   r   r   r>  r  r?  ri   rM   rL   r;  )r.   r  ru  r   r  r/   r/   r0   test_AsyncIterator  s    

"z'TestOneTrickPonyABCs.test_AsyncIteratorc             C   st  d dddg}x6|D ].}|  |t | tt|ttt| qW t t t t	 t
 t t t  t  t  t dd dD g}x6|D ].}| |t | tt|ttt| qW G dd dt}| t	| g  | tt| | td	 | td	 G d
d d}G dd d|}| t|t | t| t | t|t | t| t d S )Nr   gQ	@y              ?c             s   s   | ]
}|V  qd S )Nr/   )r   r   r/   r/   r0   r     s    z5TestOneTrickPonyABCs.test_Iterable.<locals>.<genexpr>r/   c                   s   e Zd Z fddZ  ZS )z-TestOneTrickPonyABCs.test_Iterable.<locals>.Ic                s
   t   S )N)rf  __iter__)r.   )rk  r/   r0   r    s    z6TestOneTrickPonyABCs.test_Iterable.<locals>.I.__iter__)r-   r8   r9   r  rl  r/   r/   )rk  r0   I  s   r  r  c               @   s   e Zd Zdd ZdS )z.TestOneTrickPonyABCs.test_Iterable.<locals>.Itc             S   s   t g S )N)r   )r.   r/   r/   r0   r  #  r9  z7TestOneTrickPonyABCs.test_Iterable.<locals>.It.__iter__N)r-   r8   r9   r  r/   r/   r/   r0   It"  s   r  c               @   s   e Zd ZdZdS )z5TestOneTrickPonyABCs.test_Iterable.<locals>.ItBlockedN)r-   r8   r9   r  r/   r/   r/   r0   	ItBlocked$  s   r  )r?  r   ri   r>  rM   rL   r~  r2   r   r4   r*   r}  r6   keysrH   r#  r]  r   rj   rF   r;  r@  r   )r.   ru  r   rv  r  r  r  r/   r/   r0   test_Iterable	  s.    
"
"z"TestOneTrickPonyABCs.test_Iterablec             C   s  d dddt  t t g}x6|D ].}| |t | tt|ttt| qW t  	 t  
 t   t t 	 t 
 t  t dd dD tg tg g}x6|D ].}| |t | tt|ttt| qW t t t t t t 	 t 
 t  g}x8|D ]0}| |t | tt|ttt| qW | ttttt | ttttt | ttttt G dd dt}| tt| g  | tt| | td	d
 G dd d}G dd d|}| t|t | t| t | t|t | t| t G dd d}G dd d|}	G dd d|}
| t|t | t| t | t|	t | t|	 t | t|
t | t|
 t d S )Nr   gQ	@y              ?c             s   s   | ]
}|V  qd S )Nr/   )r   r   r/   r/   r0   r   5  s    z7TestOneTrickPonyABCs.test_Reversible.<locals>.<genexpr>r/   c               @   s   e Zd Zdd Zdd ZdS )z/TestOneTrickPonyABCs.test_Reversible.<locals>.Rc             S   s
   t t S )N)r   r4   )r.   r/   r/   r0   r  F  s    z8TestOneTrickPonyABCs.test_Reversible.<locals>.R.__iter__c             S   s
   t t S )N)r   r4   )r.   r/   r/   r0   __reversed__H  s    z<TestOneTrickPonyABCs.test_Reversible.<locals>.R.__reversed__N)r-   r8   r9   r  r  r/   r/   r/   r0   RE  s   r  r  r  c               @   s   e Zd Zdd ZdS )z7TestOneTrickPonyABCs.test_Reversible.<locals>.RevNoIterc             S   s   t g S )N)reversed)r.   r/   r/   r0   r  O  r9  zDTestOneTrickPonyABCs.test_Reversible.<locals>.RevNoIter.__reversed__N)r-   r8   r9   r  r/   r/   r/   r0   	RevNoIterN  s   r  c               @   s   e Zd Zdd ZdS )z9TestOneTrickPonyABCs.test_Reversible.<locals>.RevPlusIterc             S   s   t g S )N)r   )r.   r/   r/   r0   r  Q  r9  zBTestOneTrickPonyABCs.test_Reversible.<locals>.RevPlusIter.__iter__N)r-   r8   r9   r  r/   r/   r/   r0   RevPlusIterP  s   r  c               @   s   e Zd Zdd Zdd ZdS )z1TestOneTrickPonyABCs.test_Reversible.<locals>.Revc             S   s   t g S )N)r   )r.   r/   r/   r0   r  X  r9  z:TestOneTrickPonyABCs.test_Reversible.<locals>.Rev.__iter__c             S   s   t g S )N)r  )r.   r/   r/   r0   r  Y  r9  z>TestOneTrickPonyABCs.test_Reversible.<locals>.Rev.__reversed__N)r-   r8   r9   r  r  r/   r/   r/   r0   RevW  s   r  c               @   s   e Zd ZdZdS )z:TestOneTrickPonyABCs.test_Reversible.<locals>.RevItBlockedN)r-   r8   r9   r  r/   r/   r/   r0   RevItBlockedZ  s   r  c               @   s   e Zd ZdZdS )z;TestOneTrickPonyABCs.test_Reversible.<locals>.RevRevBlockedN)r-   r8   r9   r  r/   r/   r/   r0   RevRevBlocked\  s   r  )r6   r*   r}  r?  r   ri   r>  rM   rL   r  rH   r#  r   r]  r   r  r~  r2   r   r4   r   r   rj   r#   r   r   rF   r{  r;  r   )r.   ru  r   Znon_reversiblesrv  r  r  r  r  r  r  r/   r/   r0   test_Reversible+  sN    
"
"
$z$TestOneTrickPonyABCs.test_Reversiblec             C   s  d ddddd g}x6|D ].}|  |t | tt|ttt| qW t tdtt dd d	D g}x6|D ].}|  |t | tt|ttt| qrW t	 t
 t t t t t t  t  t  g
}x6|D ].}| |t | tt|ttt| qW | ttttt | ttttt | ttttt | ttttt | ttttt | ttttt G d
d dt}G dd d|}| tt| g  | tt| | tt	| | tt| | tt| g  | tt| | tt	| | tt| | tddd G dd d}G dd d}G dd d}	| t|t | t| t | t|t | t| t | t|	t | t|	 t G dd d}
G dd d}| t|
t | t|
 t | t|t | t| t G dd d}G dd d|}| t|t | t| t d S )Nr   gQ	@y              ?c             S   s   d|  S )Nr<   r/   )r   r/   r/   r0   r8  g  r9  z6TestOneTrickPonyABCs.test_Collection.<locals>.<lambda>r9  c             s   s   | ]
}|V  qd S )Nr/   )r   r   r/   r/   r0   r   m  s    z7TestOneTrickPonyABCs.test_Collection.<locals>.<genexpr>r/   c               @   s$   e Zd Zdd Zdd Zdd ZdS )z1TestOneTrickPonyABCs.test_Collection.<locals>.Colc             S   s
   t t S )N)r   r4   )r.   r/   r/   r0   r    s    z:TestOneTrickPonyABCs.test_Collection.<locals>.Col.__iter__c             S   s   dS )Nr   r/   )r.   r/   r/   r0   __len__  s    z9TestOneTrickPonyABCs.test_Collection.<locals>.Col.__len__c             S   s   dS )NFr/   )r.   itemr/   r/   r0   r     s    z>TestOneTrickPonyABCs.test_Collection.<locals>.Col.__contains__N)r-   r8   r9   r  r  r   r/   r/   r/   r0   Col  s   r  c               @   s   e Zd ZdS )z4TestOneTrickPonyABCs.test_Collection.<locals>.DerColN)r-   r8   r9   r/   r/   r/   r0   DerCol  s    r  r  r  r   c               @   s   e Zd Zdd Zdd ZdS )z7TestOneTrickPonyABCs.test_Collection.<locals>.ColNoIterc             S   s   dS )Nr   r/   )r.   r/   r/   r0   r    r9  z?TestOneTrickPonyABCs.test_Collection.<locals>.ColNoIter.__len__c             S   s   dS )NFr/   )r.   r  r/   r/   r0   r     r9  zDTestOneTrickPonyABCs.test_Collection.<locals>.ColNoIter.__contains__N)r-   r8   r9   r  r   r/   r/   r/   r0   	ColNoIter  s   r  c               @   s   e Zd Zdd Zdd ZdS )z7TestOneTrickPonyABCs.test_Collection.<locals>.ColNoSizec             S   s   t g S )N)r   )r.   r/   r/   r0   r    r9  z@TestOneTrickPonyABCs.test_Collection.<locals>.ColNoSize.__iter__c             S   s   dS )NFr/   )r.   r  r/   r/   r0   r     r9  zDTestOneTrickPonyABCs.test_Collection.<locals>.ColNoSize.__contains__N)r-   r8   r9   r  r   r/   r/   r/   r0   	ColNoSize  s   r  c               @   s   e Zd Zdd Zdd ZdS )z7TestOneTrickPonyABCs.test_Collection.<locals>.ColNoContc             S   s   t g S )N)r   )r.   r/   r/   r0   r    r9  z@TestOneTrickPonyABCs.test_Collection.<locals>.ColNoCont.__iter__c             S   s   dS )Nr   r/   )r.   r/   r/   r0   r    r9  z?TestOneTrickPonyABCs.test_Collection.<locals>.ColNoCont.__len__N)r-   r8   r9   r  r  r/   r/   r/   r0   	ColNoCont  s   r  c               @   s    e Zd Zdd Zdd ZdZdS )z7TestOneTrickPonyABCs.test_Collection.<locals>.SizeBlockc             S   s   t g S )N)r   )r.   r/   r/   r0   r    r9  z@TestOneTrickPonyABCs.test_Collection.<locals>.SizeBlock.__iter__c             S   s   dS )NFr/   )r.   r/   r/   r0   r     r9  zDTestOneTrickPonyABCs.test_Collection.<locals>.SizeBlock.__contains__N)r-   r8   r9   r  r   r  r/   r/   r/   r0   	SizeBlock  s   r  c               @   s    e Zd Zdd Zdd ZdZdS )z7TestOneTrickPonyABCs.test_Collection.<locals>.IterBlockc             S   s   dS )Nr   r/   )r.   r/   r/   r0   r    r9  z?TestOneTrickPonyABCs.test_Collection.<locals>.IterBlock.__len__c             S   s   dS )NTr/   )r.   r/   r/   r0   r     r9  zDTestOneTrickPonyABCs.test_Collection.<locals>.IterBlock.__contains__N)r-   r8   r9   r  r   r  r/   r/   r/   r0   	IterBlock  s   r  c               @   s$   e Zd Zdd Zdd Zdd ZdS )z5TestOneTrickPonyABCs.test_Collection.<locals>.ColImplc             S   s
   t t S )N)r   r4   )r.   r/   r/   r0   r    s    z>TestOneTrickPonyABCs.test_Collection.<locals>.ColImpl.__iter__c             S   s   dS )Nr   r/   )r.   r/   r/   r0   r    s    z=TestOneTrickPonyABCs.test_Collection.<locals>.ColImpl.__len__c             S   s   dS )NFr/   )r.   r  r/   r/   r0   r     s    zBTestOneTrickPonyABCs.test_Collection.<locals>.ColImpl.__contains__N)r-   r8   r9   r  r  r   r/   r/   r/   r0   ColImpl  s   r  c               @   s   e Zd ZdZdS )z4TestOneTrickPonyABCs.test_Collection.<locals>.NonColN)r-   r8   r9   r   r/   r/   r/   r0   NonCol  s   r  )r?  r   ri   r>  rM   rL   r]  r   rz  r*   r}  r6   r~  r2   r   r4   r  rH   r#  r   rj   r#   r   r   r   r   rF   r{  r;  r   )r.   Znon_collectionsr   Znon_col_iterablesrv  r  r  r  r  r  r  r  r  r  r/   r/   r0   test_Collectione  sh    
"
" 
"

z$TestOneTrickPonyABCs.test_Collectionc             C   s(  d ddddddg i t  g
}x6|D ].}| |t | tt|ttt| q W tt tt	 tt
 tt tt tt  tt tt  tt  tt  t dd dD g}x6|D ].}| |t | tt|ttt| qW | td	d
 G dd d}| | t d S )Nr   gQ	@y              ?r9  r|   r/   c             s   s   | ]
}|V  qd S )Nr/   )r   r   r/   r/   r0   r     s    z5TestOneTrickPonyABCs.test_Iterator.<locals>.<genexpr>__next__r  c               @   s   e Zd Zdd ZdS )z4TestOneTrickPonyABCs.test_Iterator.<locals>.NextOnlyc             s   s
   dV  d S )Nr;   r/   )r.   r/   r/   r0   r    s    z=TestOneTrickPonyABCs.test_Iterator.<locals>.NextOnly.__next__N)r-   r8   r9   r  r/   r/   r/   r0   NextOnly  s   r  )r*   r?  r   ri   r>  rM   rL   r   r~  r2   r   r4   r6   r}  r  rH   r#  r]  r   rj   r;  )r.   ru  r   rv  r  r/   r/   r0   test_Iterator  s"    
"
"z"TestOneTrickPonyABCs.test_Iteratorc             C   s  G dd d}G dd d}G dd d}d ddd	d
ddg i t  tdtg | | | g}x6|D ].}| |t | tt|ttt| qbW G dd d}G dd dt}dd }| dd  | | g}	xB|	D ]:}| |t	 | |t | 
tt|ttt| qW | tdd | }
| |
t|
 | |
d t|
 | d|
d | |
  | t|
jt | td|
jttd | t|
jt  G dd dt}| t| j G dd dt}| t| j d S )Nc               @   s.   e Zd Zdd Zdd Zdd Zd
dd	ZdS )z4TestOneTrickPonyABCs.test_Generator.<locals>.NonGen1c             S   s   | S )Nr/   )r.   r/   r/   r0   r    r9  z=TestOneTrickPonyABCs.test_Generator.<locals>.NonGen1.__iter__c             S   s   d S )Nr/   )r.   r/   r/   r0   r    r9  z=TestOneTrickPonyABCs.test_Generator.<locals>.NonGen1.__next__c             S   s   d S )Nr/   )r.   r/   r/   r0   rr    r9  z:TestOneTrickPonyABCs.test_Generator.<locals>.NonGen1.closeNc             S   s   d S )Nr/   )r.   rh  ri  rj  r/   r/   r0   rg    r9  z:TestOneTrickPonyABCs.test_Generator.<locals>.NonGen1.throw)NN)r-   r8   r9   r  r  rr  rg  r/   r/   r/   r0   NonGen1  s   r  c               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
z4TestOneTrickPonyABCs.test_Generator.<locals>.NonGen2c             S   s   | S )Nr/   )r.   r/   r/   r0   r    r9  z=TestOneTrickPonyABCs.test_Generator.<locals>.NonGen2.__iter__c             S   s   d S )Nr/   )r.   r/   r/   r0   r    r9  z=TestOneTrickPonyABCs.test_Generator.<locals>.NonGen2.__next__c             S   s   d S )Nr/   )r.   r/   r/   r0   rr    r9  z:TestOneTrickPonyABCs.test_Generator.<locals>.NonGen2.closec             S   s   |S )Nr/   )r.   rd  r/   r/   r0   re    r9  z9TestOneTrickPonyABCs.test_Generator.<locals>.NonGen2.sendN)r-   r8   r9   r  r  rr  re  r/   r/   r/   r0   NonGen2  s   r  c               @   s&   e Zd Zdd Zdd ZdddZdS )	z4TestOneTrickPonyABCs.test_Generator.<locals>.NonGen3c             S   s   d S )Nr/   )r.   r/   r/   r0   rr    r9  z:TestOneTrickPonyABCs.test_Generator.<locals>.NonGen3.closec             S   s   |S )Nr/   )r.   rd  r/   r/   r0   re    r9  z9TestOneTrickPonyABCs.test_Generator.<locals>.NonGen3.sendNc             S   s   d S )Nr/   )r.   rh  ri  rj  r/   r/   r0   rg    r9  z:TestOneTrickPonyABCs.test_Generator.<locals>.NonGen3.throw)NN)r-   r8   r9   rr  re  rg  r/   r/   r/   r0   NonGen3  s   r  r   gQ	@y              ?r9  r|   r/   c               @   s6   e Zd Zdd Zdd Zdd Zdd Zdd
dZd	S )z0TestOneTrickPonyABCs.test_Generator.<locals>.Genc             S   s   | S )Nr/   )r.   r/   r/   r0   r    r9  z9TestOneTrickPonyABCs.test_Generator.<locals>.Gen.__iter__c             S   s   d S )Nr/   )r.   r/   r/   r0   r    r9  z9TestOneTrickPonyABCs.test_Generator.<locals>.Gen.__next__c             S   s   d S )Nr/   )r.   r/   r/   r0   rr    r9  z6TestOneTrickPonyABCs.test_Generator.<locals>.Gen.closec             S   s   |S )Nr/   )r.   rd  r/   r/   r0   re    r9  z5TestOneTrickPonyABCs.test_Generator.<locals>.Gen.sendNc             S   s   d S )Nr/   )r.   rh  ri  rj  r/   r/   r0   rg    r9  z6TestOneTrickPonyABCs.test_Generator.<locals>.Gen.throw)NN)r-   r8   r9   r  r  rr  re  rg  r/   r/   r/   r0   Gen  s
   r  c                   s&   e Zd Zdd Zd fdd	Z  ZS )z7TestOneTrickPonyABCs.test_Generator.<locals>.MinimalGenc             S   s   |S )Nr/   )r.   rd  r/   r/   r0   re    s    z<TestOneTrickPonyABCs.test_Generator.<locals>.MinimalGen.sendNc                s   t  ||| d S )N)rf  rg  )r.   rh  ri  rj  )rk  r/   r0   rg    s    z=TestOneTrickPonyABCs.test_Generator.<locals>.MinimalGen.throw)NN)r-   r8   r9   re  rg  rl  r/   r/   )rk  r0   
MinimalGen  s   r  c               s   s
   dV  d S )Nr;   r/   r/   r/   r/   r0   r_    s    z0TestOneTrickPonyABCs.test_Generator.<locals>.genc               s   s   d V S )Nr/   r/   r/   r/   r0   r8    r9  z5TestOneTrickPonyABCs.test_Generator.<locals>.<lambda>re  rg  r<   z^huhu$Zhuhuc               @   s   e Zd Zdd Zdd ZdS )z8TestOneTrickPonyABCs.test_Generator.<locals>.FailOnClosec             S   s   |S )Nr/   )r.   rd  r/   r/   r0   re    r9  z=TestOneTrickPonyABCs.test_Generator.<locals>.FailOnClose.sendc             W   s   t d S )N)r   )r.   r   r/   r/   r0   rg    r9  z>TestOneTrickPonyABCs.test_Generator.<locals>.FailOnClose.throwN)r-   r8   r9   re  rg  r/   r/   r/   r0   FailOnClose  s   r  c               @   s   e Zd Zdd Zdd ZdS )z@TestOneTrickPonyABCs.test_Generator.<locals>.IgnoreGeneratorExitc             S   s   |S )Nr/   )r.   rd  r/   r/   r0   re    r9  zETestOneTrickPonyABCs.test_Generator.<locals>.IgnoreGeneratorExit.sendc             W   s   d S )Nr/   )r.   r   r/   r/   r0   rg    r9  zFTestOneTrickPonyABCs.test_Generator.<locals>.IgnoreGeneratorExit.throwN)r-   r8   r9   re  rg  r/   r/   r/   r0   IgnoreGeneratorExit  s   r  )r*   r   r?  r   ri   r>  rM   rL   r   r   rj   r;  rQ   re  nextrF   r   rr  rq   r   rg  assertRaisesRegexStopIterationRuntimeError)r.   r  r  r  ru  r   r  r  r_  rv  mgenr  r  r/   r/   r0   test_Generator  s<    
"
"z#TestOneTrickPonyABCs.test_Generatorc             C   s  G dd d}G dd d}G dd d}d ddd	d
ddg i t  tdtg | | | g}x6|D ].}| |t | tt|ttt| qbW G dd d}G dd dt}dd }| | | g}	xB|	D ]:}| |t	 | |t | 
tt|ttt| qW | tdd dd }
| }| ||  | |
|d |
|  | d|
|d | |
|  | t |
|t W d Q R X G dd dt}| t |
|   W d Q R X G dd dt}| t |
|   W d Q R X d S )Nc               @   s.   e Zd Zdd Zdd Zdd Zd
dd	ZdS )z:TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen1c             S   s   | S )Nr/   )r.   r/   r/   r0   r    r9  zDTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen1.__aiter__c             S   s   d S )Nr/   )r.   r/   r/   r0   r     r9  zDTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen1.__anext__c             S   s   d S )Nr/   )r.   r/   r/   r0   aclose!  r9  zATestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen1.acloseNc             S   s   d S )Nr/   )r.   rh  ri  rj  r/   r/   r0   athrow"  r9  zATestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen1.athrow)NN)r-   r8   r9   r  r  r  r  r/   r/   r/   r0   NonAGen1  s   r  c               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
z:TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen2c             S   s   | S )Nr/   )r.   r/   r/   r0   r  %  r9  zDTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen2.__aiter__c             S   s   d S )Nr/   )r.   r/   r/   r0   r  &  r9  zDTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen2.__anext__c             S   s   d S )Nr/   )r.   r/   r/   r0   r  '  r9  zATestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen2.aclosec             S   s   |S )Nr/   )r.   rd  r/   r/   r0   asend(  r9  z@TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen2.asendN)r-   r8   r9   r  r  r  r  r/   r/   r/   r0   NonAGen2$  s   r  c               @   s&   e Zd Zdd Zdd ZdddZdS )	z:TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen3c             S   s   d S )Nr/   )r.   r/   r/   r0   r  +  r9  zATestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen3.aclosec             S   s   |S )Nr/   )r.   rd  r/   r/   r0   r  ,  r9  z@TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen3.asendNc             S   s   d S )Nr/   )r.   rh  ri  rj  r/   r/   r0   r  -  r9  zATestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen3.athrow)NN)r-   r8   r9   r  r  r  r/   r/   r/   r0   NonAGen3*  s   r  r   gQ	@y              ?r9  r|   r/   c               @   s6   e Zd Zdd Zdd Zdd Zdd Zdd
dZd	S )z5TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.Genc             S   s   | S )Nr/   )r.   r/   r/   r0   r  7  r9  z?TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.Gen.__aiter__c                s   d S )Nr/   )r.   r/   r/   r0   r  8  r9  z?TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.Gen.__anext__c                s   d S )Nr/   )r.   r/   r/   r0   r  9  r9  z<TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.Gen.aclosec                s   |S )Nr/   )r.   rd  r/   r/   r0   r  :  r9  z;TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.Gen.asendNc                s   d S )Nr/   )r.   rh  ri  rj  r/   r/   r0   r  ;  r9  z<TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.Gen.athrow)NN)r-   r8   r9   r  r  r  r  r  r/   r/   r/   r0   r  6  s
   r  c                   s&   e Zd Zdd Zd fdd	Z  ZS )z=TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.MinimalAGenc                s   |S )Nr/   )r.   rd  r/   r/   r0   r  >  s    zCTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.MinimalAGen.asendNc                s   t  |||I d H  d S )N)rf  r  )r.   rh  ri  rj  )rk  r/   r0   r  @  s    zDTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.MinimalAGen.athrow)NN)r-   r8   r9   r  r  rl  r/   r/   )rk  r0   MinimalAGen=  s   r  c               S  s
   dV  d S )Nr;   r/   r/   r/   r/   r0   r_  C  s    z5TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.genr  r  c          
   S   sV   d }xLy|  d  W q tk
rL } z|jr6|jd nd }P W d d }~X Y qX qW |S )Nr   )re  r  r   )r`  r  exr/   r/   r0   	run_asyncM  s    z;TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.run_asyncr<   c               @   s   e Zd Zdd Zdd ZdS )z=TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.FailOnClosec                s   |S )Nr/   )r.   rd  r/   r/   r0   r  a  r9  zCTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.FailOnClose.asendc                s   t d S )N)r   )r.   r   r/   r/   r0   r  b  r9  zDTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.FailOnClose.athrowN)r-   r8   r9   r  r  r/   r/   r/   r0   r  `  s   r  c               @   s   e Zd Zdd Zdd ZdS )zETestOneTrickPonyABCs.test_AsyncGenerator.<locals>.IgnoreGeneratorExitc                s   |S )Nr/   )r.   rd  r/   r/   r0   r  h  r9  zKTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.IgnoreGeneratorExit.asendc                s   d S )Nr/   )r.   r   r/   r/   r0   r  i  r9  zLTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.IgnoreGeneratorExit.athrowN)r-   r8   r9   r  r  r/   r/   r/   r0   r  g  s   r  )r*   r   r?  r   ri   r>  rM   rL   r   r   rj   r;  rQ   r  r  r  rF   r   r  rq   r   r  r  )r.   r  r  r  ru  r   r  r  r_  rv  r  r  r  r  r/   r/   r0   test_AsyncGenerator  s>    
"
"z(TestOneTrickPonyABCs.test_AsyncGeneratorc             C   s   d dddt  dd dD g}x6|D ].}| |t | tt|ttt| q"W t t t	 t
 t t t t  t  t  g
}x6|D ].}| |t | tt|ttt| qW | td | td d S )Nr   gQ	@y              ?c             s   s   | ]
}|V  qd S )Nr/   )r   r   r/   r/   r0   r   q  s    z2TestOneTrickPonyABCs.test_Sized.<locals>.<genexpr>r/   r  )r]  r?  r   ri   r>  rM   rL   r~  r2   r   r4   r*   r}  r6   r  rH   r#  r   rj   r;  r@  )r.   ru  r   rv  r/   r/   r0   
test_Sizedn  s    
"
"zTestOneTrickPonyABCs.test_Sizedc          
   C   s   d dddt  dd dD g}x6|D ].}| |t | tt|ttt| q"W t t t	 t
 t t t t  t  g	}x6|D ].}| |t | tt|ttt| qW | td | td d S )Nr   gQ	@y              ?c             s   s   | ]
}|V  qd S )Nr/   )r   r   r/   r/   r0   r     s    z6TestOneTrickPonyABCs.test_Container.<locals>.<genexpr>r/   r   )r]  r?  r   ri   r>  rM   rL   r~  r2   r   r4   r*   r}  r6   r  rH   r   rj   r;  r@  )r.   ru  r   rv  r/   r/   r0   test_Container  s    
"
"z#TestOneTrickPonyABCs.test_Containerc             C   s   d ddddddg i t  t dd dD g}x6|D ].}| |t | tt|ttt| q0W d	d
 ttt	t
tjg jg}x6|D ].}| |t | tt|ttt| qW | td | td d S )Nr   gQ	@y              ?r|   r9  r/   c             s   s   | ]
}|V  qd S )Nr/   )r   r   r/   r/   r0   r     s    z5TestOneTrickPonyABCs.test_Callable.<locals>.<genexpr>c               S   s   d S )Nr/   r/   r/   r/   r0   r8    r9  z4TestOneTrickPonyABCs.test_Callable.<locals>.<lambda>__call__)r*   r]  r?  r   ri   r>  rM   rL   rq  r  rI   r4   appendr   rj   r;  r@  )r.   ru  r   rv  r/   r/   r0   test_Callable  s     
"
"z"TestOneTrickPonyABCs.test_Callablec             C   sP   xJt ttttttfD ]4}G dd d|}| t|| | 	tt
| qW d S )Nc               @   s   e Zd ZdS )z7TestOneTrickPonyABCs.test_direct_subclassing.<locals>.CN)r-   r8   r9   r/   r/   r/   r0   r     s   r   )r   r   r   r   r   r   r   rj   r>  ri   rq  )r.   r   r   r/   r/   r0   test_direct_subclassing  s    z,TestOneTrickPonyABCs.test_direct_subclassingc             C   s\   xVt ttttttfD ]@}G dd d}| t|||j	 |
| | t|| qW d S )Nc               @   s   e Zd ZdZdS )z1TestOneTrickPonyABCs.test_registration.<locals>.CN)r-   r8   r9   r<  r/   r/   r/   r0   r     s   r   )r   r   r   r   r   r   r   ri   r>  r-   rs  rj   )r.   r   r   r/   r/   r0   test_registration  s
    
z&TestOneTrickPonyABCs.test_registrationN)r-   r8   r9   rw  rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r/   r/   r/   r0   r^  X  s    2A":XGQr^  c               @   s>   e Zd ZdddZdd Zdd Zdd	 Zd
d Zdd ZdS )WithSetr/   c             C   s   t || _d S )N)r*   data)r.   itr/   r/   r0   rL    s    zWithSet.__init__c             C   s
   t | jS )N)rI   r  )r.   r/   r/   r0   r    s    zWithSet.__len__c             C   s
   t | jS )N)r   r  )r.   r/   r/   r0   r    s    zWithSet.__iter__c             C   s
   || j kS )N)r  )r.   r  r/   r/   r0   r     s    zWithSet.__contains__c             C   s   | j | d S )N)r  r   )r.   r  r/   r/   r0   r     s    zWithSet.addc             C   s   | j | d S )N)r  discard)r.   r  r/   r/   r0   r    s    zWithSet.discardN)r/   )	r-   r8   r9   rL  r  r  r   r   r  r/   r/   r/   r0   r    s   
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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+S ),TestCollectionABCsc             C   s`   x.t tgD ]"}| | t | t|t q
W | tddd G dd dt}| |  d S )Nr   r  r  c               @   s$   e Zd Zdd Zdd Zdd ZdS )z*TestCollectionABCs.test_Set.<locals>.MySetc             S   s   dS )NFr/   )r.   r   r/   r/   r0   r     s    z7TestCollectionABCs.test_Set.<locals>.MySet.__contains__c             S   s   dS )Nr   r/   )r.   r/   r/   r0   r    s    z2TestCollectionABCs.test_Set.<locals>.MySet.__len__c             S   s   t g S )N)r   )r.   r/   r/   r0   r    s    z3TestCollectionABCs.test_Set.<locals>.MySet.__iter__N)r-   r8   r9   r   r  r  r/   r/   r/   r0   MySet  s   r  )r*   r}  r   r   rj   r>  r;  r\  )r.   sampler  r/   r/   r0   test_Set  s    zTestCollectionABCs.test_Setc             C   s8   G dd dt }| |  }}| t|t|k d S )Nc               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )z8TestCollectionABCs.test_hash_Set.<locals>.OneTwoThreeSetc             S   s   dddg| _ d S )Nr;   r<   r@   )contents)r.   r/   r/   r0   rL    s    zATestCollectionABCs.test_hash_Set.<locals>.OneTwoThreeSet.__init__c             S   s
   || j kS )N)r  )r.   r   r/   r/   r0   r     s    zETestCollectionABCs.test_hash_Set.<locals>.OneTwoThreeSet.__contains__c             S   s
   t | jS )N)rI   r  )r.   r/   r/   r0   r    s    z@TestCollectionABCs.test_hash_Set.<locals>.OneTwoThreeSet.__len__c             S   s
   t | jS )N)r   r  )r.   r/   r/   r0   r    s    zATestCollectionABCs.test_hash_Set.<locals>.OneTwoThreeSet.__iter__c             S   s   |   S )N)_hash)r.   r/   r/   r0   r<    s    zATestCollectionABCs.test_hash_Set.<locals>.OneTwoThreeSet.__hash__N)r-   r8   r9   rL  r   r  r  r<  r/   r/   r/   r0   OneTwoThreeSet  s
   r  )r   rj   r  )r.   r  r'   r(   r/   r/   r0   test_hash_Set  s    z TestCollectionABCs.test_hash_Setc             C   sL   G dd dt }|d}|d}|d}| || | || d S )Nc               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
z5TestCollectionABCs.test_isdisjoint_Set.<locals>.MySetc             S   s
   || _ d S )N)r  )r.   itrr/   r/   r0   rL    s    z>TestCollectionABCs.test_isdisjoint_Set.<locals>.MySet.__init__c             S   s
   || j kS )N)r  )r.   r   r/   r/   r0   r     s    zBTestCollectionABCs.test_isdisjoint_Set.<locals>.MySet.__contains__c             S   s
   t | jS )N)r   r  )r.   r/   r/   r0   r    s    z>TestCollectionABCs.test_isdisjoint_Set.<locals>.MySet.__iter__c             S   s   t dd | jD S )Nc             S   s   g | ]}|qS r/   r/   )r   r   r/   r/   r0   r     s    zQTestCollectionABCs.test_isdisjoint_Set.<locals>.MySet.__len__.<locals>.<listcomp>)rI   r  )r.   r/   r/   r0   r    s    z=TestCollectionABCs.test_isdisjoint_Set.<locals>.MySet.__len__N)r-   r8   r9   rL  r   r  r  r/   r/   r/   r0   r    s   r  )r;   r<   r@   )r{   rD      )r;   rD   r  )r   rj   
isdisjointri   )r.   r  s1s2s3r/   r/   r0   test_isdisjoint_Set  s    	z&TestCollectionABCs.test_isdisjoint_Setc             C   s   G dd dt }|d}|d}|d}|d}| ||k | ||k  | ||k | ||k | ||k | || | || d S )Nc               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
z3TestCollectionABCs.test_equality_Set.<locals>.MySetc             S   s
   || _ d S )N)r  )r.   r  r/   r/   r0   rL    s    z<TestCollectionABCs.test_equality_Set.<locals>.MySet.__init__c             S   s
   || j kS )N)r  )r.   r   r/   r/   r0   r      s    z@TestCollectionABCs.test_equality_Set.<locals>.MySet.__contains__c             S   s
   t | jS )N)r   r  )r.   r/   r/   r0   r    s    z<TestCollectionABCs.test_equality_Set.<locals>.MySet.__iter__c             S   s   t dd | jD S )Nc             S   s   g | ]}|qS r/   r/   )r   r   r/   r/   r0   r     s    zOTestCollectionABCs.test_equality_Set.<locals>.MySet.__len__.<locals>.<listcomp>)rI   r  )r.   r/   r/   r0   r    s    z;TestCollectionABCs.test_equality_Set.<locals>.MySet.__len__N)r-   r8   r9   rL  r   r  r  r/   r/   r/   r0   r    s   r  )r;   )r;   r<   )r@   r{   )r   rj   ri   rF   assertNotEqual)r.   r  r  r  r  Zs4r/   r/   r0   test_equality_Set  s    	z$TestCollectionABCs.test_equality_Setc             C   s<   G dd dt }|d}|d}||@ }| ||d d S )Nc               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
z5TestCollectionABCs.test_arithmetic_Set.<locals>.MySetc             S   s
   || _ d S )N)r  )r.   r  r/   r/   r0   rL    s    z>TestCollectionABCs.test_arithmetic_Set.<locals>.MySet.__init__c             S   s
   || j kS )N)r  )r.   r   r/   r/   r0   r     s    zBTestCollectionABCs.test_arithmetic_Set.<locals>.MySet.__contains__c             S   s
   t | jS )N)r   r  )r.   r/   r/   r0   r    s    z>TestCollectionABCs.test_arithmetic_Set.<locals>.MySet.__iter__c             S   s   t dd | jD S )Nc             S   s   g | ]}|qS r/   r/   )r   r   r/   r/   r0   r     s    zQTestCollectionABCs.test_arithmetic_Set.<locals>.MySet.__len__.<locals>.<listcomp>)rI   r  )r.   r/   r/   r0   r    s    z=TestCollectionABCs.test_arithmetic_Set.<locals>.MySet.__len__N)r-   r8   r9   rL  r   r  r  r/   r/   r/   r0   r    s   r  )r;   r<   r@   )r@   r{   rD   )r@   )r   rF   )r.   r  r  r  r  r/   r/   r0   test_arithmetic_Set  s
    	z&TestCollectionABCs.test_arithmetic_Setc             C   sT   |  t t | ttt | t t | ttt | tddddd d S )Nr   r  r  r   r  )	r   r*   r   rj   r>  r?  r}  ri   r;  )r.   r/   r/   r0   test_MutableSet!  s    z"TestCollectionABCs.test_MutableSetc             C   s,   t d}|t dM }| t|td d S )NabcdZcdefZcd)r  rF   r*   )r.   r  r/   r/   r0   test_issue_5647)  s    z"TestCollectionABCs.test_issue_5647c             C   s4   G dd dt }|ddddg}| | d d S )Nc               @   sL   e Zd ZdgZdddZdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )z1TestCollectionABCs.test_issue_4920.<locals>.MySetZ__sNc             S   s   |d krg }t || _d S )N)r*   	_MySet__s)r.   rH   r/   r/   r0   rL  3  s    z:TestCollectionABCs.test_issue_4920.<locals>.MySet.__init__c             S   s
   || j kS )N)r  )r.   r]   r/   r/   r0   r   7  s    z>TestCollectionABCs.test_issue_4920.<locals>.MySet.__contains__c             S   s
   t | jS )N)r   r  )r.   r/   r/   r0   r  9  s    z:TestCollectionABCs.test_issue_4920.<locals>.MySet.__iter__c             S   s
   t | jS )N)rI   r  )r.   r/   r/   r0   r  ;  s    z9TestCollectionABCs.test_issue_4920.<locals>.MySet.__len__c             S   s   || j k}| j | |S )N)r  r   )r.   r]   r  r/   r/   r0   r   =  s    
z5TestCollectionABCs.test_issue_4920.<locals>.MySet.addc             S   s   || j k}| j | |S )N)r  r  )r.   r]   r  r/   r/   r0   r  A  s    
z9TestCollectionABCs.test_issue_4920.<locals>.MySet.discardc             S   s   dt t|  S )Nz	MySet(%s))rL   r4   )r.   r/   r/   r0   __repr__E  s    z:TestCollectionABCs.test_issue_4920.<locals>.MySet.__repr__)N)r-   r8   r9   r   rL  r   r  r  r   r  r  r/   r/   r/   r0   r  1  s   
r  rD   +   r<   r;   )r   rF   ro   )r.   r  r  r/   r/   r0   test_issue_4920/  s    z"TestCollectionABCs.test_issue_4920c             C   s~   t  }t td}t |}||8 }| || t |}||N }| || t |}||M }| || ||O }| || d S )Nr   )r  rR   rF   )r.   emptyfullr  r/   r/   r0   test_issue8750J  s    z!TestCollectionABCs.test_issue8750c             C   sh   G dd dt }G dd dt }| }| }| ||k  | ||k | ||k | ||k d S )Nc               @   s$   e Zd Zdd Zdd Zdd ZdS )z;TestCollectionABCs.test_issue16373.<locals>.MyComparableSetc             S   s   dS )NFr/   )r.   r   r/   r/   r0   r   ]  s    zHTestCollectionABCs.test_issue16373.<locals>.MyComparableSet.__contains__c             S   s   dS )Nr   r/   )r.   r/   r/   r0   r  _  s    zCTestCollectionABCs.test_issue16373.<locals>.MyComparableSet.__len__c             S   s   t g S )N)r   )r.   r/   r/   r0   r  a  s    zDTestCollectionABCs.test_issue16373.<locals>.MyComparableSet.__iter__N)r-   r8   r9   r   r  r  r/   r/   r/   r0   MyComparableSet\  s   r  c               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )z>TestCollectionABCs.test_issue16373.<locals>.MyNonComparableSetc             S   s   dS )NFr/   )r.   r   r/   r/   r0   r   d  s    zKTestCollectionABCs.test_issue16373.<locals>.MyNonComparableSet.__contains__c             S   s   dS )Nr   r/   )r.   r/   r/   r0   r  f  s    zFTestCollectionABCs.test_issue16373.<locals>.MyNonComparableSet.__len__c             S   s   t g S )N)r   )r.   r/   r/   r0   r  h  s    zGTestCollectionABCs.test_issue16373.<locals>.MyNonComparableSet.__iter__c             S   s   t S )N)NotImplemented)r.   r   r/   r/   r0   rQ  j  s    zETestCollectionABCs.test_issue16373.<locals>.MyNonComparableSet.__le__c             S   s   t S )N)r  )r.   r   r/   r/   r0   rO  l  s    zETestCollectionABCs.test_issue16373.<locals>.MyNonComparableSet.__lt__N)r-   r8   r9   r   r  r  rQ  rO  r/   r/   r/   r0   MyNonComparableSetc  s
   r  )r   ri   rj   )r.   r  r  csZncsr/   r/   r0   test_issue16373Y  s    z"TestCollectionABCs.test_issue16373c       	      C   s   G dd d}G dd dt }td}| }||||g}|t||dt||dg}x&|D ]}x|D ]}| || qhW q^W | ||d | ||d | ||d	 | ||d d S )
Nc               @   s   e Zd Zdd ZdS )z=TestCollectionABCs.test_issue26915.<locals>.CustomEqualObjectc             S   s   dS )NFr/   )r.   rM  r/   r/   r0   rN  y  s    zDTestCollectionABCs.test_issue26915.<locals>.CustomEqualObject.__eq__N)r-   r8   r9   rN  r/   r/   r/   r0   CustomEqualObjectx  s   r  c               @   s$   e Zd Zdd Zdd Zdd ZdS )z:TestCollectionABCs.test_issue26915.<locals>.CustomSequencec             S   s
   || _ d S )N)_seq)r.   seqr/   r/   r0   rL  |  s    zCTestCollectionABCs.test_issue26915.<locals>.CustomSequence.__init__c             S   s
   | j | S )N)r  )r.   r   r/   r/   r0   r   ~  s    zFTestCollectionABCs.test_issue26915.<locals>.CustomSequence.__getitem__c             S   s
   t | jS )N)rI   r  )r.   r/   r/   r0   r    s    zBTestCollectionABCs.test_issue26915.<locals>.CustomSequence.__len__N)r-   r8   r9   rL  r   r  r/   r/   r/   r0   CustomSequence{  s   r  nan)r;   r<   r   r;   r<   )r#   r{  r!   r"   rJ   rF   r   count)	r.   r  r  r  objr  Z
containers	containerelemr/   r/   r0   test_issue26915v  s    

z"TestCollectionABCs.test_issue26915c             C   s   |  t|t| d S )N)assertSetEqualr*   )r.   r  r  r/   r/   r0   assertSameSet  s    z TestCollectionABCs.assertSameSetc          	   C   s   G dd dt }td}td}td}|d}|d}|d}td}td}	td}
||@ }| ||@ | | ||@ | | ||@ | | ||	@ | ||B }| ||B | | ||B | | ||B | | ||	B | || }|| }| || | | || | | || | | || | | || | | || | | ||	 | | || | ||A }| ||A | | ||A | | ||A | | ||	A | | ||k  | ||k  | ||k  | ||k  | ||k  | ||k  | ||k  | ||k  | ||k  | t ||
k  W d Q R X | t ||k  W d Q R X | t ||	k  W d Q R X | ||k | ||k | ||k | ||k | ||k | ||k | ||k | ||k | ||k | t ||
k W d Q R X | t ||k W d Q R X | t ||	k W d Q R X | ||k | ||k | ||k | ||k | ||k | ||k | ||k | ||k | ||k | t ||
k W d Q R X | t ||k W d Q R X | t ||	k W d Q R X | ||k | ||k | ||k | ||k | ||k | ||k | ||k | ||k | ||k | t ||
k W d Q R X | t ||k W d Q R X | t ||	k W d Q R X | ||k | ||k | ||k | ||k | ||k | ||k | ||
k | ||k | ||	k | ||k | ||k | ||k | ||k | ||k | ||k | ||
k | ||k | ||	k d S )	Nc               @   s6   e Zd ZdddZdd Zdd Zdd	 Zd
d ZdS )zLTestCollectionABCs.test_Set_interoperability_with_real_sets.<locals>.ListSetr/   c             S   s.   g | _ x"|D ]}|| j kr| j | qW d S )N)r  r  )r.   elementsr  r/   r/   r0   rL    s    

zUTestCollectionABCs.test_Set_interoperability_with_real_sets.<locals>.ListSet.__init__c             S   s
   || j kS )N)r  )r.   r  r/   r/   r0   r     s    zYTestCollectionABCs.test_Set_interoperability_with_real_sets.<locals>.ListSet.__contains__c             S   s
   t | jS )N)r   r  )r.   r/   r/   r0   r    s    zUTestCollectionABCs.test_Set_interoperability_with_real_sets.<locals>.ListSet.__iter__c             S   s
   t | jS )N)rI   r  )r.   r/   r/   r0   r    s    zTTestCollectionABCs.test_Set_interoperability_with_real_sets.<locals>.ListSet.__len__c             S   s   d | jS )Nz	Set({!r}))r,   r  )r.   r/   r/   r0   r    s    zUTestCollectionABCs.test_Set_interoperability_with_real_sets.<locals>.ListSet.__repr__N)r/   )r-   r8   r9   rL  r   r  r  r  r/   r/   r/   r0   ListSet  s
   
r  rA   ZbcdZabcdeZabccbaZbcddcbZ
abcdeedcba)r   r*   r4   r  rj   ri   rq   r   )r.   r  Zr1Zr2Zr3f1f2Zf3l1l2l3targetZ
fwd_targetZ
rev_targetr/   r/   r0   (test_Set_interoperability_with_real_sets  s    	z;TestCollectionABCs.test_Set_interoperability_with_real_setsc             C   sp   x,t gD ]"}| | t | t|t qW | tdddd G dd dt}| |  | tt	|  d S )Nr   r  r  r   c               @   s$   e Zd Zdd Zdd Zdd ZdS )z2TestCollectionABCs.test_Mapping.<locals>.MyMappingc             S   s   dS )Nr   r/   )r.   r/   r/   r0   r  6  s    z:TestCollectionABCs.test_Mapping.<locals>.MyMapping.__len__c             S   s   t d S )N)r   )r.   rv   r/   r/   r0   r   8  s    z>TestCollectionABCs.test_Mapping.<locals>.MyMapping.__getitem__c             S   s   t dS )Nr/   )r   )r.   r/   r/   r0   r  :  s    z;TestCollectionABCs.test_Mapping.<locals>.MyMapping.__iter__N)r-   r8   r9   r  r   r  r/   r/   r/   r0   	MyMapping5  s   r  )
r6   r   r   rj   r>  r;  r\  rq   r   r  )r.   r  r  r/   r/   r0   test_Mapping/  s    zTestCollectionABCs.test_Mappingc          	   C   sH   x,t gD ]"}| | t | t|t qW | tdddddd d S )Nr   r  r  r   __setitem____delitem__)r6   r   r   rj   r>  r;  )r.   r  r/   r/   r0   test_MutableMapping?  s
    z&TestCollectionABCs.test_MutableMappingc             C   s   t  }d|d< | | t | | t | | t | | t t  }d|d< | dhB }| |t t| d|d< | 	t
|ddg t  }d|d< | dhB }| |t t| d|d< | 	t
|ddg d S )NrD   redorange   Zblue)r  r@   )r  rD   )r	   r   r  r   r    rH   r!   r*   r4   rF   sorted)r.   ZmymaprC   r/   r/   r0   test_MutableMapping_subclassF  s(    z/TestCollectionABCs.test_MutableMapping_subclassc             C   s   x2t tttgD ]"}| | t | t|t qW | tdt | ttt | t	dt | tt	t | ttt | 
tdddd d S )Nr   r9  r   r  r  r   )r   r4   r~  r2   r   r#   rj   r>  rR   
memoryviewr;  )r.   r  r/   r/   r0   test_Sequence_  s    z TestCollectionABCs.test_Sequencec       
   
      s   G dd dt } fdd}xttfD ]}|d}ddgttdt|d	  }||}x~t|d
hB D ]l}||||f xXtdt|d	 D ]B}|||||f x,tdt|d	 D ]}	||||||	f qW qW qhW q&W d S )Nc               @   s&   e Zd Zd	ddZdd Zdd ZdS )
zATestCollectionABCs.test_Sequence_mixins.<locals>.SequenceSubclassr/   c             S   s
   || _ d S )N)r  )r.   r  r/   r/   r0   rL  m  s    zJTestCollectionABCs.test_Sequence_mixins.<locals>.SequenceSubclass.__init__c             S   s
   | j | S )N)r  )r.   r   r/   r/   r0   r   p  s    zMTestCollectionABCs.test_Sequence_mixins.<locals>.SequenceSubclass.__getitem__c             S   s
   t | jS )N)rI   r  )r.   r/   r/   r0   r  s  s    zITestCollectionABCs.test_Sequence_mixins.<locals>.SequenceSubclass.__len__N)r/   )r-   r8   r9   rL  r   r  r/   r/   r/   r0   SequenceSubclassl  s   
r
  c                sh   y| j | }W n4 tk
rB    t |j |  W d Q R X Y n"X |j | } ||d| |f  d S )Nz
%r.index%s)r   r   rq   rF   )seq1seq2Z
index_argsexpectedactual)r.   r/   r0   assert_index_samew  s    
zBTestCollectionABCs.test_Sequence_mixins.<locals>.assert_index_sameabracadabraiir@   rC   )r#   r4   r2   rR   rI   r*   )
r.   r
  r  ZtyZ	nativeseqZindexesZseqseqZletterr  stopr/   )r.   r0   test_Sequence_mixinsk  s    z'TestCollectionABCs.test_Sequence_mixinsc             C   s   x.t tgD ]"}| | t | t|t q
W x0tttgD ]"}| 	| t | 
t|t q<W | 	tdt | 
ttt d S )Nr9  )r~  rz  r   r%   rj   r>  r2   r4   r   r?  ri   r  )r.   r  r/   r/   r0   test_ByteString  s    z"TestCollectionABCs.test_ByteStringc          
   C   s   x0t ttgD ]"}| | t | t|t qW x0ttt	gD ]"}| 
| t | t|t q>W | ttt | tddddddd d S )Nr   r  r  r   r   r  insert)r   r2   r~  r?  r$   ri   r>  r4   rz  r   r   rj   r;  )r.   r  r/   r/   r0   test_MutableSequence  s    
z'TestCollectionABCs.test_MutableSequencec             C   s   G dd dt }| }|d |d | t|d | |d d |  | |d d |  | t|d |d | t|d |d	7 }| t|d
 | |d d |  | t|d d S )Nc               @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )zOTestCollectionABCs.test_MutableSequence_mixins.<locals>.MutableSequenceSubclassc             S   s
   g | _ d S )N)lst)r.   r/   r/   r0   rL    s    zXTestCollectionABCs.test_MutableSequence_mixins.<locals>.MutableSequenceSubclass.__init__c             S   s   || j |< d S )N)r  )r.   r   rd  r/   r/   r0   r     s    z[TestCollectionABCs.test_MutableSequence_mixins.<locals>.MutableSequenceSubclass.__setitem__c             S   s
   | j | S )N)r  )r.   r   r/   r/   r0   r     s    z[TestCollectionABCs.test_MutableSequence_mixins.<locals>.MutableSequenceSubclass.__getitem__c             S   s
   t | jS )N)rI   r  )r.   r/   r/   r0   r    s    zWTestCollectionABCs.test_MutableSequence_mixins.<locals>.MutableSequenceSubclass.__len__c             S   s   | j |= d S )N)r  )r.   r   r/   r/   r0   r    s    z[TestCollectionABCs.test_MutableSequence_mixins.<locals>.MutableSequenceSubclass.__delitem__c             S   s   | j || d S )N)r  r  )r.   r   rd  r/   r/   r0   r    s    zVTestCollectionABCs.test_MutableSequence_mixins.<locals>.MutableSequenceSubclass.insertN)	r-   r8   r9   rL  r   r   r  r  r  r/   r/   r/   r0   MutableSequenceSubclass  s   r  r   )r;   r<   r@   r{   rD   r@   r;   r{   )r   r=   r>   r  r   r>   )	r$   r  extendrF   rI   reversero   removeclear)r.   r  Zmssr/   r/   r0   test_MutableSequence_mixins  s"    


z.TestCollectionABCs.test_MutableSequence_mixinsN)r-   r8   r9   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r/   r/   r/   r0   r    s,    #
r  c               @   s   e Zd Zdd Zdd ZdS )CounterSubclassWithSetItemc             O   s   d| _ tj| f|| d S )NF)calledr   rL  )r.   r   r   r/   r/   r0   rL    s    z#CounterSubclassWithSetItem.__init__c             C   s   d| _ t| || d S )NT)r  r   r   )r.   r[   rd  r/   r/   r0   r     s    z&CounterSubclassWithSetItem.__setitem__N)r-   r8   r9   rL  r   r/   r/   r/   r0   r    s   r  c               @   s   e Zd Zdd Zdd ZdS )CounterSubclassWithGetc             O   s   d| _ tj| f|| d S )NF)r  r   rL  )r.   r   r   r/   r/   r0   rL    s    zCounterSubclassWithGet.__init__c             C   s   d| _ t| ||S )NT)r  r   rK   )r.   r[   defaultr/   r/   r0   rK     s    zCounterSubclassWithGet.getN)r-   r8   r9   rL  rK   r/   r/   r/   r0   r     s   r   c               @   st   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S )TestCounterc          
   C   s  t d}| |t dddd | |t dddd | |t | |t | tt t | tt t | t|d | t|	 d | t
|	 dddg | t
| ddd	g | t
|ddd	g | t
| d
ddg | |d d | |d d | |d	d | |dd | |ddd | |ddd | |tdddd | t|d | | d
ddg x2tdD ]&}| ||d
ddgd |  qW | dt
| d |d  d7  < |d  d8  < |d	= |d	= |d  d8  < d|d< |d  d7  < | |tdddddd | dt
| d | |dd | d| x*tdD ]}| \}}| || qW |  | |i  | t|d | tt jd | tt| |tddd  |jdd! |t d" |  |d# |d$ |  | |td%d&ddd' | |ddd | |d d | |ddd | |d d d S )(NZabcabar@   r<   r;   )r'   r(   r?   r  r'   r(   r?   )r'   r@   )r(   r<   )r?   r;   rC   r   TFr   z!Counter({'a': 3, 'b': 2, 'c': 1})rD   r|   ZaaabbcrZ   r   r^   rb   r{   )r'   r(   rZ   r^   rb   Zaaaaffffz	Counter()rA   )r'   r(   )r?   ZPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbA   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbZcdci+  iM  )r'   r(   r?   rZ   ) r   rF   r   r6   r   rj   r>  rI   sumr#  r  r  rH   r   rK   rL   most_commonrR   r}   r  ro   r   rp   r  rq   NotImplementedErrorr:  r   r  re   rL  
setdefault)r.   r?   rv   r  Zcntr/   r/   r0   rc     st    

zTestCounter.test_basicsc             C   s   |  ttdd dg |  ttdd dg |  ttd d dg | ttd | ttdd | ttj d S )Nr   )r.   )r.   r   )r   )r   r   )r   Nr/   )rF   r4   r   rH   rq   r   rL  )r.   r/   r/   r0   	test_init  s    zTestCounter.test_initc             C   s   t  }|jdd | t| dg t  }|jdd | t| dg t  }|jd d | t| dg | tt  jd | tt  ji i  | tt j d S )Nr   )r.   )r.   r   )r   )r   r   )r   N)r   re   rF   r4   rH   rq   r   )r.   r?   r/   r/   r0   test_update&  s    zTestCounter.test_updatec          
      s   t d  fdd}|  |t |t xDttjd D ]2} j|d |tt	| W d Q R X qRW |t
t t  }| || |t  d S )Nz)which witch had which witches wrist watchc                s*   d| f }  | |  |  d S )Nz
copy: %s
words: %s)rO   rF   )dupmsg)r.   r*  r/   r0   check8  s    z'TestCounter.test_copying.<locals>.checkr;   )ra   )r   r  rN   rW   rR   rS   rT   subTestrU   rV   rX   rL   re   )r.   r,  ra   Zupdate_testr/   )r.   r*  r0   test_copying4  s    $
zTestCounter.test_copyingc             C   sX   G dd dt }|d}| }| || | t|t| | t|t| d S )Nc               @   s   e Zd ZdS )z1TestCounter.test_copy_subclass.<locals>.MyCounterN)r-   r8   r9   r/   r/   r/   r0   	MyCounterI  s   r/  Zslartibartfast)r   rN   rF   rI   rM   )r.   r/  r?   rZ   r/   r/   r0   test_copy_subclassH  s    zTestCounter.test_copy_subclassc             C   sx   d}|  tt| t| |  tt|tt| |  tt|tt|  |  tt|t| d S )Nz%she sells sea shells by the sea shore)rF   r  r   r  r*   r6   rH   )r.   r  r/   r/   r0   test_conversionsQ  s
     zTestCounter.test_conversionsc             C   s:   t dddd}x&|D ]}| ||k | || qW d S )Nr   r#  r   )r'   r(   r?   )r   rj   rJ   )r.   r?   r  r/   r/   r0   "test_invariant_for_the_in_operatorY  s    
z.TestCounter.test_invariant_for_the_in_operatorc             C   s  t ddddt   }| t|tdd d}xtdD ]}t tdd	 |D }|jd
ddd t tdd	 |D }|jd
ddd xt jdd ft jdd ft jdd ft jdd fgD ]`\}}|||}x4|D ],}	| |||	 ||	 ||	 ||	||f qW | 	dd	 |
 D  qW q8W d}xtdD ]}t tdd	 |D }t tdd	 |D }xht jtjft jtjft jtjfgD ]B\}}
|||}|
t| t| }| |t|d
 qW q4W d S )Nr   r#  r   )r'   r(   r?   )r'   r  i  c             s   s   | ]}|t d dfV  qdS )r#  r{   N)r   )r   r  r/   r/   r0   r   g  s    z7TestCounter.test_multiset_operations.<locals>.<genexpr>r;   r   )r^   rb   rx   c             s   s   | ]}|t d dfV  qdS )r#  r{   N)r   )r   r  r/   r/   r0   r   i  s    )ru   rv   rt   c             S   s   t d| | S )Nr   )r   )r   r   r/   r/   r0   r8  l  r9  z6TestCounter.test_multiset_operations.<locals>.<lambda>c             S   s   t d| | S )Nr   )r   )r   r   r/   r/   r0   r8  m  r9  c             S   s   t d| |S )Nr   )r   )r   r   r/   r/   r0   r8  n  r9  c             S   s   t dt| |S )Nr   )r   min)r   r   r/   r/   r0   r8  o  r9  c             s   s   | ]}|d kV  qdS )r   Nr/   )r   r   r/   r/   r0   r   v  s    ZabcdefrB   c             s   s   | ]}|t d dfV  qdS )r   r<   N)r   )r   r  r/   r/   r0   r   {  s    c             s   s   | ]}|t d dfV  qdS )r   r<   N)r   )r   r  r/   r/   r0   r   |  s    )r   rF   r6   rR   re   __add____sub____or____and__rj   r#  r*   r  r:  )r.   r?   r  rv   r   r   Z	counteropZnumberopr  r   ZsetopZcounter_resultZ
set_resultr/   r/   r0   test_multiset_operations_  s:    

 


z$TestCounter.test_multiset_operationsc             C   s   d}xt dD ]}ttdd |D }|jdddd ttd	d |D }|jdddd
 xxtjtjftjtjftjtj	ftj
tjfgD ]H\}}| }t|}|||}	|||}
| |
|	 | t|
| qW qW d S )Nr  i  c             s   s   | ]}|t d dfV  qdS )r#  r{   N)r   )r   r  r/   r/   r0   r     s    z6TestCounter.test_inplace_operations.<locals>.<genexpr>r;   r   r   )r^   rb   rx   c             s   s   | ]}|t d dfV  qdS )r#  r{   N)r   )r   r  r/   r/   r0   r     s    )ru   rv   rt   )rR   r   r6   re   __iadd__r4  __isub__r5  __ior__r6  __iand__r7  rN   idrF   )r.   r  rv   r   r   Z
inplace_opZ
regular_opr?   Zc_idZregular_resultZinplace_resultr/   r/   r0   test_inplace_operations  s"    




z#TestCounter.test_inplace_operationsc             C   sP  t ddddddd}|jdd	d
ddddd | |t ddddddddd t ddddddd}|t dd	d
ddddd | |t ddddddddd t d}|d | |t dddddd t  }|jdd | t| dg t  }|jdd | t| dg | tt  jd | tt  ji i  | tt j d S )Nr   r   rD   r      r   )r'   r(   r?   rZ   r^   rx   r;   r<   r  r=   r>   i)r'   r(   r?   rZ   r^   rb   ru   ir#     ir   )r'   r(   r?   rZ   r^   rb   rx   ru   ZaaabbcdZ	aaaabbccer   )r'   r(   r?   rZ   r^   r   )r.   )r.   i)r   )r   i)r   subtractrF   r4   rH   rq   r   )r.   r?   r/   r/   r0   test_subtract  s$      
zTestCounter.test_subtractc          	   C   sN   t ddddddd}| t|
 tddddd | t| tdd	 d S )
Nr   r   rD   r   r?  r   )r'   r(   r?   rZ   r^   rx   )r?   rZ   r^   rx   )r'   )r   rF   r6   )r.   r?   r/   r/   r0   
test_unary  s    zTestCounter.test_unaryc             C   s0   t dd d}t|}| d| | d| d S )Nr<   )r'   r(   z'a': 2z	'b': None)r   rL   rJ   )r.   r?   r  r/   r/   r0   test_repr_nonsortable  s    z!TestCounter.test_repr_nonsortablec          	   C   s   t d}t }t|| | |dddddd t }t|| | |tdddd	d
g td}| |j | t|dddddd td}| |j | t|dddddd d S )Nr  rD   r<   r;   )r'   r  r(   r?   rZ   )r'   rD   )r(   r<   )r  r<   )r?   r;   )rZ   r;   )r'   r(   r?   rZ   r  )	r4   r6   r   rF   r   r  rj   r  r   )r.   elemsrZ   r   r?   r/   r/   r0   test_helper_function  s    

z TestCounter.test_helper_functionN)r-   r8   r9   rc   r(  r)  r.  r0  r1  r2  r8  r>  rB  rC  rD  rF  r/   r/   r/   r0   r"    s   <	'r"  c             C   s8   t jtd}t|tttttg}t	j
|  t	t|  d S )N)r   )doctestZDocTestSuiter   r   r^  r  r"  r:   r&   r   run_unittestrun_doctest)r%  ZNamedTupleDocsZtest_classesr/   r/   r0   	test_main  s    
rJ  __main__T)r%  )N)Br   r   rN   rG  r   r  rS   randomr   r   rer   r  testr   ro  r3  r   r   r   r   r	   r
   r   r   r   collections.abcr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   TestCaser&   r:   r   r   r7  r]  r^  r  r  r  r   r"  rJ  r-   r/   r/   r/   r0   <module>   sh    #
  A;    a    			 v


