o
    GXhp                    @   sH  	 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	m
Z
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/m0Z0m1Z1 d dlm2Z2m3Z3 d dlm4Z4 G dd dej5Z6G dd dej5Z7eddZ8G dd dej5Z9G dd dej5Z:dd Z;G dd de:Z<G dd  d e,Z=G d!d" d"e:Z>G d#d$ d$eZ?G d%d& d&eZ@G d'd( d(ej5ZAd.d)d*ZBeCd+kr"eBd,d- dS dS )/    N)choice	randrange)productchaincombinations)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                   @   D   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-    r3   ?/opt/python-3.10.19/usr/lib/python3.10/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)r2   objZobj_copyr3   r3   r4   
_copy_test*   s   
zTestUserObjects._copy_testc                 C      |  tt d S N)r5   r   strr2   r3   r3   r4   test_str_protocol7      z!TestUserObjects.test_str_protocolc                 C   r>   r?   )r5   r   listrA   r3   r3   r4   test_list_protocol:   rC   z"TestUserObjects.test_list_protocolc                 C   r>   r?   )r5   r   dictrA   r3   r3   r4   test_dict_protocol=   rC   z"TestUserObjects.test_dict_protocolc                 C   s   t  }|d | | d S )N{   )r   appendr=   r2   r<   r3   r3   r4   test_list_copy@   s   
zTestUserObjects.test_list_copyc                 C   s   t  }d|d< | | d S )NabcrH   )r   r=   rJ   r3   r3   r4   test_dict_copyE   s   zTestUserObjects.test_dict_copyN)
r1   
__module____qualname__r5   r=   rB   rE   rG   rK   rM   r3   r3   r3   r4   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   sj  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| qR|d= | |jddiddd	g | | tdddd
  | t|d dD ]}| || qt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 ]
\}}| || qqttjd D ]4}	tt||	}| || | |j|j | || t|j|jD ]\}}| ||| q4qt|tt	|fD ]+}| || | |j|j | || t|j|jD ]\}}| ||| qkqN| }
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-   rU   r+   r,   r-   rU      rL   d   )r,   r-   rU   zz({'c': 30}, {'a': 1, 'b': 2})z({'c': 30}, {'b': 2, 'a': 1})r      )r   	new_childr9   mapsitemsrF   lenassertIngetreprtyper1   r6   r7   zipr;   rangepickleHIGHEST_PROTOCOLloadsdumpsdeepcopyevalparents)r2   rU   dkeykveZm1Zm2protofr3   r3   r4   test_basicsQ   sp   
&
"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)ru   Zopera)r   r6   updater9   rD   r^   )r2   ZbaselineZadjustmentscmZcombinedr3   r3   r4   test_ordering   s   



 zTestChainMap.test_orderingc                 C   s2   |  t ji g |  tddijddig d S NrQ   rR   )r9   r   r]   rA   r3   r3   r4   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 ry   )assertFalser   
assertTruerA   r3   r3   r4   	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| q6tddddd
 D ]\}}| ||v | qO| |ddd| | |ddd | | d | t |  W d    d S 1 sw   Y  d S )Nc                   @      e Zd Zdd ZdS )z2TestChainMap.test_missing.<locals>.DefaultChainMapc                 S      dS )N  r3   r2   rn   r3   r3   r4   __missing__      z>TestChainMap.test_missing.<locals>.DefaultChainMap.__missing__N)r1   rN   rO   r   r3   r3   r3   r4   DefaultChainMap       r   rQ   rR   r+   rS   rT   rV   r   r,   r-   rU   rm   M   TFr,   i  i  r-   rR   )	r   rF   r^   r9   ra   poppopitemassertRaisesKeyError)r2   r   rm   ro   rp   r3   r3   r4   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'  \    )irm   rU        	  M  ix  )rs   r-   grU   r   7      )rq   r-   rQ   rR   rX      r[   r,   r-   rU   rm   rq    Z
abcdefghij)
)r,   rQ   )r-   r   )rU   r   )rm   r   )rq   r   )rs   r   )r   r   )r   r   )r   r   )r   r   )r   r
   r9   joinrD   r^   r2   rm   r3   r3   r4   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                   @      e Zd Zdd Zdd ZdS )zKTestChainMap.test_iter_not_calling_getitem_on_maps.<locals>.DictWithGetItemc                 _   "   d| _ tj| g|R i | d S NF)calledr   __init__r2   argskwdsr3   r3   r4   r         zTTestChainMap.test_iter_not_calling_getitem_on_maps.<locals>.DictWithGetItem.__init__c                 S   s   d| _ t| | d S NT)r   r   __getitem__r2   itemr3   r3   r4   r      s   zWTestChainMap.test_iter_not_calling_getitem_on_maps.<locals>.DictWithGetItem.__getitem__N)r1   rN   rO   r   r   r3   r3   r3   r4   DictWithGetItem   s    r   rQ   r,   Fz__getitem__ was called)r   r   r   r.   r{   )r2   r   rm   rU   r3   r3   r4   %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 )NrQ   rR   r+   rS   rT   rV   rW   )r   rF   r9   r^   r   r3   r3   r4   test_dict_coercion   s   "zTestChainMap.test_dict_coercionc                 C   s0  	 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 ]}| || qWtddddd D ]\}}| ||d| qjt ddd}|jddd}| |jddddddg d S )NrQ   r,   rR   r-   rS   rT   rV   r+   r   c                   @   r   )z.TestChainMap.test_new_child.<locals>.lowerdictc                 S      t |tr	| }t| |S r?   )
isinstancer@   lowerrF   r   r   r3   r3   r4   r         
z:TestChainMap.test_new_child.<locals>.lowerdict.__getitem__c                 S   r   r?   )r   r@   r   rF   __contains__r   r3   r3   r4   r      r   z;TestChainMap.test_new_child.<locals>.lowerdict.__contains__N)r1   rN   rO   r   r   r3   r3   r3   r4   	lowerdict   s    r   rL   rY   )r,   BCrZ   )	r   r\   r9   r]   r;   rF   r`   r^   ra   )r2   rU   mrm   r   rn   ro   rp   r3   r3   r4   test_new_child   s,   



"zTestChainMap.test_new_childc           	      C   sR  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 sw   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 )NrQ   rR   r+   rX   r   )rU   rm   
   r[   )r,   rq   rS   )r-   rm   rT   )r,   rU   )rU   rX   )pr   r   c                   @      e Zd ZdS )z3TestChainMap.test_union_operators.<locals>.SubclassNr1   rN   rO   r3   r3   r3   r4   Subclass      r   c                          e Zd Z fddZ  ZS )z6TestChainMap.test_union_operators.<locals>.SubclassRorc                    s   t  |S r?   )super__ror__r2   other	__class__r3   r4   r        z>TestChainMap.test_union_operators.<locals>.SubclassRor.__ror__)r1   rN   rO   r   __classcell__r3   r3   r   r4   SubclassRor      r   )	r   rF   r6   r9   r]   r   	TypeErrorr;   rc   )	r2   Zcm1Zcm2Zcm3rm   pairstmpr   r   r3   r3   r4   test_union_operators   sD   ,(
,z!TestChainMap.test_union_operatorsN)r1   rN   rO   rt   rx   rz   r}   r   r   r   r   r   r   r3   r3   r3   r4   rP   O   s    <$rP   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+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 yr3   xyzabc%zefg ghiclassZ9abcrL   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   r9   r1   	__slots__rN   r   tuple_fieldsr   
ValueErrorassertNotInrb   r   _make)r2   r   r   r3   r3   r4   test_factory7  s,   




zTestNamedTuple.test_factoryc                 C   sH  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 suw   Y  | t |  W d    n1 sw   Y  | t |dd	d W d    n1 sw   Y  | t t dddd}W d    n1 sw   Y  | t t dddd}W d    n1 sw   Y  | t t dddd}W d    n1 sw   Y  t ddd d}| |ji  | |jjd  | |ddd | t |d W d    n	1 s5w   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   rS   )defaultsr   rS   r   rQ   rR   rQ   rR   )rQ   rS   )rS   r   r3   rX   r   rS   rT   F)	r   r9   _field_defaultsr   r   assertIsNone__new____defaults__iterr2   r   r3   r3   r4   test_defaultsT  sb   

zTestNamedTuple.test_defaultsc                 C   s   t dd}|dd}| t d|_W d    n1 sw   Y  | t
 |`W d    n1 s4w   Y  | t d|d< W d    n1 sMw   Y  | t |d= W d    n1 sew   Y  | |jd | |d d d S )Nr   r   r   r   r   r   )r   r   AttributeErrorr   r   r9   r2   r   r   r3   r3   r4   test_readonly  s    


zTestNamedTuple.test_readonlyrR   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   r9   __doc__r   r3   r3   r4   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   r9   r   r   r   )r2   r   r   r3   r3   r4   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   r;   r   r   r   r   r   )r2   r   r   r3   r3   r4   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   r9   rb   r   r   r   r   r3   r3   r4   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)rL   r   rL   r   )Z8efgZ9ghi)Z_0r   )rL   Z_efg)rL   r   r   ghi)rL   r   Z_2r   )rL   r   r   )rL   r   r   NTTrename)r9   r   r   )r2   specZrenamedr3   r3   r4   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   collectionsr9   rN   r2   r  r3   r3   r4   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  | ||di tddd | t|d	 | t|d	d
d | t |d	d
d W d    n1 sew   Y  | t |d	d W d    n1 sw   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w | 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   rQ   rR   rX   )ZXXXr   r   zPoint(x=11, y=22)__weakref__)rQ   r   )r   errorz%Did not detect an incorrect fieldnamezx, yr3   )r   r9   rF   r   r   rb   r   r/   r   r   _replace_asdictr   Z_failr   r3   r3   r4   test_instance  sB   




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 sdw   Y  | |d	 d | t|td | |j	| | |j
| | t |j W d    d S 1 sw   Y  d S )
Nr   r   r   r   r  r   rQ   rX   )r   assertIsInstancer   r9   rD   maxr   
IndexErrorhashr   r   r   rZ   )r2   r   r   r   r   r3   r3   r4   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||| qt| | }	tt|t
|}
| |	|
 |jdi t|d d
