a
    ze                     @   s   d dl Z d dlZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	m
Z
 G dd dejZG dd dejZd dl	mZ G dd	 d	ejZG d
d deZG dd dejZedkre  dS )    N)supportc                   @   s  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Z d=d> Z!d?d@ Z"dAdB Z#dCdD Z$dEdF Z%dGdH Z&dIdJ Z'dKdL Z(dMdN Z)dOdP Z*dQdR Z+dSdT Z,dUdV Z-dWdX Z.dYdZ Z/d[d\ Z0d]d^ Z1e2j3d_d` Z4e2j3dadb Z5e2j3dcdd Z6dedf Z7e2j3dgdh Z8e2j3didj Z9e2j3dkdl Z:e2j3dmdn Z;e2j3dodp Z<e2j3dqdr Z=dsdt Z>dudv Z?dwdx Z@dydz ZAd{d| ZBd}d~ ZCdd ZDdd ZEdd ZFdd ZGdd ZHdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNdd ZOdd ZPdd ZQdd ZRdd ZSdd ZTe2j3dd ZUe2j3dd ZVdS )DictTestc              	   C   s   G dd dt }ddi|ddifD ]v}| t t f i | W d    n1 sV0    Y  | t  i jf i | W d    q$1 s0    Y  q$d S )Nc                   @   s   e Zd ZdS )z7DictTest.test_invalid_keyword_arguments.<locals>.CustomN__name__
__module____qualname__ r   r   $/usr/lib/python3.9/test/test_dict.pyCustom   s   r
         )dictassertRaises	TypeErrorupdate)selfr
   invalidr   r   r	   test_invalid_keyword_arguments   s    ,z'DictTest.test_invalid_keyword_argumentsc                 C   s    |  t i  | t i  d S N)assertEqualr   assertIsNotr   r   r   r	   test_constructor   s    zDictTest.test_constructorc                 C   s^   dD ]T}dd t |D }t| dd |D }dd| d }| t|t| qd S )	N)r   r         i  c                 S   s$   g | ]}d  ttjd|fqS )    )joinrandomsamplestringascii_letters.0ir   r   r	   
<listcomp>!   s   z5DictTest.test_literal_constructor.<locals>.<listcomp>c                 s   s   | ]\}}d  ||V  qdS )z
{!r}: {:d}N)format)r#   kvr   r   r	   	<genexpr>$       z4DictTest.test_literal_constructor.<locals>.<genexpr>{z, })ranger   shuffler   r   evalr   )r   nitemsZformatted_itemsZdictliteralr   r   r	   test_literal_constructor   s    
z!DictTest.test_literal_constructorc                 C   sb  dddd}dddd}|  }||O }| ||B ddddd | |ddddd |  }||O }| ||B ddddd | |ddddd |  }|g d	O }| |ddddd | |d t | |d
t | |dt | |dt | t|jd  | |d
dddd | t|jd | |ddddd d S )Nr   r   )r   r   r   r      r   r   r3   )r   r   r   r3   )r   r   r3   r   )r   r   r   r   r3   r3   r   ZBADr   )	copyr   assertIs__or__NotImplementedr   r   __ior__
ValueError)r   abcr   r   r	   test_merge_operator(   s*    zDictTest.test_merge_operatorc                 C   sD   |  i  d | ddi |  ti d |  tddid d S )NTr   r   F)r9   
assertTrueboolr   r   r   r	   	test_boolH   s    zDictTest.test_boolc                 C   s   i }|  t| t  ddd}| }|  t|ddh | d| | d| | d| | d| | t|jd  |  ttdd d d S )Nr   r   r>   r?   r>   r?   r>   zdict_keys(['a']))r   setkeysassertInr   r   reprr   )r   dr'   r   r   r	   	test_keysN   s    
zDictTest.test_keysc                 C   sf   i }|  t| t  ddi}|  t| dh | t|jd  |  ttdd d d S )Nr   r   rF   zdict_values([1]))r   rG   valuesr   r   rJ   r   r   rK   r   r   r	   test_values[   s    zDictTest.test_valuesc                 C   sf   i }|  t| t  ddi}|  t| dh | t|jd  |  ttdd d d S )Nr   r   r   r   rF   zdict_items([('a', 1)]))r   rG   r1   r   r   rJ   r   rN   r   r   r	   
test_itemsc   s    zDictTest.test_itemsc                 C   sl   i }|  d| | d|v  | d|v ddd}| d| | d| |  d| | t|j d S )Nr>   r   r   rE   r?   r@   )assertNotInassertFalserB   rI   r   r   __contains__rN   r   r   r	   test_containsl   s    
zDictTest.test_containsc                 C   s2   i }|  t|d ddd}|  t|d d S )Nr   r   r   rE   )r   lenrN   r   r   r	   test_lenx   s    
zDictTest.test_lenc                    s   ddd}|  |d d |  |d d d|d< d|d< |  |d d |  |d d |d= |  |ddd	 | t|j G  fd
ddt}i }d|| < | t|jd G dd dt G  fdddt}| }d||< d|_|  |j| d S )Nr   r   rE   r>   r?   r3   r@      )r>   r@   c                       s    e Zd Z fddZdd ZdS )z$DictTest.test_getitem.<locals>.BadEqc                    s
     d S r   r   r   otherExcr   r	   __eq__   s    z+DictTest.test_getitem.<locals>.BadEq.__eq__c                 S   s   dS )N   r   r   r   r   r	   __hash__   s    z-DictTest.test_getitem.<locals>.BadEq.__hash__Nr   r   r   r]   r_   r   r[   r   r	   BadEq   s   ra   *      c                   @   s   e Zd ZdS )z"DictTest.test_getitem.<locals>.ExcNr   r   r   r   r	   r\      r*   r\   c                       s   e Zd ZdZ fddZdS )z&DictTest.test_getitem.<locals>.BadHashFc                    s   | j r  ndS d S Nrb   failr   r[   r   r	   r_      s    z/DictTest.test_getitem.<locals>.BadHash.__hash__Nr   r   r   rf   r_   r   r[   r   r	   BadHash   s   rh   T)r   r   r   __getitem__objectKeyError	Exceptionrf   )r   rK   ra   rh   xr   r[   r	   test_getitem~   s(    

zDictTest.test_getitemc                 C   s4   dddd}|   | |i  | t|j d  d S Nr   r   r3   r4   )clearr   r   r   rN   r   r   r	   
test_clear   s    zDictTest.test_clearc                    sl  i }| ddi | ddi | dddd | |dddd |   | |dddd | ttf|j d  G dd d}|  | |  | |dddd G d	d
 d
