a
    zeh                    @   s2  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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m/Z/m0Z0 ddlm1Z1 G dd dej2Z3G dd dej2Z4eddZ5G dd dej2Z6G dd dej2Z7dd Z8G dd de7Z9G dd  d e)Z:G d!d" d"e7Z;G d#d$ d$eZ<G d%d& d&eZ=G d'd( d(ej2Z>d.d)d*Z?e@d+kr.e?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                   @   sD   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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/   +/usr/lib/python3.9/test/test_collections.py_superset_test   s    

zTestUserObjects._superset_testc                 C   sn   |  }| |j|j | |j|j dg|_t  |}| |j|j | |j|j | |j|j d S )Ni  )copyassertIsNotdataassertEqualtestassertIs)r.   objZobj_copyr/   r/   r0   
_copy_test)   s    
zTestUserObjects._copy_testc                 C   s   |  tt d S N)r1   r
   strr.   r/   r/   r0   test_str_protocol6   s    z!TestUserObjects.test_str_protocolc                 C   s   |  tt d S r:   )r1   r   listr<   r/   r/   r0   test_list_protocol9   s    z"TestUserObjects.test_list_protocolc                 C   s   |  tt d S r:   )r1   r	   dictr<   r/   r/   r0   test_dict_protocol<   s    z"TestUserObjects.test_dict_protocolc                 C   s   t  }|d | | d S )N{   )r   appendr9   r.   r8   r/   r/   r0   test_list_copy?   s    
zTestUserObjects.test_list_copyc                 C   s   t  }d|d< | | d S )NabcrB   )r	   r9   rD   r/   r/   r0   test_dict_copyD   s    zTestUserObjects.test_dict_copyN)
r-   
__module____qualname__r1   r9   r=   r?   rA   rE   rG   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S )TestChainMapc                 C   sr  t  }d|d< d|d< | }d|d< d|d< | |jdddddd	g | | tdddd
  | t|d dD ]}| || q~tddddd D ]\}}| ||d| q|d= | |jddiddd	g | | tdddd
  | t|d dD ]}| || qtddddd D ]\}}| ||d| q>| t	|t
|jd t
|jd g | t|fD ]|}| || | |j|j | || | |jd |jd  t|jdd  |jdd  D ]\}}| || qqttjd D ]h}	tt||	}| || | |j|j | || t|j|jD ]\}}| ||| qpq$t|tt	|fD ]V}| || | |j|j | || t|j|jD ]\}}| ||| qސq| }
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)   rO   r'   r(   r)   rO      rF   d   )r(   r)   rO   zz({'c': 30}, {'a': 1, 'b': 2})z({'c': 30}, {'b': 2, 'a': 1})r      )r   	new_childr5   mapsitemsr@   lenassertIngetreprtyper-   r2   r3   zipr7   rangepickleHIGHEST_PROTOCOLloadsdumpsdeepcopyevalparents)r.   rO   dkeykveZm1Zm2protofr/   r/   r0   test_basicsP   sj    
&
"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)ro   Zopera)r   r2   updater5   r>   rX   )r.   ZbaselineZadjustmentscmZcombinedr/   r/   r0   test_ordering   s    



zTestChainMap.test_orderingc                 C   s2   |  t ji g |  tddijddig d S NrK   rL   )r5   r   rW   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 rs   )assertFalser   
assertTruer<   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}tdddd	d
 D ]\}}| || | q>tddddd
 D ]\}}| ||d| qltddddd
 D ]\}}| ||v | q| |ddd| | |ddd | | d | t |  W d    n1 s0    Y  d S )Nc                   @   s   e Zd Zdd ZdS )z2TestChainMap.test_missing.<locals>.DefaultChainMapc                 S   s   dS )N  r/   r.   rh   r/   r/   r0   __missing__   s    z>TestChainMap.test_missing.<locals>.DefaultChainMap.__missing__N)r-   rH   rI   rz   r/   r/   r/   r0   DefaultChainMap   s   r{   rK   rL   r'   rM   rN   rP   rx   r(   r)   rO   rg   M   TFr(   i  i  r)   rL   )	r   r@   rX   r5   r[   poppopitemassertRaisesKeyError)r.   r{   rg   ri   rj   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| g d d S )Nr   8[ )jh'  \    )irg   rO        	  M  ix  )rm   r)   grO   r   7      )rk   r)   rK   rL   rR      rU   r(   r)   rO   rg   rk    Z
abcdefghij)
)r(   rK   )r)   r   )rO   r   )rg   r   )rk   r   )rm   r   )r   r   )r   r   )r   r   )r   r   )r   r   r5   joinr>   rX   r.   rg   r/   r/   r0   test_order_preservation   s    


z$TestChainMap.test_order_preservationc                 C   sB   G dd dt }|dd}t|}d|_t| | |jd d S )Nc                   @   s   e Zd Zdd Zdd ZdS )zKTestChainMap.test_iter_not_calling_getitem_on_maps.<locals>.DictWithGetItemc                 _   s"   d| _ tj| g|R i | d S NF)calledr	   __init__r.   argskwdsr/   r/   r0   r      s    zTTestChainMap.test_iter_not_calling_getitem_on_maps.<locals>.DictWithGetItem.__init__c                 S   s   d| _ t| | d S NT)r   r	   __getitem__r.   itemr/   r/   r0   r      s    zWTestChainMap.test_iter_not_calling_getitem_on_maps.<locals>.DictWithGetItem.__getitem__N)r-   rH   rI   r   r   r/   r/   r/   r0   DictWithGetItem   s   r   rK   r(   Fz__getitem__ was called)r	   r   r   r*   ru   )r.   r   rg   rO   r/   r/   r0   %test_iter_not_calling_getitem_on_maps   s    
z2TestChainMap.test_iter_not_calling_getitem_on_mapsc                 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 )NrK   rL   r'   rM   rN   rP   rQ   )r   r@   r5   rX   r   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	  dD ]}| || qtddddd D ]\}}| ||d| qdS )z#Tests for changes for issue #16613.rK   r(   rL   r)   rM   rN   rP   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 r:   )
isinstancer;   lowerr@   r   ry   r/   r/   r0   r      s    
z:TestChainMap.test_new_child.<locals>.lowerdict.__getitem__c                 S   s   t |tr| }t| |S r:   )r   r;   r   r@   __contains__ry   r/   r/   r0   r      s    
z;TestChainMap.test_new_child.<locals>.lowerdict.__contains__N)r-   rH   rI   r   r   r/   r/   r/   r0   	lowerdict   s   r   rF   rS   )r(   BCrT   N)	r   rV   r5   rW   r7   r@   rZ   rX   r[   )r.   rO   mrg   r   rh   ri   rj   r/   r/   r0   test_new_child   s$    



zTestChainMap.test_new_childc           	      C   sT  t tdddtddd}t tddd	td
dd}| }tddd}ddg}||B }| |j|jd t|B g|jdd   ||O }| || ||B }| |j|jd |B g|jdd   | ||B j|t|B g ||O }| || | t ||B  W d    n1 s"0    Y  | }||O }| |j|jd t|B g|jdd   G dd dt }G dd dt }t  t  B }| t|t  | t|jd t t  | B }| t|t  | t|jd t | t  B }| t|| | t|jd t t  | B }| t|| | t|jd t d S )NrK   rL   r'   rR   r   )rO   rg   
   rU   )r(   rk   rM   )r)   rg   rN   r(   rO   )rO   rR   )pr   r   c                   @   s   e Zd ZdS )z3TestChainMap.test_union_operators.<locals>.SubclassNr-   rH   rI   r/   r/   r/   r0   Subclass  s   r   c                       s   e Zd Z fddZ  ZS )z6TestChainMap.test_union_operators.<locals>.SubclassRorc                    s   t  |S r:   )super__ror__r.   other	__class__r/   r0   r     s    z>TestChainMap.test_union_operators.<locals>.SubclassRor.__ror__)r-   rH   rI   r   __classcell__r/   r/   r   r0   SubclassRor  s   r   )	r   r@   r2   r5   rW   r   	TypeErrorr7   r]   )	r.   Zcm1Zcm2Zcm3rg   pairstmpr   r   r/   r/   r0   test_union_operators   sB    ,((,z!TestChainMap.test_union_operatorsN)r-   rH   rI   rn   rr   rt   rw   r   r   r   r   r   r   r/   r/   r/   r0   rJ   N   s   < rJ   TestNTzx y zc                   @   s   e Zd Zd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ejeej	j
dkddd Zej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ejd'd( Zd)d* Zd+S ),TestNamedTuplec                 C   sH  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g d d S )NPointx yr/   xyzabc%zefg ghiclassZ9abcrF   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   )r   r   !   )r   r5   r-   	__slots__rH   r   tuple_fieldsr   
ValueErrorassertNotInr\   r   _make)r.   r   r   r/   r/   r0   test_factory2  s,    