f|d dfg}tt
|}d
|d< d|d< | |t| | |jt| d S )NZeror   r3   zZero()Dotrm   rQ   rQ   zDot(d=1)r   )rm   )r   i  c                 s   s(    | ]}d  dd tdD V  qdS )r   c                 S   s   g | ]}t tjqS r3   )r   stringascii_letters).0r   r3   r3   r4   
<listcomp>  s    z;TestNamedTuple.test_odd_sizes.<locals>.<genexpr>.<listcomp>r   N)r   re   )r  r   r3   r3   r4   	<genexpr>  s    
z0TestNamedTuple.test_odd_sizes.<locals>.<genexpr>Big*   )r   r9   r   rb   r  r   rm   r  rD   r.   re   r_   r   	enumerategetattrrF   rd   )r2   r  r  r   namesr   r-   posnamerm   Z
d_expectedb2Zb2_expectedr3   r3   r4   test_odd_sizes  sF   




(zTestNamedTuple.test_odd_sizesc                 C   s   t dddd}tfD ]5}t|d}t|d}td|jd D ] }||||}| || | |j|j | d	||| qq
d S )
Nr   rS   rT   r   r   rZ   rh   ri   r  rQ   s   OrderedDict)r   rf   r$  re   rg   r9   r   r   )r2   r   r  rh   ri   protocolqr3   r3   r4   test_pickle1  s   


zTestNamedTuple.test_picklec                 C   sH   t dddd}tjtjfD ]}||}| || | |j|j qd S )Nr   rS   rT   r*  )r   r6   rj   r9   r   )r2   r   Zcopierr,  r3   r3   r4   	test_copy<  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|}|| }| || |di tt|j|}| || |	|}| || t
| | | tt|j| |	|}tdd |D }|jdi tt|j|}| || | |jt| | | | d S )NTz"itemgetter property self cls tuplerQ   rR   rX   r   r[   )rQ   rR   rX   r   r[   r   rS   rT   (   2   )
itemgetterpropertyr2   clsr   )r   rS   rT   r0  r1  >   r  	f_globalsZbutZeitherZsideaddrb   ZintrospectionwhichZEncounteredr   verbosesplitr   tosysZrepresentationrZ   Z
unexpectedZalsoobjectZMakerm   r2  namedtuple_ZFieldstringsr   Zexampler   valuesZ	Variablesmodule_nameZ	replacing
startswithZmetadataconvertZgotvariableZmustZfieldZ	argumentsr#  replaceZcreationZJythonZenvironmentsZautomaticallydocclass_namespaceoptionZ	indexableZBypassmapr   getteroperatorZhashelpZuser
   Z
IronPythonZworkrd   startr   userZTypeZAtr@   ZregularZ
positionalfield_names	formattedZForkeywordsrepr_fmtr6   targetsZAliasra   wherenamedframeZneedsZreuse_itemgetterr   ZvalidZ	debuggingresultr   thisZgenerateZNotebeZ	interningZ
particularZ	functionsalltypenamefunctionr3  Ztheirr%  r.   classmethodZReturnr   r_   ZBuildZeffectZupZgreatermethodrnewr   messagemethodscreatedrs   r  ZReturnsZsequenceZCreater'  sr   ZHelperr  subclassr   seenZbyisidentifierrc   ZlikeZ	specifiedZnicely
num_fieldsunpackZplainZbuildinstancestepZModifyZofZthanr  r   r2   rf   r   Z
underscorer4  ZidentifiersZanZinstantiater  rF   execnumberbuiltinsr,   iterableindexZpicklingfieldsZ
dictionaryZcannotZ	duplicateZ	docstringr   r]   arg_listrD   Z
accessiblekeyword	tuple_new	namespaceZdefinedZExpectedZ
docstringsZGotusedZUsedr   ZaddedZValidatec                 s   s    | ]}|d  V  qdS )r   Nr3   )r  rp   r3   r3   r4   r  {      z5TestNamedTuple.test_name_conflicts.<locals>.<genexpr>r3   )r   r9   r  r   re   r_   rF   rd   r   r   rb   r  __getnewargs__)r2   r/  tZnewtwordsr?  Z	newvaluesr3   r3   r4   test_name_conflictsC  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   rQ   zA(x=1)c                   @   r   )z#TestNamedTuple.test_repr.<locals>.BNr   r3   r3   r3   r4   r     r   r   zB(x=1))r   r9   rb   )r2   r{  r   r3   r3   r4   	test_repr  s   
zTestNamedTuple.test_reprc                 C   s   |  t tdddgd}W d    n1 sw   Y  tdddgdd}| |jd |  t tdddgd	d}W d    d S 1 sGw   Y  d S )
Nr  r   r   TrL   defr  r   F)r   r   r   r9   r   r	  r3   r3   r4   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                   @   r   )zBTestNamedTuple.test_namedtuple_subclass_issue_24931.<locals>.PointNr   r3   r3   r3   r4   r     r   r   Z_Pointr   r   rX   r   )r   rX   )r   r   r[   w)r   r9   r  r
   r  __dict__)r2   r   r,   r3   r3   r4   $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)r1   rN   rO   rf   rh   ri   r   r   r3   r   r3   r4   NewPoint  s    r  rQ   rR   )r   r|   inspectZisdatadescriptorr   r9   __get__r   r   __set__
__delete__r   r   )r2   r   r  Znpr3   r  r4   test_field_descriptor  s   

z$TestNamedTuple.test_field_descriptorc                 C   s4   t dd}|j}| |jd i  | |ji  d S )Nr   r3   __builtins__)r   r   r9   __globals__r  )r2   r<   new_funcr3   r3   r4   test_new_builtins_issue_43102  s   
z,TestNamedTuple.test_new_builtins_issue_43102c                 C   s   t dd}| |jd d S )Nr   r   r   )r   r9   __match_args__r   r3   r3   r4   test_match_args  s   
zTestNamedTuple.test_match_argsN)r1   rN   rO   r   r   r   unittestZskipIfr;  flagsoptimizer   r   r   Zcpython_onlyr   r   r  r
  r  r  r)  r-  r.  rz  r|  r~  r  r  r  r  r3   r3   r3   r4   r   5  sD    2


&&@


r   c                   @   $   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   r   Nr   r3   rc  r   r3   r3   r4   <lambda>      z7ABCTestCase.validate_abstract_methods.<locals>.<lambda>r   )rF   fromkeysrc   r6   r   r   )r2   rL   r%  Zmethodstubsr   r'  Zstubsr3   r3   r4   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   r   r  r3   r  r3   r3   r4   r    r  z1ABCTestCase.validate_isinstance.<locals>.<lambda>r   __hash__)rc   r<  setattrr  r|   
issubclassassertNotIsInstancer{   )r2   rL   r'  Zstubr   r3   r3   r4   validate_isinstance  s   zABCTestCase.validate_isinstancec                 C   s   g d}i }|D ]}d| d }t t|||< qG dd d}| D ]\}}t||s-q#| }||| | |jdt||f  q#d S )N)	ltgtlegeneorandxorsub__c                   @   s@   e Zd Zdd Zdd ZeZeZeZeZeZ	eZ
eZeZeZdS )z.ABCTestCase.validate_comparison.<locals>.Otherc                 S   s
   d| _ d S r   
right_siderA   r3   r3   r4   r        
z7ABCTestCase.validate_comparison.<locals>.Other.__init__c                 S   s
   d| _ dS r   r  r   r3   r3   r4   __eq__  s   z5ABCTestCase.validate_comparison.<locals>.Other.__eq__N)r1   rN   rO   r   r  __lt____gt____le____ge____ne__r   __rand____rxor____rsub__r3   r3   r3   r4   Other  s    r  zRight side not called for %s.%s)r$  rJ  r^   hasattrr|   r  rc   )r2   ri  opsZ	operatorsopr'  r  r   r3   r3   r4   validate_comparison  s   



zABCTestCase.validate_comparisonN)r1   rN   rO   r  r  r  r3   r3   r3   r4   r    s    r  c                   c       d V  d S r?   r3   r3   r3   r3   r4   	_test_gen     
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}| td d t | t g}|D ]}| |t | t	t
|ttt
| q/| | g}|D ]}| |t | t	t
|t qO| }	| |	t | }	| |	t |	  G dd d}
t|
 | t|
 t | t	|
t d }
t  d S )Nc                   s   r  r?   r3   r3   r3   r3   r4   gen  r  z0TestOneTrickPonyABCs.test_Awaitable.<locals>.genc                   s   r  r?   r3   r3   r3   r3   r4   coro     
z1TestOneTrickPonyABCs.test_Awaitable.<locals>.coroc                         d S r?   r3   r3   r3   r3   r4   new_coro     z5TestOneTrickPonyABCs.test_Awaitable.<locals>.new_coroc                   @   r~   )z0TestOneTrickPonyABCs.test_Awaitable.<locals>.Barc                 s   r  r?   r3   rA   r3   r3   r4   	__await__  r  z:TestOneTrickPonyABCs.test_Awaitable.<locals>.Bar.__await__Nr1   rN   rO   r  r3   r3   r3   r4   Bar  r   r  c                       .   e Zd Zdd Zd fdd	Zdd Z  ZS )	z8TestOneTrickPonyABCs.test_Awaitable.<locals>.MinimalCoroc                 S      |S r?   r3   r2   valuer3   r3   r4   send  r   z=TestOneTrickPonyABCs.test_Awaitable.<locals>.MinimalCoro.sendNc                       t  ||| d S r?   r   throwr2   typvaltbr   r3   r4   r       z>TestOneTrickPonyABCs.test_Awaitable.<locals>.MinimalCoro.throwc                 s   r  r?   r3   rA   r3   r3   r4   r    r  zBTestOneTrickPonyABCs.test_Awaitable.<locals>.MinimalCoro.__await__NNr1   rN   rO   r  r  r  r   r3   r3   r   r4   MinimalCoro      r  r  c                   @   r   )z5TestOneTrickPonyABCs.test_Awaitable.<locals>.CoroLikeNr   r3   r3   r3   r4   CoroLike-      r  )types	coroutiner   r  r   intr<  r  r{   r  rc   rb   r  r|   closeregisterr   r   
gc_collectr2   r  r  r  r  r  non_samplesr   samplesrU   r  r3   r3   r4   test_Awaitable   s4   
 
z#TestOneTrickPonyABCs.test_Awaitablec                 C   sX  dd }t jdd }dd }G dd d}G d	d
 d
t}| tddd d t | t | g}|D ]}| |t | tt	|tt
t	| q3| g}|D ]}| |t | tt	|t qQ| }	| |	t | }	| |	t |	  G dd d}
| t|
 t | t|