t |  G  fddd}|  |j |  G  fddd}|  |j |  G  fddd}|  |j |  G  fdddt}|  i j |  | ti j dg d S )Nr   d   r      r3   r4   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )z,DictTest.test_update.<locals>.SimpleUserDictc                 S   s   dddd| _ d S ro   rK   r   r   r   r	   __init__   s    z5DictTest.test_update.<locals>.SimpleUserDict.__init__c                 S   s
   | j  S r   )rK   rH   r   r   r   r	   rH      s    z1DictTest.test_update.<locals>.SimpleUserDict.keysc                 S   s
   | j | S r   rt   )r   r$   r   r   r	   ri      s    z8DictTest.test_update.<locals>.SimpleUserDict.__getitem__N)r   r   r   ru   rH   ri   r   r   r   r	   SimpleUserDict   s   rv   c                   @   s   e Zd ZdS )z!DictTest.test_update.<locals>.ExcNr   r   r   r   r	   r\      r*   r\   c                       s   e Zd Z fddZdS )-DictTest.test_update.<locals>.FailingUserDictc                    s    d S r   r   r   r[   r   r	   rH      s    2DictTest.test_update.<locals>.FailingUserDict.keysN)r   r   r   rH   r   r[   r   r	   FailingUserDict   s   ry   c                       s    e Zd Z fddZdd ZdS )rw   c                    s   G  fddd}| S )Nc                       s(   e Zd Zdd Zdd Z fddZdS )EDictTest.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIterc                 S   s
   d| _ d S Nr   r$   r   r   r   r	   ru      s    NDictTest.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIter.__init__c                 S   s   | S r   r   r   r   r   r	   __iter__   s    NDictTest.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIter.__iter__c                    s   | j rd| _ dS  d S )Nr   r>   r|   r   r[   r   r	   __next__   s    NDictTest.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIter.__next__Nr   r   r   ru   r~   r   r   r[   r   r	   	BogonIter   s   r   r   r   r   r[   r   r	   rH      s    
rx   c                 S   s   |S r   r   r   keyr   r   r	   ri      s    9DictTest.test_update.<locals>.FailingUserDict.__getitem__Nr   r   r   rH   ri   r   r[   r   r	   ry      s   c                       s    e Zd Zdd Z fddZdS )rw   c                 S   s   G dd d}| S )Nc                   @   s$   e Zd Zdd Zdd Zdd ZdS )rz   c                 S   s   t d| _d S )Nr>   )ordr$   r   r   r   r	   ru      s    r}   c                 S   s   | S r   r   r   r   r   r	   r~      s    r   c                 S   s2   | j tdkr*t| j }|  j d7  _ |S td S )Nzr   )r$   r   chrStopIteration)r   Zrtnr   r   r	   r      s
    
r   Nr   r   r   r   r	   r      s   r   r   r   r   r   r	   rH      s    rx   c                    s    d S r   r   r   r[   r   r	   ri      s    r   Nr   r   r[   r   r	   ry      s   c                       s    e Zd Zdd Z fddZdS )z$DictTest.test_update.<locals>.badseqc                 S   s   | S r   r   r   r   r   r	   r~      s    z-DictTest.test_update.<locals>.badseq.__iter__c                    s
     d S r   r   r   r[   r   r	   r      s    z-DictTest.test_update.<locals>.badseq.__next__Nr   r   r   r~   r   r   r[   r   r	   badseq   s   r   )	r   r   r   r   AttributeErrorrp   rl   rj   r=   )r   rK   rv   ry   r   r   r[   r	   test_update   s.    zDictTest.test_updatec           
         sj  |  tdd d d d i | d |  dd d d d |  ddddd |  g i  dd }|  | dd i | ti jd G d	d
 d
t}|  |ddd i |  | ddd i | |d| | | d| G dd dt}|d}|  |d d d | |tj | ttj G dd dt	 G  fdddt}|  |jdg G  fdddt
}|  tj|  G  fdddt}|  |jdg tttdtd|  tdtttddgd  G fdddt}dd tdD  }	|	jd d d d |  |h d|	 d S )Nabc)r>   r?   r@   )rX      r   c                   s   s
   dV  d S r{   r   r   r   r   r	   g   s    z!DictTest.test_fromkeys.<locals>.gr   r3   c                   @   s   e Zd ZdS )z(DictTest.test_fromkeys.<locals>.dictlikeNr   r   r   r   r	   dictlike  r*   r   r>   c                   @   s   e Zd Zdd ZdS )z&DictTest.test_fromkeys.<locals>.mydictc                 S   s   t  S r   )collectionsUserDictclsr   r   r	   __new__  s    z.DictTest.test_fromkeys.<locals>.mydict.__new__Nr   r   r   r   r   r   r   r	   mydict  s   r   abrE   c                   @   s   e Zd ZdS )z#DictTest.test_fromkeys.<locals>.ExcNr   r   r   r   r	   r\     r*   r\   c                       s   e Zd Z fddZdS )z(DictTest.test_fromkeys.<locals>.baddict1c                    s
     d S r   r   r   r[   r   r	   ru     s    z1DictTest.test_fromkeys.<locals>.baddict1.__init__Nr   r   r   ru   r   r[   r   r	   baddict1  s   r   c                       s    e Zd Zdd Z fddZdS )z&DictTest.test_fromkeys.<locals>.BadSeqc                 S   s   | S r   r   r   r   r   r	   r~     s    z/DictTest.test_fromkeys.<locals>.BadSeq.__iter__c                    s
     d S r   r   r   r[   r   r	   r     s    z/DictTest.test_fromkeys.<locals>.BadSeq.__next__Nr   r   r[   r   r	   BadSeq  s   r   c                       s   e Zd Z fddZdS )z(DictTest.test_fromkeys.<locals>.baddict2c                    s
     d S r   r   )r   r   valuer[   r   r	   __setitem__   s    z4DictTest.test_fromkeys.<locals>.baddict2.__setitem__N)r   r   r   r   r   r[   r   r	   baddict2  s   r   r   c                       s   e Zd Z fddZdS )z(DictTest.test_fromkeys.<locals>.baddict3c                    s    S r   r   r   rt   r   r	   r   *  s    z0DictTest.test_fromkeys.<locals>.baddict3.__new__Nr   r   rt   r   r	   baddict3)  s   r   c                 S   s   i | ]
}||qS r   r   r"   r   r   r	   
<dictcomp>,  r*   z*DictTest.test_fromkeys.<locals>.<dictcomp>
   >   r@   r>   r?   )r   r   fromkeysr   r   r   assertIsInstancer   r   rl   rj   zipr-   r8   r   )