zTestNamedTuple.test_factoryc                 C   sR  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    n1 s0    Y  | t |  W d    n1 s0    Y  | t |dd	d W d    n1 sT0    Y  | t t dddd}W d    n1 s0    Y  | t t dddd}W d    n1 s0    Y  | t t dddd}W d    n1 s0    Y  t ddd d}| |ji  | |jjd  | |ddd | t |d W d    n1 st0    Y  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   r   )r   rM   )defaultsr   rM   r   rK   rL   rK   rL   )rK   rM   )rM   r   r/   rR   r   rM   rN   F)	r   r5   _field_defaultsr   r   assertIsNone__new____defaults__iterr.   r   r/   r/   r0   test_defaultsO  sT    &&,...(zTestNamedTuple.test_defaultsc                 C   s   t dd}|dd}| t d|_W d    n1 s:0    Y  | t |`W d    n1 sh0    Y  | t d|d< W d    n1 s0    Y  | t |d= W d    n1 s0    Y  | |jd | |d d d S )Nr   r   r   r   r   r   )r   r   AttributeErrorr   r   r5   r.   r   r   r/   r/   r0   test_readonly  s    

$"&$zTestNamedTuple.test_readonlyrL   z)Docstrings are omitted with -O2 and abovec                 C   s0   t dd}| |jd d|_| |jd d S )Nr   r   zPoint(x, y)z2D point)r   r5   __doc__r   r/   r/   r0   test_factory_doc_attr  s    
z$TestNamedTuple.test_factory_doc_attrc                 C   sx   t dd}| |jjd | |jjd d|j_| |jjd t dd}| |jjd d|j_| |jjd d S )Nr   r   zAlias for field number 0zAlias for field number 1zdocstring for Point.xVectorzdocstring for Vector.x)r   r5   r   r   r   )r.   r   r   r/   r/   r0   test_field_doc  s    

zTestNamedTuple.test_field_docc                 C   sH   t dddg}t dddg}| |jj|jj | |jj|jj d S )NPr   nQor   )r   r7   r   r   r   r   r   )r.   r   r   r/   r/   r0   test_field_doc_reuse  s    z#TestNamedTuple.test_field_doc_reusec                 C   sf   t dd}| t|jd | t|jd d|j_d|j_| t|jd | t|jd d S )	Nr   r   z+_tuplegetter(0, 'Alias for field number 0')z+_tuplegetter(1, 'Alias for field number 1')zThe x-coordinatezThe y-coordinatez#_tuplegetter(0, 'The x-coordinate')z#_tuplegetter(1, 'The y-coordinate'))r   r5   r\   r   r   r   r   r/   r/   r0   test_field_repr  s    
zTestNamedTuple.test_field_reprc                 C   sN   ddgddgddgddgdd	gd
dgfD ] \}}|  td|ddj| q(d S )N)efgzg%hi)r   _1)rF   r   rF   r   )Z8efgZ9ghi)Z_0r   )rF   Z_efg)rF   r   r   ghi)rF   r   Z_2r   )rF   r   r   )rF   r   r   NTTrename)r5   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   collectionsr5   rH   r.   r   r/   r/   r0   test_module_parameter  s    z$TestNamedTuple.test_module_parameterc              
   C   s  t dd}|dd}| ||ddd | ||ddd | ||ddd | ||d  | ||f i tddd | t|d	 | t|d	d
d | t |d	d
d W d    n1 s0    Y  | t |d	d W d    n1 s0    Y  | t|d | dt| | ||ddg | |j	d | |j
d	dd | | tddd z|j
d	d
d W n ty   Y n0 | d t dd}|ddd}| t|d t dd}|ddd}| t|d d S )Nr   r   r   r   r   )r   )r   r   r   r   rK   rL   rR   )ZXXXr   r   zPoint(x=11, y=22)__weakref__)rK   r   )r   errorz%Did not detect an incorrect fieldnamezx, y)r   r5   r@   r   r   r\   r   r+   r   r   _replace_asdictr   Z_failr   r/   r/   r0   test_instance  s<    

*(


zTestNamedTuple.test_instancec                 C   sH  t dd}|dd}| |t | |d | t|d | t|ddg | t|d | t| d |\}}| |||f | |d |d fd | t |d  W d    n1 s0    Y  | |d	 d | t|td | |j	| | |j
| | t |j W d    n1 s:0    Y  d S )
Nr   r   r   r   r   r   rK   rR   )r   assertIsInstancer   r5   r>   maxr   
IndexErrorhashr   r   r   rT   )r.   r   r   r   r   r/   r/   r0   test_tupleness  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
| t|D ]\}}| t||| qjt| | }	tt|t
|}
| |	|
 |jf i t|d d
f|d dfg}tt
|}d
|d< d|d< | |t| | |jt| d S )NZeror   r/   zZero()Dotrg   rK   rK   zDot(d=1)rx   )rg   )rx   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).0r   r/   r/   r0   
<listcomp>  s   z;TestNamedTuple.test_odd_sizes.<locals>.<genexpr>.<listcomp>r   N)r   r_   )r
  r   r/   r/   r0   	<genexpr>  s   
z0TestNamedTuple.test_odd_sizes.<locals>.<genexpr>Big*   )r   r5   r   r\   r   r   rg   r   r>   r*   r_   rY   r   	enumerategetattrr@   r^   )r.   r  r  r   namesr  r)   posnamerg   Z
d_expectedb2Zb2_expectedr/   r/   r0   test_odd_sizes  sF    




(zTestNamedTuple.test_odd_sizesc                 C   s   t dddd}tfD ]j}t|d}t|d}td|jd D ]@}||||}| || | |j|j | d	||| q<qd S )
Nr   rM   rN   r   r   rT   rb   rc   r   rK   s   OrderedDict)r   r`   r  r_   ra   r5   r   r   )r.   r   r   rb   rc   protocolqr/   r/   r0   test_pickle,  s    


zTestNamedTuple.test_picklec                 C   sH   t dddd}tjtjfD ](}||}| || | |j|j qd S )Nr   rM   rN   r  )r   r2   rd   r5   r   )r.   r   Zcopierr  r/   r/   r0   	test_copy7  s
    zTestNamedTuple.test_copyc                 C   sF  t dd}|ddddd}| |d |jd	d
dddd}| |d h d}t d|}ttt|}|| }| || |f i tt|j|}| || |	|}| || t
| | | tt|j| |	|}tdd |D }|jf i tt|j|}| || | |jt| | | | d S )NTz"itemgetter property self cls tuplerK   rL   rR   r   rU   )rK   rL   rR   r   rU   r   rM   rN   (   2   )
itemgetterpropertyr.   clsr   )r   rM   rN   r  r  >   classmethodmodule_nametypenamefield_namesZhasisidentifierarg_listZValidateverbose
num_fieldsconvertsplit	namespaceZ
particularZalsoZcreationZfieldZUsedr   ZnumberZBypassZJythonZMaker`   ZBuildexecZ	debuggingsZEncounteredr\   keywordsr2   ZcannotrZ	argumentsZuseZeffectZ
docstringsmethodsr  r(   metadataZintrospectionmessager   r   indexZreuse_itemgetterber   namedtuple_ZAtusernewZaddedZbutr   r!  r@   r   ZReturnsallr   ZNoter   r   ZsequenceZdefinedr  docrY   Z	interningZneedsr   TyperT   ZexampleZ
positionalcreatedr   ZregulargetterZFieldresultZgeneratemapZlikeZgreaterr;   unpackZeitherZsider  ZGotZ
IronPythonrepr_fmtrm   Z
unexpectedZbuildr   thisusedZpicklingr[   instanceiterableobjectaddrg   Ztheirr.   sysr  Z	VariablesrW   valuesZbyZHelperZvalidstartZ	functionsvariableZenvironmentsfieldshelpfunction	formattedZModifyZthanZmustseenZ	specifiedZplainr   ZAliasr   Z
underscoreframeZ	indexabler*   optionr  Z	docstringr   r   ZinstantiateZrepresentationZautomaticallywherer   builtinsstringsnamedreplacetargets	tuple_newZExpectedr   
startswithtostepZupZCreater]   Z	duplicateZnicely	f_globalsZofZanr   ZReturnoperatorZidentifiersr>   Z	replacingr   ZworkZgotr   whichsubclassmethodr   r^   ZForclass_namespaceZ
dictionaryZ
accessiblekeywordc                 s   s   | ]}|d  V  qdS )r   Nr/   )r
  rj   r/   r/   r0   r  v      z5TestNamedTuple.test_name_conflicts.<locals>.<genexpr>)r   r5   r   r   r_   rY   r@   r^   r   r   r\   r   __getnewargs__)r.   r  tZnewtwordsrI  Z	newvaluesr/   r/   r0   test_name_conflicts>  s,    



z"TestNamedTuple.test_name_conflictsc                 C   sF   t dd}| t|dd G dd d|}| t|dd d S )NAr   rK   zA(x=1)c                   @   s   e Zd ZdS )z#TestNamedTuple.test_repr.<locals>.BNr   r/   r/   r/   r0   r     s   r   zB(x=1))r   r5   r\   )r.   ri  r   r/   r/   r0   	test_repr~  s    
zTestNamedTuple.test_reprc                 C   s   |  t  tdddgd}W d    n1 s00    Y  tdddgdd}| |jd |  t" tdddgd	d}W d    n1 s0    Y  d S )
Nr   r   r   TrF   defr   r   F)r   r   r   r5   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>.PointNr   r/   r/   r/   r0   r     s   r   Z_Pointr   r   rR   r   )r   rR   )r   r   rU   w)r   r5   r   r   rm  __dict__)r.   r   r(   r/   r/   r0   $test_namedtuple_subclass_issue_24931  s
    
z3TestNamedTuple.test_namedtuple_subclass_issue_24931c                    s   t dd  dd}| t j |  j|d | t jj	|d | t jj
| G  fdddt}|dd	g}| |jd | |jd	 d S )
Nr   r   r   r   r   c                       s0   e Zd Zee jZee jZdS )z6TestNamedTuple.test_field_descriptor.<locals>.NewPointN)r-   rH   rI   r`   rb   rc   r   r   r/   r   r/   r0   NewPoint  s   rq  rK   rL   )r   rv   inspectZisdatadescriptorr   r5   __get__r   r   __set__
__delete__r   r   )r.   r   rq  Znpr/   rp  r0   test_field_descriptor  s    

z$TestNamedTuple.test_field_descriptorc                 C   s   |  tddjjd i  d S )Nr   r/   __builtins__)r5   r   r   __globals__r<   r/   r/   r0   test_new_builtins_issue_43102  s    z,TestNamedTuple.test_new_builtins_issue_43102N)r-   rH   rI   r   r   r   unittestZskipIfrH  flagsoptimizer   r   r   Zcpython_onlyr   r   r   r   r   r  r  r  r  rh  rj  rl  ro  rv  ry  r/   r/   r/   r0   r   0  s@   2