t G dd d}
| t|
 t | t|
t d S )Nc                   s   r  r?   r3   r3   r3   r3   r4   r  5  r  z0TestOneTrickPonyABCs.test_Coroutine.<locals>.genc                   s   r  r?   r3   r3   r3   r3   r4   r  8  r  z1TestOneTrickPonyABCs.test_Coroutine.<locals>.coroc                      r  r?   r3   r3   r3   r3   r4   r  <  r  z5TestOneTrickPonyABCs.test_Coroutine.<locals>.new_coroc                   @   r~   )z0TestOneTrickPonyABCs.test_Coroutine.<locals>.Barc                 s   r  r?   r3   rA   r3   r3   r4   r  @  r  z:TestOneTrickPonyABCs.test_Coroutine.<locals>.Bar.__await__Nr  r3   r3   r3   r4   r  ?  r   r  c                       r  )	z8TestOneTrickPonyABCs.test_Coroutine.<locals>.MinimalCoroc                 S   r  r?   r3   r  r3   r3   r4   r  D  r   z=TestOneTrickPonyABCs.test_Coroutine.<locals>.MinimalCoro.sendNc                    r  r?   r  r  r   r3   r4   r  F  r  z>TestOneTrickPonyABCs.test_Coroutine.<locals>.MinimalCoro.throwc                 s   r  r?   r3   rA   r3   r3   r4   r  H  r  zBTestOneTrickPonyABCs.test_Coroutine.<locals>.MinimalCoro.__await__r  r  r3   r3   r   r4   r  C  r  r  r  r  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      d S r?   r3   r  r3   r3   r4   r  b  r   :TestOneTrickPonyABCs.test_Coroutine.<locals>.CoroLike.sendNc                 S   r  r?   r3   r  r3   r3   r4   r  d  r   z;TestOneTrickPonyABCs.test_Coroutine.<locals>.CoroLike.throwc                 S   r  r?   r3   rA   r3   r3   r4   r  f  r   ;TestOneTrickPonyABCs.test_Coroutine.<locals>.CoroLike.closec                 S   r  r?   r3   rA   r3   r3   r4   r  h  r   ?TestOneTrickPonyABCs.test_Coroutine.<locals>.CoroLike.__await__r  )r1   rN   rO   r  r  r  r  r3   r3   r3   r4   r  a  s
    
r  c                   @   r  )r  c                 S   r  r?   r3   r  r3   r3   r4   r  n  r   r  c                 S   r  r?   r3   rA   r3   r3   r4   r  p  r   r  c                 S   r  r?   r3   rA   r3   r3   r4   r  r  r   r  N)r1   rN   rO   r  r  r  r3   r3   r3   r4   r  m      )r  r  r   r  r  r<  r  r{   r  rc   rb   r  r   r|   r  r   r  r3   r3   r4   test_Coroutine4  s4   
 	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| q;| tt G dd dt}| t| d | tt
| | td | td d S )Nc                       r   )z-TestOneTrickPonyABCs.test_Hashable.<locals>.Hc                    
   t   S r?   )r   r  rA   r   r3   r4   r    r  z6TestOneTrickPonyABCs.test_Hashable.<locals>.H.__hash__)r1   rN   rO   r  r   r3   r3   r   r4   H  r   r  r   r  )	bytearrayrD   r.   rF   r  r   r{   r  rc   rb   r  floatcomplexr@   r   	frozensetr<  bytesr  r|   r   r   r9   r  r  r  )r2   r  r   r  r  r3   r3   r4   test_Hashablew  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                   @   r~   )z3TestOneTrickPonyABCs.test_AsyncIterable.<locals>.AIc                 S      | S r?   r3   rA   r3   r3   r4   	__aiter__  r   z=TestOneTrickPonyABCs.test_AsyncIterable.<locals>.AI.__aiter__N)r1   rN   rO   r  r3   r3   r3   r4   AI  r   r  r  )r|   r   r   r  r<  r  r{   rc   rb   r  r  )r2   r  r  r   r3   r3   r4   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                   @   r   )z3TestOneTrickPonyABCs.test_AsyncIterator.<locals>.AIc                 S   r  r?   r3   rA   r3   r3   r4   r    r   z=TestOneTrickPonyABCs.test_AsyncIterator.<locals>.AI.__aiter__c                       t r?   StopAsyncIterationrA   r3   r3   r4   	__anext__  r  z=TestOneTrickPonyABCs.test_AsyncIterator.<locals>.AI.__anext__N)r1   rN   rO   r  r  r3   r3   r3   r4   r        r  c                   @   r~   )z:TestOneTrickPonyABCs.test_AsyncIterator.<locals>.AnextOnlyc                    r  r?   r  rA   r3   r3   r4   r    r  zDTestOneTrickPonyABCs.test_AsyncIterator.<locals>.AnextOnly.__anext__N)r1   rN   rO   r  r3   r3   r3   r4   	AnextOnly  r   r  r  r  )