r   r   r   r   Zudr   r   r   r   resr   )r\   rK   r	   test_fromkeys   sB    
(zDictTest.test_fromkeysc                 C   s   dddd}|  | | | | | | | dddd | }d|d< | || | i  i  | t|jd  d S )Nr   r   r3   r4   rX   )r   r8   r   assertNotEqualr   r   )r   rK   r8   r   r   r	   	test_copy1  s    zDictTest.test_copyc              	   C   s   dD ]}t |d ||d  }| j|dv i }t|D ]}|||< q:| }| || | || d|d< | || | t|t|d  W d    q1 s0    Y  qd S )N)r   rr     i'  i r   )	dict_sizer   r   r   )	r   	randrangeZsubTestr-   r8   r   r   r   rV   )r   r   rK   r$   d2r   r   r	   test_copy_fuzz>  s    
zDictTest.test_copy_fuzzc                 C   sP   G dd d}| }i ddi|difD ]$}|  }| t|t| q&d S )Nc                   @   s   e Zd ZdS )z0DictTest.test_copy_maintains_tracking.<locals>.ANr   r   r   r   r	   AO  s   r   r>   r   val)r8   r   gc
is_tracked)r   r   r   rK   r   r   r   r	   test_copy_maintains_trackingN  s
    z%DictTest.test_copy_maintains_trackingc                 C   s>   dd t dD }t dD ]
}||= q| }| || d S )Nc                 S   s   i | ]
}||qS r   r   r#   r'   r   r   r	   r   _  r*   z1DictTest.test_copy_noncompact.<locals>.<dictcomp>r   i  )r-   r8   r   )r   rK   r'   r   r   r   r	   test_copy_noncompactX  s
    zDictTest.test_copy_noncompactc                 C   s   i }|  |dd  | |ddd ddd}|  |dd  | |ddd | |dd | |ddd | t|j | t|jd d d  d S )Nr@   r3   r   r   rE   r>   )r9   getr   r   r   rN   r   r   r	   test_gete  s    
zDictTest.test_getc                    s   i }|  |dd  |dg  |  |dd  |dg d | |d d d |dg d | t|d d | t|j G dd dt G  fd	d
d
t}| }d||< d|_	|  |j|g  d S )NZkey0r   r3   r   rX   r   c                   @   s   e Zd ZdS )z%DictTest.test_setdefault.<locals>.ExcNr   r   r   r   r	   r\   }  r*   r\   c                       s   e Zd ZdZ fddZdS )z)DictTest.test_setdefault.<locals>.BadHashFc                    s   | j r  ndS d S rd   re   r   r[   r   r	   r_     s    z2DictTest.test_setdefault.<locals>.BadHash.__hash__Nrg   r   r[   r   r	   rh     s   rh   rb   T)
r9   
setdefaultappendr   rV   r   r   rl   rj   rf   )r   rK   rh   rm   r   r[   r	   test_setdefaultq  s    zDictTest.test_setdefaultc                 C   sd   G dd dt }| }|di}| }||g  | |jd | |jd | |j|j d d S )Nc                   @   s$   e Zd Zdd Zdd Zdd ZdS )z/DictTest.test_setdefault_atomic.<locals>.Hashedc                 S   s   d| _ d| _d S Nr   
hash_counteq_countr   r   r   r	   ru     s    z8DictTest.test_setdefault_atomic.<locals>.Hashed.__init__c                 S   s   |  j d7  _ dS Nr   rb   r   r   r   r   r	   r_     s    z8DictTest.test_setdefault_atomic.<locals>.Hashed.__hash__c                 S   s   |  j d7  _ t| t|kS r{   r   idrY   r   r   r	   r]     s    z6DictTest.test_setdefault_atomic.<locals>.Hashed.__eq__Nr   r   r   ru   r_   r]   r   r   r   r	   Hashed  s   r   r   r   )rj   r   r   r   r   r   r   Zhashed1yZhashed2r   r   r	   test_setdefault_atomic  s    
zDictTest.test_setdefault_atomicc              
   C   sp   G dd dt }| }|dddddddddi}| }g ||< | |jd | |jd | |j|j d d S )Nc                   @   s$   e Zd Zdd Zdd Zdd ZdS )z6DictTest.test_setitem_atomic_at_resize.<locals>.Hashedc                 S   s   d| _ d| _d S r   r   r   r   r   r	   ru     s    z?DictTest.test_setitem_atomic_at_resize.<locals>.Hashed.__init__c                 S   s   |  j d7  _ dS r   r   r   r   r   r	   r_     s    z?DictTest.test_setitem_atomic_at_resize.<locals>.Hashed.__hash__c                 S   s   |  j d7  _ t| t|kS r{   r   rY   r   r   r	   r]     s    z=DictTest.test_setitem_atomic_at_resize.<locals>.Hashed.__eq__Nr   r   r   r   r	   r     s   r   r   r   r   r   r3   )rj   r   r   r   r   r   r   r	   test_setitem_atomic_at_resize  s    
z&DictTest.test_setitem_atomic_at_resizec                 C   s   dD ]}t dD ]}d| }i }i }t |D ]$}||t|< |dk r,||t|< q,|dkrb| }t |D ]Z}|  \}}}	| |t| |  \}
}}| |t|
 | |dk o|	|k qj| | | | qqi }| t|j d S )N)r      r   r   )	r-   rJ   r8   popitemr   intrS   r   rk   )r   copymodeZlog2sizesizer>   r?   r$   kavataZkbZvbtbrK   r   r   r	   test_popitem  s*    
zDictTest.test_popitemc                    s   i }d\}}|||< |  t|jd | ||| | t|d |  t|j| | |||| |||< | ||d| |  t|j G dd dt G  fdddt}| }d	||< d
|_|   |j| d S )N)r   defZghir   r   c                   @   s   e Zd ZdS )zDictTest.test_pop.<locals>.ExcNr   r   r   r   r	   r\     r*   r\   c                       s   e Zd ZdZ fddZdS )z"DictTest.test_pop.<locals>.BadHashFc                    s   | j r  ndS d S rd   re   r   r[   r   r	   r_     s    z+DictTest.test_pop.<locals>.BadHash.__hash__Nrg   r   r[   r   r	   rh     s   rh   rb   T)	r   rk   popr   rV   r   rl   rj   rf   )r   rK   r'   r(   rh   rm   r   r[   r	   test_pop  s"    zDictTest.test_popc                 C   sP   i }d|d< |  t& |D ]}d||d < qW d    n1 sB0    Y  d S r{   r   RuntimeErrorr   rK   r$   r   r   r	   test_mutating_iteration  s
    z DictTest.test_mutating_iterationc                 C   sR   i }d|d< |  t( |D ]}|d= d|d< qW d    n1 sD0    Y  d S r   r   r   r   r   r	   test_mutating_iteration_delete  s    z'DictTest.test_mutating_iteration_deletec                 C   sV   i }d|d< |  t, | D ]}|d= d|d< q W d    n1 sH0    Y  d S r   )r   r   rM   r   r   r   r	   *test_mutating_iteration_delete_over_values  s    z3DictTest.test_mutating_iteration_delete_over_valuesc                 C   sV   i }d|d< |  t, | D ]}|d= d|d< q W d    n1 sH0    Y  d S r   r   r   r1   r   r   r   r	   )test_mutating_iteration_delete_over_items  s    z2DictTest.test_mutating_iteration_delete_over_itemsc                    sP   G  fddd  d} d}|di}||f _ d||< | ||di d S )Nc                       s,   e Zd ZdZdd Zdd Z fddZdS )z/DictTest.test_mutating_lookup.<locals>.NastyKeyNc                 S   s
   || _ d S r   )r   )r   r   r   r   r	   ru     s    z8DictTest.test_mutating_lookup.<locals>.NastyKey.__init__c                 S   s   dS r{   r   r   r   r   r	   r_     s    z8DictTest.test_mutating_lookup.<locals>.NastyKey.__hash__c                    s(    j r j \}}d  _ ||= | j|jkS r   )mutate_dictr   )r   rZ   r   r   NastyKeyr   r	   r]      s
    
