B
    2*\C                @   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)ZassertGreaterEqualsetdirformat__name__)selfr'   r(    r.   @C:\ALexclude\prg\programme\Python37\Lib\test\test_collections.py_superset_test    s    

zTestUserObjects._superset_testc             C   s   |  tt d S )N)r0   r
   str)r-   r.   r.   r/   test_str_protocol)   s    z!TestUserObjects.test_str_protocolc             C   s   |  tt d S )N)r0   r   list)r-   r.   r.   r/   test_list_protocol,   s    z"TestUserObjects.test_list_protocolc             C   s   |  tt d S )N)r0   r	   dict)r-   r.   r.   r/   test_dict_protocol/   s    z"TestUserObjects.test_dict_protocolN)r,   
__module____qualname__r0   r2   r4   r6   r.   r.   r.   r/   r&      s   	r&   c               @   sL   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )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itemsr5   lenassertIngetreprtyper,   copyassertIsNotzipassertIsrangepickleHIGHEST_PROTOCOLloadsdumpsdeepcopyevalparents)r-   r>   dkeykveZm1Zm2protofr.   r.   r/   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)ra   Zopera)r   rM   updaterE   r3   rG   )r-   ZbaselineZadjustmentscmZcombinedr.   r.   r/   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;   )rE   r   rF   )r-   r.   r.   r/   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.   r/   	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-   rZ   r.   r.   r/   __missing__   s    z>TestChainMap.test_missing.<locals>.DefaultChainMap.__missing__N)r,   r7   r8   ri   r.   r.   r.   r/   DefaultChainMap   s   rj   r:   r;   )r'   r(   r<   r=   )r(   r>   i  )r'   r(   r>   rY   M   TFr'   i  i  )r(   r;   )	r   r5   rG   rE   rJ   poppopitemassertRaisesKeyError)r-   rj   rY   r[   r\   r.   r.   r/   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  )irY   r>   i     i	  iM  ix  )r_   r(   gr>   rr   7      )r]   r(   r:   r;   r?      rC   )r'   r(   r>   rY   r]    Z
abcdefghij)r'   r:   )r(   rt   )r>   i  )rY   i\  )r]   rv   )r_   i  )ru   i	  )rr   i8[ )rs   i'  )rq   r   )r   r   rE   joinr3   rG   )r-   rY   r.   r.   r/   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   r5   rE   rG   )r-   rY   r.   r.   r/   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)
isinstancer1   lowerr5   __getitem__)r-   rZ   r.   r.   r/   r      s    
z:TestChainMap.test_new_child.<locals>.lowerdict.__getitem__c             S   s   t |tr| }t| |S )N)r}   r1   r~   r5   __contains__)r-   rZ   r.   r.   r/   r      s    
z;TestChainMap.test_new_child.<locals>.lowerdict.__contains__N)r,   r7   r8   r   r   r.   r.   r.   r/   	lowerdict   s   r   r@   rA   )r'   BCrB   N)	r   rD   rE   rF   rP   r5   rI   rG   rJ   )r-   r>   mrY   r   rZ   r[   r\   r.   r.   r/   test_new_child   s$    