r|   r   r   r  r<  r  r{   rc   rb   r  )r2   r  r  r   r  r3   r3   r4   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| qDG 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       | ]}|V  qd S r?   r3   r  r   r3   r3   r4   r        z5TestOneTrickPonyABCs.test_Iterable.<locals>.<genexpr>r3   c                       r   )z-TestOneTrickPonyABCs.test_Iterable.<locals>.Ic                    r  r?   )r   __iter__rA   r   r3   r4   r    r  z6TestOneTrickPonyABCs.test_Iterable.<locals>.I.__iter__)r1   rN   rO   r  r   r3   r3   r   r4   I  r   r  r  c                   @   r~   )z.TestOneTrickPonyABCs.test_Iterable.<locals>.Itc                 S      t g S r?   r   rA   r3   r3   r4   r        z7TestOneTrickPonyABCs.test_Iterable.<locals>.It.__iter__Nr1   rN   rO   r  r3   r3   r3   r4   It  r   r	  c                   @      e Zd ZdZdS )z5TestOneTrickPonyABCs.test_Iterable.<locals>.ItBlockedNr  r3   r3   r3   r4   	ItBlocked      r  )r  r   r{   r  rc   rb   r  r@   r   rD   r.   r  rF   keysr^   r?  r  r  r|   r9   r  r  r   )r2   r  r   r  r  r	  r  r3   r3   r4   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| q6t t t t t t  t  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 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   r   r?   r3   r  r3   r3   r4   r    r  z7TestOneTrickPonyABCs.test_Reversible.<locals>.<genexpr>r3   c                   @   r   )z/TestOneTrickPonyABCs.test_Reversible.<locals>.Rc                 S   
   t t S r?   r   rD   rA   r3   r3   r4   r    r  z8TestOneTrickPonyABCs.test_Reversible.<locals>.R.__iter__c                 S   r  r?   r  rA   r3   r3   r4   __reversed__  r  z<TestOneTrickPonyABCs.test_Reversible.<locals>.R.__reversed__Nr1   rN   rO   r  r  r3   r3   r3   r4   R  r  r  r  r  c                   @   r~   )z7TestOneTrickPonyABCs.test_Reversible.<locals>.RevNoIterc                 S   r  r?   reversedrA   r3   r3   r4   r    r  zDTestOneTrickPonyABCs.test_Reversible.<locals>.RevNoIter.__reversed__Nr1   rN   rO   r  r3   r3   r3   r4   	RevNoIter  r   r  c                   @   r~   )z9TestOneTrickPonyABCs.test_Reversible.<locals>.RevPlusIterc                 S   r  r?   r  rA   r3   r3   r4   r    r  zBTestOneTrickPonyABCs.test_Reversible.<locals>.RevPlusIter.__iter__Nr  r3   r3   r3   r4   RevPlusIter  r   r  c                   @   r   )z1TestOneTrickPonyABCs.test_Reversible.<locals>.Revc                 S   r  r?   r  rA   r3   r3   r4   r    r  z:TestOneTrickPonyABCs.test_Reversible.<locals>.Rev.__iter__c                 S   r  r?   r  rA   r3   r3   r4   r    r  z>TestOneTrickPonyABCs.test_Reversible.<locals>.Rev.__reversed__Nr  r3   r3   r3   r4   Rev       r  c                   @   r
  )z:TestOneTrickPonyABCs.test_Reversible.<locals>.RevItBlockedNr  r3   r3   r3   r4   RevItBlocked  r  r  c                   @   r
  )z;TestOneTrickPonyABCs.test_Reversible.<locals>.RevRevBlockedNr  r3   r3   r3   r4   RevRevBlocked  r  r  )r.   r  r  r   r{   r  rc   rb   r  r   r  r  r@   r   rD   r
   r  r^   r?  r	   rF   r  r|   r&   r!   r"   r9   r  r  r   )r2   r  r   Znon_reversiblesr  r  r  r  r  r  r  r3   r3   r4   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| q6t	 t
 t t t t t t  t  t  g
}|D ]}| |t | tt|ttt| ql| 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 )NrR   r3   r  r3   r3   r4   r    r  z6TestOneTrickPonyABCs.test_Collection.<locals>.<lambda>    c                 s   r   r?   r3   r  r3   r3   r4   r    r  z7TestOneTrickPonyABCs.test_Collection.<locals>.<genexpr>r3   c                   @   r  )z1TestOneTrickPonyABCs.test_Collection.<locals>.Colc                 S   r  r?   r  rA   r3   r3   r4   r  *  r  z:TestOneTrickPonyABCs.test_Collection.<locals>.Col.__iter__c                 S   r   r  r3   rA   r3   r3   r4   __len__,  r   z9TestOneTrickPonyABCs.test_Collection.<locals>.Col.__len__c                 S   r   r   r3   r   r3   r3   r4   r   .  r   z>TestOneTrickPonyABCs.test_Collection.<locals>.Col.__contains__Nr1   rN   rO   r  r  r   r3   r3   r3   r4   Col)  r  r!  c                   @   r   )z4TestOneTrickPonyABCs.test_Collection.<locals>.DerColNr   r3   r3   r3   r4   DerCol0  r  r"  r  r  r   c                   @   r   )z7TestOneTrickPonyABCs.test_Collection.<locals>.ColNoIterc                 S   r   r  r3   rA   r3   r3   r4   r  =  r  z?TestOneTrickPonyABCs.test_Collection.<locals>.ColNoIter.__len__c                 S   r   r   r3   r   r3   r3   r4   r   >  r  zDTestOneTrickPonyABCs.test_Collection.<locals>.ColNoIter.__contains__N)r1   rN   rO   r  r   r3   r3   r3   r4   	ColNoIter<  r  r#  c                   @   r   )z7TestOneTrickPonyABCs.test_Collection.<locals>.ColNoSizec                 S   r  r?   r  rA   r3   r3   r4   r  @  r  z@TestOneTrickPonyABCs.test_Collection.<locals>.ColNoSize.__iter__c                 S   r   r   r3   r   r3   r3   r4   r   A  r  zDTestOneTrickPonyABCs.test_Collection.<locals>.ColNoSize.__contains__N)r1   rN   rO   r  r   r3   r3   r3   r4   	ColNoSize?  r  r$  c                   @   r   )z7TestOneTrickPonyABCs.test_Collection.<locals>.ColNoContc                 S   r  r?   r  rA   r3   r3   r4   r  C  r  z@TestOneTrickPonyABCs.test_Collection.<locals>.ColNoCont.__iter__c                 S   r   r  r3   rA   r3   r3   r4   r  D  r  z?TestOneTrickPonyABCs.test_Collection.<locals>.ColNoCont.__len__N)r1   rN   rO   r  r  r3   r3   r3   r4   	ColNoContB  r  r%  c                   @       e Zd Zdd Zdd ZdZdS )z7TestOneTrickPonyABCs.test_Collection.<locals>.SizeBlockc                 S   r  r?   r  rA   r3   r3   r4   r  M  r  z@TestOneTrickPonyABCs.test_Collection.<locals>.SizeBlock.__iter__c                 S   r   r   r3   rA   r3   r3   r4   r   N  r  zDTestOneTrickPonyABCs.test_Collection.<locals>.SizeBlock.__contains__N)r1   rN   rO   r  r   r  r3   r3   r3   r4   	SizeBlockL      r'  c                   @   r&  )z7TestOneTrickPonyABCs.test_Collection.<locals>.IterBlockc                 S   r   r  r3   rA   r3   r3   r4   r  Q  r  z?TestOneTrickPonyABCs.test_Collection.<locals>.IterBlock.__len__c                 S   r   r   r3   rA   r3   r3   r4   r   R  r  zDTestOneTrickPonyABCs.test_Collection.<locals>.IterBlock.__contains__N)r1   rN   rO   r  r   r  r3   r3   r3   r4   	IterBlockP  r(  r)  c                   @   r  )z5TestOneTrickPonyABCs.test_Collection.<locals>.ColImplc                 S   r  r?   r  rA   r3   r3   r4   r  Z  r  z>TestOneTrickPonyABCs.test_Collection.<locals>.ColImpl.__iter__c                 S   r   r  r3   rA   r3   r3   r4   r  \  r   z=TestOneTrickPonyABCs.test_Collection.<locals>.ColImpl.__len__c                 S   r   r   r3   r   r3   r3   r4   r   ^  r   zBTestOneTrickPonyABCs.test_Collection.<locals>.ColImpl.__contains__Nr   r3   r3   r3   r4   ColImplY  r  r*  c                   @   r
  )z4TestOneTrickPonyABCs.test_Collection.<locals>.NonColN)r1   rN   rO   r   r3   r3   r3   r4   NonCol`  r  r+  )r  r   r{   r  rc   rb   r  r   r  r.   r  rF   r  r@   r   rD   r  r^   r?  r  r|   r&   r!   r"   r   r    r9   r  r  r   )r2   Znon_collectionsr   Znon_col_iterablesr  r!  r"  r#  r$  r%  r'  r)  r*  r+  r3   r3   r4   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| qa| td	d
 G dd d}| | t d S )Nr"  r  r  r  r   r3   c                 s   r   r?   r3   r  r3   r3   r4   r  q  r  z5TestOneTrickPonyABCs.test_Iterator.<locals>.<genexpr>__next__r  c                   @   r~   )z4TestOneTrickPonyABCs.test_Iterator.<locals>.NextOnlyc                 s       dV  d S NrQ   r3   rA   r3   r3   r4   r-  z  s   z=TestOneTrickPonyABCs.test_Iterator.<locals>.NextOnly.__next__N)r1   rN   rO   r-  r3   r3   r3   r4   NextOnlyy  r   r0  )r.   r  r   r{   r  rc   rb   r   r  r@   r   rD   rF   r  r  r^   r?  r  r  r|   r  )r2   r  r   r  r0  r3   r3   r4   test_Iteratorf  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| q0G dd d}G dd dt}dd }| dd  | | g}	|	D ]}| |t	 | |t | 
tt|ttt| qi| 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                   @   .   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   r  r?   r3   rA   r3   r3   r4   r    r  z=TestOneTrickPonyABCs.test_Generator.<locals>.NonGen1.__iter__c                 S   r  r?   r3   rA   r3   r3   r4   r-    r  z=TestOneTrickPonyABCs.test_Generator.<locals>.NonGen1.__next__c                 S   r  r?   r3   rA   r3   r3   r4   r    r  z:TestOneTrickPonyABCs.test_Generator.<locals>.NonGen1.closeNc                 S   r  r?   r3   r  r3   r3   r4   r    r  z:TestOneTrickPonyABCs.test_Generator.<locals>.NonGen1.throwr  )r1   rN   rO   r  r-  r  r  r3   r3   r3   r4   NonGen1  
    r3  c                   @   ,   e Zd Zdd Zdd Zdd Zdd Zd	S )
z4TestOneTrickPonyABCs.test_Generator.<locals>.NonGen2c                 S   r  r?   r3   rA   r3   r3   r4   r    r  z=TestOneTrickPonyABCs.test_Generator.<locals>.NonGen2.__iter__c                 S   r  r?   r3   rA   r3   r3   r4   r-    r  z=TestOneTrickPonyABCs.test_Generator.<locals>.NonGen2.__next__c                 S   r  r?   r3   rA   r3   r3   r4   r    r  z:TestOneTrickPonyABCs.test_Generator.<locals>.NonGen2.closec                 S   r  r?   r3   r  r3   r3   r4   r    r  z9TestOneTrickPonyABCs.test_Generator.<locals>.NonGen2.sendN)r1   rN   rO   r  r-  r  r  r3   r3   r3   r4   NonGen2  
    r6  c                   @   &   e Zd Zdd Zdd ZdddZdS )	z4TestOneTrickPonyABCs.test_Generator.<locals>.NonGen3c                 S   r  r?   r3   rA   r3   r3   r4   r    r  z:TestOneTrickPonyABCs.test_Generator.<locals>.NonGen3.closec                 S   r  r?   r3   r  r3   r3   r4   r    r  z9TestOneTrickPonyABCs.test_Generator.<locals>.NonGen3.sendNc                 S   r  r?   r3   r  r3   r3   r4   r    r  z:TestOneTrickPonyABCs.test_Generator.<locals>.NonGen3.throwr  )r1   rN   rO   r  r  r  r3   r3   r3   r4   NonGen3      r9  r"  r  r  r  r   r3   c                   @   6   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   r  r?   r3   rA   r3   r3   r4   r    r  z9TestOneTrickPonyABCs.test_Generator.<locals>.Gen.__iter__c                 S   r  r?   r3   rA   r3   r3   r4   r-    r  z9TestOneTrickPonyABCs.test_Generator.<locals>.Gen.__next__c                 S   r  r?   r3   rA   r3   r3   r4   r    r  z6TestOneTrickPonyABCs.test_Generator.<locals>.Gen.closec                 S   r  r?   r3   r  r3   r3   r4   r    r  z5TestOneTrickPonyABCs.test_Generator.<locals>.Gen.sendNc                 S   r  r?   r3   r  r3   r3   r4   r    r  z6TestOneTrickPonyABCs.test_Generator.<locals>.Gen.throwr  )r1   rN   rO   r  r-  r  r  r  r3   r3   r3   r4   Gen      r<  c                       &   e Zd Zdd Zd fdd	Z  ZS )z7TestOneTrickPonyABCs.test_Generator.<locals>.MinimalGenc                 S   r  r?   r3   r  r3   r3   r4   r    r   z<TestOneTrickPonyABCs.test_Generator.<locals>.MinimalGen.sendNc                    r  r?   r  r  r   r3   r4   r    r  z=TestOneTrickPonyABCs.test_Generator.<locals>.MinimalGen.throwr  )r1   rN   rO   r  r  r   r3   r3   r   r4   
MinimalGen      r?  c                   s   r.  r/  r3   r3   r3   r3   r4   r    r  z0TestOneTrickPonyABCs.test_Generator.<locals>.genc                   s   s    d V S r?   r3   r3   r3   r3   r4   r    s    z5TestOneTrickPonyABCs.test_Generator.<locals>.<lambda>r  r  rR   z^huhu$Zhuhuc                   @   r   )z8TestOneTrickPonyABCs.test_Generator.<locals>.FailOnClosec                 S   r  r?   r3   r  r3   r3   r4   r    r  z=TestOneTrickPonyABCs.test_Generator.<locals>.FailOnClose.sendc                 W      t r?   r   r2   r   r3   r3   r4   r    r  z>TestOneTrickPonyABCs.test_Generator.<locals>.FailOnClose.throwNr1   rN   rO   r  r  r3   r3   r3   r4   FailOnClose  r  rE  c                   @   r   )z@TestOneTrickPonyABCs.test_Generator.<locals>.IgnoreGeneratorExitc                 S   r  r?   r3   r  r3   r3   r4   r    r  zETestOneTrickPonyABCs.test_Generator.<locals>.IgnoreGeneratorExit.sendc                 W   r  r?   r3   rC  r3   r3   r4   r    r  zFTestOneTrickPonyABCs.test_Generator.<locals>.IgnoreGeneratorExit.throwNrD  r3   r3   r3   r4   IgnoreGeneratorExit  r  rF  )r.   r   r  r   r{   r  rc   rb   r  r   r|   r  r;   r  nextr9   r   r  r   r   r  ZassertRaisesRegexStopIterationRuntimeError)r2   r3  r6  r9  r  r   r<  r?  r  r  mgenrE  rF  r3   r3   r4   test_Generator  s@     z#TestOneTrickPonyABCs.test_Generatorc                 C   sH  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| q0G dd d}G dd dt}dd }| | | g}	|	D ]}| |t	 | |t | 
tt|ttt| qe| tdd dd }
| }| ||  | |
|d |
|  | d|
|d | |
|  | t |
|t W d    n1 sw   Y  G dd dt}| t |
|   W d    n1 sw   Y  G dd dt}| t |
|   W d    d S 1 sw   Y  d S )Nc                   @   r2  )z:TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen1c                 S   r  r?   r3   rA   r3   r3   r4   r    r  zDTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen1.__aiter__c                 S   r  r?   r3   rA   r3   r3   r4   r    r  zDTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen1.__anext__c                 S   r  r?   r3   rA   r3   r3   r4   aclose  r  zATestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen1.acloseNc                 S   r  r?   r3   r  r3   r3   r4   athrow  r  zATestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen1.athrowr  )r1   rN   rO   r  r  rL  rM  r3   r3   r3   r4   NonAGen1  r4  rN  c                   @   r5  )
z:TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen2c                 S   r  r?   r3   rA   r3   r3   r4   r    r  zDTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen2.__aiter__c                 S   r  r?   r3   rA   r3   r3   r4   r    r  zDTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen2.__anext__c                 S   r  r?   r3   rA   r3   r3   r4   rL    r  zATestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen2.aclosec                 S   r  r?   r3   r  r3   r3   r4   asend  r  z@TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen2.asendN)r1   rN   rO   r  r  rL  rO  r3   r3   r3   r4   NonAGen2  r7  rP  c                   @   r8  )	z:TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen3c                 S   r  r?   r3   rA   r3   r3   r4   rL    r  zATestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen3.aclosec                 S   r  r?   r3   r  r3   r3   r4   rO    r  z@TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen3.asendNc                 S   r  r?   r3   r  r3   r3   r4   rM    r  zATestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen3.athrowr  )r1   rN   rO   rL  rO  rM  r3   r3   r3   r4   NonAGen3  r:  rQ  r"  r  r  r  r   r3   c                   @   r;  )z5TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.Genc                 S   r  r?   r3   rA   r3   r3   r4   r    r  z?TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.Gen.__aiter__c                    r  r?   r3   rA   r3   r3   r4   r        z?TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.Gen.__anext__c                    r  r?   r3   rA   r3   r3   r4   rL    rR  z<TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.Gen.aclosec                       |S r?   r3   r  r3   r3   r4   rO    rR  z;TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.Gen.asendNc                    r  r?   r3   r  r3   r3   r4   rM    rR  z<TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.Gen.athrowr  )r1   rN   rO   r  r  rL  rO  rM  r3   r3   r3   r4   r<    r=  r<  c                       r>  )z=TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.MinimalAGenc                    rS  r?   r3   r  r3   r3   r4   rO    r  zCTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.MinimalAGen.asendNc                    s   t  |||I d H  d S r?   )r   rM  r  r   r3   r4   rM    s   zDTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.MinimalAGen.athrowr  )r1   rN   rO   rO  rM  r   r3   r3   r   r4   MinimalAGen  r@  rT  c                   S  s   dV  d S r/  r3   r3   r3   r3   r4   r    r  z5TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.genrO  rM  c              
   S   sR   d }	 z|  d  W n ty' } z|jr|jd nd }W Y d }~|S d }~ww q)NTr   )r  rH  r   )r  rV  exr3   r3   r4   	run_async  s   
z;TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.run_asyncrR   c                   @   r   )z=TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.FailOnClosec                    rS  r?   r3   r  r3   r3   r4   rO  
  rR  zCTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.FailOnClose.asendc                    r  r?   rB  rC  r3   r3   r4   rM    rR  zDTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.FailOnClose.athrowNr1   rN   rO   rO  rM  r3   r3   r3   r4   rE  	  r  rE  c                   @   r   )zETestOneTrickPonyABCs.test_AsyncGenerator.<locals>.IgnoreGeneratorExitc                    rS  r?   r3   r  r3   r3   r4   rO    rR  zKTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.IgnoreGeneratorExit.asendc                    r  r?   r3   rC  r3   r3   r4   rM    rR  zLTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.IgnoreGeneratorExit.athrowNrW  r3   r3   r3   r4   rF    r  rF  )r.   r   r  r   r{   r  rc   rb   r  r   r|   r  r;   r  rO  r  r9   r   rL  r   r   rM  rI  )r2   rN  rP  rQ  r  r   r<  rT  r  r  rV  rJ  rE  rF  r3   r3   r4   test_AsyncGenerator  sF     $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| qF| td | td d S )Nr"  r  r  c                 s   r   r?   r3   r  r3   r3   r4   r    r  z2TestOneTrickPonyABCs.test_Sized.<locals>.<genexpr>r3   r  )r  r  r   r{   r  rc   rb   r  r@   r   rD   r.   r  rF   r  r^   r?  r  r|   r  r  r2   r  r   r  r3   r3   r4   
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| qB| td | td d S )Nr"  r  r  c                 s   r   r?   r3   r  r3   r3   r4   r  ,  r  z6TestOneTrickPonyABCs.test_Container.<locals>.<genexpr>r3   r   )r  r  r   r{   r  rc   rb   r  r@   r   rD   r.   r  rF   r  r^   r  r|   r  r  rY  r3   r3   r4   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   r  r3   c                 s   r   r?   r3   r  r3   r3   r4   r  ?  r  z5TestOneTrickPonyABCs.test_Callable.<locals>.<genexpr>c                   S   r  r?   r3   r3   r3   r3   r4   r  D  r  z4TestOneTrickPonyABCs.test_Callable.<locals>.<lambda>__call__)r.   r  r  r   r{   r  rc   rb   r  r<  r_   rD   rI   r  r|   r  r  rY  r3   r3   r4   test_Callable;  s$     z"TestOneTrickPonyABCs.test_Callablec                 C   sL   t ttttttfD ]}G dd d|}| t|| | 	tt
| q	d S )Nc                   @   r   )z7TestOneTrickPonyABCs.test_direct_subclassing.<locals>.CNr   r3   r3   r3   r4   r   Q  r   r   )r   r   r   r   r   r   r   r|   r  r{   r  r2   r   r   r3   r3   r4   test_direct_subclassingO  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                   @   r
  )z1TestOneTrickPonyABCs.test_registration.<locals>.CN)r1   rN   rO   r  r3   r3   r3   r4   r   X  r  r   )r   r   r   r   r   r   r   r{   r  r1   r  r|   r^  r3   r3   r4   test_registrationV  s   
z&TestOneTrickPonyABCs.test_registrationN)r1   rN   rO   r  r  r  r  r  r  r  r,  r1  rK  rX  rZ  r[  r]  r_  r`  r3   r3   r3   r4   r    s"    4C"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 )WithSetr3   c                 C   s   t || _d S r?   )r.   r8   )r2   itr3   r3   r4   r   `     zWithSet.__init__c                 C   
   t | jS r?   r_   r8   rA   r3   r3   r4   r  c  r  zWithSet.__len__c                 C   rd  r?   r   r8   rA   r3   r3   r4   r  f  r  zWithSet.__iter__c                 C   
   || j v S r?   r8   r   r3   r3   r4   r   i  r  zWithSet.__contains__c                 C      | j | d S r?   )r8   r6  r   r3   r3   r4   r6  l  rC   zWithSet.addc                 C   ri  r?   )r8   discardr   r3   r3   r4   rj  o  rC   zWithSet.discardNr3   )	r1   rN   rO   r   r  r  r   r6  rj  r3   r3   r3   r4   ra  ^  s    
ra  c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1S )2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                   @   r  )z*TestCollectionABCs.test_Set.<locals>.MySetc                 S   r   r   r3   r2   r   r3   r3   r4   r   ~  r   z7TestCollectionABCs.test_Set.<locals>.MySet.__contains__c                 S   r   r  r3   rA   r3   r3   r4   r    r   z2TestCollectionABCs.test_Set.<locals>.MySet.__len__c                 S   r  r?   r  rA   r3   r3   r4   r       z3TestCollectionABCs.test_Set.<locals>.MySet.__iter__Nr1   rN   rO   r   r  r  r3   r3   r3   r4   MySet}  r  rp  )r.   r  r  r   r|   r  r  r  )r2   samplerp  r3   r3   r4   test_Setx  s   zTestCollectionABCs.test_Setc                 C   s8   G dd dt }| | }}| t|t|k d S )Nc                   @   4   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rQ   rR   rX   contentsrA   r3   r3   r4   r     rc  zATestCollectionABCs.test_hash_Set.<locals>.OneTwoThreeSet.__init__c                 S   rg  r?   ru  rm  r3   r3   r4   r     r  zETestCollectionABCs.test_hash_Set.<locals>.OneTwoThreeSet.__contains__c                 S   rd  r?   r_   rv  rA   r3   r3   r4   r    r  z@TestCollectionABCs.test_hash_Set.<locals>.OneTwoThreeSet.__len__c                 S   rd  r?   r   rv  rA   r3   r3   r4   r    r  zATestCollectionABCs.test_hash_Set.<locals>.OneTwoThreeSet.__iter__c                 S   s   |   S r?   )_hashrA   r3   r3   r4   r    rn  zATestCollectionABCs.test_hash_Set.<locals>.OneTwoThreeSet.__hash__N)r1   rN   rO   r   r   r  r  r  r3   r3   r3   r4   OneTwoThreeSet      rz  )r   r|   r  )r2   rz  r,   r-   r3   r3   r4   test_hash_Set  s   z TestCollectionABCs.test_hash_Setc                 C   sL   G dd dt }|d}|d}|d}| || | || d S )Nc                   @   r5  )
z5TestCollectionABCs.test_isdisjoint_Set.<locals>.MySetc                 S   
   || _ d S r?   ru  r2   itrr3   r3   r4   r     r  z>TestCollectionABCs.test_isdisjoint_Set.<locals>.MySet.__init__c                 S   rg  r?   ru  rm  r3   r3   r4   r     r  zBTestCollectionABCs.test_isdisjoint_Set.<locals>.MySet.__contains__c                 S   rd  r?   rx  rA   r3   r3   r4   r    r  z>TestCollectionABCs.test_isdisjoint_Set.<locals>.MySet.__iter__c                 S      t dd | jD S )Nc                 S      g | ]}|qS r3   r3   r  r3   r3   r4   r        zQTestCollectionABCs.test_isdisjoint_Set.<locals>.MySet.__len__.<locals>.<listcomp>rw  rA   r3   r3   r4   r    r  z=TestCollectionABCs.test_isdisjoint_Set.<locals>.MySet.__len__Nr1   rN   rO   r   r   r  r  r3   r3   r3   r4   rp    
    rp  rt  )r   r[      )rQ   r[   r  )r   r|   
isdisjointr{   r2   rp  s1s2s3r3   r3   r4   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                   @   r5  )
z3TestCollectionABCs.test_equality_Set.<locals>.MySetc                 S   r}  r?   ru  r~  r3   r3   r4   r     r  z<TestCollectionABCs.test_equality_Set.<locals>.MySet.__init__c                 S   rg  r?   ru  rm  r3   r3   r4   r     r  z@TestCollectionABCs.test_equality_Set.<locals>.MySet.__contains__c                 S   rd  r?   rx  rA   r3   r3   r4   r    r  z<TestCollectionABCs.test_equality_Set.<locals>.MySet.__iter__c                 S   r  )Nc                 S   r  r3   r3   r  r3   r3   r4   r    r  zOTestCollectionABCs.test_equality_Set.<locals>.MySet.__len__.<locals>.<listcomp>rw  rA   r3   r3   r4   r    r  z;TestCollectionABCs.test_equality_Set.<locals>.MySet.__len__Nr  r3   r3   r3   r4   rp    r  rp  r  r   )rX   r   )r   r|   r{   r9   assertNotEqual)r2   rp  r  r  r  Zs4r3   r3   r4   test_equality_Set  s   	z$TestCollectionABCs.test_equality_Setc                 C   s<   G dd dt }|d}|d}||@ }| ||d d S )Nc                   @   r5  )
z5TestCollectionABCs.test_arithmetic_Set.<locals>.MySetc                 S   r}  r?   ru  r~  r3   r3   r4   r     r  z>TestCollectionABCs.test_arithmetic_Set.<locals>.MySet.__init__c                 S   rg  r?   ru  rm  r3   r3   r4   r     r  zBTestCollectionABCs.test_arithmetic_Set.<locals>.MySet.__contains__c                 S   rd  r?   rx  rA   r3   r3   r4   r    r  z>TestCollectionABCs.test_arithmetic_Set.<locals>.MySet.__iter__c                 S   r  )Nc                 S   r  r3   r3   r  r3   r3   r4   r    r  zQTestCollectionABCs.test_arithmetic_Set.<locals>.MySet.__len__.<locals>.<listcomp>rw  rA   r3   r3   r4   r    r  z=TestCollectionABCs.test_arithmetic_Set.<locals>.MySet.__len__Nr  r3   r3   r3   r4   rp    r  rp  rt  )rX   r   r[   )rX   )r   r9   r  r3   r3   r4   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  r6  rj  )	r  r.   r    r|   r  r  r  r{   r  rA   r3   r3   r4   test_MutableSet  s   z"TestCollectionABCs.test_MutableSetc                 C   s,   t d}|t dM }| t|td d S )NabcdZcdefZcd)ra  r9   r.   r2   rc  r3   r3   r4   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)r2   r^   r3   r3   r4   r     s   z:TestCollectionABCs.test_issue_4920.<locals>.MySet.__init__c                 S   rg  r?   )r  )r2   rp   r3   r3   r4   r     r  z>TestCollectionABCs.test_issue_4920.<locals>.MySet.__contains__c                 S   rd  r?   )r   r  rA   r3   r3   r4   r    r  z:TestCollectionABCs.test_issue_4920.<locals>.MySet.__iter__c                 S   rd  r?   )r_   r  rA   r3   r3   r4   r    r  z9TestCollectionABCs.test_issue_4920.<locals>.MySet.__len__c                 S   s   || j v}| j | |S r?   )r  r6  r2   rp   rV  r3   r3   r4   r6       
z5TestCollectionABCs.test_issue_4920.<locals>.MySet.addc                 S   s   || j v }| j | |S r?   )r  rj  r  r3   r3   r4   rj    r  z9TestCollectionABCs.test_issue_4920.<locals>.MySet.discardc                 S   s   dt t|  S )Nz	MySet(%s))rb   rD   rA   r3   r3   r4   __repr__  rC   z:TestCollectionABCs.test_issue_4920.<locals>.MySet.__repr__r?   )r1   rN   rO   r   r   r   r  r  r6  rj  r  r3   r3   r3   r4   rp    s    
rp  )r[   +   rR   rQ   rQ   )r    r   r9   r_   r   r`   )r2   rp  r^   rc  r^  r3   r3   r4   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   )ra  re   r9   )r2   emptyfullrc  r3   r3   r4   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                   @   r  )z;TestCollectionABCs.test_issue16373.<locals>.MyComparableSetc                 S   r   r   r3   rm  r3   r3   r4   r   
  r   zHTestCollectionABCs.test_issue16373.<locals>.MyComparableSet.__contains__c                 S   r   r  r3   rA   r3   r3   r4   r    r   zCTestCollectionABCs.test_issue16373.<locals>.MyComparableSet.__len__c                 S   r  r?   r  rA   r3   r3   r4   r    rn  zDTestCollectionABCs.test_issue16373.<locals>.MyComparableSet.__iter__Nro  r3   r3   r3   r4   MyComparableSet	  r  r  c                   @   rs  )z>TestCollectionABCs.test_issue16373.<locals>.MyNonComparableSetc                 S   r   r   r3   rm  r3   r3   r4   r     r   zKTestCollectionABCs.test_issue16373.<locals>.MyNonComparableSet.__contains__c                 S   r   r  r3   rA   r3   r3   r4   r    r   zFTestCollectionABCs.test_issue16373.<locals>.MyNonComparableSet.__len__c                 S   r  r?   r  rA   r3   r3   r4   r    rn  zGTestCollectionABCs.test_issue16373.<locals>.MyNonComparableSet.__iter__c                 S      t S r?   NotImplementedrm  r3   r3   r4   r    r   zETestCollectionABCs.test_issue16373.<locals>.MyNonComparableSet.__le__c                 S   r  r?   r  rm  r3   r3   r4   r    r   zETestCollectionABCs.test_issue16373.<locals>.MyNonComparableSet.__lt__N)r1   rN   rO   r   r  r  r  r  r3   r3   r3   r4   MyNonComparableSet  r{  r  )r   r{   r|   )r2   r  r  csZncsr3   r3   r4   test_issue16373  s   z"TestCollectionABCs.test_issue16373c                 C   s   G dd dt }td}tj}||||g}|t||dt||dt||dg}|D ]}|D ]}| || q1q-| |	|d | |	|d | |