z6DictTest.test_mutating_lookup.<locals>.NastyKey.__eq__)r   r   r   r   ru   r_   r]   r   r   r   r	   r     s   r   r   r   )r   r   )r   Zkey1Zkey2rK   r   r   r	   test_mutating_lookup  s    
zDictTest.test_mutating_lookupc                    s   i }|  t|d d|d< |  t|d i }||d< |  t|d G dd dt G  fdd	d	t}d| i}|  t| d S )
Nz{}r   r   z{1: 2}z
{1: {...}}c                   @   s   e Zd ZdS )zDictTest.test_repr.<locals>.ExcNr   r   r   r   r	   r\   7  r*   r\   c                       s   e Zd Z fddZdS )z#DictTest.test_repr.<locals>.BadReprc                    s
     d S r   r   r   r[   r   r	   __repr__:  s    z,DictTest.test_repr.<locals>.BadRepr.__repr__N)r   r   r   r   r   r[   r   r	   BadRepr9  s   r   )r   rJ   rl   rj   r   )r   rK   r   r   r[   r	   	test_repr.  s    
zDictTest.test_reprc                 C   s4   i }t t d D ]}d|i}q| tt| d S )Nrr   r   )r-   sysgetrecursionlimitr   RecursionErrorrJ   r   r   r   r	   test_repr_deep@  s    
zDictTest.test_repr_deepc                    s   |  i i  |  ddiddi G dd dt G  fdddt}| di}ddi}|   ||k W d    n1 s~0    Y  d S )Nr   r   c                   @   s   e Zd ZdS )zDictTest.test_eq.<locals>.ExcNr   r   r   r   r	   r\   J  r*   r\   c                       s    e Zd Z fddZdd ZdS )z DictTest.test_eq.<locals>.BadCmpc                    s
     d S r   r   rY   r[   r   r	   r]   M  s    z'DictTest.test_eq.<locals>.BadCmp.__eq__c                 S   s   dS r{   r   r   r   r   r	   r_   O  s    z)DictTest.test_eq.<locals>.BadCmp.__hash__Nr`   r   r[   r   r	   BadCmpL  s   r   )r   rl   rj   r   )r   r   d1r   r   r[   r	   test_eqF  s    
zDictTest.test_eqc                 C   s    |  dd  |  dd  d S )Nc                 S   s   |   S r   )rH   rm   r   r   r	   <lambda>Y  r*   z.DictTest.test_keys_contained.<locals>.<lambda>c                 S   s   |   S r   r1   r   r   r   r	   r   Z  r*   )helper_keys_containedr   r   r   r	   test_keys_containedX  s    zDictTest.test_keys_containedc                 C   s  |t  }|t  }|ddd}|dddd}|dddd}|dddd}| ||k  | ||k | ||k | ||k | ||k | ||k | ||k | ||k  | ||k  | ||k | ||k | ||k | ||k | ||k | ||k | ||k  | ||k | ||k | ||k | ||k | ||k | ||k | ||k | ||k d S )Nr   r   rP   r3   r4   )rX   r   r3   )r   rB   rS   )r   fnemptyZempty2ZsmallerZlargerZlarger2Zlarger3r   r   r	   r   \  s<    

zDictTest.helper_keys_containedc                 C   s  G dd d}d| i}d| i}|  t  | | k W d    n1 sR0    Y  |  t  | | k W d    n1 s0    Y  |  t  | | k W d    n1 s0    Y  |  t  | | k W d    n1 s0    Y  | | d}|  t  | | k  W d    n1 sL0    Y  |  t  | | k W d    n1 s0    Y  d S )Nc                   @   s   e Zd Zdd ZdS )z9DictTest.test_errors_in_view_containment_check.<locals>.Cc                 S   s   t d S r   r   rY   r   r   r	   r]     s    z@DictTest.test_errors_in_view_containment_check.<locals>.C.__eq__Nr   r   r   r]   r   r   r   r	   C  s   r   r   rP   r   )r   r   r   r   Zd3r   r   r	   %test_errors_in_view_containment_check  s     

...00z.DictTest.test_errors_in_view_containment_checkc                 C   s   ddd  }dddd  }ddi  }| || t  | || ddh | || dh | || dh | ||@ ddh | ||@ t  | ||B h d | ||A dh | ||A h d d S )	Nr   r   rP   r3   r4   rX   >   r   r   r3   >   r   r   rX   )rH   r   rG   r   k1k2Zk3r   r   r	   $test_dictview_set_operations_on_keys  s    z-DictTest.test_dictview_set_operations_on_keysc                 C   s   ddd  }dddd  }ddi  }| || t  | || ddh | || d	h | || d
h | ||@ ddh | ||@ t  | ||B h d | ||A d	h | ||A h d d S )Nr   r   rP   r3   r4   rX   r5   r6   r7   rX   rX   >   r5   r7   r6   >   r   r5   r6   )r1   r   rG   r   r   r   r	   %test_dictview_set_operations_on_items  s    z.DictTest.test_dictview_set_operations_on_itemsc                 C   s   |  ddi dhk |  dhddi k | ddi dhB ddh | dhddi B ddh |  ddi dhk |  dhddi k | ddi dhB ddh | dhddi B ddh d S )Nr   r   r5   )rB   rH   r   r1   r   r   r   r	   "test_dictview_mixed_set_operations  s    z+DictTest.test_dictview_mixed_set_operationsc           
      C   s  |  ttd |  ti d G dd dt}|ddd}| |d d | |d d | d| | d|  | |d d	 G d