&&@


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|}|  |D ].}| }||= td|f|}| t|| q(d S )Nc                 W   s   dS Nr   r/   r.  r   r/   r/   r0   <lambda>  rd  z7ABCTestCase.validate_abstract_methods.<locals>.<lambda>r   )r@   fromkeysr]   r2   r   r   )r.   rF   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 r~  r/   r  r/   r/   r0   r    rd  z1ABCTestCase.validate_isinstance.<locals>.<lambda>r   __hash__)r]   rF  setattrr   rv   
issubclassassertNotIsInstanceru   )r.   rF   r  Zstubr   r/   r/   r0   validate_isinstance  s    zABCTestCase.validate_isinstancec                 C   s   g d}i }|D ]}d| d }t t|||< qG dd d}| D ]>\}}t||sZqF| }||| | |jdt||f  qFd 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 r   
right_sider<   r/   r/   r0   r     s    z7ABCTestCase.validate_comparison.<locals>.Other.__init__c                 S   s
   d| _ dS r   r  r   r/   r/   r0   __eq__  s    z5ABCTestCase.validate_comparison.<locals>.Other.__eq__N)r-   rH   rI   r   r  __lt____gt____le____ge____ne__r   __rand____rxor____rsub__r/   r/   r/   r0   Other  s   r  zRight side not called for %s.%s)r  r^  rX   hasattrrv   r  r]   )r.   rD  opsZ	operatorsopr  r  r   r/   r/   r0   validate_comparison  s    



zABCTestCase.validate_comparisonN)r-   rH   rI   r  r  r  r/   r/   r/   r0   r}    s   r}  c                   c   s
   d V  d S r:   r/   r/   r/   r/   r0   	_test_gen  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   s.  dd }t jdd }dd }G dd d}G d	d
 d
t}d t | t g}|D ].}| |t | tt	|tt
t	| qR| | g}|D ]$}| |t | tt	|t q| }	| |	t | }	| |	t |	  G dd d}
t|
 | t|
 t | t|
t d }
t  d S )Nc                   s   s
   d V  d S r:   r/   r/   r/   r/   r0   gen  s    z0TestOneTrickPonyABCs.test_Awaitable.<locals>.genc                   s   s
   d V  d S r:   r/   r/   r/   r/   r0   coro  s    z1TestOneTrickPonyABCs.test_Awaitable.<locals>.coroc                      s   d S r:   r/   r/   r/   r/   r0   new_coro  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 r:   r/   r<   r/   r/   r0   	__await__  s    z:TestOneTrickPonyABCs.test_Awaitable.<locals>.Bar.__await__Nr-   rH   rI   r  r/   r/   r/   r0   Bar  s   r  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 r:   r/   r.   valuer/   r/   r0   send  s    z=TestOneTrickPonyABCs.test_Awaitable.<locals>.MinimalCoro.sendNc                    s   t  ||| d S r:   r   throwr.   typvaltbr   r/   r0   r    s    z>TestOneTrickPonyABCs.test_Awaitable.<locals>.MinimalCoro.throwc                 s   s
   d V  d S r:   r/   r<   r/   r/   r0   r  
  s    zBTestOneTrickPonyABCs.test_Awaitable.<locals>.MinimalCoro.__await__)NNr-   rH   rI   r  r  r  r   r/   r/   r   r0   MinimalCoro  s   r  c                   @   s   e Zd ZdS )z5TestOneTrickPonyABCs.test_Awaitable.<locals>.CoroLikeNr   r/   r/   r/   r0   CoroLike!  rd  r  )types	coroutiner   intrF  r  r   ru   r  r]   r\   r   rv   closeregisterr   r   
gc_collectr.   r  r  r  r  r  non_samplesr   samplesrO   r  r/   r/   r0   test_Awaitable  s2    
 
z#TestOneTrickPonyABCs.test_Awaitablec                 C   sH  dd }t jdd }dd }G dd d}G d	d
 d
t}d t | t | g}|D ].}| |t | tt|tt	t| qV| g}|D ]$}| 
|t | tt|t q| }	| |	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 r:   r/   r/   r/   r/   r0   r  )  s    z0TestOneTrickPonyABCs.test_Coroutine.<locals>.genc                   s   s
   d V  d S r:   r/   r/   r/   r/   r0   r  ,  s    z1TestOneTrickPonyABCs.test_Coroutine.<locals>.coroc                      s   d S r:   r/   r/   r/   r/   r0   r  0  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 r:   r/   r<   r/   r/   r0   r  4  s    z:TestOneTrickPonyABCs.test_Coroutine.<locals>.Bar.__await__Nr  r/   r/   r/   r0   r  3  s   r  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 r:   r/   r  r/   r/   r0   r  8  s    z=TestOneTrickPonyABCs.test_Coroutine.<locals>.MinimalCoro.sendNc                    s   t  ||| d S r:   r  r  r   r/   r0   r  :  s    z>TestOneTrickPonyABCs.test_Coroutine.<locals>.MinimalCoro.throwc                 s   s
   d V  d S r:   r/   r<   r/   r/   r0   r  <  s    zBTestOneTrickPonyABCs.test_Coroutine.<locals>.MinimalCoro.__await__)NNr  r/   r/   r   r0   r  7  s   r  c                   @   s.   e Zd Zdd Zd