|d | |
|d d S )Nc                   @   r  )z:TestCollectionABCs.test_issue26915.<locals>.CustomSequencec                 S   r}  r?   _seqr2   seqr3   r3   r4   r   &  r  zCTestCollectionABCs.test_issue26915.<locals>.CustomSequence.__init__c                 S   
   | j | S r?   r  r2   ro  r3   r3   r4   r   (  r  zFTestCollectionABCs.test_issue26915.<locals>.CustomSequence.__getitem__c                 S   rd  r?   )r_   r  rA   r3   r3   r4   r  *  r  zBTestCollectionABCs.test_issue26915.<locals>.CustomSequence.__len__Nr1   rN   rO   r   r   r  r3   r3   r3   r4   CustomSequence%  r  r  nanr   r   rQ   rR   )r&   r  r   ZNEVER_EQr$   r#   r%   r`   r9   ro  count)r2   r  r  r<   r  Z
containers	containerelemr3   r3   r4   test_issue26915#  s"   z"TestCollectionABCs.test_issue26915c                 C   s   |  t|t| d S r?   )ZassertSetEqualr.   )r2   r  r  r3   r3   r4   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 )Nc                   @   r)   )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)r2   r?  r  r3   r3   r4   r   E  s   zXTestCollectionABCs.test_Set_from_iterable.<locals>.SetUsingInstanceFromIterable.__init__c                 S   s   t | |dS )Nfrom_iterable)rc   )r2   r?  r3   r3   r4   _from_iterableK  rc  z^TestCollectionABCs.test_Set_from_iterable.<locals>.SetUsingInstanceFromIterable._from_iterablec                 S   rg  r?   r  r  r3   r3   r4   r   N  r  z\TestCollectionABCs.test_Set_from_iterable.<locals>.SetUsingInstanceFromIterable.__contains__c                 s   s    | j E d H  d S r?   r  rA   r3   r3   r4   r  Q  s   zXTestCollectionABCs.test_Set_from_iterable.<locals>.SetUsingInstanceFromIterable.__iter__c                 S   rd  r?   )r_   r  rA   r3   r3   r4   r  T  r  zWTestCollectionABCs.test_Set_from_iterable.<locals>.SetUsingInstanceFromIterable.__len__c                 S   ri  r?   )r  r6  r  r3   r3   r4   r6  W  rC   zSTestCollectionABCs.test_Set_from_iterable.<locals>.SetUsingInstanceFromIterable.addc                 S   ri  r?   )r  rj  r  r3   r3   r4   rj  Z  rC   zWTestCollectionABCs.test_Set_from_iterable.<locals>.SetUsingInstanceFromIterable.discardN)
r1   rN   rO   r   r  r   r  r  r6  rj  r3   r3   r3   r4   SetUsingInstanceFromIterableD  s    r  rt  r:   rQ   r  rR   rX   r   >   rQ   rR   rX   r   >   rQ   rR   r   )r    r  r9   r  )r2   r  implactualr3   r3   r4   test_Set_from_iterableB  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 s4w   Y  | t ||k  W d    n	1 sNw   Y  | t ||	k  W d    n	1 shw   Y  | ||k | ||k | ||k | ||k | ||k | ||k | ||k | ||k | ||k | t ||
k W d    n	1 sw   Y  | t ||k W d    n	1 sw   Y  | t ||	k W d    n	1 sw   Y  | ||k | ||k | ||k | ||k | ||k | ||k | ||k | ||k | ||k | t ||
k W d    n	1 sNw   Y  | t ||k W d    n	1 shw   Y  | t ||	k W d    n	1 sw   Y  | ||k | ||k | ||k | ||k | ||k | ||k | ||k | ||k | ||k | t ||
k W d    n	1 sw   Y  | t ||k W d    n	1 sw   Y  | t ||	k W d    n	1 sw   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>.ListSetr3   c                 S   s*   g | _ |D ]}|| j vr| j | qd S r?   )r8   rI   )r2   elementsr  r3   r3   r4   r   }  s   
zUTestCollectionABCs.test_Set_interoperability_with_real_sets.<locals>.ListSet.__init__c                 S   rg  r?   rh  )r2   r  r3   r3   r4   r     r  zYTestCollectionABCs.test_Set_interoperability_with_real_sets.<locals>.ListSet.__contains__c                 S   rd  r?   rf  rA   r3   r3   r4   r    r  zUTestCollectionABCs.test_Set_interoperability_with_real_sets.<locals>.ListSet.__iter__c                 S   rd  r?   re  rA   r3   r3   r4   r    r  zTTestCollectionABCs.test_Set_interoperability_with_real_sets.<locals>.ListSet.__len__c                 S   s   d | jS )Nz	Set({!r}))r0   r8   rA   r3   r3   r4   r    r   zUTestCollectionABCs.test_Set_interoperability_with_real_sets.<locals>.ListSet.__repr__Nrk  )r1   rN   rO   r   r   r  r  r  r3   r3   r3   r4   ListSet|  s    
r  rL   ZbcdZabcdeZabccbaZbcddcbZ
abcdeedcba)r   r.   rD   r  r|   r{   r   r   )r2   r  Zr1Zr2Zr3f1f2Zf3l1l2l3targetZ
fwd_targetZ
rev_targetr3   r3   r4   (test_Set_interoperability_with_real_setsz  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 qGd S )NrQ   r  g        rL   >   rQ   rR   rX   r   rY   e   >   r   abr,   r-   FTr    >      rY   i,  )msg)
r<  r  r  re   r;  maxsizer9   r  r   ry  )r2   Zsetsrc  fsr3   r3   r4   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                   @   r  )z2TestCollectionABCs.test_Mapping.<locals>.MyMappingc                 S   r   r  r3   rA   r3   r3   r4   r  %  r   z:TestCollectionABCs.test_Mapping.<locals>.MyMapping.__len__c                 S   rA  r?   )r  )r2   r   r3   r3   r4   r   '  r   z>TestCollectionABCs.test_Mapping.<locals>.MyMapping.__getitem__c                 S   s   t dS )Nr3   r  rA   r3   r3   r4   r  )  rn  z;TestCollectionABCs.test_Mapping.<locals>.MyMapping.__iter__N)r1   rN   rO   r  r   r  r3   r3   r3   r4   	MyMapping$  r  r  )
rF   r  r!   r|   r  r  r  r   r   r  )r2   rq  r  r3   r3   r4   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__)rF   r  r"   r|   r  r  r2   rq  r3   r3   r4   test_MutableMapping.  s   
z&TestCollectionABCs.test_MutableMappingc                 C   s  t  }d|d< | | t | | t | | 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 )Nr[   redorange   Zblue)r  rX   )r  r[   )r   r  r  r   r#   r?  r   r%   r^   r$   r.   rD   r9   sorted)r2   ZmymaprZ   r3   r3   r4   test_MutableMapping_subclass5  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   r  r   r  r  r   )r   rD   r  r@   r  r&   r|   r  re   
memoryviewr  r  r3   r3   r4   test_SequenceP  s   z TestCollectionABCs.test_Sequencec           
   
      s   G dd dt } fdd}ttfD ]S}|d}ddgttdt|d	  }||}t|d