d dt}| }| t}|d	  W d    n1 s0    Y  | |jj	d G dd dt}| }| t
}|d	  W d    n1 s"0    Y  | |jj	d G dd dt}| }	| t
}|	d	  W d    n1 s|0    Y  | |jj	d d S )N__missing__c                   @   s   e Zd Zdd ZdS )z DictTest.test_missing.<locals>.Dc                 S   s   dS rd   r   r   r   r   r	   r    s    z,DictTest.test_missing.<locals>.D.__missing__Nr   r   r   r  r   r   r   r	   D  s   r  r   rX   )r   r3   r   r3   rb   c                   @   s   e Zd Zdd ZdS )z DictTest.test_missing.<locals>.Ec                 S   s   t |d S r   r   r   r   r   r	   r    s    z,DictTest.test_missing.<locals>.E.__missing__Nr  r   r   r   r	   E  s   r  )rb   c                   @   s   e Zd Zdd ZdS )z DictTest.test_missing.<locals>.Fc                 S   s   dd | _ d S )Nc                 S   s   d S r   r   )r   r   r   r	   r     r*   z;DictTest.test_missing.<locals>.F.__init__.<locals>.<lambda>)r  r   r   r   r	   ru     s    z)DictTest.test_missing.<locals>.F.__init__Nr   r   r   r   r	   F  s   r  c                   @   s   e Zd ZdS )z DictTest.test_missing.<locals>.GNr   r   r   r   r	   G  s   r  )rS   hasattrr   r   rR   rH   r   r   	exceptionargsrk   )
r   r  rK   r  er@   r  fr  r   r   r   r	   test_missing  s0    &((zDictTest.test_missingc                 C   sJ   i }|  t}|d  W d    n1 s,0    Y  | |jjd d S )Nr   )r  )r   rk   r   r	  r
  )r   rK   r@   r   r   r	   test_tuple_keyerror  s    &zDictTest.test_tuple_keyerrorc              	      s~   G dd dt  G  fddd}i }| }| }d||< dD ]:}|   t|t  W d    q>1 sn0    Y  q>d S )Nc                   @   s   e Zd ZdS )z.DictTest.test_bad_key.<locals>.CustomExceptionNr   r   r   r   r	   CustomException  s   r  c                       s    e Zd Zdd Z fddZdS )z)DictTest.test_bad_key.<locals>.BadDictKeyc                 S   s
   t | jS r   )hash	__class__r   r   r   r	   r_      s    z2DictTest.test_bad_key.<locals>.BadDictKey.__hash__c                    s   t || jr |S r   )
isinstancer  rY   r  r   r	   r]     s    z0DictTest.test_bad_key.<locals>.BadDictKey.__eq__Nr   r   r   r_   r]   r   r  r   r	   
BadDictKey  s   r  r   )z	d[x2] = 2z	z = d[x2]zx2 in dz	d.get(x2)zd.setdefault(x2, 42)z	d.pop(x2)zd.update({x2: 2}))rl   r   execlocals)r   r  rK   Zx1Zx2Zstmtr   r  r	   test_bad_key  s    	zDictTest.test_bad_keyc                 C   sJ   i }t dD ]}|||< qt dD ]
}||= q"t ddD ]}|||< q8d S )Nr   	   )r-   r   r   r   r	   test_resize1  s    
zDictTest.test_resize1c                    s`   G  fdddt }i  dd | < d | < d | < d | < d | < d	d
 d< d S )Nc                       s"   e Zd Zdd Z fddZdS )z DictTest.test_resize2.<locals>.Xc                 S   s   dS )Nr   r   r   r   r   r	   r_   +  s    z)DictTest.test_resize2.<locals>.X.__hash__c                    s   r    dS NFrp   rY   rK   Zresizingr   r	   r]   -  s    z'DictTest.test_resize2.<locals>.X.__eq__Nr  r   r  r   r	   X*  s   r  Fr   r   r3   rX   r   Tr   r  )rj   r   r  r   r  r	   test_resize2&  s    




zDictTest.test_resize2c              
   C   sL   |  t* dd d d d d d d d d}W d    n1 s:0    Y  i }d S )Nr   r   )r>   r?   r@   rK   r  r  r   h)r   ZeroDivisionErrorrN   r   r   r	   $test_empty_presized_dict_in_freelist<  s
    $z-DictTest.test_empty_presized_dict_in_freelistc                 C   sx   G dd dt }tjtjtjf}|D ]N}| }t|}|di}|||_t|j|_	~~t
  | | d d q$d S )Nc                   @   s   e Zd ZdS )z+DictTest.test_container_iterator.<locals>.CNr   r   r   r   r	   r   G  s   r   r   zCycle was not collected)rj   r   r1   rM   rH   weakrefrefr(   iterrm   r   collectr9   )r   r   Zviewsr(   objr&  	containerr   r   r	   test_container_iteratorD  s    

z DictTest.test_container_iteratorc                 C   s&   t   t   | t || d S r   )r   r(  rS   r   r   tr   r   r	   _not_trackedT  s    zDictTest._not_trackedc                 C   s8   |  t|| t  t  |  t|| d S r   )rB   r   r   r(  r,  r   r   r	   _trackedZ  s    zDictTest._trackedc                 C   s   dddg f\}}}}|  i  |  |d|||di |  ddd |  dtd |  dt i | dg i | dg fi | di i | dt i d S )	N      ?r>   )r   Nr   r   r   )r   r?   )r   )NTFr   )r.  r   rj   r/  rG   )r   rm   r   r   wr   r   r	   test_track_literals`  s    
zDictTest.test_track_literalsc           	      C   sV  G dd dt }dddt  fg | f\}}}}}t }| | d|d< | | d||< | | d||< | | | |  ||d< | | | |  d |d< | | | |  t }t }||d< | | | | ||d< | | t|||g}| | t }|| | | t||||g}| | t }|| | | t|||d	}| | t||||d
}| | t }|j|||d	 | | |j|d | | t||f|dfg}| | t||f||fg}| | t }|||f|dfg | | |||f||fg | | d S )Nc                   @   s   e Zd ZdS )z-DictTest.test_track_dynamic.<locals>.MyObjectNr   r   r   r   r	   MyObjectu  s   r3  r0  r>   r   r   r3   rX   rm   r   r   )rm   r   r   r1  )r1  )rj   r   r.  r8   r/  r   r   )	r   r3  rm   r   r   r1  orK   ddr   r   r	   test_track_dynamicr  sh     





