ddZdd Zdd	 ZdS )5TestOneTrickPonyABCs.test_Coroutine.<locals>.CoroLikec                 S   s   d S r:   r/   r  r/   r/   r0   r  T  s    :TestOneTrickPonyABCs.test_Coroutine.<locals>.CoroLike.sendNc                 S   s   d S r:   r/   r  r/   r/   r0   r  V  s    z;TestOneTrickPonyABCs.test_Coroutine.<locals>.CoroLike.throwc                 S   s   d S r:   r/   r<   r/   r/   r0   r  X  s    ;TestOneTrickPonyABCs.test_Coroutine.<locals>.CoroLike.closec                 S   s   d S r:   r/   r<   r/   r/   r0   r  Z  s    ?TestOneTrickPonyABCs.test_Coroutine.<locals>.CoroLike.__await__)NN)r-   rH   rI   r  r  r  r  r/   r/   r/   r0   r  S  s   
r  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )r  c                 S   s   d S r:   r/   r  r/   r/   r0   r  `  s    r  c                 S   s   d S r:   r/   r<   r/   r/   r0   r  b  s    r  c                 S   s   d S r:   r/   r<   r/   r/   r0   r  d  s    r  N)r-   rH   rI   r  r  r  r/   r/   r/   r0   r  _  s   )r  r  r   r  rF  r  ru   r  r]   r\   r   r   rv   r  r   r  r/   r/   r0   test_Coroutine(  s2    
 	z#TestOneTrickPonyABCs.test_Coroutinec                 C   s   t  t t t g}|D ].}| |t | tt|tt	t| qd t
 t t t t t t
tttt g}|D ].}| |t | tt|tt	t| qv| 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 r:   )r   r  r<   r   r/   r0   r  |  s    z6TestOneTrickPonyABCs.test_Hashable.<locals>.H.__hash__)r-   rH   rI   r  r   r/   r/   r   r0   H{  s   r  r   r  )	bytearrayr>   r*   r@   r  r   ru   r  r]   r\   r  floatcomplexr;   r   	frozensetrF  bytesr   rv   r   r   r5   r  r  r  )r.   r  r   r  r  r/   r/   r0   test_Hashablei  s&      z"TestOneTrickPonyABCs.test_Hashablec                 C   s   G dd d}|  t| t |  t|t d tg g}|D ].}| |t | tt|ttt| q>| 	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 r:   r/   r<   r/   r/   r0   	__aiter__  s    z=TestOneTrickPonyABCs.test_AsyncIterable.<locals>.AI.__aiter__N)r-   rH   rI   r  r/   r/   r/   r0   AI  s   r  r  )rv   r   r   r  rF  r  ru   r]   r\   r  r  )r.   r  r  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}|D ].}| |t | tt|ttt| q>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 r:   r/   r<   r/   r/   r0   r    s    z=TestOneTrickPonyABCs.test_AsyncIterator.<locals>.AI.__aiter__c                    s   t d S r:   StopAsyncIterationr<   r/   r/   r0   	__anext__  s    z=TestOneTrickPonyABCs.test_AsyncIterator.<locals>.AI.__anext__N)r-   rH   rI   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 r:   r  r<   r/   r/   r0   r    s    zDTestOneTrickPonyABCs.test_AsyncIterator.<locals>.AnextOnly.__anext__N)r-   rH   rI   r  r/   r/   r/   r0   	AnextOnly  s   r  r  r  )
rv   r   r   r  rF  r  ru   r]   r\   r  )r.   r  r  r   r  r/   r/   r0   test_AsyncIterator  s    
 z'TestOneTrickPonyABCs.test_AsyncIteratorc                 C   sh  g d}|D ].}|  |t | tt|ttt| qt t t t	 t
 t t t  t  t  t dd dD g}|D ].}| |t | tt|ttt| qG 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 )N)Nr  Q	@              ?c                 s   s   | ]
}|V  qd S r:   r/   r
  r   r/   r/   r0   r    rd  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 r:   )r   __iter__r<   r   r/   r0   r    s    z6TestOneTrickPonyABCs.test_Iterable.<locals>.I.__iter__)r-   rH   rI   r  r   r/   r/   r   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 r:   r   r<   r/   r/   r0   r    rd  z7TestOneTrickPonyABCs.test_Iterable.<locals>.It.__iter__Nr-   rH   rI   r  r/   r/   r/   r0   It  s   r  c                   @   s   e Zd ZdZdS )z5TestOneTrickPonyABCs.test_Iterable.<locals>.ItBlockedNr  r/   r/   r/   r0   	ItBlocked  s   r  )r  r   ru   r  r]   r\   r  r;   r   r>   r*   r  r@   keysrX   rI  r  r   rv   r5   r  r  r   )r.   r  r   r  r  r  r  r/   r/   r0   test_Iterable  s0      z"TestOneTrickPonyABCs.test_Iterablec                 C   s  d dddt  t g}|D ].}| |t | tt|ttt| qt dd dD t	g t
g g}|D ].}| |t | tt|ttt| qlt t t t t t  t  t  t t  t  t  t t  t  t  g}|D ]0}| |t | tt|ttt| q| 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  r  r  c                 s   s   | ]
}|V  qd S r:   r/   r  r/   r/   r0   r    rd  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 r:   r   r>   r<   r/   r/   r0   r    s    z8TestOneTrickPonyABCs.test_Reversible.<locals>.R.__iter__c                 S   s
   t t S r:   r  r<   r/   r/   r0   __reversed__  s    z<TestOneTrickPonyABCs.test_Reversible.<locals>.R.__reversed__Nr-   rH   rI   r  r  r/   r/   r/   r0   R  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 r:   reversedr<   r/   r/   r0   r    rd  zDTestOneTrickPonyABCs.test_Reversible.<locals>.RevNoIter.__reversed__Nr-   rH   rI   r  r/   r/   r/   r0   	RevNoIter  s   r  c                   @   s   e Zd Zdd ZdS )z9TestOneTrickPonyABCs.test_Reversible.<locals>.RevPlusIterc                 S   s   t g S r:   r  r<   r/   r/   r0   r    rd  zBTestOneTrickPonyABCs.test_Reversible.<locals>.RevPlusIter.__iter__Nr  r/   r/   r/   r0   RevPlusIter  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 r:   r  r<   r/   r/   r0   r    rd  z:TestOneTrickPonyABCs.test_Reversible.<locals>.Rev.__iter__c                 S   s   t g S r:   r  r<   r/   r/   r0   r    rd  z>TestOneTrickPonyABCs.test_Reversible.<locals>.Rev.__reversed__Nr  r/   r/   r/   r0   Rev  s   r  c                   @   s   e Zd ZdZdS )z:TestOneTrickPonyABCs.test_Reversible.<locals>.RevItBlockedNr  r/   r/   r/   r0   RevItBlocked  s   r  c                   @   s   e Zd ZdZdS )z;TestOneTrickPonyABCs.test_Reversible.<locals>.RevRevBlockedNr  r/   r/   r/   r0   RevRevBlocked  s   r  )r*   r  r  r   ru   r  r]   r\   r  r   r  r  r;   r   r>   r   r  rX   rI  r   r@   r   rv   r#   r   r   r5   r  r  r   )r.   r  r   Znon_reversiblesr  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}|D ].}|  |t | tt|ttt| qt tdtt dd d	D g}|D ].}|  |t | tt|ttt| qlt	 t
 t t t t t t  t  t  g
}|D ].}| |t | tt|ttt| q| 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  r  r  c                 S   s   d|  S )NrL   r/   r   r/   r/   r0   r    rd  z6TestOneTrickPonyABCs.test_Collection.<locals>.<lambda>rd  c                 s   s   | ]
}|V  qd S r:   r/   r  r/   r/   r0   r    rd  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 r:   r  r<   r/   r/   r0   r    s    z:TestOneTrickPonyABCs.test_Collection.<locals>.Col.__iter__c                 S   s   dS r~  r/   r<   r/   r/   r0   __len__  s    z9TestOneTrickPonyABCs.test_Collection.<locals>.Col.__len__c                 S   s   dS r   r/   r   r/   r/   r0   r      s    z>TestOneTrickPonyABCs.test_Collection.<locals>.Col.__contains__Nr-   rH   rI   r  r  r   r/   r/   r/   r0   Col  s   r  c                   @   s   e Zd ZdS )z4TestOneTrickPonyABCs.test_Collection.<locals>.DerColNr   r/   r/   r/   r0   DerCol"  rd  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 r~  r/   r<   r/   r/   r0   r  /  rd  z?TestOneTrickPonyABCs.test_Collection.<locals>.ColNoIter.__len__c                 S   s   dS r   r/   r   r/   r/   r0   r   0  rd  zDTestOneTrickPonyABCs.test_Collection.<locals>.ColNoIter.__contains__N)r-   rH   rI   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 r:   r  r<   r/   r/   r0   r  2  rd  z@TestOneTrickPonyABCs.test_Collection.<locals>.ColNoSize.__iter__c                 S   s   dS r   r/   r   r/   r/   r0   r   3  rd  zDTestOneTrickPonyABCs.test_Collection.<locals>.ColNoSize.__contains__N)r-   rH   rI   r  r   r/   r/   r/   r0   	ColNoSize1  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 r:   r  r<   r/   r/   r0   r  5  rd  z@TestOneTrickPonyABCs.test_Collection.<locals>.ColNoCont.__iter__c                 S   s   dS r~  r/   r<   r/   r/   r0   r  6  rd  z?TestOneTrickPonyABCs.test_Collection.<locals>.ColNoCont.__len__N)r-   rH   rI   r  r  r/   r/   r/   r0   	ColNoCont4  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 r:   r  r<   r/   r/   r0   r  ?  rd  z@TestOneTrickPonyABCs.test_Collection.<locals>.SizeBlock.__iter__c                 S   s   dS r   r/   r<   r/   r/   r0   r   @  rd  zDTestOneTrickPonyABCs.test_Collection.<locals>.SizeBlock.__contains__N)r-   rH   rI   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 r~  r/   r<   r/   r/   r0   r  C  rd  z?TestOneTrickPonyABCs.test_Collection.<locals>.IterBlock.__len__c                 S   s   dS r   r/   r<   r/   r/   r0   r   D  rd  zDTestOneTrickPonyABCs.test_Collection.<locals>.IterBlock.__contains__N)r-   rH   rI   r  r   r  r/   r/   r/   r0   	IterBlockB  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 r:   r  r<   r/   r/   r0   r  L  s    z>TestOneTrickPonyABCs.test_Collection.<locals>.ColImpl.__iter__c                 S   s   dS r~  r/   r<   r/   r/   r0   r  N  s    z=TestOneTrickPonyABCs.test_Collection.<locals>.ColImpl.__len__c                 S   s   dS r   r/   r   r/   r/   r0   r   P  s    zBTestOneTrickPonyABCs.test_Collection.<locals>.ColImpl.__contains__Nr  r/   r/   r/   r0   ColImplK  s   r  c                   @   s   e Zd ZdZdS )z4TestOneTrickPonyABCs.test_Collection.<locals>.NonColN)r-   rH   rI   r   r/   r/   r/   r0   NonColR  s   r  )r  r   ru   r  r]   r\   r  r   r  r*   r  r@   r  r;   r   r>   r  rX   rI  r   rv   r#   r   r   r   r   r5   r  r  r   )r.   Znon_collectionsr   Znon_col_iterablesr  r  r  r  r  r  r  r  r  r  r/   r/   r0   test_Collection   sp       
z$TestOneTrickPonyABCs.test_Collectionc                 C   s   d ddddddg i t  g
}|D ].}| |t | tt|ttt| q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}|D ].}| |t | tt|ttt| q| td	d
 G dd d}| | t d S )Nr  r  r  rd  r   r/   c                 s   s   | ]
}|V  qd S r:   r/   r  r/   r/   r0   r  c  rd  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 NrK   r/   r<   r/   r/   r0   r  l  s    z=TestOneTrickPonyABCs.test_Iterator.<locals>.NextOnly.__next__N)r-   rH   rI   r  r/   r/   r/   r0   NextOnlyk  s   r  )r*   r  r   ru   r  r]   r\   r   r  r;   r   r>   r@   r  r  rX   rI  r  r   rv   r  )r.   r  r   r  r  r/   r/   r0   test_IteratorX  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}|D ].}| |t | tt|ttt| q`G dd d}G dd dt}dd }| dd  | | g}	|	D ]:}| |t	 | |t | 
tt|ttt| q| 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 r:   r/   r<   r/   r/   r0   r  s  rd  z=TestOneTrickPonyABCs.test_Generator.<locals>.NonGen1.__iter__c                 S   s   d S r:   r/   r<   r/   r/   r0   r  t  rd  z=TestOneTrickPonyABCs.test_Generator.<locals>.NonGen1.__next__c                 S   s   d S r:   r/   r<   r/   r/   r0   r  u  rd  z:TestOneTrickPonyABCs.test_Generator.<locals>.NonGen1.closeNc                 S   s   d S r:   r/   r  r/   r/   r0   r  v  rd  z:TestOneTrickPonyABCs.test_Generator.<locals>.NonGen1.throw)NN)r-   rH   rI   r  r  r  r  r/   r/   r/   r0   NonGen1r  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 r:   r/   r<   r/   r/   r0   r  y  rd  z=TestOneTrickPonyABCs.test_Generator.<locals>.NonGen2.__iter__c                 S   s   d S r:   r/   r<   r/   r/   r0   r  z  rd  z=TestOneTrickPonyABCs.test_Generator.<locals>.NonGen2.__next__c                 S   s   d S r:   r/   r<   r/   r/   r0   r  {  rd  z:TestOneTrickPonyABCs.test_Generator.<locals>.NonGen2.closec                 S   s   |S r:   r/   r  r/   r/   r0   r  |  rd  z9TestOneTrickPonyABCs.test_Generator.<locals>.NonGen2.sendN)r-   rH   rI   r  r  r  r  r/   r/   r/   r0   NonGen2x  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 r:   r/   r<   r/   r/   r0   r    rd  z:TestOneTrickPonyABCs.test_Generator.<locals>.NonGen3.closec                 S   s   |S r:   r/   r  r/   r/   r0   r    rd  z9TestOneTrickPonyABCs.test_Generator.<locals>.NonGen3.sendNc                 S   s   d S r:   r/   r  r/   r/   r0   r    rd  z:TestOneTrickPonyABCs.test_Generator.<locals>.NonGen3.throw)NN)r-   rH   rI   r  r  r  r/   r/   r/   r0   NonGen3~  s   r  r  r  r  rd  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 r:   r/   r<   r/   r/   r0   r    rd  z9TestOneTrickPonyABCs.test_Generator.<locals>.Gen.__iter__c                 S   s   d S r:   r/   r<   r/   r/   r0   r    rd  z9TestOneTrickPonyABCs.test_Generator.<locals>.Gen.__next__c                 S   s   d S r:   r/   r<   r/   r/   r0   r    rd  z6TestOneTrickPonyABCs.test_Generator.<locals>.Gen.closec                 S   s   |S r:   r/   r  r/   r/   r0   r    rd  z5TestOneTrickPonyABCs.test_Generator.<locals>.Gen.sendNc                 S   s   d S r:   r/   r  r/   r/   r0   r    rd  z6TestOneTrickPonyABCs.test_Generator.<locals>.Gen.throw)NN)r-   rH   rI   r  r  r  r  r  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 r:   r/   r  r/   r/   r0   r    s    z<TestOneTrickPonyABCs.test_Generator.<locals>.MinimalGen.sendNc                    s   t  ||| d S r:   r  r  r   r/   r0   r    s    z=TestOneTrickPonyABCs.test_Generator.<locals>.MinimalGen.throw)NN)r-   rH   rI   r  r  r   r/   r/   r   r0   
MinimalGen  s   r   c                   s   s
   dV  d S r  r/   r/   r/   r/   r0   r    s    z0TestOneTrickPonyABCs.test_Generator.<locals>.genc                   s   s   d V S r:   r/   r/   r/   r/   r0   r    rd  z5TestOneTrickPonyABCs.test_Generator.<locals>.<lambda>r  r  rL   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 r:   r/   r  r/   r/   r0   r    rd  z=TestOneTrickPonyABCs.test_Generator.<locals>.FailOnClose.sendc                 W   s   t d S r:   r   r.   r   r/   r/   r0   r    rd  z>TestOneTrickPonyABCs.test_Generator.<locals>.FailOnClose.throwNr-   rH   rI   r  r  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 r:   r/   r  r/   r/   r0   r    rd  zETestOneTrickPonyABCs.test_Generator.<locals>.IgnoreGeneratorExit.sendc                 W   s   d S r:   r/   r  r/   r/   r0   r    rd  zFTestOneTrickPonyABCs.test_Generator.<locals>.IgnoreGeneratorExit.throwNr  r/   r/   r/   r0   IgnoreGeneratorExit  s   r  )r*   r   r  r   ru   r  r]   r\   r   r   rv   r  r7   r  nextr5   r   r  r   r   r  ZassertRaisesRegexStopIterationRuntimeError)r.   r  r  r  r  r   r  r   r  r  mgenr  r  r/   r/   r0   test_Generatorq  s@      z#TestOneTrickPonyABCs.test_Generatorc                 C   sJ  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}|D ].}| |t | tt|ttt| q`G dd d}G dd dt}dd }| | | g}	|	D ]:}| |t	 | |t | 