zTestChainMap.test_new_childN)r,   r7   r8   r`   rd   re   rh   rp   r{   r|   r   r.   r.   r.   r/   r9   7   s   <r9   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9abcr@   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   rw   !   )r   rE   r,   	__slots__r7   r   tuple_fieldsrn   
ValueErrorassertNotInrK   	TypeError_make)r-   r   r   r.   r.   r/   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   rE   _fields_defaultsrn   r   assertIsNone__new____defaults__iter)r-   r   r.   r.   r/   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   rE   __doc__)r-   r   r.   r.   r/   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   rE   r   r   )r-   r   r.   r.   r/   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)r@   r   )r@   r   )Z8efgZ9ghi)Z_0r   )r@   Z_efg)r@   r   r   ghi)r@   r   Z_2r   )r@   ry   r   )r@   r   r   NTT)rename)rE   r   r   )r-   specZrenamedr.   r.   r/   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   collectionsrE   r7   )r-   r   r.   r.   r/   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   rw   )r   r   )r   )r   r   )r   rw   r:   r;   r?   zPoint(XXX=1, y=2)z
Point(x=1)zPoint(x=11, y=22)__weakref__)r   )r:   rw   )r   errorz%Did not detect an incorrect fieldnamezx, y)r   rE   r5   rn   r   rW   localsrK   r   r*   r   r   _replace_asdictr   Z_fail)r-   r   pr.   r.   r/   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   rw   )r   rw   r   r:   r?   zp.z)r   assertIsInstancer   rE   r3   maxrn   
IndexErrorr   r   r   AttributeErrorrW   r   )r-   r   r   r   r   r.   r.   r/   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Zerory   r.   zZero()DotrY   r:   )r:   zDot(d=1)i  )rY   )i  i  c             s   s&   | ]}d  dd tdD V  qdS )ry   c             S   s   g | ]}t tjqS r.   )r   stringascii_letters).0rq   r.   r.   r/   
<listcomp>  s   z;TestNamedTuple.test_odd_sizes.<locals>.<genexpr>.<listcomp>r   N)rz   rQ   )r   rs   r.   r.   r/   	<genexpr>  s   z0TestNamedTuple.test_odd_sizes.<locals>.<genexpr>Big*   )r   rE   r   rK   r   r   rY   r   r3   r)   rQ   rH   r   	enumerategetattrr5   rO   )r-   r   r   nnamesr   r(   posnamerY   Z
d_expectedZb2Zb2_expectedr.   r.   r/   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   rB   rT   rU   r:   s   OrderedDict)r   rR   r   rQ   rS   rE   r   r   )r-   r   r   rT   rU   Zprotocolqr.   r.   r/   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   rB   )r   rM   rV   rE   r   )r-   r   Zcopierr   r.   r.   r/   	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?   rx   rC   )r:   r;   r?   rx   rC   r   r<   r=   (   2   )
itemgetterpropertyr-   clsr   )r   r<   r=   r   r   ZAliasZAtr   ZBuildZBypassZCreateZEncounteredZExpectedZFieldZForZGotZHelperZ
IronPythonZJythonro   ZMakeZModifyZNoter   r   ZReturnZReturnsZTyper   ZUsedZValidater   Z	Variablesr'   Z
accessibleaddZaddedallZalsoZanarg_listargsZ	argumentsZautomaticallybebuildbuiltinsZbutZbyZcannotclass_namespaceclassmethodr   r   ZconvertrM   ZcreatedZcreationrY   Z	debuggingZdefinedr5   Z
dictionarydocZ	docstringZ
docstringsZ	duplicateZeffectZeitherr   Zenvironmentsr   Zexampleexecr_   	f_globalsZfieldfield_namesZfields	formattedframeZfunctionZ	functionsZgeneraterJ   getterZgotZgreaterZhashelpZidentifiersindexZ	indexableinstanceZinstantiateZ	interningZintrospectionisidentifierr}   r   iterablerz   keywordkeywordskwdsrH   Zliker3   maprF   messageZmetadatamethodmethodsr   Zmodule_nameZmustr   Znamedr   namedtuple_r   	namespaceZneedsnewZnicely
num_fieldsZnumberobjectZofoperatoroptionr   Z
particularrR   ZpicklingZplainrl   Z
positionalr   rZregularr   replaceZ	replacingrK   repr_fmtZrepresentationresultZreuse_itemgettersseenr-   Zsequencer)   ZsideZ	specifiedsplitstart
startswithstepr1   r   stringssubclasssysZtargetsZthanr   Ztheirthistor   	tuple_newrL   typenameZ
underscoreZ
unexpectedunpackZupZuseZuseduserZvalidvaluesvariableverbosewhereZwhichZworkr   r   rB   rO   c             s   s   | ]}|d  V  qdS )r   Nr.   )r   r\   r.   r.   r/   r     s    z5TestNamedTuple.test_name_conflicts.<locals>.<genexpr>)r   rE   r   r   rQ   rH   r5   rO   r   r   rK   r   __getnewargs__)r-   r   tZnewtwordsr  Z	newvaluesr.   r.   r/   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,   r7   r8   r.   r.   r.   r/   r     s   r   zB(x=1))r   rE   rK   )r-   r  r   r.   r.   r/   	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   Tr@   def)r   )r@   r   F)rn   r   r   rE   r   )r-   r   r.   r.   r/   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,   r7   r8   r.   r.   r.   r/   r     s   r   Z_Pointr   r   r?   rx   )r   r?   )r   rx   rC   w)r   rE   r   r   r  __dict__)r-   r   r'   r.   r.   r/   $test_namedtuple_subclass_issue_24931  s
    
z3TestNamedTuple.test_namedtuple_subclass_issue_24931N)r,   r7   r8   r   r   unittestZskipIfr  flagsoptimizer   r   r   r   r   r   r   r   r   r  r  r  r  r.   r.   r.   r/   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.   r/   <lambda>      z7ABCTestCase.validate_abstract_methods.<locals>.<lambda>r   )r5   fromkeysrL   rM   rn   r   )r-   r@   r   Zmethodstubsr   r   Zstubsr.   r.   r/   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.   r/   r  +  r  z1ABCTestCase.validate_isinstance.<locals>.<lambda>r   __hash__)rL   r   setattrr   rg   
issubclassassertNotIsInstancerf   )r-   r@   r   Zstubr   r.   r.   r/   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.   r/   __init__>  s    z7ABCTestCase.validate_comparison.<locals>.Other.__init__c             S   s
   d| _ dS )NT)r1  )r-   otherr.   r.   r/   __eq__@  s    z5ABCTestCase.validate_comparison.<locals>.Other.__eq__N)r,   r7   r8   r2  r4  __lt____gt____le____ge____ne____ror____rand____rxor____rsub__r.   r.   r.   r/   Other=  s   r>  zRight side not called for %s.%s)r   r   rG   hasattrrg   r1  rL   )r-   r   ZopsZ	operatorsopr   r>  r3  r.   r.   r/   validate_comparison6  s    



zABCTestCase.validate_comparisonN)r,   r7   r8   r!  r&  rA  r.   r.   r.   r/   r    s   r  c               c   s
   d V  d S )Nr.   r.   r.   r.   r/   	_test_genU  s    rB  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.   r/   gen[  s    z0TestOneTrickPonyABCs.test_Awaitable.<locals>.genc               s   s
   d V  d S )Nr.   r.   r.   r.   r/   coro^  s    z1TestOneTrickPonyABCs.test_Awaitable.<locals>.coroc                  s   d S )Nr.   r.   r.   r.   r/   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.   r/   	__await__f  s    z:TestOneTrickPonyABCs.test_Awaitable.<locals>.Bar.__await__N)r,   r7   r8   rG  r.   r.   r.   r/   Bare  s   rH  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.   r/   sendj  s    z=TestOneTrickPonyABCs.test_Awaitable.<locals>.MinimalCoro.sendNc                s   t  ||| d S )N)superthrow)r-   typvaltb)	__class__r.   r/   rL  l  s    z>TestOneTrickPonyABCs.test_Awaitable.<locals>.MinimalCoro.throwc             s   s
   d V  d S )Nr.   )r-   r.   r.   r/   rG  n  s    zBTestOneTrickPonyABCs.test_Awaitable.<locals>.MinimalCoro.__await__)NN)r,   r7   r8   rJ  rL  rG  __classcell__r.   r.   )rP  r/   MinimalCoroi  s   rR  c               @   s   e Zd ZdS )z5TestOneTrickPonyABCs.test_Awaitable.<locals>.CoroLikeN)r,   r7   r8   r.   r.   r.   r/   CoroLike  s    rS  )types	coroutiner   intr   r%  r   rf   r$  rL   rK   r   rg   closeregisterr}   r   Z
gc_collect)r-   rD  rE  rF  rH  rR  non_samplesr   samplesr>   rS  r.   r.   r/   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.   r/   rD    s    z0TestOneTrickPonyABCs.test_Coroutine.<locals>.genc               s   s
   d V  d S )Nr.   r.   r.   r.   r/   rE    s    z1TestOneTrickPonyABCs.test_Coroutine.<locals>.coroc                  s   d S )Nr.   r.   r.   r.   r/   rF    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.   r/   rG    s    z:TestOneTrickPonyABCs.test_Coroutine.<locals>.Bar.__await__N)r,   r7   r8   rG  r.   r.   r.   r/   rH    s   rH  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-   rI  r.   r.   r/   rJ    s    z=TestOneTrickPonyABCs.test_Coroutine.<locals>.MinimalCoro.sendNc                s   t  ||| d S )N)rK  rL  )r-   rM  rN  rO  )rP  r.   r/   rL    s    z>TestOneTrickPonyABCs.test_Coroutine.<locals>.MinimalCoro.throwc             s   s
   d V  d S )Nr.   )r-   r.   r.   r/   rG    s    zBTestOneTrickPonyABCs.test_Coroutine.<locals>.MinimalCoro.__await__)NN)r,   r7   r8   rJ  rL  rG  rQ  r.   r.   )rP  r/   rR    s   rR  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-   rI  r.   r.   r/   rJ    s    z:TestOneTrickPonyABCs.test_Coroutine.<locals>.CoroLike.sendNc             S   s   d S )Nr.   )r-   rM  rN  rO  r.   r.   r/   rL    s    z;TestOneTrickPonyABCs.test_Coroutine.<locals>.CoroLike.throwc             S   s   d S )Nr.   )r-   r.   r.   r/   rW    s    z;TestOneTrickPonyABCs.test_Coroutine.<locals>.CoroLike.closec             S   s   d S )Nr.   )r-   r.   r.   r/   rG    s    z?TestOneTrickPonyABCs.test_Coroutine.<locals>.CoroLike.__await__)NN)r,   r7   r8   rJ  rL  rW  rG  r.   r.   r.   r/   rS    s   
rS  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-   rI  r.   r.   r/   rJ    s    z:TestOneTrickPonyABCs.test_Coroutine.<locals>.CoroLike.sendc             S   s   d S )Nr.   )r-   r.   r.   r/   rW    s    z;TestOneTrickPonyABCs.test_Coroutine.<locals>.CoroLike.closec             S   s   d S )Nr.   )r-   r.   r.   r/   rG    s    z?TestOneTrickPonyABCs.test_Coroutine.<locals>.CoroLike.__await__N)r,   r7   r8   rJ  rW  rG  r.   r.   r.   r/   rS    s   )rT  rU  r   rV  r   r%  rf   r$  rL   rK   r   r   rg   rW  r}   )r-   rD  rE  rF  rH  rR  rY  r   rZ  r>   rS  r.   r.   r/   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)rK  r"  )r-   )rP  r.   r/   r"    s    z6TestOneTrickPonyABCs.test_Hashable.<locals>.H.__hash__)r,   r7   r8   r"  rQ  r.   r.   )rP  r/   H  s   r]  r   r"  )	bytearrayr3   r)   r5   r%  r   rf   r$  rL   rK   rV  floatcomplexr1   r   	frozensetr   bytesr   rg   rn   r   rE   hashr!  r&  )r-   rY  r   rZ  r]  r.   r.   r/   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.   r/   	__aiter__  s    z=TestOneTrickPonyABCs.test_AsyncIterable.<locals>.AI.__aiter__N)r,   r7   r8   re  r.   r.   r.   r/   AI  s   rf  re  )rg   r}   r   r$  r   r%  rf   rL   rK   r!  r&  )r-   rf  rY  r   r.   r.   r/   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.   r/   re    s    z=TestOneTrickPonyABCs.test_AsyncIterator.<locals>.AI.__aiter__c                s   t d S )N)StopAsyncIteration)r-   r.   r.   r/   	__anext__  s    z=TestOneTrickPonyABCs.test_AsyncIterator.<locals>.AI.__anext__N)r,   r7   r8   re  ri  r.   r.   r.   r/   rf    s   rf  c               @   s   e Zd Zdd ZdS )z:TestOneTrickPonyABCs.test_AsyncIterator.<locals>.AnextOnlyc                s   t d S )N)rh  )r-   r.   r.   r/   ri    s    zDTestOneTrickPonyABCs.test_AsyncIterator.<locals>.AnextOnly.__anext__N)r,   r7   r8   ri  r.   r.   r.   r/   	AnextOnly  s   rj  ri  re  )
rg   r}   r   r$  r   r%  rf   rL   rK   r!  )r-   rf  rY  r   rj  r.   r.   r/   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.   r/   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)rK  __iter__)r-   )rP  r.   r/   rl    s    z6TestOneTrickPonyABCs.test_Iterable.<locals>.I.__iter__)r,   r7   r8   rl  rQ  r.   r.   )rP  r/   I  s   rm  rl  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.   r/   rl  #  r  z7TestOneTrickPonyABCs.test_Iterable.<locals>.It.__iter__N)r,   r7   r8   rl  r.   r.   r.   r/   It"  s   rn  c               @   s   e Zd ZdZdS )z5TestOneTrickPonyABCs.test_Iterable.<locals>.ItBlockedN)r,   r7   r8   rl  r.   r.   r.   r/   	ItBlocked$  s   ro  )r%  r   rf   r$  rL   rK   rb  r1   r   r3   r)   ra  r5   keysrG   r  rB  r   rg   rE   r!  r&  r}   )r-   rY  r   rZ  rm  rn  ro  r.   r.   r/   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.   r/   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   r3   )r-   r.   r.   r/   rl  F  s    z8TestOneTrickPonyABCs.test_Reversible.<locals>.R.__iter__c             S   s
   t t S )N)r   r3   )r-   r.   r.   r/   __reversed__H  s    z<TestOneTrickPonyABCs.test_Reversible.<locals>.R.__reversed__N)r,   r7   r8   rl  rr  r.   r.   r.   r/   RE  s   rs  rr  rl  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.   r/   rr  O  r  zDTestOneTrickPonyABCs.test_Reversible.<locals>.RevNoIter.__reversed__N)r,   r7   r8   rr  r.   r.   r.   r/   	RevNoIterN  s   ru  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.   r/   rl  Q  r  zBTestOneTrickPonyABCs.test_Reversible.<locals>.RevPlusIter.__iter__N)r,   r7   r8   rl  r.   r.   r.   r/   RevPlusIterP  s   rv  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.   r/   rl  X  r  z:TestOneTrickPonyABCs.test_Reversible.<locals>.Rev.__iter__c             S   s   t g S )N)rt  )r-   r.   r.   r/   rr  Y  r  z>TestOneTrickPonyABCs.test_Reversible.<locals>.Rev.__reversed__N)r,   r7   r8   rl  rr  r.   r.   r.   r/   RevW  s   rw  c               @   s   e Zd ZdZdS )z:TestOneTrickPonyABCs.test_Reversible.<locals>.RevItBlockedN)r,   r7   r8   rl  r.   r.   r.   r/   RevItBlockedZ  s   rx  c               @   s   e Zd ZdZdS )z;TestOneTrickPonyABCs.test_Reversible.<locals>.RevRevBlockedN)r,   r7   r8   rr  r.   r.   r.   r/   RevRevBlocked\  s   ry  )r5   r)   ra  r%  r   rf   r$  rL   rK   rp  rG   r  r   rB  r   rt  rb  r1   r   r3   r   r   rg   r#   r   r   rE   r_  r!  r}   )r-   rY  r   Znon_reversiblesrZ  rs  ru  rv  rw  rx  ry  r.   r.   r/   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.   r/   r  g  r  z6TestOneTrickPonyABCs.test_Collection.<locals>.<lambda>r  c             s   s   | ]
}|V  qd S )Nr.   )r   r   r.   r.   r/   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   r3   )r-   r.   r.   r/   rl    s    z:TestOneTrickPonyABCs.test_Collection.<locals>.Col.__iter__c             S   s   dS )Nr   r.   )r-   r.   r.   r/   __len__  s    z9TestOneTrickPonyABCs.test_Collection.<locals>.Col.__len__c             S   s   dS )NFr.   )r-   itemr.   r.   r/   r     s    z>TestOneTrickPonyABCs.test_Collection.<locals>.Col.__contains__N)r,   r7   r8   rl  r{  r   r.   r.   r.   r/   Col  s   r}  c               @   s   e Zd ZdS )z4TestOneTrickPonyABCs.test_Collection.<locals>.DerColN)r,   r7   r8   r.   r.   r.   r/   DerCol  s    r~  r{  rl  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.   r/   r{    r  z?TestOneTrickPonyABCs.test_Collection.<locals>.ColNoIter.__len__c             S   s   dS )NFr.   )r-   r|  r.   r.   r/   r     r  zDTestOneTrickPonyABCs.test_Collection.<locals>.ColNoIter.__contains__N)r,   r7   r8   r{  r   r.   r.   r.   r/   	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.   r/   rl    r  z@TestOneTrickPonyABCs.test_Collection.<locals>.ColNoSize.__iter__c             S   s   dS )NFr.   )r-   r|  r.   r.   r/   r     r  zDTestOneTrickPonyABCs.test_Collection.<locals>.ColNoSize.__contains__N)r,   r7   r8   rl  r   r.   r.   r.   r/   	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.   r/   rl    r  z@TestOneTrickPonyABCs.test_Collection.<locals>.ColNoCont.__iter__c             S   s   dS )Nr   r.   )r-   r.   r.   r/   r{    r  z?TestOneTrickPonyABCs.test_Collection.<locals>.ColNoCont.__len__N)r,   r7   r8   rl  r{  r.   r.   r.   r/   	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.   r/   rl    r  z@TestOneTrickPonyABCs.test_Collection.<locals>.SizeBlock.__iter__c             S   s   dS )NFr.   )r-   r.   r.   r/   r     r  zDTestOneTrickPonyABCs.test_Collection.<locals>.SizeBlock.__contains__N)r,   r7   r8   rl  r   r{  r.   r.   r.   r/   	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.   r/   r{    r  z?TestOneTrickPonyABCs.test_Collection.<locals>.IterBlock.__len__c             S   s   dS )NTr.   )r-   r.   r.   r/   r     r  zDTestOneTrickPonyABCs.test_Collection.<locals>.IterBlock.__contains__N)r,   r7   r8   r{  r   rl  r.   r.   r.   r/   	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   r3   )r-   r.   r.   r/   rl    s    z>TestOneTrickPonyABCs.test_Collection.<locals>.ColImpl.__iter__c             S   s   dS )Nr   r.   )r-   r.   r.   r/   r{    s    z=TestOneTrickPonyABCs.test_Collection.<locals>.ColImpl.__len__c             S   s   dS )NFr.   )r-   r|  r.   r.   r/   r     s    zBTestOneTrickPonyABCs.test_Collection.<locals>.ColImpl.__contains__N)r,   r7   r8   rl  r{  r   r.   r.   r.   r/   ColImpl  s   r  c               @   s   e Zd ZdZdS )z4TestOneTrickPonyABCs.test_Collection.<locals>.NonColN)r,   r7   r8   r   r.   r.   r.   r/   NonCol  s   r  )r%  r   rf   r$  rL   rK   rB  r   r^  r)   ra  r5   rb  r1   r   r3   rp  rG   r  r   rg   r#   r   r   r   r   rE   r_  r!  r}   )r-   Znon_collectionsr   Znon_col_iterablesrZ  r}  r~  r  r  r  r  r  r  r  r.   r.   r/   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              ?r  ry   r.   c             s   s   | ]
}|V  qd S )Nr.   )r   r   r.   r.   r/   r     s    z5TestOneTrickPonyABCs.test_Iterator.<locals>.<genexpr>__next__rl  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.   r/   r    s    z=TestOneTrickPonyABCs.test_Iterator.<locals>.NextOnly.__next__N)r,   r7   r8   r  r.   r.   r.   r/   NextOnly  s   r  )r)   r%  r   rf   r$  rL   rK   r   rb  r1   r   r3   r5   ra  rp  rG   r  rB  r   rg   r!  )r-   rY  r   rZ  r  r.   r.   r/   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.   r/   rl    r  z=TestOneTrickPonyABCs.test_Generator.<locals>.NonGen1.__iter__c             S   s   d S )Nr.   )r-   r.   r.   r/   r    r  z=TestOneTrickPonyABCs.test_Generator.<locals>.NonGen1.__next__c             S   s   d S )Nr.   )r-   r.   r.   r/   rW    r  z:TestOneTrickPonyABCs.test_Generator.<locals>.NonGen1.closeNc             S   s   d S )Nr.   )r-   rM  rN  rO  r.   r.   r/   rL    r  z:TestOneTrickPonyABCs.test_Generator.<locals>.NonGen1.throw)NN)r,   r7   r8   rl  r  rW  rL  r.   r.   r.   r/   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.   r/   rl    r  z=TestOneTrickPonyABCs.test_Generator.<locals>.NonGen2.__iter__c             S   s   d S )Nr.   )r-   r.   r.   r/   r    r  z=TestOneTrickPonyABCs.test_Generator.<locals>.NonGen2.__next__c             S   s   d S )Nr.   )r-   r.   r.   r/   rW    r  z:TestOneTrickPonyABCs.test_Generator.<locals>.NonGen2.closec             S   s   |S )Nr.   )r-   rI  r.   r.   r/   rJ    r  z9TestOneTrickPonyABCs.test_Generator.<locals>.NonGen2.sendN)r,   r7   r8   rl  r  rW  rJ  r.   r.   r.   r/   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.   r/   rW    r  z:TestOneTrickPonyABCs.test_Generator.<locals>.NonGen3.closec             S   s   |S )Nr.   )r-   rI  r.   r.   r/   rJ    r  z9TestOneTrickPonyABCs.test_Generator.<locals>.NonGen3.sendNc             S   s   d S )Nr.   )r-   rM  rN  rO  r.   r.   r/   rL    r  z:TestOneTrickPonyABCs.test_Generator.<locals>.NonGen3.throw)NN)r,   r7   r8   rW  rJ  rL  r.   r.   r.   r/   NonGen3  s   r  r   gQ	@y              ?r  ry   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.   r/   rl    r  z9TestOneTrickPonyABCs.test_Generator.<locals>.Gen.__iter__c             S   s   d S )Nr.   )r-   r.   r.   r/   r    r  z9TestOneTrickPonyABCs.test_Generator.<locals>.Gen.__next__c             S   s   d S )Nr.   )r-   r.   r.   r/   rW    r  z6TestOneTrickPonyABCs.test_Generator.<locals>.Gen.closec             S   s   |S )Nr.   )r-   rI  r.   r.   r/   rJ    r  z5TestOneTrickPonyABCs.test_Generator.<locals>.Gen.sendNc             S   s   d S )Nr.   )r-   rM  rN  rO  r.   r.   r/   rL    r  z6TestOneTrickPonyABCs.test_Generator.<locals>.Gen.throw)NN)r,   r7   r8   rl  r  rW  rJ  rL  r.   r.   r.   r/   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-   rI  r.   r.   r/   rJ    s    z<TestOneTrickPonyABCs.test_Generator.<locals>.MinimalGen.sendNc                s   t  ||| d S )N)rK  rL  )r-   rM  rN  rO  )rP  r.   r/   rL    s    z=TestOneTrickPonyABCs.test_Generator.<locals>.MinimalGen.throw)NN)r,   r7   r8   rJ  rL  rQ  r.   r.   )rP  r/   
MinimalGen  s   r  c               s   s
   dV  d S )Nr:   r.   r.   r.   r.   r/   rD    s    z0TestOneTrickPonyABCs.test_Generator.<locals>.genc               s   s   d V S )Nr.   r.   r.   r.   r/   r    r  z5TestOneTrickPonyABCs.test_Generator.<locals>.<lambda>rJ  rL  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-   rI  r.   r.   r/   rJ    r  z=TestOneTrickPonyABCs.test_Generator.<locals>.FailOnClose.sendc             W   s   t d S )N)r   )r-   r   r.   r.   r/   rL    r  z>TestOneTrickPonyABCs.test_Generator.<locals>.FailOnClose.throwN)r,   r7   r8   rJ  rL  r.   r.   r.   r/   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-   rI  r.   r.   r/   rJ    r  zETestOneTrickPonyABCs.test_Generator.<locals>.IgnoreGeneratorExit.sendc             W   s   d S )Nr.   )r-   r   r.   r.   r/   rL    r  zFTestOneTrickPonyABCs.test_Generator.<locals>.IgnoreGeneratorExit.throwN)r,   r7   r8   rJ  rL  r.   r.   r.   r/   IgnoreGeneratorExit  s   r  )r)   r   r%  r   rf   r$  rL   rK   r   r   rg   r!  rP   rJ  nextrE   r   rW  rn   r   rL  ZassertRaisesRegexStopIterationRuntimeError)r-   r  r  r  rY  r   r  r  rD  rZ  mgenr  r  r.   r.   r/   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.   r/   re    r  zDTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen1.__aiter__c             S   s   d S )Nr.   )r-   r.   r.   r/   ri     r  zDTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen1.__anext__c             S   s   d S )Nr.   )r-   r.   r.   r/   aclose!  r  zATestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen1.acloseNc             S   s   d S )Nr.   )r-   rM  rN  rO  r.   r.   r/   athrow"  r  zATestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen1.athrow)NN)r,   r7   r8   re  ri  r  r  r.   r.   r.   r/   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.   r/   re  %  r  zDTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen2.__aiter__c             S   s   d S )Nr.   )r-   r.   r.   r/   ri  &  r  zDTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen2.__anext__c             S   s   d S )Nr.   )r-   r.   r.   r/   r  '  r  zATestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen2.aclosec             S   s   |S )Nr.   )r-   rI  r.   r.   r/   asend(  r  z@TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen2.asendN)r,   r7   r8   re  ri  r  r  r.   r.   r.   r/   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.   r/   r  +  r  zATestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen3.aclosec             S   s   |S )Nr.   )r-   rI  r.   r.   r/   r  ,  r  z@TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen3.asendNc             S   s   d S )Nr.   )r-   rM  rN  rO  r.   r.   r/   r  -  r  zATestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen3.athrow)NN)r,   r7   r8   r  r  r  r.   r.   r.   r/   NonAGen3*  s   r  r   gQ	@y              ?r  ry   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.   r/   re  7  r  z?TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.Gen.__aiter__c                s   d S )Nr.   )r-   r.   r.   r/   ri  8  r  z?TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.Gen.__anext__c                s   d S )Nr.   )r-   r.   r.   r/   r  9  r  z<TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.Gen.aclosec                s   |S )Nr.   )r-   rI  r.   r.   r/   r  :  r  z;TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.Gen.asendNc                s   d S )Nr.   )r-   rM  rN  rO  r.   r.   r/   r  ;  r  z<TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.Gen.athrow)NN)r,   r7   r8   re  ri  r  r  r  r.   r.   r.   r/   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-   rI  r.   r.   r/   r  >  s    zCTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.MinimalAGen.asendNc                s   t  |||I d H  d S )N)rK  r  )r-   rM  rN  rO  )rP  r.   r/   r  @  s    zDTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.MinimalAGen.athrow)NN)r,   r7   r8   r  r  rQ  r.   r.   )rP  r/   MinimalAGen=  s   r  c               S  s
   dV  d S )Nr:   r.   r.   r.   r.   r/   rD  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   )rJ  r  r   )rE  r   Zexr.   r.   r/   	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-   rI  r.   r.   r/   r  a  r  zCTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.FailOnClose.asendc                s   t d S )N)r   )r-   r   r.   r.   r/   r  b  r  zDTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.FailOnClose.athrowN)r,   r7   r8   r  r  r.   r.   r.   r/   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-   rI  r.   r.   r/   r  h  r  zKTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.IgnoreGeneratorExit.asendc                s   d S )Nr.   )r-   r   r.   r.   r/   r  i  r  zLTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.IgnoreGeneratorExit.athrowN)r,   r7   r8   r  r  r.   r.   r.   r/   r  g  s   r  )r)   r   r%  r   rf   r$  rL   rK   r   r   rg   r!  rP   re  r  ri  rE   r   r  rn   r   r  r  )r-   r  r  r  rY  r   r  r  rD  rZ  r  r  r  r  r.   r.   r/   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.   r/   r   q  s    z2TestOneTrickPonyABCs.test_Sized.<locals>.<genexpr>r.   r{  )rB  r%  r   rf   r$  rL   rK   rb  r1   r   r3   r)   ra  r5   rp  rG   r  r   rg   r!  r&  )r-   rY  r   rZ  r.   r.   r/   
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.   r/   r     s    z6TestOneTrickPonyABCs.test_Container.<locals>.<genexpr>r.   r   )rB  r%  r   rf   r$  rL   rK   rb  r1   r   r3   r)   ra  r5   rp  rG   r   rg   r!  r&  )r-   rY  r   rZ  r.   r.   r/   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              ?ry   r  r.   c             s   s   | ]
}|V  qd S )Nr.   )r   r   r.   r.   r/   r     s    z5TestOneTrickPonyABCs.test_Callable.<locals>.<genexpr>c               S   s   d S )Nr.   r.   r.   r.   r/   r    r  z4TestOneTrickPonyABCs.test_Callable.<locals>.<lambda>__call__)r)   rB  r%  r   rf   r$  rL   rK   rV  r   rH   r3   appendr   rg   r!  r&  )r-   rY  r   rZ  r.   r.   r/   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,   r7   r8   r.   r.   r.   r/   r     s   r   )r   r   r   r   r   r   r   rg   r$  rf   rV  )r-   r   r   r.   r.   r/   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,   r7   r8   r"  r.   r.   r.   r/   r     s   r   )r   r   r   r   r   r   r   rf   r$  r,   rX  rg   )r-   r   r   r.   r.   r/   test_registration  s
    
z&TestOneTrickPonyABCs.test_registrationN)r,   r7   r8   r[  r\  rd  rg  rk  rq  rz  r  r  r  r  r  r  r  r  r  r.   r.   r.   r/   rC  X  s    2A":XGQrC  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.   r/   r2    s    zWithSet.__init__c             C   s
   t | jS )N)rH   r  )r-   r.   r.   r/   r{    s    zWithSet.__len__c             C   s
   t | jS )N)r   r  )r-   r.   r.   r/   rl    s    zWithSet.__iter__c             C   s
   || j kS )N)r  )r-   r|  r.   r.   r/   r     s    zWithSet.__contains__c             C   s   | j | d S )N)r  r   )r-   r|  r.   r.   r/   r     s    zWithSet.addc             C   s   | j | d S )N)r  discard)r-   r|  r.   r.   r/   r    s    zWithSet.discardN)r.   )	r,   r7   r8   r2  r{  rl  r   r   r  r.   r.   r.   r/   r    s   
r  c               @   s   e Zd Zdd Zdd Zdd Zd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   rl  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.   r/   r     s    z7TestCollectionABCs.test_Set.<locals>.MySet.__contains__c             S   s   dS )Nr   r.   )r-   r.   r.   r/   r{    s    z2TestCollectionABCs.test_Set.<locals>.MySet.__len__c             S   s   t g S )N)r   )r-   r.   r.   r/   rl    s    z3TestCollectionABCs.test_Set.<locals>.MySet.__iter__N)r,   r7   r8   r   r{  rl  r.   r.   r.   r/   MySet  s   r  )r)   ra  r   r   rg   r$  r!  rA  )r-   sampler  r.   r.   r/   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.   r/   r2    s    zATestCollectionABCs.test_hash_Set.<locals>.OneTwoThreeSet.__init__c             S   s
   || j kS )N)r  )r-   r   r.   r.   r/   r     s    zETestCollectionABCs.test_hash_Set.<locals>.OneTwoThreeSet.__contains__c             S   s
   t | jS )N)rH   r  )r-   r.   r.   r/   r{    s    z@TestCollectionABCs.test_hash_Set.<locals>.OneTwoThreeSet.__len__c             S   s
   t | jS )N)r   r  )r-   r.   r.   r/   rl    s    zATestCollectionABCs.test_hash_Set.<locals>.OneTwoThreeSet.__iter__c             S   s   |   S )N)_hash)r-   r.   r.   r/   r"    s    zATestCollectionABCs.test_hash_Set.<locals>.OneTwoThreeSet.__hash__N)r,   r7   r8   r2  r   r{  rl  r"  r.   r.   r.   r/   OneTwoThreeSet  s
   r  )r   rg   rc  )r-   r  r'   r(   r.   r.   r/   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.   r/   r2    s    z>TestCollectionABCs.test_isdisjoint_Set.<locals>.MySet.__init__c             S   s
   || j kS )N)r  )r-   r   r.   r.   r/   r     s    zBTestCollectionABCs.test_isdisjoint_Set.<locals>.MySet.__contains__c             S   s
   t | jS )N)r   r  )r-   r.   r.   r/   rl    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.   r/   r     s    zQTestCollectionABCs.test_isdisjoint_Set.<locals>.MySet.__len__.<locals>.<listcomp>)rH   r  )r-   r.   r.   r/   r{    s    z=TestCollectionABCs.test_isdisjoint_Set.<locals>.MySet.__len__N)r,   r7   r8   r2  r   rl  r{  r.   r.   r.   r/   r    s   r  )r:   r;   r?   )rx   rC      )r:   rC   r  )r   rg   
isdisjointrf   )r-   r  s1s2s3r.   r.   r/   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.   r/   r2    s    z<TestCollectionABCs.test_equality_Set.<locals>.MySet.__init__c             S   s
   || j kS )N)r  )r-   r   r.   r.   r/   r      s    z@TestCollectionABCs.test_equality_Set.<locals>.MySet.__contains__c             S   s
   t | jS )N)r   r  )r-   r.   r.   r/   rl    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.   r/   r     s    zOTestCollectionABCs.test_equality_Set.<locals>.MySet.__len__.<locals>.<listcomp>)rH   r  )r-   r.   r.   r/   r{    s    z;TestCollectionABCs.test_equality_Set.<locals>.MySet.__len__N)r,   r7   r8   r2  r   rl  r{  r.   r.   r.   r/   r    s   r  )r:   )r:   r;   )r?   rx   )r   rg   rf   rE   ZassertNotEqual)r-   r  r  r  r  Zs4r.   r.   r/   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.   r/   r2    s    z>TestCollectionABCs.test_arithmetic_Set.<locals>.MySet.__init__c             S   s
   || j kS )N)r  )r-   r   r.   r.   r/   r     s    zBTestCollectionABCs.test_arithmetic_Set.<locals>.MySet.__contains__c             S   s
   t | jS )N)r   r  )r-   r.   r.   r/   rl    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.   r/   r     s    zQTestCollectionABCs.test_arithmetic_Set.<locals>.MySet.__len__.<locals>.<listcomp>)rH   r  )r-   r.   r.   r/   r{    s    z=TestCollectionABCs.test_arithmetic_Set.<locals>.MySet.__len__N)r,   r7   r8   r2  r   rl  r{  r.   r.   r.   r/   r    s   r  )r:   r;   r?   )r?   rx   rC   )r?   )r   rE   )r-   r  r  r  r  r.   r.   r/   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   rl  r{  r   r  )	r   r)   r   rg   r$  r%  ra  rf   r!  )r-   r.   r.   r/   test_MutableSet!  s    z"TestCollectionABCs.test_MutableSetc             C   s,   t d}|t dM }| t|td d S )NabcdZcdefZcd)r  rE   r)   )r-   r   r.   r.   r/   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-   rG   r.   r.   r/   r2  3  s    z:TestCollectionABCs.test_issue_4920.<locals>.MySet.__init__c             S   s
   || j kS )N)r  )r-   r\   r.   r.   r/   r   7  s    z>TestCollectionABCs.test_issue_4920.<locals>.MySet.__contains__c             S   s
   t | jS )N)r   r  )r-   r.   r.   r/   rl  9  s    z:TestCollectionABCs.test_issue_4920.<locals>.MySet.__iter__c             S   s
   t | jS )N)rH   r  )r-   r.   r.   r/   r{  ;  s    z9TestCollectionABCs.test_issue_4920.<locals>.MySet.__len__c             S   s   || j k}| j | |S )N)r  r   )r-   r\   r   r.   r.   r/   r   =  s    
z5TestCollectionABCs.test_issue_4920.<locals>.MySet.addc             S   s   || j k}| j | |S )N)r  r  )r-   r\   r   r.   r.   r/   r  A  s    
z9TestCollectionABCs.test_issue_4920.<locals>.MySet.discardc             S   s   dt t|  S )Nz	MySet(%s))rK   r3   )r-   r.   r.   r/   __repr__E  s    z:TestCollectionABCs.test_issue_4920.<locals>.MySet.__repr__)N)r,   r7   r8   r   r2  r   rl  r{  r   r  r  r.   r.   r.   r/   r  1  s   
r  rC   +   r;   r:   )r   rE   rl   )r-   r  r   r.   r.   r/   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  rQ   rE   )r-   emptyZfullr   r.   r.   r/   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.   r/   r   ]  s    zHTestCollectionABCs.test_issue16373.<locals>.MyComparableSet.__contains__c             S   s   dS )Nr   r.   )r-   r.   r.   r/   r{  _  s    zCTestCollectionABCs.test_issue16373.<locals>.MyComparableSet.__len__c             S   s   t g S )N)r   )r-   r.   r.   r/   rl  a  s    zDTestCollectionABCs.test_issue16373.<locals>.MyComparableSet.__iter__N)r,   r7   r8   r   r{  rl  r.   r.   r.   r/   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.   r/   r   d  s    zKTestCollectionABCs.test_issue16373.<locals>.MyNonComparableSet.__contains__c             S   s   dS )Nr   r.   )r-   r.   r.   r/   r{  f  s    zFTestCollectionABCs.test_issue16373.<locals>.MyNonComparableSet.__len__c             S   s   t g S )N)r   )r-   r.   r.   r/   rl  h  s    zGTestCollectionABCs.test_issue16373.<locals>.MyNonComparableSet.__iter__c             S   s   t S )N)NotImplemented)r-   r   r.   r.   r/   r7  j  s    zETestCollectionABCs.test_issue16373.<locals>.MyNonComparableSet.__le__c             S   s   t S )N)r  )r-   r   r.   r.   r/   r5  l  s    zETestCollectionABCs.test_issue16373.<locals>.MyNonComparableSet.__lt__N)r,   r7   r8   r   r{  rl  r7  r5  r.   r.   r.   r/   MyNonComparableSetc  s
   r  )r   rf   rg   )r-   r  r  csZncsr.   r.   r/   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-   r3  r.   r.   r/   r4  y  s    zDTestCollectionABCs.test_issue26915.<locals>.CustomEqualObject.__eq__N)r,   r7   r8   r4  r.   r.   r.   r/   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.   r/   r2  |  s    zCTestCollectionABCs.test_issue26915.<locals>.CustomSequence.__init__c             S   s
   | j | S )N)r  )r-   r   r.   r.   r/   r   ~  s    zFTestCollectionABCs.test_issue26915.<locals>.CustomSequence.__getitem__c             S   s
   t | jS )N)rH   r  )r-   r.   r.   r/   r{    s    zBTestCollectionABCs.test_issue26915.<locals>.CustomSequence.__len__N)r,   r7   r8   r2  r   r{  r.   r.   r.   r/   CustomSequence{  s   r  nan)r:   r;   r   r:   r;   )r#   r_  r!   r"   rI   rE   r   count)	r-   r  r  r  objr  Z
containers	containerelemr.   r.   r/   test_issue26915v  s    

z"TestCollectionABCs.test_issue26915c             C   s   |  t|t| d S )N)ZassertSetEqualr)   )r-   r  r  r.   r.   r/   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.   r/   r2    s    

zUTestCollectionABCs.test_Set_interoperability_with_real_sets.<locals>.ListSet.__init__c             S   s
   || j kS )N)r  )r-   r  r.   r.   r/   r     s    zYTestCollectionABCs.test_Set_interoperability_with_real_sets.<locals>.ListSet.__contains__c             S   s
   t | jS )N)r   r  )r-   r.   r.   r/   rl    s    zUTestCollectionABCs.test_Set_interoperability_with_real_sets.<locals>.ListSet.__iter__c             S   s
   t | jS )N)rH   r  )r-   r.   r.   r/   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.   r/   r    s    zUTestCollectionABCs.test_Set_interoperability_with_real_sets.<locals>.ListSet.__repr__N)r.   )r,   r7   r8   r2  r   rl  r{  r  r.   r.   r.   r/   ListSet  s
   
r  r@   ZbcdZabcdeZabccbaZbcddcbZ
abcdeedcba)r   r)   r3   r  rg   rf   rn   r   )r-   r  Zr1Zr2Zr3f1f2Zf3l1l2l3targetZ
fwd_targetZ
rev_targetr.   r.   r/   (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   rl  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.   r/   r{  6  s    z:TestCollectionABCs.test_Mapping.<locals>.MyMapping.__len__c             S   s   t d S )N)r   )r-   rs   r.   r.   r/   r   8  s    z>TestCollectionABCs.test_Mapping.<locals>.MyMapping.__getitem__c             S   s   t dS )Nr.   )r   )r-   r.   r.   r/   rl  :  s    z;TestCollectionABCs.test_Mapping.<locals>.MyMapping.__iter__N)r,   r7   r8   r{  r   rl  r.   r.   r.   r/   	MyMapping5  s   r  )
r5   r   r   rg   r$  r!  rA  rn   r   rt  )r-   r  r  r.   r.   r/   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   rl  r{  r   __setitem____delitem__)r5   r   r   rg   r$  r!  )r-   r  r.   r.   r/   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 )NrC   redorange   Zblue)r  r?   )r  rC   )r	   r   rp  r   r    rG   r!   r)   r3   rE   sorted)r-   ZmymaprB   r.   r.   r/   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   r  r   rl  r{  r   )r   r3   rb  r1   r   r#   rg   r$  rQ   
memoryviewr!  )r-   r  r.   r.   r/   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.   r/   r2  m  s    zJTestCollectionABCs.test_Sequence_mixins.<locals>.SequenceSubclass.__init__c             S   s
   | j | S )N)r  )r-   r   r.   r.   r/   r   p  s    zMTestCollectionABCs.test_Sequence_mixins.<locals>.SequenceSubclass.__getitem__c             S   s
   t | jS )N)rH   r  )r-   r.   r.   r/   r{  s  s    zITestCollectionABCs.test_Sequence_mixins.<locals>.SequenceSubclass.__len__N)r.   )r,   r7   r8   r2  r   r{  r.   r.   r.   r/   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   rn   rE   )Zseq1Zseq2Z
index_argsZexpectedactual)r-   r.   r/   assert_index_samew  s    
zBTestCollectionABCs.test_Sequence_mixins.<locals>.assert_index_sameabracadabraiir?   rB   )r#   r3   r1   rQ   rH   r)   )
r-   r  r  ZtyZ	nativeseqZindexesZseqseqZletterr   stopr.   )r-   r/   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 )Nr  )rb  r^  r   r%   rg   r$  r1   r3   r   r%  rf   r  )r-   r  r.   r.   r/   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   rl  r{  r   r  r  insert)r   r1   rb  r%  r$   rf   r$  r3   r^  r   r   rg   r!  )r-   r  r.   r.   r/   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.   r/   r2    s    zXTestCollectionABCs.test_MutableSequence_mixins.<locals>.MutableSequenceSubclass.__init__c             S   s   || j |< d S )N)r  )r-   r   rI  r.   r.   r/   r    s    z[TestCollectionABCs.test_MutableSequence_mixins.<locals>.MutableSequenceSubclass.__setitem__c             S   s
   | j | S )N)r  )r-   r   r.   r.   r/   r     s    z[TestCollectionABCs.test_MutableSequence_mixins.<locals>.MutableSequenceSubclass.__getitem__c             S   s
   t | jS )N)rH   r  )r-   r.   r.   r/   r{    s    zWTestCollectionABCs.test_MutableSequence_mixins.<locals>.MutableSequenceSubclass.__len__c             S   s   | j |= d S )N)r  )r-   r   r.   r.   r/   r    s    z[TestCollectionABCs.test_MutableSequence_mixins.<locals>.MutableSequenceSubclass.__delitem__c             S   s   | j || d S )N)r  r  )r-   r   rI  r.   r.   r/   r    s    zVTestCollectionABCs.test_MutableSequence_mixins.<locals>.MutableSequenceSubclass.insertN)	r,   r7   r8   r2  r  r   r{  r  r  r.   r.   r.   r/   MutableSequenceSubclass  s   r  r   )r:   r;   r?   rx   rC   r?   r:   rx   )r   r<   r=   r  r   r=   )	r$   r  extendrE   rH   reverserl   removeclear)r-   r  Zmssr.   r.   r/   test_MutableSequence_mixins  s"    


z.TestCollectionABCs.test_MutableSequence_mixinsN)r,   r7   r8   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r.   r.   r.   r/   r    s,    #
r  c               @   s   e Zd Zdd Zdd ZdS )CounterSubclassWithSetItemc             O   s   d| _ tj| f|| d S )NF)calledr   r2  )r-   r   r   r.   r.   r/   r2    s    z#CounterSubclassWithSetItem.__init__c             C   s   d| _ t| || d S )NT)r  r   r  )r-   rZ   rI  r.   r.   r/   r    s    z&CounterSubclassWithSetItem.__setitem__N)r,   r7   r8   r2  r  r.   r.   r.   r/   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   r2  )r-   r   r   r.   r.   r/   r2    s    zCounterSubclassWithGet.__init__c             C   s   d| _ t| ||S )NT)r  r   rJ   )r-   rZ   defaultr.   r.   r/   rJ     s    zCounterSubclassWithGet.getN)r,   r7   r8   r2  rJ   r.   r.   r.   r/   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:   rB   r   TFr   z!Counter({'a': 3, 'b': 2, 'c': 1})rC   ry   ZaaabbcrY   r   r]   r_   rx   )r'   r(   rY   r]   r_   Zaaaaffffz	Counter()r@   )r'   r(   )r>   ZPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbA   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbZcdci+  iM  )r'   r(   r>   rY   ) r   rE   r   r5   r   rg   r$  rH   sumr  r  rp  rG   r   rJ   rK   most_commonrQ   rz   r  rl   r   rm   r  rn   NotImplementedErrorr   r   rc  rb   r2  
setdefault)r-   r>   rs   r  Zcntr.   r.   r/   r`     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.   )rE   r3   r   rG   rn   r   r2  )r-   r.   r.   r/   	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   rb   rE   r3   rG   rn   r   )r-   r>   r.   r.   r/   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)rN   rE   )dupmsg)r-   r  r.   r/   check8  s    z'TestCounter.test_copying.<locals>.checkr:   )r^   )r   r   rM   rV   rQ   rR   rS   ZsubTestrT   rU   rW   rK   rb   )r-   r  r^   Zupdate_testr.   )r-   r  r/   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,   r7   r8   r.   r.   r.   r/   	MyCounterI  s   r
  Zslartibartfast)r   rM   rE   rH   rL   )r-   r
  r>   rY   r.   r.   r/   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)rE   r  r   r  r)   r5   rG   )r-   r   r.   r.   r/   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   rg   rI   )r-   r>   r  r.   r.   r/   "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  rx   N)r   )r   r  r.   r.   r/   r   g  s    z7TestCounter.test_multiset_operations.<locals>.<genexpr>r:   r   )r]   r_   ru   c             s   s   | ]}|t d dfV  qdS )r  rx   N)r   )r   r  r.   r.   r/   r   i  s    )rr   rs   rq   c             S   s   t d| | S )Nr   )r   )r   r   r.   r.   r/   r  l  r  z6TestCounter.test_multiset_operations.<locals>.<lambda>c             S   s   t d| | S )Nr   )r   )r   r   r.   r.   r/   r  m  r  c             S   s   t d| |S )Nr   )r   )r   r   r.   r.   r/   r  n  r  c             S   s   t dt| |S )Nr   )r   min)r   r   r.   r.   r/   r  o  r  c             s   s   | ]}|d kV  qdS )r   Nr.   )r   r   r.   r.   r/   r   v  s    ZabcdefrA   c             s   s   | ]}|t d dfV  qdS )r   r;   N)r   )r   r  r.   r.   r/   r   {  s    c             s   s   | ]}|t d dfV  qdS )r   r;   N)r   )r   r  r.   r.   r/   r   |  s    )r   rE   r5   rQ   rb   __add____sub____or____and__rg   r  r)   r  r   )r-   r>   r  rs   r   r   Z	counteropZnumberopr   r   ZsetopZcounter_resultZ