hB D ]2}||||f tdt|d	 D ]}|||||f tdt|d	 D ]}	||||||	f qWqDq2q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>.SequenceSubclassr3   c                 S   r}  r?   r  r  r3   r3   r4   r   ^  r  zJTestCollectionABCs.test_Sequence_mixins.<locals>.SequenceSubclass.__init__c                 S   r  r?   r  r  r3   r3   r4   r   a  r  zMTestCollectionABCs.test_Sequence_mixins.<locals>.SequenceSubclass.__getitem__c                 S   rd  r?   )r_   r  rA   r3   r3   r4   r  d  r  zITestCollectionABCs.test_Sequence_mixins.<locals>.SequenceSubclass.__len__Nrk  r  r3   r3   r3   r4   SequenceSubclass]  s    
r  c                    s   z| j | }W n& ty-    t |j |  W d    Y d S 1 s%w   Y  Y d S w |j | } ||d| |f  d S )Nz
%r.index%s)ro  r   r   r9   )Zseq1Zseq2Z
index_argsZexpectedr  rA   r3   r4   assert_index_sameh  s   &
zBTestCollectionABCs.test_Sequence_mixins.<locals>.assert_index_sameabracadabraiirX   rZ   )r&   rD   r@   re   r_   r.   )
r2   r  r  tyZ	nativeseqZindexesZseqseqletterrL  stopr3   rA   r4   test_Sequence_mixins\  s$   z'TestCollectionABCs.test_Sequence_mixinsc                 C   s   t tfD ]}| | t | t|t qtttfD ]}| 	| t | 
t|t q| 	tdt | 
ttt | tdd d S )Nr  r   r  )r  r  r  r(   r|   r  r@   rD   r   r  r{   r  r  r  r3   r3   r4   test_ByteString  s   z"TestCollectionABCs.test_ByteStringc              
   C   s   t ttfD ]}| | t | t|t qttt	fD ]}| 