tt|ttt| q| tdd dd }
| }| ||  | |
|d |
|  | d|
|d | |
|  | t |
|t W d    n1 s0    Y  G dd dt}| t |
|   W d    n1 s0    Y  G dd dt}| t |
|   W d    n1 s<0    Y  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 r:   r/   r<   r/   r/   r0   r    rd  zDTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen1.__aiter__c                 S   s   d S r:   r/   r<   r/   r/   r0   r    rd  zDTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen1.__anext__c                 S   s   d S r:   r/   r<   r/   r/   r0   aclose  rd  zATestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen1.acloseNc                 S   s   d S r:   r/   r  r/   r/   r0   athrow  rd  zATestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen1.athrow)NN)r-   rH   rI   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 r:   r/   r<   r/   r/   r0   r    rd  zDTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen2.__aiter__c                 S   s   d S r:   r/   r<   r/   r/   r0   r    rd  zDTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen2.__anext__c                 S   s   d S r:   r/   r<   r/   r/   r0   r    rd  zATestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen2.aclosec                 S   s   |S r:   r/   r  r/   r/   r0   asend  rd  z@TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen2.asendN)r-   rH   rI   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 r:   r/   r<   r/   r/   r0   r    rd  zATestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen3.aclosec                 S   s   |S r:   r/   r  r/   r/   r0   r    rd  z@TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen3.asendNc                 S   s   d S r:   r/   r  r/   r/   r0   r    rd  zATestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen3.athrow)NN)r-   rH   rI   r  r  r  r/   r/   r/   r0   NonAGen3  s   r  r  r  r  rd  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 r:   r/   r<   r/   r/   r0   r    rd  z?TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.Gen.__aiter__c                    s   d S r:   r/   r<   r/   r/   r0   r    rd  z?TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.Gen.__anext__c                    s   d S r:   r/   r<   r/   r/   r0   r    rd  z<TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.Gen.aclosec                    s   |S r:   r/   r  r/   r/   r0   r    rd  z;TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.Gen.asendNc                    s   d S r:   r/   r  r/   r/   r0   r    rd  z<TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.Gen.athrow)NN)r-   rH   rI   r  r  r  r  r  r/   r/   r/   r0   r    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 r:   r/   r  r/   r/   r0   r    s    zCTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.MinimalAGen.asendNc                    s   t  |||I d H  d S r:   )r   r  r  r   r/   r0   r    s    zDTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.MinimalAGen.athrow)NN)r-   rH   rI   r  r  r   r/   r/   r   r0   MinimalAGen  s   r  c                   S  s
   dV  d S r  r/   r/   r/   r/   r0   r    s    z5TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.genr  r  c              
   S   s^   d }z|  d  W q tyV } z,|jr2|jd nd }W Y d }~qZW Y d }~qd }~0 0 q|S r~  )r  r  r   )r  r>  exr/   r/   r0   	run_async  s    $z;TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.run_asyncrL   c                   @   s   e Zd Zdd Zdd ZdS )z=TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.FailOnClosec                    s   |S r:   r/   r  r/   r/   r0   r    rd  zCTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.FailOnClose.asendc                    s   t d S r:   r  r  r/   r/   r0   r    rd  zDTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.FailOnClose.athrowNr-   rH   rI   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 r:   r/   r  r/   r/   r0   r    rd  zKTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.IgnoreGeneratorExit.asendc                    s   d S r:   r/   r  r/   r/   r0   r    rd  zLTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.IgnoreGeneratorExit.athrowNr  r/   r/   r/   r0   r    s   r  )r*   r   r  r   ru   r  r]   r\   r   r   rv   r  r7   r  r  r  r5   r   r  r   r   r  r  )r.   r  r  r  r  r   r  r  r  r  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}|D ].}| |t | tt|ttt| q t t t	 t
 t t t t  t  t  g
}|D ].}| |t | tt|ttt| q| td | td d S )Nr  r  r  c                 s   s   | ]
}|V  qd S r:   r/   r  r/   r/   r0   r    rd  z2TestOneTrickPonyABCs.test_Sized.<locals>.<genexpr>r/   r  )r  r  r   ru   r  r]   r\   r  r;   r   r>   r*   r  r@   r  rX   rI  r   rv   r  r  r.   r  r   r  r/   r/   r0   
test_Sized	  s       zTestOneTrickPonyABCs.test_Sizedc              
   C   s   d dddt  dd dD g}|D ].}| |t | tt|ttt| q t t t	 t
 t t t t  t  g	}|D ].}| |t | tt|ttt| q| td | td d S )Nr  r  r  c                 s   s   | ]
}|V  qd S r:   r/   r  r/   r/   r0   r    rd  z6TestOneTrickPonyABCs.test_Container.<locals>.<genexpr>r/   r   )r  r  r   ru   r  r]   r\   r  r;   r   r>   r*   r  r@   r  rX   r   rv   r  r  r  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}|D ].}| |t | tt|ttt| q.d	d
 ttt	t
tjg jg}|D ].}| |t | tt|ttt| q|| td | td d S )Nr  r  r  r   rd  r/   c                 s   s   | ]
}|V  qd S r:   r/   r  r/   r/   r0   r  1  rd  z5TestOneTrickPonyABCs.test_Callable.<locals>.<genexpr>c                   S   s   d S r:   r/   r/   r/   r/   r0   r  6  rd  z4TestOneTrickPonyABCs.test_Callable.<locals>.<lambda>__call__)r*   r  r  r   ru   r  r]   r\   r  rF  rY   r>   rC   r   rv   r  r  r  r/   r/   r0   test_Callable-  s$      z"TestOneTrickPonyABCs.test_Callablec                 C   sL   t ttttttfD ]4}G dd d|}| t|| | 	tt
| qd S )Nc                   @   s   e Zd ZdS )z7TestOneTrickPonyABCs.test_direct_subclassing.<locals>.CNr   r/   r/   r/   r0   r   C  s   r   )r   r   r   r   r   r   r   rv   r  ru   r  r.   r   r   r/   r/   r0   test_direct_subclassingA  s    z,TestOneTrickPonyABCs.test_direct_subclassingc                 C   sX   t ttttttfD ]@}G dd d}| t|||j	 |
| | t|| qd S )Nc                   @   s   e Zd ZdZdS )z1TestOneTrickPonyABCs.test_registration.<locals>.CN)r-   rH   rI   r  r/   r/   r/   r0   r   J  s   r   )r   r   r   r   r   r   r   ru   r  r-   r  rv   r  r/   r/   r0   test_registrationH  s
    