set_resultr.   r.   r/   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  rx   N)r   )r   r  r.   r.   r/   r     s    z6TestCounter.test_inplace_operations.<locals>.<genexpr>r:   r   r   )r]   r_   ru   c             s   s   | ]}|t d dfV  qdS )r  rx   N)r   )r   r  r.   r.   r/   r     s    )rr   rs   rq   )rQ   r   r5   rb   __iadd__r  __isub__r  __ior__r  __iand__r  rM   idrE   )r-   r  rs   r   r   Z
inplace_opZ
regular_opr>   Zc_idZregular_resultZinplace_resultr.   r.   r/   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   rC   r      r   )r'   r(   r>   rY   r]   ru   r:   r;   r  r<   r=   i)r'   r(   r>   rY   r]   r_   rr   ir     ir   )r'   r(   r>   rY   r]   r_   ru   rr   ZaaabbcdZ	aaaabbccer   )r'   r(   r>   rY   r]   r   )r-   )r-   i)r   )r   i)r   subtractrE   r3   rG   rn   r   )r-   r>   r.   r.   r/   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   rC   r   r  r   )r'   r(   r>   rY   r]   ru   )r>   rY   r]   ru   )r'   )r   rE   r5   )r-   r>   r.   r.   r/   
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   rK   rI   )r-   r>   r   r.   r.   r/   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  rC   r;   r:   )r'   r   r(   r>   rY   )r'   rC   )r(   r;   )r   r;   )r>   r:   )rY   r:   )r'   r(   r>   rY   r   )	r3   r5   r   rE   r   r  rg   r  r  )r-   ZelemsrY   r   r>   r.   r.   r/   test_helper_function  s    

z TestCounter.test_helper_functionN)r,   r7   r8   r`   r  r  r	  r  r  r  r  r  r  r  r  r   r.   r.   r.   r/   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   rC  r  r  r9   r&   r   Zrun_unittestZrun_doctest)r  ZNamedTupleDocsZtest_classesr.   r.   r/   	test_main  s    
r"  __main__T)r  )N)Br   r   rM   r!  r   r   rR   Zrandomr   r   rer   r  Ztestr   rT  r  r   r   r   r   r	   r
   r   r   r   Z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%   ZTestCaser&   r9   r   r   r  rB  rC  r  r  r  r  r  r"  r,   r.   r.   r.   r/   <module>   sh    #
  A;    a    			 v