zDictTest.test_track_dynamicc                 C   s    G dd dt }| |  d S )Nc                   @   s   e Zd ZdS )z,DictTest.test_track_subtypes.<locals>.MyDictNr   r   r   r   r	   MyDict  s   r8  )r   r/  )r   r8  r   r   r	   test_track_subtypes  s    zDictTest.test_track_subtypesc                 C   sF   G dd d}g }t |D ]&}| }d\|_|_|_||j q|S )Nc                   @   s   e Zd ZdS )z(DictTest.make_shared_key_dict.<locals>.CNr   r   r   r   r	   r     s   r   r4   )r-   rm   r   r   r   __dict__)r   r0   r   Zdictsr$   r>   r   r   r	   make_shared_key_dict  s    zDictTest.make_shared_key_dictc                 C   s~   |  d\}}d|d< t|}d|d< |dd t|}d|d< | || | t|g d | t|g d d S )Nr   r   r>   r?   )rm   r   r   r>   r?   )rm   r   r   r?   r>   )r;  r   	getsizeofr   assertGreaterr   list)r   r>   r?   Zsize_aZsize_br   r   r	   test_splittable_setdefault  s    

z#DictTest.test_splittable_setdefaultc                 C   s   |  d\}}t|}|d= | t |d= W d    n1 sD0    Y  | t|| | t|ddg | t|g d d|d< | t|g d | t|g d d S Nr   r   rm   r   r4  rb   )rm   r   r   )r;  r   r<  r   rk   r=  r   r>  r   r>   r?   	orig_sizer   r   r	   test_splittable_del  s    
$zDictTest.test_splittable_delc                 C   s   |  d\}}t|}|d | t |d W d    n1 sL0    Y  | t|| | t|ddg | t|g d d|d< | t|g d | t|g d d S r@  )	r;  r   r<  r   r   rk   r=  r   r>  rA  r   r   r	   test_splittable_pop  s    

(zDictTest.test_splittable_popc                 C   sN   |  d\}}d|d< | t |d W d    n1 s@0    Y  d S )Nr   rX   r>   )r;  r   rk   r   )r   r>   r?   r   r   r	   test_splittable_pop_pending  s    z$DictTest.test_splittable_pop_pendingc                 C   s   |  d\}}t|}| }| |d | t |d= W d    n1 sR0    Y  | t|| | t|ddg | t|g d d S )Nr   )r   r3   r   rm   r   r4  )	r;  r   r<  r   r   r   rk   r=  r>  )r   r>   r?   rB  itemr   r   r	   test_splittable_popitem  s    
$z DictTest.test_splittable_popitemc                 C   s   dd l }G dd d}| }d|_| ||j |jd | ||j d|_| ||j | }d|_| ||j |j  | ||j d|_| ||j d S )Nr   c                   @   s   e Zd ZdS )z5DictTest.test_splittable_setattr_after_pop.<locals>.CNr   r   r   r   r	   r     s   r   r   r>   r   r3   )	_testcapir>   rB   Zdict_hassplittabler:  r   rS   r   )r   rH  r   r>   r   r   r	   !test_splittable_setattr_after_pop  s     
z*DictTest.test_splittable_setattr_after_popc              	   C   s   t tjd D ]}dddd}t|}t||}t|}| t|t| t|}zt|}W n t	y|   Y qY n0 t||}t|}||= | t|t| qd S Nr   r>   r?   r@   r4   )
r-   pickleHIGHEST_PROTOCOLr'  dumpsloadsr   r>  nextr   r   protodataitrK   dropr   r   r	   test_iterator_pickling5  s    



zDictTest.test_iterator_picklingc                 C   s   t tjd D ]}dddd}t| }t||}t|}| |tj	j
 | t|| t|}t|}t||}t|}||d = | t|| qd S Nr   r>   r?   r@   r4   r   )r-   rK  rL  r'  r1   rM  rN  r   r   r   Iteratorr   r   rO  r   rQ  rR  ZitorgrK   rS  rT  r   r   r	   test_itemiterator_picklingG  s    



z#DictTest.test_itemiterator_picklingc                 C   s   t tjd D ]}dddd}t| }t||}t|}| t|t|  t|}t	|}t||}t|}t||g }| t
|t
t|  qd S rJ  )r-   rK  rL  r'  rM   rM  rN  r   r>  rO  sortedr   rQ  rR  rS  rK   rT  rM   r   r   r	   test_valuesiterator_pickling]  s    


z%DictTest.test_valuesiterator_picklingc              	   C   s   t tjd D ]}dddd}t|}t||}t|}| t|tt| t|}zt|}W n t	y   Y qY n0 t||}t|}||= | t|tt| qd S rJ  )
r-   rK  rL  reversedrM  rN  r   r>  rO  r   rP  r   r   r	   test_reverseiterator_picklingm  s    



z&DictTest.test_reverseiterator_picklingc                 C   s   t tjd D ]}dddd}t| }t||}t|}| |tj	j
 | t|| t|}t|}t||}t|}||d = | t|| qd S rV  )r-   rK  rL  r]  r1   rM  rN  r   r   r   rW  r   r   rO  rX  r   r   r	   !test_reverseitemiterator_pickling  s    



z*DictTest.test_reverseitemiterator_picklingc                 C   s   t tjd D ]}dddd}t| }t||}t|}| t|tt|  t|}t	|}t||}t|}t||g }| t
|t
|  qd S rJ  )r-   rK  rL  r]  rM   rM  rN  r   r>  rO  rZ  r[  r   r   r	   #test_reversevaluesiterator_pickling  s    


z,DictTest.test_reversevaluesiterator_picklingc                 C   sZ   G dd d}|d}G dd dt }| |jt||d | |j|j|d  d S )Nc                   @   s   e Zd Zdd ZdS )z=DictTest.test_instance_dict_getattr_str_subclass.<locals>.Fooc                 S   s
   || _ d S r   )msg)r   ra  r   r   r	   ru     s    zFDictTest.test_instance_dict_getattr_str_subclass.<locals>.Foo.__init__Nr   r   r   r   r	   Foo  s   rb  Z123c                   @   s   e Zd ZdS )z>DictTest.test_instance_dict_getattr_str_subclass.<locals>._strNr   r   r   r   r	   _str  s   rc  ra  )strr   ra  getattrr:  )r   rb  r  rc  r   r   r	   'test_instance_dict_getattr_str_subclass  s
    z0DictTest.test_instance_dict_getattr_str_subclassc                 C   s<   G dd d}| }d|j d< d|_| |j ddd d S )Nc                   @   s   e Zd ZdS )zFDictTest.test_object_set_item_single_instance_non_str_key.<locals>.FooNr   r   r   r   r	   rb    r*   rb  r   r>   )r   r>   )r:  r>   r   )r   rb  r  r   r   r	   0test_object_set_item_single_instance_non_str_key  s
    