z&TestOneTrickPonyABCs.test_registrationN)r-   rH   rI   r  r  r  r  r  r  r  r  r  r
  r  r  r  r  r  r  r/   r/   r/   r0   r    s    2A"9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 r:   )r*   r4   )r.   itr/   r/   r0   r   R  s    zWithSet.__init__c                 C   s
   t | jS r:   rY   r4   r<   r/   r/   r0   r  U  s    zWithSet.__len__c                 C   s
   t | jS r:   r   r4   r<   r/   r/   r0   r  X  s    zWithSet.__iter__c                 C   s
   || j v S r:   r4   r   r/   r/   r0   r   [  s    zWithSet.__contains__c                 C   s   | j | d S r:   )r4   rG  r   r/   r/   r0   rG  ^  s    zWithSet.addc                 C   s   | j | d S r:   )r4   discardr   r/   r/   r0   r#  a  s    zWithSet.discardN)r/   )	r-   rH   rI   r   r  r  r   rG  r#  r/   r/   r/   r0   r  P  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+d, Zd-d. Zd/S )0TestCollectionABCsc                 C   s\   t tfD ]"}| | t | t|t q| 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 r   r/   r.   r   r/   r/   r0   r   p  s    z7TestCollectionABCs.test_Set.<locals>.MySet.__contains__c                 S   s   dS r~  r/   r<   r/   r/   r0   r  r  s    z2TestCollectionABCs.test_Set.<locals>.MySet.__len__c                 S   s   t g S r:   r  r<   r/   r/   r0   r  t  s    z3TestCollectionABCs.test_Set.<locals>.MySet.__iter__Nr-   rH   rI   r   r  r  r/   r/   r/   r0   MySeto  s   r'  )r*   r  r   r   rv   r  r  r  )r.   sampler'  r/   r/   r0   test_Setj  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   g d| _ d S )NrK   rL   rR   contentsr<   r/   r/   r0   r   z  s    zATestCollectionABCs.test_hash_Set.<locals>.OneTwoThreeSet.__init__c                 S   s
   || j v S r:   r+  r%  r/   r/   r0   r   |  s    zETestCollectionABCs.test_hash_Set.<locals>.OneTwoThreeSet.__contains__c                 S   s
   t | jS r:   rY   r,  r<   r/   r/   r0   r  ~  s    z@TestCollectionABCs.test_hash_Set.<locals>.OneTwoThreeSet.__len__c                 S   s
   t | jS r:   r   r,  r<   r/   r/   r0   r    s    zATestCollectionABCs.test_hash_Set.<locals>.OneTwoThreeSet.__iter__c                 S   s   |   S r:   )_hashr<   r/   r/   r0   r    s    zATestCollectionABCs.test_hash_Set.<locals>.OneTwoThreeSet.__hash__N)r-   rH   rI   r   r   r  r  r  r/   r/   r/   r0   OneTwoThreeSety  s
   r0  )r   rv   r  )r.   r0  r(   r)   r/   r/   r0   test_hash_Setx  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 r:   r+  r.   itrr/   r/   r0   r     s    z>TestCollectionABCs.test_isdisjoint_Set.<locals>.MySet.__init__c                 S   s
   || j v S r:   r+  r%  r/   r/   r0   r     s    zBTestCollectionABCs.test_isdisjoint_Set.<locals>.MySet.__contains__c                 S   s
   t | jS 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/   r0   r    rd  zQTestCollectionABCs.test_isdisjoint_Set.<locals>.MySet.__len__.<locals>.<listcomp>r-  r<   r/   r/   r0   r    s    z=TestCollectionABCs.test_isdisjoint_Set.<locals>.MySet.__len__Nr-   rH   rI   r   r   r  r  r/   r/   r/   r0   r'    s   r'  r*  )r   rU      )rK   rU   r5  )r   rv   
isdisjointru   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 r:   r+  r2  r/   r/   r0   r     s    z<TestCollectionABCs.test_equality_Set.<locals>.MySet.__init__c                 S   s
   || j v S r:   r+  r%  r/   r/   r0   r     s    z@TestCollectionABCs.test_equality_Set.<locals>.MySet.__contains__c                 S   s
   t | jS 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/   r0   r    rd  zOTestCollectionABCs.test_equality_Set.<locals>.MySet.__len__.<locals>.<listcomp>r-  r<   r/   r/   r0   r    s    z;TestCollectionABCs.test_equality_Set.<locals>.MySet.__len__Nr4  r/   r/   r/   r0   r'    s   r'  r  r   )rR   r   )r   rv   ru   r5   assertNotEqual)r.   r'  r8  r9  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 r:   r+  r2  r/   r/   r0   r     s    z>TestCollectionABCs.test_arithmetic_Set.<locals>.MySet.__init__c                 S   s
   || j v S r:   r+  r%  r/   r/   r0   r     s    zBTestCollectionABCs.test_arithmetic_Set.<locals>.MySet.__contains__c                 S   s
   t | jS 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/   r0   r    rd  zQTestCollectionABCs.test_arithmetic_Set.<locals>.MySet.__len__.<locals>.<listcomp>r-  r<   r/   r/   r0   r    s    z=TestCollectionABCs.test_arithmetic_Set.<locals>.MySet.__len__Nr4  r/   r/   r/   r0   r'    s   r'  r*  )rR   r   rU   )rR   )r   r5   r7  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  rG  r#  )	r   r*   r   rv   r  r  r  ru   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  r5   r*   r.   r.  r/   r/   r0   test_issue_5647  s    z"TestCollectionABCs.test_issue_5647c                 C   s\   G dd dt }g d}||}| }| t|t|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 u rg }t || _d S r:   )r*   	_MySet__s)r.   rX   r/   r/   r0   r     s    z:TestCollectionABCs.test_issue_4920.<locals>.MySet.__init__c                 S   s
   || j v S r:   )rC  )r.   rj   r/   r/   r0   r     s    z>TestCollectionABCs.test_issue_4920.<locals>.MySet.__contains__c                 S   s
   t | jS r:   )r   rC  r<   r/   r/   r0   r    s    z:TestCollectionABCs.test_issue_4920.<locals>.MySet.__iter__c                 S   s
   t | jS r:   )rY   rC  r<   r/   r/   r0   r    s    z9TestCollectionABCs.test_issue_4920.<locals>.MySet.__len__c                 S   s   || j v}| j | |S r:   )rC  rG  r.   rj   r>  r/   r/   r0   rG    s    
z5TestCollectionABCs.test_issue_4920.<locals>.MySet.addc                 S   s   || j v }| j | |S r:   )rC  r#  rD  r/   r/   r0   r#    s    
z9TestCollectionABCs.test_issue_4920.<locals>.MySet.discardc                 S   s   dt t|  S )Nz	MySet(%s))r\   r>   r<   r/   r/   r0   __repr__  s    z:TestCollectionABCs.test_issue_4920.<locals>.MySet.__repr__)N)r-   rH   rI   r   r   r   r  r  rG  r#  rE  r/   r/   r/   r0   r'    s   
r'  )rU   +   rL   rK   rK   )r   r   ZassertEqualsrY   r   rZ   )r.   r'  rX   r.  r0  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  r_   r5   )r.   emptyfullr.  r/   r/   r0   test_issue8750  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 r   r/   r%  r/   r/   r0   r     s    zHTestCollectionABCs.test_issue16373.<locals>.MyComparableSet.__contains__c                 S   s   dS r~  r/   r<   r/   r/   r0   r    s    zCTestCollectionABCs.test_issue16373.<locals>.MyComparableSet.__len__c                 S   s   t g S r:   r  r<   r/   r/   r0   r     s    zDTestCollectionABCs.test_issue16373.<locals>.MyComparableSet.__iter__Nr&  r/   r/   r/   r0   MyComparableSet  s   rK  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 r   r/   r%  r/   r/   r0   r     s    zKTestCollectionABCs.test_issue16373.<locals>.MyNonComparableSet.__contains__c                 S   s   dS r~  r/   r<   r/   r/   r0   r    s    zFTestCollectionABCs.test_issue16373.<locals>.MyNonComparableSet.__len__c                 S   s   t g S r:   r  r<   r/   r/   r0   r    s    zGTestCollectionABCs.test_issue16373.<locals>.MyNonComparableSet.__iter__c                 S   s   t S r:   NotImplementedr%  r/   r/   r0   r  	  s    zETestCollectionABCs.test_issue16373.<locals>.MyNonComparableSet.__le__c                 S   s   t S r:   rL  r%  r/   r/   r0   r    s    zETestCollectionABCs.test_issue16373.<locals>.MyNonComparableSet.__lt__N)r-   rH   rI   r   r  r  r  r  r/   r/   r/   r0   MyNonComparableSet  s
   rN  )r   ru   rv   )r.   rK  rN  csZncsr/   r/   r0   test_issue16373  s    z"TestCollectionABCs.test_issue16373c                 C   s   G dd dt }td}tj}||||g}|t||dt||dg}|D ]}|D ]}| || qVqN| ||d | ||d | |	|d | |	|d d S )Nc                   @   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 r:   _seqr.   seqr/   r/   r0   r     s    zCTestCollectionABCs.test_issue26915.<locals>.CustomSequence.__init__c                 S   s
   | j | S r:   rQ  r.   r4  r/   r/   r0   r     s    zFTestCollectionABCs.test_issue26915.<locals>.CustomSequence.__getitem__c                 S   s
   t | jS r:   )rY   rR  r<   r/   r/   r0   r    s    zBTestCollectionABCs.test_issue26915.<locals>.CustomSequence.__len__Nr-   rH   rI   r   r   r  r/   r/   r/   r0   CustomSequence  s   rW  nanr   r   rK   rL   )
r#   r  r   ZNEVER_EQr!   r"   rZ   r5   r4  count)r.   rW  rX  r8   rT  Z
containers	containerelemr/   r/   r0   test_issue26915  s    z"TestCollectionABCs.test_issue26915c                 C   s   |  t|t| d S r:   )ZassertSetEqualr*   )r.   r8  r9  r/   r/   r0   assertSameSet/  s    z TestCollectionABCs.assertSameSetc                 C   s(  G dd dt }|g dd}|dh }| || | d|j | ddh| |d	hB }| || | d|j | h d
| |dh@ }| || | d|j | dh| |dd	hA }| || | d|j | h d| |dd	gN }| || | d|j | h d| dS )z=Verify _from_iterable overridden to an instance method works.c                   @   sD   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S )zOTestCollectionABCs.test_Set_from_iterable.<locals>.SetUsingInstanceFromIterablec                 S   s    |st d|| _t|| _d S )Nzcreated_by must be specified)r   
created_byr*   _values)r.   rI  r^  r/   r/   r0   r   6  s    zXTestCollectionABCs.test_Set_from_iterable.<locals>.SetUsingInstanceFromIterable.__init__c                 S   s   t | |dS )Nfrom_iterable)r]   )r.   rI  r/   r/   r0   _from_iterable<  s    z^TestCollectionABCs.test_Set_from_iterable.<locals>.SetUsingInstanceFromIterable._from_iterablec                 S   s
   || j v S r:   r_  r  r/   r/   r0   r   ?  s    z\TestCollectionABCs.test_Set_from_iterable.<locals>.SetUsingInstanceFromIterable.__contains__c                 s   s   | j E d H  d S r:   rb  r<   r/   r/   r0   r  B  s    zXTestCollectionABCs.test_Set_from_iterable.<locals>.SetUsingInstanceFromIterable.__iter__c                 S   s
   t | jS r:   )rY   r_  r<   r/   r/   r0   r  E  s    zWTestCollectionABCs.test_Set_from_iterable.<locals>.SetUsingInstanceFromIterable.__len__c                 S   s   | j | d S r:   )r_  rG  r  r/   r/   r0   rG  H  s    zSTestCollectionABCs.test_Set_from_iterable.<locals>.SetUsingInstanceFromIterable.addc                 S   s   | j | d S r:   )r_  r#  r  r/   r/   r0   r#  K  s    zWTestCollectionABCs.test_Set_from_iterable.<locals>.SetUsingInstanceFromIterable.discardN)