| t | t|t q| ttt | tddddddd d S )Nr   r  r  r   r  r  insert)r   r@   r  r  r'   r{   r  rD   r  r   r  r|   r  r  r3   r3   r4   test_MutableSequence  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?   lstrA   r3   r3   r4   r     r  zXTestCollectionABCs.test_MutableSequence_mixins.<locals>.MutableSequenceSubclass.__init__c                 S   s   || j |< d S r?   r  r2   ro  r  r3   r3   r4   r    rc  z[TestCollectionABCs.test_MutableSequence_mixins.<locals>.MutableSequenceSubclass.__setitem__c                 S   r  r?   r  r  r3   r3   r4   r     r  z[TestCollectionABCs.test_MutableSequence_mixins.<locals>.MutableSequenceSubclass.__getitem__c                 S   rd  r?   )r_   r  rA   r3   r3   r4   r    r  zWTestCollectionABCs.test_MutableSequence_mixins.<locals>.MutableSequenceSubclass.__len__c                 S   s   | j |= d S r?   r  r  r3   r3   r4   r    r   z[TestCollectionABCs.test_MutableSequence_mixins.<locals>.MutableSequenceSubclass.__delitem__c                 S   s   | j || d S r?   )r  r  r  r3   r3   r4   r    s   zVTestCollectionABCs.test_MutableSequence_mixins.<locals>.MutableSequenceSubclass.insertN)	r1   rN   rO   r   r  r   r  r  r  r3   r3   r3   r4   MutableSequenceSubclass  s    r  r   )rQ   rR   rX   r   r[   rX   rQ   r   r   r  r  rT   ZABCD)
r'   rI   extendr9   r_   reverser   removeclearrD   )r2   r  Zmssr^   Zmss2r3   r3   r4   test_MutableSequence_mixins  s2   