z9DictTest.test_object_set_item_single_instance_non_str_keyc                    s@   G fddd  fdddD t D ]}||< q.d S )Nc                       s   e Zd Z fddZdS )z4DictTest.check_reentrant_insertion.<locals>.Mutatingc                    s     d S r   r   r   rK   mutater   r	   __del__  s    z<DictTest.check_reentrant_insertion.<locals>.Mutating.__del__Nr   r   r   rj  r   rh  r   r	   Mutating  s   rl  c                    s   i | ]}|  qS r   r   r   )rl  r   r	   r     r*   z6DictTest.check_reentrant_insertion.<locals>.<dictcomp>Zabcdefghijklmnopqr)r>  )r   ri  r'   r   )rl  rK   ri  r	   check_reentrant_insertion  s    z"DictTest.check_reentrant_insertionc                    s>   dd }  |  fdd}  | dd }  | d S )Nc                 S   s   d| d< d S )Nr   r?   r   rt   r   r   r	   ri    s    z1DictTest.test_reentrant_insertion.<locals>.mutatec                    s   |   j |   d S r   )r   r:  rp   rt   r   r   r	   ri    s    c                 S   s   | r|    q d S r   )r   rt   r   r   r	   ri    s    )rm  )r   ri  r   r   r	   test_reentrant_insertion  s    

z!DictTest.test_reentrant_insertionc                    sZ   G  fddd}dd t ddD }t| d | < | dddi}| t|j  d S )Nc                       s    e Zd Zdd Z fddZdS )z)DictTest.test_merge_and_mutate.<locals>.Xc                 S   s   dS r   r   r   r   r   r	   r_     s    z2DictTest.test_merge_and_mutate.<locals>.X.__hash__c                    s       dS r  r  )r   r5  rZ   r   r	   r]     s    z0DictTest.test_merge_and_mutate.<locals>.X.__eq__Nr  r   ro  r   r	   r    s   r  c                 S   s   g | ]}|d fqS )r   r   r"   r   r   r	   r%     r*   z2DictTest.test_merge_and_mutate.<locals>.<listcomp>r   i9  r   )r-   r   r   r   r   )r   r  lrK   r   ro  r	   test_merge_and_mutate  s    
zDictTest.test_merge_and_mutatec                 C   sH   t | tt t | dd t t | dd t t | dd t d S )Nc                 S   s   t |  S r   )r'  rH   rt   r   r   r	   r     r*   z4DictTest.test_free_after_iterating.<locals>.<lambda>c                 S   s   t |  S r   )r'  rM   rt   r   r   r	   r     r*   c                 S   s   t |  S r   )r'  r1   rt   r   r   r	   r     r*   )r   Zcheck_free_after_iteratingr'  r   r   r   r   r	   test_free_after_iterating  s    z"DictTest.test_free_after_iteratingc                    sp   G  fddd}| di | | i|   k G fddd}d| i}dt i|  |k d S )Nc                       s,   e Zd ZfddZ fddZdd ZdS )z9DictTest.test_equal_operator_modifying_operand.<locals>.Xc                    s       d S r   r  r   )dict_br   r	   rj    s    zADictTest.test_equal_operator_modifying_operand.<locals>.X.__del__c                    s       dS NTr  rY   )dict_ar   r	   r]     s    z@DictTest.test_equal_operator_modifying_operand.<locals>.X.__eq__c                 S   s   dS N   r   r   r   r   r	   r_     s    zBDictTest.test_equal_operator_modifying_operand.<locals>.X.__hash__N)r   r   r   rj  r]   r_   r   )ru  rs  r   r	   r    s   r  r   c                       s   e Zd Z fddZdS )z9DictTest.test_equal_operator_modifying_operand.<locals>.Yc                    s       dS rt  r  rY   dict_dr   r	   r]     s    z@DictTest.test_equal_operator_modifying_operand.<locals>.Y.__eq__Nr   r   rx  r   r	   Y  s   rz  )rB   rG   )r   r  rz  Zdict_cr   )ru  rs  ry  r	   %test_equal_operator_modifying_operand  s    