r-   rH   rI   r   ra  r   r  r  rG  r#  r/   r/   r/   r0   SetUsingInstanceFromIterable5  s   rc  r*  r6   rK   r`  rL   rR   r   >   rK   rL   rR   r   >   rK   rL   r   N)r   r   r5   r^  )r.   rc  implactualr/   r/   r0   test_Set_from_iterable3  s,    


z)TestCollectionABCs.test_Set_from_iterablec                 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    n1 sh0    Y  | t ||k  W d    n1 s0    Y  | t ||	k  W d    n1 s0    Y  | ||k | ||k | ||k | ||k | ||k | ||k | ||k | ||k | ||k | t ||
k W d    n1 s0    Y  | t ||k W d    n1 s0    Y  | t ||	k W d    n1 s0    Y  | ||k | ||k | ||k | ||k | ||k | ||k | ||k | ||k | ||k | t ||
k W d    n1 s0    Y  | t ||k W d    n1 s0    Y  | t ||	k W d    n1 s0    Y  | ||k | ||k | ||k | ||k | ||k | ||k | ||k | ||k | ||k | t ||
k W d    n1 s0    Y  | t ||k W d    n1 s0    Y  | t ||	k W d    n1 s0    Y  | ||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 | _ |D ]}|| j vr
| j | q
d S r:   )r4   rC   )r.   elementsr[  r/   r/   r0   r   n  s    
zUTestCollectionABCs.test_Set_interoperability_with_real_sets.<locals>.ListSet.__init__c                 S   s
   || j v S r:   r"  )r.   r[  r/   r/   r0   r   s  s    zYTestCollectionABCs.test_Set_interoperability_with_real_sets.<locals>.ListSet.__contains__c                 S   s
   t | jS r:   r!  r<   r/   r/   r0   r  u  s    zUTestCollectionABCs.test_Set_interoperability_with_real_sets.<locals>.ListSet.__iter__c                 S   s
   t | jS r:   r   r<   r/   r/   r0   r  w  s    zTTestCollectionABCs.test_Set_interoperability_with_real_sets.<locals>.ListSet.__len__c                 S   s   d | jS )Nz	Set({!r}))r,   r4   r<   r/   r/   r0   rE  y  s    zUTestCollectionABCs.test_Set_interoperability_with_real_sets.<locals>.ListSet.__repr__N)r/   )r-   rH   rI   r   r   r  r  rE  r/   r/   r/   r0   ListSetm  s
   
rh  rF   ZbcdZabcdeZabccbaZbcddcbZ
abcdeedcba)r   r*   r>   r]  rv   ru   r   r   )r.   rh  Zr1Zr2Zr3f1f2Zf3l1l2l3targetZ
fwd_targetZ
rev_targetr/   r/   r0   (test_Set_interoperability_with_real_setsk  s    	((((((((((((z;TestCollectionABCs.test_Set_interoperability_with_real_setsc                 C   s   i dhd hdhdhdhh ddd dd hh d	d
dht  t  t  htdht hh tdh tdh d h ttjd tjd g}|D ]&}t|}| jt|t	||d qd S )NrK   r   g        rF   >   rK   rL   rR   r   rS   e   >   r(   r   r)   abFTrX    >      rS   i,  )msg)
rF  r  r  r_   rH  maxsizer5   r  r   r/  )r.   Zsetsr.  fsr/   r/   r0   test_Set_hash_matches_frozenset  s    z2TestCollectionABCs.test_Set_hash_matches_frozensetc                 C   sl   t fD ]"}| | t | t|t q| 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 r~  r/   r<   r/   r/   r0   r    s    z:TestCollectionABCs.test_Mapping.<locals>.MyMapping.__len__c                 S   s   t d S r:   )r  )r.   r   r/   r/   r0   r     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-   rH   rI   r  r   r  r/   r/   r/   r0   	MyMapping  s   rx  )
r@   r   r   rv   r  r  r  r   r   r  )r.   r(  rx  r/   r/   r0   test_Mapping  s    
zTestCollectionABCs.test_Mappingc              	   C   sD   t fD ]"}| | t | t|t q| tdddddd d S )Nr   r  r  r   __setitem____delitem__)r@   r   r   rv   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< | 	|ddh d S )NrU   redorange   Zblue)r  rR   )r~  rU   )r	   r   r  r   r    rX   r!   r*   r>   r5   sorted)r.   ZmymaprT   r/   r/   r0   test_MutableMapping_subclass&  s(    z/TestCollectionABCs.test_MutableMapping_subclassc                 C   s   t tttfD ]"}| | t | t|t q| tdt | ttt | t	dt | tt	t | ttt | 
tdddd d S )Nr   rd  r   r  r  r   )r   r>   r  r;   r   r#   rv   r  r_   
memoryviewr  r|  r/   r/   r0   test_Sequence?  s    z TestCollectionABCs.test_Sequencec           
   
      s   G dd dt } fdd}ttfD ]}|d}ddgttdt|d	  }||}t|d
hB D ]d}||||f tdt|d	 D ]>}|||||f tdt|d	 D ]}	||||||	f qqqdq$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 r:   rT  rS  r/   r/   r0   r   M  s    zJTestCollectionABCs.test_Sequence_mixins.<locals>.SequenceSubclass.__init__c                 S   s
   | j | S r:   r  rU  r/   r/   r0   r   P  s    zMTestCollectionABCs.test_Sequence_mixins.<locals>.SequenceSubclass.__getitem__c                 S   s
   t | jS r:   )rY   rT  r<   r/   r/   r0   r  S  s    zITestCollectionABCs.test_Sequence_mixins.<locals>.SequenceSubclass.__len__N)r/   rV  r/   r/   r/   r0   SequenceSubclassL  s   
r  c                    sz   z| j | }W nF tyT    t |j |  W d    n1 sF0    Y  Y n"0 |j | } ||d| |f  d S )Nz
%r.index%s)r4  r   r   r5   )Zseq1Zseq2Z
index_argsZexpectedre  r<   r/   r0   assert_index_sameW  s    .
zBTestCollectionABCs.test_Sequence_mixins.<locals>.assert_index_sameabracadabraiirR   rT   )r#   r>   r;   r_   rY   r*   )
r.   r  r  tyZ	nativeseqZindexesZseqseqletterrJ  stopr/   r<   r0   test_Sequence_mixinsK  s    z'TestCollectionABCs.test_Sequence_mixinsc                 C   s~   t tfD ]"}| | t | t|t qtttfD ]"}| 	| t | 
t|t q6| 	tdt | 
ttt d S )Nrd  )r  r  r   r%   rv   r  r;   r>   r   r  ru   r  r|  r/   r/   r0   test_ByteStringn  s    z"TestCollectionABCs.test_ByteStringc              
   C   s   t ttfD ]"}| | t | t|t q
ttt	fD ]"}| 
| t | t|t q8| ttt | tddddddd d S )Nr   r  r  r   rz  r{  insert)r   r;   r  r  r$   ru   r  r>   r  r   r   rv   r  r|  r/   r/   r0   test_MutableSequencex  s    

z'TestCollectionABCs.test_MutableSequencec                 C   s4  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}| }|||  |  || || | t|t| | t	|t	| 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 r:   lstr<   r/   r/   r0   r     s    zXTestCollectionABCs.test_MutableSequence_mixins.<locals>.MutableSequenceSubclass.__init__c                 S   s   || j |< d S r:   r  r.   r4  r  r/   r/   r0   rz    s    z[TestCollectionABCs.test_MutableSequence_mixins.<locals>.MutableSequenceSubclass.__setitem__c                 S   s
   | j | S r:   r  rU  r/   r/   r0   r     s    z[TestCollectionABCs.test_MutableSequence_mixins.<locals>.MutableSequenceSubclass.__getitem__c                 S   s
   t | jS r:   )rY   r  r<   r/   r/   r0   r    s    zWTestCollectionABCs.test_MutableSequence_mixins.<locals>.MutableSequenceSubclass.__len__c                 S   s   | j |= d S r:   r  rU  r/   r/   r0   r{    s    z[TestCollectionABCs.test_MutableSequence_mixins.<locals>.MutableSequenceSubclass.__delitem__c                 S   s   | j || d S r:   )r  r  r  r/   r/   r0   r    s    zVTestCollectionABCs.test_MutableSequence_mixins.<locals>.MutableSequenceSubclass.insertN)	r-   rH   rI   r   rz  r   r  r{  r  r/   r/   r/   r0   MutableSequenceSubclass  s   r  r   )rK   rL   rR   r   rU   rR   rK   r   r   r5  r   rN   ZABCD)
r$   rC   extendr5   rY   reverser   removeclearr>   )r.   r  ZmssrX   Zmss2r/   r/   r0   test_MutableSequence_mixins  s2    