z.TestCollectionABCs.test_MutableSequence_mixinsc                 C   s@   |  t G dd dt}W d    d S 1 sw   Y  d S )Nc                   @   s   e Zd ZejejB ZdS )z9TestCollectionABCs.test_illegal_patma_flags.<locals>.BothN)r1   rN   rO   r&   	__flags__r!   __abc_tpflags__r3   r3   r3   r4   Both  s    r  )r   r   r   )r2   r  r3   r3   r4   test_illegal_patma_flags  s   "z+TestCollectionABCs.test_illegal_patma_flagsN)r1   rN   rO   rr  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r3   r3   r3   r4   rl  r  s4    8 #2rl  c                   @   r   )CounterSubclassWithSetItemc                 O   r   r   r   r	   r   r   r3   r3   r4   r     r   z#CounterSubclassWithSetItem.__init__c                 C   s   d| _ t| || d S r   )r   r	   r  )r2   rn   r  r3   r3   r4   r    s   z&CounterSubclassWithSetItem.__setitem__N)r1   rN   rO   r   r  r3   r3   r3   r4   r        r  c                   @   r   )CounterSubclassWithGetc                 O   r   r   r  r   r3   r3   r4   r     r   zCounterSubclassWithGet.__init__c                 C   s   d| _ t| ||S r   )r   r	   ra   )r2   rn   defaultr3   r3   r4   ra     s   zCounterSubclassWithGet.getN)r1   rN   rO   r   ra   r3   r3   r3   r4   r    r  r  c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+S ),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abcabarX   rR   rQ   rW   r  )rX   rR   rQ   ))r,   rX   r   rU   rQ   r-   rZ   r   rU   TFr   z!Counter({'a': 3, 'b': 2, 'c': 1})r[   r   Zaaabbcr,   rm   r!  rq   rs   r   )r,   r-   rm   rq   rs   Zaaaaffffz	Counter()rL   r+   )rU   ZPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbA   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbZcdci+  r   r   ) r	   r9   r  rF   r!   r|   r  r_   sumr?  rD   r  r^   r   ra   rb   most_commonre   r   r  r   r   r   r  r   NotImplementedErrorr  r   r  rv   r   
setdefault)r2   rU   r   r  Zcntr3   r3   r4   rt     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"  rA   r2   r"  rn  rn  r"  rn  Nr3   )r9   rD   r	   r^   r   r   r   rA   r3   r3   r4   	test_init"  s   zTestCounter.test_initc                 C   s"   t dddd}| | d d S )Nr   r[   r   rW      )r	   r9   totalr2   rU   r3   r3   r4   
test_total*  s   zTestCounter.test_totalc                    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,   r[   r   )r^  rR   r  )rm   rQ   Zxyzpdqqdpzyx))r   rR   )r   rR   )rZ   rR   )r   rR   )rm   rR   )r,  rR   zabracadabra simsalabim)r,   r,   r,   r,   r,   r,   r,   r-   r-   r-   r^  r^  rU   rm    rc  rc  r   r   r   r   lZaaabbcdddeefggghhijjjkklZabbcccdeefffhkkllllmmnnoc                 S   s   i | ]\}}||qS r3   r3   )r  r   r  r3   r3   r4   
<dictcomp>A  s    z7TestCounter.test_order_preservation.<locals>.<dictcomp>c                    s    	  fdd| D }|t |kS )Nc                    s   g | ]} | qS r3   r3   )r  r  orderr3   r4   r  D  s    zRTestCounter.test_order_preservation.<locals>.correctly_ordered.<locals>.<listcomp>)r  )r  Z	positionsr
  r3   r4   correctly_orderedB  s   z>TestCounter.test_order_preservation.<locals>.correctly_ordered)r9   rD   r	   r^   r  r#  rF   r  r|   rv   subtract)r2   Zpsqsr  r   r,  r3   r
  r4   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"  rA   r  r  r  r   )r	   rv   r9   rD   r^   r   r   r  r3   r3   r4   test_updateg  s   zTestCounter.test_updatec              	      s   t d  fdd}|  |t |t ttjd D ]#} j|d |tt	| W d    n1 sFw   Y  q(|t
t t  }| || |t  d S )Nz)which witch had which witches wrist watchc                    s*   d| f }  | |  |  d S )Nz
copy: %s
words: %s)r7   r9   )dupr  r2   ry  r3   r4   checky  s   z'TestCounter.test_copying.<locals>.checkrQ   )rr   )r	   r9  r6   rj   re   rf   rg   ZsubTestrh   ri   rk   rb   rv   )r2   r  rr   Zupdate_testr3   r  r4   test_copyingu  s   
zTestCounter.test_copyingc                 C   sX   G dd dt }|d}| }| || | t|t| | t|t| d S )Nc                   @   r   )z1TestCounter.test_copy_subclass.<locals>.MyCounterNr   r3   r3   r3   r4   	MyCounter  r   r  Zslartibartfast)r	   r6   r9   r_   rc   )r2   r  rU   rm   r3   r3   r4   test_copy_subclass  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)r9   r  r	   r  r.   rF   r^   r  r3   r3   r4   test_conversions  s
    zTestCounter.test_conversionsc                 C   s6   t dddd}|D ]}| ||v  | || q	d S )Nr   r  r   rW   )r	   r|   r`   )r2   rU   r  r3   r3   r4   "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 ]q}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 qh| 	dd	 |
 D  q]qd}tdD ]J}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 ] \}}
|||}|
t| t| }| |t|d
 qqd S )Nr   r  r   rW   r   r  r  c                 s       | ]
}|t d dfV  qdS r  r   Nr   r  r  r3   r3   r4   r        z7TestCounter.test_multiset_operations.<locals>.<genexpr>rQ   r  rq   rs   r   c                 s   r  r  r  r  r3   r3   r4   r    r  r   r   r   c                 S   s   t d| | S r  r  r   r3   r3   r4   r        z6TestCounter.test_multiset_operations.<locals>.<lambda>c                 S   s   t d| | S r  r  r   r3   r3   r4   r    r   c                 S   s   t d| |S r  r  r   r3   r3   r4   r    r  c                 S   s   t dt| |S r  )r  minr   r3   r3   r4   r    r  c                 s   s    | ]}|d kV  qdS )r   Nr3   r  r3   r3   r4   r    rv  ZabcdefrY   c                 s   r  r   rR   Nr  r  r3   r3   r4   r    r  c                 s   r  r"  r  r  r3   r3   r4   r    r  )r	   r9   rF   re   rv   __add____sub____or____and__r|   r?  r.   r  r  )r2   rU   r  r   r   r,  Z	counteropZnumberoprV  r   ZsetopZcounter_result
set_resultr3   r3   r4   test_multiset_operations  sB   





z$TestCounter.test_multiset_operationsc                 C   s   d}t dD ]c}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 ]$\}}| }t|}|||}	|||}
| |
|	 | t|
| qDqd S )Nr  r  c                 s   r  r  r  r  r3   r3   r4   r    r  z6TestCounter.test_inplace_operations.<locals>.<genexpr>rQ   r  r   r  c                 s   r  r  r  r  r3   r3   r4   r    r  r  )re   r	   rF   rv   __iadd__r#  __isub__r$  __ior__r%  __iand__r&  r6   idr9   )r2   r  r   r   r,  Z
inplace_opZ
regular_oprU   Zc_idZregular_resultZinplace_resultr3   r3   r4   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   r[   r   r  r0  r,   r-   rU   rm   rq   r   rQ   rR   r  rS   rT   i)r,   r-   rU   rm   rq   rs   r   ir     ir1  )r,   r-   rU   rm   rq   rs   r   r   ZaaabbcdZ	aaaabbccer  r   r"  rA   )r2   r  )rn  r1  )r	   r  r9   rD   r^   r   r   r  r3   r3   r4   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   r[   r   r  r0  r/  )rU   rm   rq   r   r   )r	   r9   rF   r  r3   r3   r4   
test_unary  s   zTestCounter.test_unaryc                 C   s0   t dd d}t|}| d| | d| d S )NrR   r+   z'a': 2z	'b': None)r	   rb   r`   )r2   rU   r^  r3   r3   r4   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  r[   rR   rQ   )r,   r^  r-   rU   rm   r  )r,   r-   rU   rm   r^  )	rD   rF   r   r9   r
   r  r|   r   r  )r2   Zelemsrm   r   rU   r3   r3   r4   test_helper_function  s   


 z TestCounter.test_helper_functionc                    sN  t tdtd t fddtt d D }dd |D }t|ddD ]|\}}t| }t| }| t|| ||B  | t|| ||  | t||B ||B  | t||@ ||@  | ||k||k | ||k||k | ||k||k | ||k||k | ||k ||k  | ||k||k q(d S )	NrW   rR   c                 3   s    | ]}t  |V  qd S r?   )r   )r  r^  rc  r3   r4   r  	  s    zTTestCounter.test_multiset_operations_equivalent_to_set_operations.<locals>.<genexpr>rQ   c                 S   s   g | ]}t t|qS r3   )r	   rF   )r  groupsr3   r3   r4   r  	  s    zUTestCounter.test_multiset_operations_equivalent_to_set_operations.<locals>.<listcomp>)repeat)	rD   r   re   r   r  r_   r.   r  r9   )r2   ZpowersetZcountersZcpZcqspsqr3   r6  r4   5test_multiset_operations_equivalent_to_set_operations	  s"   $zATestCounter.test_multiset_operations_equivalent_to_set_operationsc                 C   s6   |  tddddtd | tdddtd d S NrX   rR   r   rW   ababar+   Zbabab)r9   r	   r  rA   r3   r3   r4   test_eq&	  s   zTestCounter.test_eqc                 C   s:   |  tddddtdk | tdddtdk d S r<  r|   r	   r{   rA   r3   r3   r4   test_le*	  s   zTestCounter.test_lec                 C   s<   |  tddddtdk  | tddddtdk  d S )NrX   rQ   r   rW   r=  rR   r?  rA   r3   r3   r4   test_lt.	      zTestCounter.test_ltc                 C   s<   |  tddddtdk | tddddtdk d S )NrR   rQ   r   rW   aabrX   Zaabdr?  rA   r3   r3   r4   test_ge2	  rB  zTestCounter.test_gec                 C   s<   |  tddddtdk | tddddtdk d S )NrX   rR   r   rW   rC  rQ   r?  rA   r3   r3   r4   test_gt6	  rB  zTestCounter.test_gtN)r1   rN   rO   rt   r  r  r   r  r  r  r  r  r(  r.  r2  r3  r4  r5  r;  r>  r@  rA  rD  rE  r3   r3   r3   r4   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  rl  r  rP   r*   r   Zrun_unittestZrun_doctest)r8  ZNamedTupleDocsZtest_classesr3   r3   r4   	test_main?	  s   
rG  __main__T)r8  r?   )Dr  r6   rF  r  rJ  rf   randomr   r   	itertoolsr   r   r   r  r;  r:   r   r  r  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*   rP   r   r   r  r  r  ra  rl  r  r  r  rG  r1   r3   r3   r3   r4   <module>   sp    0 
e   ;    d    d		  
]