z.DictTest.test_equal_operator_modifying_operandc                    sR   G  fdddt }i  |dd|ddi zt  W n tyL   Y n0 d S )Nc                       s    e Zd Zdd Z fddZdS )zADictTest.test_fromkeys_operator_modifying_dict_operand.<locals>.Xc                 S   s   dS rv  r   r   r   r   r	   r_     s    zJDictTest.test_fromkeys_operator_modifying_dict_operand.<locals>.X.__hash__c                    s   t  dkr   dS Nr   FrV   rp   rY   rt   r   r	   r]     s    zHDictTest.test_fromkeys_operator_modifying_dict_operand.<locals>.X.__eq__Nr  r   rt   r   r	   r    s   r  r   r   r   r   r   r   r   r   rt   r	   -test_fromkeys_operator_modifying_dict_operand  s    	z6DictTest.test_fromkeys_operator_modifying_dict_operandc                    sN   G  fdddt }i  |d|dh zt  W n tyH   Y n0 d S )Nc                       s    e Zd Zdd Z fddZdS )z@DictTest.test_fromkeys_operator_modifying_set_operand.<locals>.Xc                 S   s   dS rv  r   r   r   r   r	   r_     s    zIDictTest.test_fromkeys_operator_modifying_set_operand.<locals>.X.__hash__c                    s   t  dkr   dS r|  r}  rY   rt   r   r	   r]     s    zGDictTest.test_fromkeys_operator_modifying_set_operand.<locals>.X.__eq__Nr  r   rt   r   r	   r    s   r  r   r   r~  r   r   rt   r	   ,test_fromkeys_operator_modifying_set_operand  s    	z5DictTest.test_fromkeys_operator_modifying_set_operandc                    s2   G  fddd}dt  i d| f  v  d S )Nc                       s   e Zd Z fddZdS )z:DictTest.test_dictitems_contains_use_after_free.<locals>.Xc                    s       tS r   rp   r;   rY   rt   r   r	   r]   (  s    zADictTest.test_dictitems_contains_use_after_free.<locals>.X.__eq__Nr   r   rt   r   r	   r  '  s   r  r   )rG   r1   r   r   rt   r	   &test_dictitems_contains_use_after_free&  s    
z/DictTest.test_dictitems_contains_use_after_freec                    s0   G  fdddt }| di | d v  d S )Nc                       s    e Zd Z fddZdd ZdS )z4DictTest.test_dict_contain_use_after_free.<locals>.Sc                    s       tS r   r  rY   rt   r   r	   r]   2  s    z;DictTest.test_dict_contain_use_after_free.<locals>.S.__eq__c                 S   s   t dS )Ntest)r  r   r   r   r	   r_   6  s    z=DictTest.test_dict_contain_use_after_free.<locals>.S.__hash__Nr`   r   rt   r   r	   S1  s   r  r   r  )rd  rS   )r   r  r   rt   r	    test_dict_contain_use_after_free/  s    
z)DictTest.test_dict_contain_use_after_freec                    s*   G  fddd}| dg t  g d S )Nc                       s   e Zd Z fddZdS )z,DictTest.test_init_use_after_free.<locals>.Xc                    s   g  d d < dS rv  r   r   Zpairr   r	   r_   >  s    z5DictTest.test_init_use_after_free.<locals>.X.__hash__N)r   r   r   r_   r   r  r   r	   r  =  s   r  {   )r   r   r   r  r	   test_init_use_after_free<  s    
z!DictTest.test_init_use_after_freec                    sF   G fdddt   fddtdD fdd}| t| d S )Nc                       s   e Zd Z fddZdS )z;DictTest.test_oob_indexing_dictiter_iternextitem.<locals>.Xc                    s       d S r   r  r   rt   r   r	   rj  G  s    zCDictTest.test_oob_indexing_dictiter_iternextitem.<locals>.X.__del__Nrk  r   rt   r   r	   r  F  s   r  c                    s   i | ]}| |qS r   r   r"   )r  r   r	   r   J  r*   zDDictTest.test_oob_indexing_dictiter_iternextitem.<locals>.<dictcomp>r   c                     s&      D ]} | d dkrd  d< qd S )Nr   r   r   )resultrt   r   r	   iter_and_mutateL  s    zIDictTest.test_oob_indexing_dictiter_iternextitem.<locals>.iter_and_mutate)r   r-   r   r   )r   r  r   )r  rK   r	   'test_oob_indexing_dictiter_iternextitemE  s    z0DictTest.test_oob_indexing_dictiter_iternextitemc                 C   sD   dddddd}|d= t |}| t|td | tt| d S )	Nr   r   r   r3   rX   )r>   r?   foor@   rK   r  Zdcba)r]  r   r>  r   r   rO  )r   rK   rr   r   r	   test_reversedS  s
    zDictTest.test_reversedc                 C   s   |  tti g  |  tti  g  |  tti  g  |  tti  g  |  ttt g  |  ttt  g  |  ttt  g  |  ttt  g  d S r   )r   r>  r]  r1   rM   rH   r   r   r   r   r	   $test_reverse_iterator_for_empty_dictZ  s    z-DictTest.test_reverse_iterator_for_empty_dictc                 C   sn   G dd d}|  tt|ddjddg |  tt|ddjdg |  tt|ddjdg d S )Nc                   @   s   e Zd Zdd ZdS )zADictTest.test_reverse_iterator_for_shared_shared_dicts.<locals>.Ac                 S   s   |r
|| _ |r|| _d S r   )rm   r   )r   rm   r   r   r   r	   ru   k  s    
zJDictTest.test_reverse_iterator_for_shared_shared_dicts.<locals>.A.__init__Nr   r   r   r   r	   r   j  s   r   r   r   r   rm   r   )r   r>  r]  r:  )r   r   r   r   r	   -test_reverse_iterator_for_shared_shared_dictsi  s     z6DictTest.test_reverse_iterator_for_shared_shared_dictsc                 C   s   t ddg}|d t| }t|}| t| | G dd dt}g d}||}| |tt|  G dd dt}||}| |d d d	 tt|  d S )
Nr>   r   r?   r   r>   c                   @   s   e Zd ZdS )z1DictTest.test_dict_copy_order.<locals>.CustomDictNr   r   r   r   r	   
CustomDict}  s   r  )r  r  )r@   r3   c                   @   s    e Zd Zdd ZeZdd ZdS )z9DictTest.test_dict_copy_order.<locals>.CustomReversedDictc                 S   s   t tt| S r   )r]  r>  r   rH   r   r   r   r	   rH     s    z>DictTest.test_dict_copy_order.<locals>.CustomReversedDict.keysc                 S   s   t t| S r   )r]  r   r1   r   r   r   r	   r1     s    z?DictTest.test_dict_copy_order.<locals>.CustomReversedDict.itemsN)r   r   r   rH   r~   r1   r   r   r   r	   CustomReversedDict  s   r  r   )r   OrderedDictmove_to_endr>  r1   r   r   )r   ZodZexpectedr8   r  pairsrK   r  r   r   r	   test_dict_copy_orders  s    
	zDictTest.test_dict_copy_orderc                 C   s0   t d g i }t  | tt| d S r   )r'  r1   r   r(  rB   r   rO  r   rS  r   r   r	   test_dict_items_result_gc  s    z"DictTest.test_dict_items_result_gcc                 C   s0   t d g i }t  | tt| d S r   )r]  r1   r   r(  rB   r   rO  r  r   r   r	   "test_dict_items_result_gc_reversed  s    z+DictTest.test_dict_items_result_gc_reversedN)Wr   r   r   r   r   r2   rA   rD   rL   rO   rQ   rU   rW   rn   rq   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r!  r$  r+  r.  r/  r   cpython_onlyr2  r7  r9  r;  r?  rC  rD  rE  rG  rI  rU  rY  r\  r^  r_  r`  rf  rg  rm  rn  rq  rr  r{  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r	   r      s   	 	&L:
!			,+

?







		

r   c                   @   s   e Zd Zejdd ZdS )CAPITestc                    s   ddl m} dddd}| ||dtdd | ||dtdd | ||d	td	d | t|g dtd | t|i dtd G d
d dt G  fddd}| |  }}|di}| |||t|d |  |||t| d S )Nr   )dict_getitem_knownhashr   r   r3   r4  rm   r   r   c                   @   s   e Zd ZdS )z,CAPITest.test_getitem_knownhash.<locals>.ExcNr   r   r   r   r	   r\     r*   r\   c                       s    e Zd Z fddZdd ZdS )z.CAPITest.test_getitem_knownhash.<locals>.BadEqc                    s    d S r   r   rY   r[   r   r	   r]     s    z5CAPITest.test_getitem_knownhash.<locals>.BadEq.__eq__c                 S   s   dS )N   r   r   r   r   r	   r_     s    z7CAPITest.test_getitem_knownhash.<locals>.BadEq.__hash__Nr`   r   r[   r   r	   ra     s   ra   )rH  r  r   r  r   SystemErrorrk   rl   )r   r  rK   ra   r   r   r   r[   r	   test_getitem_knownhash  s    zCAPITest.test_getitem_knownhashN)r   r   r   r   r  r  r   r   r   r	   r    s   r  )mapping_testsc                   @   s   e Zd ZeZdS )GeneralMappingTestsN)r   r   r   r   	type2testr   r   r   r	   r    s   r  c                   @   s   e Zd ZdS )DictNr   r   r   r   r	   r    s   r  c                   @   s   e Zd ZeZdS )SubclassMappingTestsN)r   r   r   r  r  r   r   r   r	   r    s   r  __main__)r   collections.abcr   rK  r   r    r   Zunittestr%  r  r   ZTestCaser   r  r  ZBasicTestMappingProtocolr  r   r  r  r   mainr   r   r   r	   <module>   s8              #