z.TestCollectionABCs.test_MutableSequence_mixinsN)r-   rH   rI   r)  r1  r;  r=  r>  r?  rB  rG  rJ  rP  r\  r]  rf  ro  rw  ry  r}  r  r  r  r  r  r  r/   r/   r/   r0   r$  d  s0   8 #
r$  c                   @   s   e Zd Zdd Zdd ZdS )CounterSubclassWithSetItemc                 O   s"   d| _ tj| g|R i | d S r   r   r   r   r   r/   r/   r0   r     s    z#CounterSubclassWithSetItem.__init__c                 C   s   d| _ t| || d S r   )r   r   rz  )r.   rh   r  r/   r/   r0   rz    s    z&CounterSubclassWithSetItem.__setitem__N)r-   rH   rI   r   rz  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| g|R i | d S r   r  r   r/   r/   r0   r     s    zCounterSubclassWithGet.__init__c                 C   s   d| _ t| ||S r   )r   r   r[   )r.   rh   defaultr/   r/   r0   r[     s    zCounterSubclassWithGet.getN)r-   rH   rI   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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
|	 g d | t
| g d | t
|g d | t
| g d | |d	 d | |d
 d | |dd | |d
d | |d	dd | |d
dd | |tdddd | t|d | | g d tdD ]$}| ||g dd |  q| d| 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| d | |dd | d| tdD ]}| \}}| || q|  | |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abcabarR   rL   rK   rQ   r5  )rR   rL   rK   ))r(   rR   r~   rO   rK   r)   rT   r   rO   TFr   z!Counter({'a': 3, 'b': 2, 'c': 1})rU   r   Zaaabbcr(   rg   r  rk   rm   r   )r(   r)   rg   rk   rm   Zaaaaffffz	Counter()rF   r'   )rO   ZPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbA   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbZcdci+  r   r|   ) r   r5   r   r@   r   rv   r  rY   sumrI  r>   r  rX   r   r[   r\   most_commonr_   r   rg  r   r   r   r  r   NotImplementedErrorr  r   r  rp   r   
setdefault)r.   rO   r   r[  Zcntr/   r/   r0   rn     sx    

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  rE  rE  r  rE  Nr/   )r5   r>   r   rX   r   r   r   r<   r/   r/   r0   	test_init
  s    zTestCounter.test_initc                    s  |  ttd g d |  ttd g d |  ttd g d d}d}d	d
 tt|| D   fdd}t|t| }}| ||
  | ||  | |||  | |||  | |||B  | |||@  t|t| }}||7 }| || t|t| }}||8 }| || t|t| }}||O }| || t|t| }}||M }| || t|t| }}|	| | || t|t| }}|
| | || d S )Nr  )r(   rU   r~   )r0  rL   r  )rg   rK   Zxyzpdqqdpzyx))r   rL   )r   rL   )rT   rL   )r   rL   )rg   rL   )r  rL   zabracadabra simsalabim)r(   r(   r(   r(   r(   r(   r(   r)   r)   r)   r0  r0  rO   rg    r.  r.  r   r   r   r   lZaaabbcdddeefggghhijjjkklZabbcccdeefffhkkllllmmnnoc                 S   s   i | ]\}}||qS r/   r/   )r
  r   r  r/   r/   r0   
<dictcomp>%  rd  z7TestCounter.test_order_preservation.<locals>.<dictcomp>c                    s    fdd| D }|t |kS )z6Return true if the letters occur in the expected orderc                    s   g | ]} | qS r/   r/   )r
  r  orderr/   r0   r  (  rd  zRTestCounter.test_order_preservation.<locals>.correctly_ordered.<locals>.<listcomp>)r  )rT  Z	positionsr  r/   r0   correctly_ordered&  s    z>TestCounter.test_order_preservation.<locals>.correctly_ordered)r5   r>   r   rX   rg  r  r@   r  rv   rp   subtract)r.   Zpsqsr  r   r  r/   r  r0   r     sL    

z#TestCounter.test_order_preservationc                 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   rp   r5   r>   rX   r   r   r.   rO   r/   r/   r0   test_updateK  s    zTestCounter.test_updatec              	      s   t d  fdd}|  |t |t ttjd D ]F} j|d& |tt	| W d    qP1 s0    Y  qP|t
t t  }| || |t  d S )Nz)which witch had which witches wrist watchc                    s*   d| f }  | |  |  d S )Nz
copy: %s
words: %s)r3   r5   )duprt  r.   rg  r/   r0   check]  s    z'TestCounter.test_copying.<locals>.checkrK   )rl   )r   r+  r2   rd   r_   r`   ra   ZsubTestrb   rc   re   r\   rp   )r.   r  rl   Zupdate_testr/   r  r0   test_copyingY  s    6
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>.MyCounterNr   r/   r/   r/   r0   	MyCountern  s   r  Zslartibartfast)r   r2   r5   rY   r]   )r.   r  rO   rg   r/   r/   r0   test_copy_subclassm  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)r5   r  r   rg  r*   r@   rX   rA  r/   r/   r0   test_conversionsv  s
     zTestCounter.test_conversionsc                 C   s6   t dddd}|D ]}| ||v  | || qd S )Nr   r  r   rQ   )r   rv   rZ   )r.   rO   r[  r/   r/   r0   "test_invariant_for_the_in_operator~  s    z.TestCounter.test_invariant_for_the_in_operatorc                 C   s  t ddddt   }| t|tdd d}tdD ]}t tdd	 |D }|jd
ddd t tdd	 |D }|jd
ddd t jdd ft jdd ft jdd ft jdd ffD ]\\}}|||}|D ],}	| |||	 ||	 ||	 ||	||f q| 	dd	 |
 D  qq6d}tdD ]}t tdd	 |D }t tdd	 |D }t jtjft jtjft jtjffD ]B\}}
|||}|
t| t| }| |t|d
 qxq&d S )Nr   r  r   rQ   r   r@  rr  c                 s   s   | ]}|t d dfV  qdS r  r   Nr   r
  r[  r/   r/   r0   r    rd  z7TestCounter.test_multiset_operations.<locals>.<genexpr>rK   r   rk   rm   r   c                 s   s   | ]}|t d dfV  qdS r  r  r  r/   r/   r0   r    rd  r   r   r   c                 S   s   t d| | S r~  r  r   r/   r/   r0   r    rd  z6TestCounter.test_multiset_operations.<locals>.<lambda>c                 S   s   t d| | S r~  r  r   r/   r/   r0   r    rd  c                 S   s   t d| |S r~  r  r   r/   r/   r0   r    rd  c                 S   s   t dt| |S r~  )r  minr   r/   r/   r0   r    rd  c                 s   s   | ]}|d kV  qdS )r   Nr/   r  r/   r/   r0   r    rd  ZabcdefrS   c                 s   s   | ]}|t d dfV  qdS r   rL   Nr  r  r/   r/   r0   r    rd  c                 s   s   | ]}|t d dfV  qdS r  r  r  r/   r/   r0   r    rd  )r   r5   r@   r_   rp   __add____sub____or____and__rv   rI  r*   rg  r  )r.   rO   rg  r   r   r  Z	counteropZnumberopr>  r   ZsetopZcounter_result
set_resultr/   r/   r0   test_multiset_operations  s<    





z$TestCounter.test_multiset_operationsc                 C   s   t ddd}t ddd}| || | t ||k  W d    n1 sL0    Y  | t ||k W d    n1 s~0    Y  | t ||k W d    n1 s0    Y  | t ||k W d    n1 s0    Y  d S )NrK   r   r'   r   )r   r<  r   r   )r.   r   r  r/   r/   r0   $test_subset_superset_not_implemented  s    &&&z0TestCounter.test_subset_superset_not_implementedc                 C   s   d}t dD ]}ttdd |D }|jdddd ttd	d |D }|jdddd
 tjtjftjtjftjtj	ftj
tjffD ]H\}}| }t|}|||}	|||}
| |
|	 | t|
| qqd S )Nr@  rr  c                 s   s   | ]}|t d dfV  qdS r  r  r  r/   r/   r0   r    rd  z6TestCounter.test_inplace_operations.<locals>.<genexpr>rK   r   r   r  c                 s   s   | ]}|t d dfV  qdS r  r  r  r/   r/   r0   r    rd  r  )r_   r   r@   rp   __iadd__r  __isub__r  __ior__r  __iand__r  r2   idr5   )r.   rg  r   r   r  Z
inplace_opZ
regular_oprO   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   rU   r      r  r(   r)   rO   rg   rk   r   rK   rL   r  rM   rN   i)r(   r)   rO   rg   rk   rm   r   ir     ir  )r(   r)   rO   rg   rk   rm   r   r   ZaaabbcdZ	aaaabbccer   r   r  r<   )r.   r  )rE  r  )r   r  r5   r>   rX   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   rU   r   r  r  r  )rO   rg   rk   r   r   )r   r5   r@   r  r/   r/   r0   
test_unary  s    zTestCounter.test_unaryc                 C   s0   t dd d}t|}| d| | d| d S )NrL   r'   z'a': 2z	'b': None)r   r\   rZ   )r.   rO   r0  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g d td}| |j | t|dddddd td}| |j | t|dddddd d S )Nr  rU   rL   rK   )r(   r0  r)   rO   rg   r  )r(   r)   rO   rg   r0  )	r>   r@   r   r5   r   r  rv   r   r  )r.   Zelemsrg   r   rO   r/   r/   r0   test_helper_function  s    


z TestCounter.test_helper_functionN)r-   rH   rI   rn   r  r   r  r  r  r  r  r  r  r  r  r  r  r  r/   r/   r/   r0   r    s   <9	'r  c                 C   s8   t jtd}t|tttttg}t	j
|  t	t|  d S )Nr   )doctestZDocTestSuiter   r   r  r$  r  rJ   r&   r   Zrun_unittestZrun_doctest)r(  ZNamedTupleDocsZtest_classesr/   r/   r0   	test_main	  s    
r  __main__T)r(  )N)Ar   r   r2   r  rr  r^  r`   randomr   r   r  rH  r6   r   r  rz  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%   ZTestCaser&   rJ   r   r   r}  r  r  r  r$  r  r  r  r  r-   r/   r/   r/   r0   <module>   sj   0 a
   	;    `    Z		  G


