o
    HXh                     @   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rfe  dS 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^ Z1d_d` Z2dadb Z3e4j5dcdd Z6e4j5dedf Z7e4j5dgdh Z8didj Z9e4j5dkdl Z:e4j5dmdn Z;e4j5dodp Z<e4j5dqdr Z=e4j5dsdt Z>e4j5dudv 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 ZTdd ZUdd ZVe4j5dd ZWe4j5dd ZXdd ZYdS )DictTestc              	   C   s   G dd dt }ddi|ddifD ];}| t t di | W d    n1 s+w   Y  | t i jdi | W d    n1 sHw   Y  qd S )Nc                   @      e Zd ZdS )z7DictTest.test_invalid_keyword_arguments.<locals>.CustomN__name__
__module____qualname__ r	   r	   8/opt/python-3.10.19/usr/lib/python3.10/test/test_dict.pyCustom       r         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 ]*}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>$   s    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   r4   )r   r   r   r4   )r   r   r4   r   )r   r   r   r   r4   r4   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)r:   
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   rG   zdict_values([1]))r   rH   valuesr   r   rK   r   r   rL   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   rG   zdict_items([('a', 1)]))r   rH   r2   r   r   rK   r   rO   r	   r	   r
   
test_itemsc   s   zDictTest.test_itemsc           	      C   s   t t j}G dd dt}t|fD ]@}| }| j}| j}| j}|||fD ]}| || | || q*d|d< |||fD ]}| || | || qBqd S )Nc                   @   r   )z)DictTest.test_views_mapping.<locals>.DictNr   r	   r	   r	   r
   Dictn   r   rS   Zbarfoo)	type__dict__r   rI   mappingrN   r2   assertIsInstancer   )	r   mappingproxyrS   clsrL   Zm1Zm2Zm3mr	   r	   r
   test_views_mappingl   s    



zDictTest.test_views_mappingc                 C   sl   i }|  d| | d|v  | d|v ddd}| d| | d| |  d| | t|j d S )Nr?   r   r   rF   r@   rA   )assertNotInassertFalserC   rJ   r   r   __contains__rO   r	   r	   r
   test_contains   s   
zDictTest.test_containsc                 C   s2   i }|  t|d ddd}|  t|d d S )Nr   r   r   rF   )r   lenrO   r	   r	   r
   test_len   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   rF   r?   r@   r4   rA      )r?   rA   c                           e Zd Z fddZdd ZdS )z$DictTest.test_getitem.<locals>.BadEqc                         r   r	   r   otherExcr	   r
   __eq__      z+DictTest.test_getitem.<locals>.BadEq.__eq__c                 S      dS )N   r	   r   r	   r	   r
   __hash__      z-DictTest.test_getitem.<locals>.BadEq.__hash__Nr   r   r   rj   rn   r	   rh   r	   r
   BadEq       rq   *      c                   @   r   )z"DictTest.test_getitem.<locals>.ExcNr   r	   r	   r	   r
   ri          ri   c                          e Zd ZdZ fddZdS )z&DictTest.test_getitem.<locals>.BadHashFc                       | j r  dS Nrs   failr   rh   r	   r
   rn         z/DictTest.test_getitem.<locals>.BadHash.__hash__Nr   r   r   rz   rn   r	   rh   r	   r
   BadHash       r}   T)r   r   r   __getitem__objectKeyError	Exceptionrz   )r   rL   rq   r}   xr	   rh   r
   test_getitem   s(   

zDictTest.test_getitemc                 C   s4   dddd}|   | |i  | t|j d  d S Nr   r   r4   r5   )clearr   r   r   rO   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      r4   r5   c                   @   $   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 r   rL   r   r	   r	   r
   __init__      z5DictTest.test_update.<locals>.SimpleUserDict.__init__c                 S   s
   | j  S r   )rL   rI   r   r	   r	   r
   rI         
z1DictTest.test_update.<locals>.SimpleUserDict.keysc                 S   s
   | j | S r   r   )r   r&   r	   r	   r
   r      r   z8DictTest.test_update.<locals>.SimpleUserDict.__getitem__N)r   r   r   r   rI   r   r	   r	   r	   r
   SimpleUserDict       r   c                   @   r   )z!DictTest.test_update.<locals>.ExcNr   r	   r	   r	   r
   ri      ru   ri   c                          e Zd Z fddZdS )-DictTest.test_update.<locals>.FailingUserDictc                        r   r	   r   rh   r	   r
   rI      ro   2DictTest.test_update.<locals>.FailingUserDict.keysN)r   r   r   rI   r	   rh   r	   r
   FailingUserDict       r   c                       rd   )r   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
   r      r   NDictTest.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIter.__init__c                 S      | S r   r	   r   r	   r	   r
   __iter__   ro   NDictTest.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIter.__iter__c                    s   | j rd| _ dS  )Nr   r?   r   r   rh   r	   r
   __next__   s   NDictTest.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIter.__next__Nr   r   r   r   r   r   r	   rh   r	   r
   	BogonIter   s    r   r	   r   r   rh   r	   r
   rI      s   
r   c                 S   s   |S r   r	   r   keyr	   r	   r
   r      ro   9DictTest.test_update.<locals>.FailingUserDict.__getitem__Nr   r   r   rI   r   r	   rh   r	   r
   r      s    c                           e Zd Zdd Z fddZdS )r   c                 S   s   G dd d}| S )Nc                   @   r   )r   c                 S   s   t d| _d S )Nr?   )ordr&   r   r	   r	   r
   r         r   c                 S   r   r   r	   r   r	   r	   r
   r      ro   r   c                 S   s.   | j tdkrt| j }|  j d7  _ |S t)Nzr   )r&   r   chrStopIteration)r   Zrtnr	   r	   r
   r      s
   
r   Nr   r	   r	   r	   r
   r      r   r   r	   r   r	   r	   r
   rI      s   r   c                    r   r   r	   r   rh   r	   r
   r      ro   r   Nr   r	   rh   r	   r
   r      s    c                       r   )z$DictTest.test_update.<locals>.badseqc                 S   r   r   r	   r   r	   r	   r
   r     ro   z-DictTest.test_update.<locals>.badseq.__iter__c                    re   r   r	   r   rh   r	   r
   r     rk   z-DictTest.test_update.<locals>.badseq.__next__Nr   r   r   r   r   r	   rh   r	   r
   badseq      r   )	r   r   r   r   AttributeErrorr   r   r   r>   )r   rL   r   r   r   r	   rh   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@   rA   )rc      r   c                   s   s    dV  d S r   r	   r	   r	   r	   r
   g  s   
z!DictTest.test_fromkeys.<locals>.gr   r4   c                   @   r   )z(DictTest.test_fromkeys.<locals>.dictlikeNr   r	   r	   r	   r
   dictlike  ru   r   r?   c                   @      e Zd Zdd ZdS )z&DictTest.test_fromkeys.<locals>.mydictc                 S   s   t  S r   )collectionsUserDictrZ   r	   r	   r
   __new__     z.DictTest.test_fromkeys.<locals>.mydict.__new__Nr   r   r   r   r	   r	   r	   r
   mydict      r   abrF   c                   @   r   )z#DictTest.test_fromkeys.<locals>.ExcNr   r	   r	   r	   r
   ri   #  ru   ri   c                       r   )z(DictTest.test_fromkeys.<locals>.baddict1c                    re   r   r	   r   rh   r	   r
   r   &  rk   z1DictTest.test_fromkeys.<locals>.baddict1.__init__Nr   r   r   r   r	   rh   r	   r
   baddict1%  r   r   c                       r   )z&DictTest.test_fromkeys.<locals>.BadSeqc                 S   r   r   r	   r   r	   r	   r
   r   ,  ro   z/DictTest.test_fromkeys.<locals>.BadSeq.__iter__c                    re   r   r	   r   rh   r	   r
   r   .  rk   z/DictTest.test_fromkeys.<locals>.BadSeq.__next__Nr   r	   rh   r	   r
   BadSeq+  r   r   c                       r   )z(DictTest.test_fromkeys.<locals>.baddict2c                    re   r   r	   )r   r   valuerh   r	   r
   __setitem__4  rk   z4DictTest.test_fromkeys.<locals>.baddict2.__setitem__N)r   r   r   r   r	   rh   r	   r
   baddict23  r   r   r   c                       r   )z(DictTest.test_fromkeys.<locals>.baddict3c                    s    S r   r	   r   r   r	   r
   r   >  ro   z0DictTest.test_fromkeys.<locals>.baddict3.__new__Nr   r	   r   r	   r
   baddict3=  r   r   c                 S      i | ]}||qS r	   r	   r$   r	   r	   r
   
<dictcomp>@      z*DictTest.test_fromkeys.<locals>.<dictcomp>
   >   r?   r@   rA   )r   r   fromkeysr   r   r   rX   r   r   r   r   zipr.   r9   r   )
r   r   r   r   Zudr   r   r   r   resr	   )ri   rL   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   r4   r5   rc   )r   r9   r   assertNotEqualr   r   )r   rL   r9   r	   r	   r
   	test_copyE  s   zDictTest.test_copyc              	   C   s   dD ]W}t |d ||d  }| j|d; i }t|D ]}|||< q| }| || | || d|d< | || | t|t|d  W d    n1 sTw   Y  qd S )N)r   r     i'  i r   )	dict_sizer   r   r   )	r    	randrangesubTestr.   r9   r   r   r   ra   )r   r   rL   r&   d2r	   r	   r
   test_copy_fuzzR  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                   @   r   )z0DictTest.test_copy_maintains_tracking.<locals>.ANr   r	   r	   r	   r
   Ac  r   r   r?   r   val)r9   r   gc
is_tracked)r   r   r   rL   r   r	   r	   r
   test_copy_maintains_trackingb  s   z%DictTest.test_copy_maintains_trackingc                 C   s>   dd t dD }t dD ]}||= q| }| || d S )Nc                 S   r   r	   r	   r%   r)   r	   r	   r
   r   s  r   z1DictTest.test_copy_noncompact.<locals>.<dictcomp>r   i  )r.   r9   r   )r   rL   r)   r   r	   r	   r
   test_copy_noncompactl  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 )NrA   r4   r   r   rF   r?   )r:   getr   r   r   rO   r	   r	   r
   test_gety  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   r4   r   rc   r   c                   @   r   )z%DictTest.test_setdefault.<locals>.ExcNr   r	   r	   r	   r
   ri     ru   ri   c                       rv   )z)DictTest.test_setdefault.<locals>.BadHashFc                    rw   rx   ry   r   rh   r	   r
   rn     r{   z2DictTest.test_setdefault.<locals>.BadHash.__hash__Nr|   r	   rh   r	   r
   r}     r~   r}   rs   T)
r:   
setdefaultappendr   ra   r   r   r   r   rz   )r   rL   r}   r   r	   rh   r
   test_setdefault  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                   @   r   )z/DictTest.test_setdefault_atomic.<locals>.Hashedc                 S      d| _ d| _d S Nr   
hash_counteq_countr   r	   r	   r
   r        
z8DictTest.test_setdefault_atomic.<locals>.Hashed.__init__c                 S      |  j d7  _ dS Nr   rs   r   r   r	   r	   r
   rn        z8DictTest.test_setdefault_atomic.<locals>.Hashed.__hash__c                 S      |  j d7  _ t| t|kS r   r   idrf   r	   r	   r
   rj        z6DictTest.test_setdefault_atomic.<locals>.Hashed.__eq__Nr   r   r   r   rn   rj   r	   r	   r	   r
   Hashed      r   r   r   )r   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                   @   r   )z6DictTest.test_setitem_atomic_at_resize.<locals>.Hashedc                 S   r   r   r   r   r	   r	   r
   r     r   z?DictTest.test_setitem_atomic_at_resize.<locals>.Hashed.__init__c                 S   r   r   r   r   r	   r	   r
   rn     r   z?DictTest.test_setitem_atomic_at_resize.<locals>.Hashed.__hash__c                 S   r   r   r   rf   r	   r	   r
   rj     r   z=DictTest.test_setitem_atomic_at_resize.<locals>.Hashed.__eq__Nr   r	   r	   r	   r
   r     r   r   r   r   r   r   r4   )r   r   r   r   r   r	   r	   r
   test_setitem_atomic_at_resize  s   
z&DictTest.test_setitem_atomic_at_resizec                 C   s   dD ]l}t dD ]e}d| }i }i }t |D ]}||t|< |dk r(||t|< q|dkr1| }t |D ]-}|  \}}}	| |t| |  \}
}}| |t|
 | |dk o`|	|k q5| | | | qqi }| t|j d S )N)r      r   r   )	r.   rK   r9   popitemr   intr^   r   r   )r   copymodeZlog2sizesizer?   r@   r&   kavataZkbZvbtbrL   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                   @   r   )zDictTest.test_pop.<locals>.ExcNr   r	   r	   r	   r
   ri     ru   ri   c                       rv   )z"DictTest.test_pop.<locals>.BadHashFc                    rw   rx   ry   r   rh   r	   r
   rn     r{   z+DictTest.test_pop.<locals>.BadHash.__hash__Nr|   r	   rh   r	   r
   r}     r~   r}   rs   T)	r   r   popr   ra   r   r   r   rz   )r   rL   r)   r*   r}   r   r	   rh   r
   test_pop  s"   zDictTest.test_popc                 C   sR   i }d|d< |  t |D ]}d||d < qW d    d S 1 s"w   Y  d S r   r   RuntimeErrorr   rL   r&   r	   r	   r
   test_mutating_iteration  s   "z DictTest.test_mutating_iterationc                 C   sT   i }d|d< |  t |D ]	}|d= d|d< qW d    d S 1 s#w   Y  d S r   r  r  r	   r	   r
   test_mutating_iteration_delete  s   
"z'DictTest.test_mutating_iteration_deletec                 C   X   i }d|d< |  t | D ]	}|d= d|d< qW d    d S 1 s%w   Y  d S r   )r   r  rN   r  r	   r	   r
   *test_mutating_iteration_delete_over_values     
"z3DictTest.test_mutating_iteration_delete_over_valuesc                 C   r  r   r   r  r2   r  r	   r	   r
   )test_mutating_iteration_delete_over_items  r  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   
   || _ d S r   )r   )r   r   r	   r	   r
   r   -  r   z8DictTest.test_mutating_lookup.<locals>.NastyKey.__init__c                 S   rl   r   r	   r   r	   r	   r
   rn   0  s   z8DictTest.test_mutating_lookup.<locals>.NastyKey.__hash__c                    s(    j r j \}}d  _ ||= | j|jkS r   )mutate_dictr   )r   rg   r   r   NastyKeyr	   r
   rj   4  s
   
z6DictTest.test_mutating_lookup.<locals>.NastyKey.__eq__)r   r   r   r  r   rn   rj   r	   r  r	   r
   r  *  s
    r  r   r   )r  r   )r   key1key2rL   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                   @   r   )zDictTest.test_repr.<locals>.ExcNr   r	   r	   r	   r
   ri   K  ru   ri   c                       r   )z#DictTest.test_repr.<locals>.BadReprc                    re   r   r	   r   rh   r	   r
   __repr__N  rk   z,DictTest.test_repr.<locals>.BadRepr.__repr__N)r   r   r   r  r	   rh   r	   r
   BadReprM  r   r  )r   rK   r   r   r   )r   rL   r  r	   rh   r
   	test_reprB  s   
zDictTest.test_reprc                 C   s4   i }t t d D ]}d|i}q
| tt| d S )Nr   r   )r.   sysgetrecursionlimitr   RecursionErrorrK   r  r	   r	   r
   test_repr_deepT  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    d S 1 s@w   Y  d S )Nr   r   c                   @   r   )zDictTest.test_eq.<locals>.ExcNr   r	   r	   r	   r
   ri   ^  ru   ri   c                       rd   )z DictTest.test_eq.<locals>.BadCmpc                    re   r   r	   rf   rh   r	   r
   rj   a  rk   z'DictTest.test_eq.<locals>.BadCmp.__eq__c                 S   rl   r   r	   r   r	   r	   r
   rn   c  ro   z)DictTest.test_eq.<locals>.BadCmp.__hash__Nrp   r	   rh   r	   r
   BadCmp`  rr   r  )r   r   r   r   )r   r  d1r   r	   rh   r
   test_eqZ  s   

"zDictTest.test_eqc                 C   s    |  dd  |  dd  d S )Nc                 S      |   S r   )rI   r   r	   r	   r
   <lambda>m      z.DictTest.test_keys_contained.<locals>.<lambda>c                 S   r!  r   r2   r"  r	   r	   r
   r#  n  r$  )helper_keys_containedr   r	   r	   r
   test_keys_containedl  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   rQ   r4   r5   )rc   r   r4   )r   rC   r^   )r   fnemptyZempty2ZsmallerZlargerZlarger2Zlarger3r	   r	   r
   r&  p  s<   

zDictTest.helper_keys_containedc                 C   s  G dd d}d| i}d| i}|  t | | k W d    n1 s)w   Y  |  t | | k W d    n1 sFw   Y  |  t | | k W d    n1 scw   Y  |  t | | k W d    n1 sw   Y  | | d}|  t | | k  W d    n1 sw   Y  |  t | | k W d    d S 1 sw   Y  d S )Nc                   @   r   )z9DictTest.test_errors_in_view_containment_check.<locals>.Cc                 S   s   t r   r  rf   r	   r	   r
   rj     ro   z@DictTest.test_errors_in_view_containment_check.<locals>.C.__eq__Nr   r   r   rj   r	   r	   r	   r
   C  r   r,  r   rQ   r  )r   r,  r  r   Zd3r	   r	   r
   %test_errors_in_view_containment_check  s,   

"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   rQ   r4   r5   rc   >   r   r   r4   >   r   r   rc   )rI   r   rH   r   k1k2Zk3r	   r	   r
   $test_dictview_set_operations_on_keys     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   rQ   r4   r5   rc   r6   r7   r8   rc   rc   >   r6   r8   r7   >   r3  r6   r7   )r2   r   rH   r.  r	   r	   r
   %test_dictview_set_operations_on_items  r2  z.DictTest.test_dictview_set_operations_on_itemsc              	      s   t j tdD ]I} fddtdD } fddtdD }| j||d" t| t| A }| | A }| || W d    n1 sKw   Y  qd S )Nr   c                       i | ]} d r| dqS r   r4   r	   r%   r   Zrrr	   r
   r         z<DictTest.test_items_symmetric_difference.<locals>.<dictcomp>r   c                    r5  r6  r	   r7  r8  r	   r
   r     r9  )leftright)r    r   r.   r   rH   r2   r   )r   _r:  r;  expectedactualr	   r8  r
   test_items_symmetric_difference  s   z(DictTest.test_items_symmetric_differencec                 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   r6   )rC   rI   r   r2   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 sdw   Y  | |jj	d G dd dt}| }| t
}|d	  W d    n1 sw   Y  | |jj	d G dd dt}| }	| t
}|	d	  W d    n1 sw   Y  | |jj	d d S )N__missing__c                   @   r   )z DictTest.test_missing.<locals>.Dc                 S   rl   rx   r	   r   r	   r	   r
   rA    ro   z,DictTest.test_missing.<locals>.D.__missing__Nr   r   r   rA  r	   r	   r	   r
   D  r   rC  r   rc   )r   r4   r   r4   rs   c                   @   r   )z DictTest.test_missing.<locals>.Ec                 S   s   t |r   r*  r   r	   r	   r
   rA    r   z,DictTest.test_missing.<locals>.E.__missing__NrB  r	   r	   r	   r
   E  r   rD  rs   c                   @   r   )z DictTest.test_missing.<locals>.Fc                 S   s   dd | _ d S )Nc                 S   s   d S r   r	   )r   r	   r	   r
   r#    s    z;DictTest.test_missing.<locals>.F.__init__.<locals>.<lambda>)rA  r   r	   r	   r
   r     s   z)DictTest.test_missing.<locals>.F.__init__Nr   r	   r	   r	   r
   F  r   rF  c                   @   r   )z DictTest.test_missing.<locals>.GNr   r	   r	   r	   r
   G
  r   rG  )r^   hasattrr   r   r]   rI   r   r  	exceptionargsr   )
r   rC  rL   rD  erA   rF  frG  r   r	   r	   r
   test_missing  s6   


zDictTest.test_missingc                 C   sJ   i }|  t}|d  W d    n1 sw   Y  | |jjd d S )Nr   )rN  )r   r   r   rI  rJ  )r   rL   rA   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    n1 s7w   Y  qd S )Nc                   @   r   )z.DictTest.test_bad_key.<locals>.CustomExceptionNr   r	   r	   r	   r
   CustomException  r   rP  c                       r   )z)DictTest.test_bad_key.<locals>.BadDictKeyc                 S   s
   t | jS r   )hash	__class__r   r	   r	   r
   rn     r   z2DictTest.test_bad_key.<locals>.BadDictKey.__hash__c                    s   t || jr |S r   )
isinstancerR  rf   rP  r	   r
   rj   !  s   z0DictTest.test_bad_key.<locals>.BadDictKey.__eq__Nr   r   r   rn   rj   r	   rT  r	   r
   
BadDictKey      rV  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}))r   r   execlocals)r   rV  rL   Zx1Zx2Zstmtr	   rT  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 ]}|||< qd S )Nr   	   )r.   r  r	   r	   r
   test_resize14  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                       "   e Zd Zdd Z fddZdS )z DictTest.test_resize2.<locals>.Xc                 S   rl   )Nr   r	   r   r	   r	   r
   rn   I  ro   z)DictTest.test_resize2.<locals>.X.__hash__c                    s   r    dS NFr   rf   rL   Zresizingr	   r
   rj   K  s   z'DictTest.test_resize2.<locals>.X.__eq__NrU  r	   r`  r	   r
   XH  s    ra  Fr   r   r4   rc   r   Tr   r[  )r   r   ra  r	   r`  r
   test_resize2D  s   




zDictTest.test_resize2c              
   C   sR   |  t dd d d d d d d d d}W d    i }d S 1 s w   Y  i }d S )Nr   r   )r?   r@   rA   rL   rK  rL  r   h)r   ZeroDivisionErrorrO   r	   r	   r
   $test_empty_presized_dict_in_freelistZ  s   
z-DictTest.test_empty_presized_dict_in_freelistc                 C   sx   G dd dt }tjtjtjf}|D ]'}| }t|}|di}|||_t|j|_	~~t
  | | d d qd S )Nc                   @   r   )z+DictTest.test_container_iterator.<locals>.CNr   r	   r	   r	   r
   r,  e  r   r,  r   zCycle was not collected)r   r   r2   rN   rI   weakrefrefr*   iterr   r   collectr:   )r   r,  Zviewsr*   objrh  	containerr	   r	   r
   test_container_iteratorb  s   

z DictTest.test_container_iteratorc                 C   s&   t   t   | t || d S r   )r   rj  r^   r   r   tr	   r	   r
   _not_trackedr  s   zDictTest._not_trackedc                 C   s8   |  t|| t  t  |  t|| d S r   )rC   r   r   rj  rn  r	   r	   r
   _trackedx  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	   )rp  r   r   rq  rH   )r   r   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                   @   r   )z-DictTest.test_track_dynamic.<locals>.MyObjectNr   r	   r	   r	   r
   MyObject  r   ru  rr  r?   r   r   r4   rc   r   r   r   )r   r   r   rs  )rs  )r   r   rp  r9   rq  r   r   )	r   ru  r   r   r   rs  orL   ddr	   r	   r
   test_track_dynamic  sh    





















zDictTest.test_track_dynamicc                 C   s    G dd dt }| |  d S )Nc                   @   r   )z,DictTest.test_track_subtypes.<locals>.MyDictNr   r	   r	   r	   r
   MyDict  r   rz  )r   rq  )r   rz  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                   @   r   )z(DictTest.make_shared_key_dict.<locals>.CNr   r	   r	   r	   r
   r,    r   r,  r5   )r.   r   r   r   r   rV   )r   r1   r,  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@   )r   r   r   r?   r@   )r   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 s#w   Y  | t|| | t|ddg | t|g d d|d< | t|g d | t|g d d S Nr   r   r   r   rv  rs   )r   r   r   )r}  r  r~  r   r   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 s'w   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   r   r  r   r  r  r	   r	   r
   test_splittable_pop  s   

zDictTest.test_splittable_popc                 C   sR   	 |  d\}}d|d< | t |d W d    d S 1 s"w   Y  d S )Nr   rc   r?   )r}  r   r   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 s*w   Y  | t|| | t|ddg | t|g d d S )Nr   )r   r4   r   r   r   rv  )	r}  r  r~  r   r   r   r   r  r  )r   r?   r@   r  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                   @   r   )z5DictTest.test_splittable_setattr_after_pop.<locals>.CNr   r	   r	   r	   r
   r,  ;  r   r,  r   r?   r   r4   )	_testcapir?   rC   Zdict_hassplittablerV   r  r^   r   )r   r  r,  r?   r	   r	   r
   !test_splittable_setattr_after_pop5  s"   
z*DictTest.test_splittable_setattr_after_popc              	   C   s   t tjd D ]N}dddd}t|}t||}t|}| t|t| t|}zt|}W n	 t	y<   Y qw t||}t|}||= | t|t| qd S Nr   r?   r@   rA   r5   )
r.   pickleHIGHEST_PROTOCOLri  dumpsloadsr   r  nextr   r   protodataitrL   dropr	   r	   r
   test_iterator_picklingS  s"   


zDictTest.test_iterator_picklingc                 C      t tjd D ]J}dddd}t| }t||}t|}| |tj	j
 | t|| t|}t|}t||}t|}||d = | t|| qd S Nr   r?   r@   rA   r5   r   )r.   r  r  ri  r2   r  r  rX   r   r   Iteratorr   r   r  r   r  r  ZitorgrL   r  r  r	   r	   r
   test_itemiterator_picklinge     



z#DictTest.test_itemiterator_picklingc                 C   s   t tjd D ]N}dddd}t| }t||}t|}| t|t|  t|}t	|}t||}t|}t||g }| t
|t
t|  qd S r  )r.   r  r  ri  rN   r  r  r   r  r  sortedr   r  r  r  rL   r  rN   r	   r	   r
   test_valuesiterator_pickling{  s   


z%DictTest.test_valuesiterator_picklingc              	   C   s   t tjd D ]R}dddd}t|}t||}t|}| t|tt| t|}zt|}W n	 t	y>   Y qw t||}t|}||= | t|tt| qd S r  )
r.   r  r  reversedr  r  r   r  r  r   r  r	   r	   r
   test_reverseiterator_pickling  s"   


z&DictTest.test_reverseiterator_picklingc                 C   r  r  )r.   r  r  r  r2   r  r  rX   r   r   r  r   r   r  r  r	   r	   r
   !test_reverseitemiterator_pickling  r  z*DictTest.test_reverseitemiterator_picklingc                 C   s   t tjd D ]N}dddd}t| }t||}t|}| t|tt|  t|}t	|}t||}t|}t||g }| t
|t
|  qd S r  )r.   r  r  r  rN   r  r  r   r  r  r  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                   @   r   )z=DictTest.test_instance_dict_getattr_str_subclass.<locals>.Fooc                 S   r  r   )msg)r   r  r	   r	   r
   r     r   zFDictTest.test_instance_dict_getattr_str_subclass.<locals>.Foo.__init__Nr   r	   r	   r	   r
   Foo  r   r  Z123c                   @   r   )z>DictTest.test_instance_dict_getattr_str_subclass.<locals>._strNr   r	   r	   r	   r
   _str  r   r  r  )strr   r  getattrrV   )r   r  rL  r  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                   @   r   )zFDictTest.test_object_set_item_single_instance_non_str_key.<locals>.FooNr   r	   r	   r	   r
   r    ru   r  r   r?   )r   r?   )rV   r?   r   )r   r  rL  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   rL   mutater	   r
   __del__     z<DictTest.check_reentrant_insertion.<locals>.Mutating.__del__Nr   r   r   r  r	   r  r	   r
   Mutating  s    r  c                    s   i | ]}|  qS r	   r	   r   )r  r	   r
   r         z6DictTest.check_reentrant_insertion.<locals>.<dictcomp>Zabcdefghijklmnopqr)r  )r   r  r)   r	   )r  rL   r  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	   r   r	   r	   r
   r    r  z1DictTest.test_reentrant_insertion.<locals>.mutatec                    s   |   j |   d S r   )r   rV   r   r   r   r	   r
   r    s   c                 S   s   | r
|    | sd S d S r   )r   r   r	   r	   r
   r    s   )r  )r   r  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                       r   )z)DictTest.test_merge_and_mutate.<locals>.Xc                 S   rl   r   r	   r   r	   r	   r
   rn     ro   z2DictTest.test_merge_and_mutate.<locals>.X.__hash__c                           dS r^  r_  )r   rw  rg   r	   r
   rj        z0DictTest.test_merge_and_mutate.<locals>.X.__eq__NrU  r	   r  r	   r
   ra    rW  ra  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   ra  lrL   r	   r  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      t |  S r   )ri  rI   r   r	   r	   r
   r#    ru   z4DictTest.test_free_after_iterating.<locals>.<lambda>c                 S   r  r   )ri  rN   r   r	   r	   r
   r#    ru   c                 S   r  r   )ri  r2   r   r	   r	   r
   r#    ru   )r   Zcheck_free_after_iteratingri  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                           d S r   r_  r   )dict_br	   r
   r    r  zADictTest.test_equal_operator_modifying_operand.<locals>.X.__del__c                    r  NTr_  rf   )dict_ar	   r
   rj     r  z@DictTest.test_equal_operator_modifying_operand.<locals>.X.__eq__c                 S   rl   N   r	   r   r	   r	   r
   rn     ro   zBDictTest.test_equal_operator_modifying_operand.<locals>.X.__hash__N)r   r   r   r  rj   rn   r	   )r  r  r	   r
   ra    s    ra  r   c                       r   )z9DictTest.test_equal_operator_modifying_operand.<locals>.Yc                    r  r  r_  rf   dict_dr	   r
   rj     r  z@DictTest.test_equal_operator_modifying_operand.<locals>.Y.__eq__Nr+  r	   r  r	   r
   Y  r   r  )rC   rH   )r   ra  r  Zdict_cr	   )r  r  r  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 d S  ty(   Y d S w )Nc                       r   )zADictTest.test_fromkeys_operator_modifying_dict_operand.<locals>.Xc                 S   rl   r  r	   r   r	   r	   r
   rn   #  ro   zJDictTest.test_fromkeys_operator_modifying_dict_operand.<locals>.X.__hash__c                       t  dkr
   dS Nr   Fra   r   rf   r   r	   r
   rj   &     zHDictTest.test_fromkeys_operator_modifying_dict_operand.<locals>.X.__eq__NrU  r	   r   r	   r
   ra  "  rW  ra  r   r   r   r   r   r  rb  r	   r   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 d S  ty&   Y d S w )Nc                       r   )z@DictTest.test_fromkeys_operator_modifying_set_operand.<locals>.Xc                 S   rl   r  r	   r   r	   r	   r
   rn   5  ro   zIDictTest.test_fromkeys_operator_modifying_set_operand.<locals>.X.__hash__c                    r  r  r  rf   r   r	   r
   rj   8  r  zGDictTest.test_fromkeys_operator_modifying_set_operand.<locals>.X.__eq__NrU  r	   r   r	   r
   ra  4  rW  ra  r   r   r  rb  r	   r   r
   ,test_fromkeys_operator_modifying_set_operand2  s   	z5DictTest.test_fromkeys_operator_modifying_set_operandc                    s2   G  fddd}dt  i d| f  v  d S )Nc                       r   )z:DictTest.test_dictitems_contains_use_after_free.<locals>.Xc                           tS r   r   r<   rf   r   r	   r
   rj   F  r  zADictTest.test_dictitems_contains_use_after_free.<locals>.X.__eq__Nr+  r	   r   r	   r
   ra  E  r   ra  r   )rH   r2   rb  r	   r   r
   &test_dictitems_contains_use_after_freeD  s   
z/DictTest.test_dictitems_contains_use_after_freec                    s0   G  fdddt }| di | d v  d S )Nc                       rd   )z4DictTest.test_dict_contain_use_after_free.<locals>.Sc                    r  r   r  rf   r   r	   r
   rj   P  r  z;DictTest.test_dict_contain_use_after_free.<locals>.S.__eq__c                 S      t dS )NtestrQ  r   r	   r	   r
   rn   T  r   z=DictTest.test_dict_contain_use_after_free.<locals>.S.__hash__Nrp   r	   r   r	   r
   SO  s    r  r   r  )r  r^   )r   r  r	   r   r
    test_dict_contain_use_after_freeM  s   
z)DictTest.test_dict_contain_use_after_freec                    s*   G  fddd}| dg t  g d S )Nc                       r   )z,DictTest.test_init_use_after_free.<locals>.Xc                    s   g  d d < dS r  r	   r   Zpairr	   r
   rn   \  s   z5DictTest.test_init_use_after_free.<locals>.X.__hash__N)r   r   r   rn   r	   r  r	   r
   ra  [  r   ra  {   )r   rb  r	   r  r
   test_init_use_after_freeZ  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                       r   )z;DictTest.test_oob_indexing_dictiter_iternextitem.<locals>.Xc                    r  r   r_  r   r   r	   r
   r  e  r  zCDictTest.test_oob_indexing_dictiter_iternextitem.<locals>.X.__del__Nr  r	   r   r	   r
   ra  d  r   ra  c                    s   i | ]}| |qS r	   r	   r$   )ra  r	   r
   r   h  s    zDDictTest.test_oob_indexing_dictiter_iternextitem.<locals>.<dictcomp>r   c                     s&      D ]} | d dkrd  d< qd S )Nr   r   r%  )resultr   r	   r
   iter_and_mutatej  s
   zIDictTest.test_oob_indexing_dictiter_iternextitem.<locals>.iter_and_mutate)r   r.   r   r  )r   r  r	   )ra  rL   r
   'test_oob_indexing_dictiter_iternextitemc  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   r4   rc   )r?   r@   rT   rA   rL   rT   Zdcba)r  r   r  r   r   r  )r   rL   rr	   r	   r
   test_reversedq  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  r2   rN   rI   r   r   r	   r	   r
   $test_reverse_iterator_for_empty_dictx  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                   @   r   )zADictTest.test_reverse_iterator_for_shared_shared_dicts.<locals>.Ac                 S   s   |r|| _ |r|| _d S d S r   )r   r   )r   r   r   r	   r	   r
   r     s   
zJDictTest.test_reverse_iterator_for_shared_shared_dicts.<locals>.A.__init__Nr   r	   r	   r	   r
   r     r   r   r   r   r   r   r   )r   r  r  rV   )r   r   r	   r	   r
   -test_reverse_iterator_for_shared_shared_dicts  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                   @   r   )z1DictTest.test_dict_copy_order.<locals>.CustomDictNr   r	   r	   r	   r
   
CustomDict  r   r  )r  r  )rA   r4   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   rI   r   r	   r	   r
   rI     r   z>DictTest.test_dict_copy_order.<locals>.CustomReversedDict.keysc                 S   s   t t| S r   )r  r   r2   r   r	   r	   r
   r2     r   z?DictTest.test_dict_copy_order.<locals>.CustomReversedDict.itemsN)r   r   r   rI   r   r2   r	   r	   r	   r
   CustomReversedDict  s    r  r   )r   OrderedDictmove_to_endr  r2   r   r   )r   Zodr=  r9   r  pairsrL   r  r	   r	   r
   test_dict_copy_order  s   
	&zDictTest.test_dict_copy_orderc                 C   0   t d g i }t  | tt| d S r   )ri  r2   r   rj  rC   r   r  r   r  r	   r	   r
   test_dict_items_result_gc  s   z"DictTest.test_dict_items_result_gcc                 C   r  r   )r  r2   r   rj  rC   r   r  r  r	   r	   r
   "test_dict_items_result_gc_reversed  s   z+DictTest.test_dict_items_result_gc_reversedc           
   	      s   G dd dt }dG  fddd |d}  }  }g }||fD ]z|ddd	d
di dd
d}d|< || dd
d}| |dd || dd
d}|di || dd
d}|diO }|| fdd}t| }|| | }|| dd tdd	gD }|| q$|D ]l}| j|d[ | |	dd d}|d7 }t
jddrd}	| ||	u  | |	|d | |	dd | |	|d | |	|d d| |	|d | d W d    n	1 sw   Y  qd S )Nc                   @   r   )z(DictTest.test_str_nonstr.<locals>.StrSubNr   r	   r	   r	   r
   StrSub  r   r  r   c                       r]  )z&DictTest.test_str_nonstr.<locals>.Key3c                 S   r  )Nkey3r  r   r	   r	   r
   rn     r   z/DictTest.test_str_nonstr.<locals>.Key3.__hash__c                    s,   t | st |tr|dkrd7 dS dS )Nr  r   TF)rS  r  rf   Key3r   r	   r
   rj     s   z-DictTest.test_str_nonstr.<locals>.Key3.__eq__NrU  r	   r  r	   r
   r    s    r  r  r  rs   r  +   ,   )r  r  c                   3   s    dV  dV   dfV  d S )N)r  rs   )r  r  r  r	   r	   )r  r	   r
   
make_pairs  s   z,DictTest.test_str_nonstr.<locals>.make_pairsc                 S   s   i | ]	\}}|d | qS rE  r	   )r%   r&   r   r	   r	   r
   r     s    z,DictTest.test_str_nonstr.<locals>.<dictcomp>r   ZkeZy1T)Zcpythonr   )r  r   r   r   r   r   r9   	enumerater   r   r   Zcheck_impl_detailr^   ZassertGreaterEqual)
r   r  Zkey3_1Zkey3_2Zkey3_3r|  rL   r  Znoninterned_key1Zinterned_key1r	   )r  r   r  r
   test_str_nonstr  s\   










	zDictTest.test_str_nonstrN)Zr   r   r   r   r   r3   rB   rE   rM   rP   rR   r\   r`   rb   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-  r1  r4  r?  r@  rM  rO  rZ  r\  rc  rf  rm  rp  rq  r   cpython_onlyrt  ry  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	   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   r4   rv  r   r   r   c                   @   r   )z,CAPITest.test_getitem_knownhash.<locals>.ExcNr   r	   r	   r	   r
   ri   8  ru   ri   c                       rd   )z.CAPITest.test_getitem_knownhash.<locals>.BadEqc                    r   r   r	   rf   rh   r	   r
   rj   :  ro   z5CAPITest.test_getitem_knownhash.<locals>.BadEq.__eq__c                 S   rl   )N   r	   r   r	   r	   r
   rn   <  ro   z7CAPITest.test_getitem_knownhash.<locals>.BadEq.__hash__Nrp   r	   rh   r	   r
   rq   9  rr   rq   )r  r  r   rQ  r   SystemErrorr   r   )r   r  rL   rq   r/  r0  r	   rh   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                   @      e Zd ZeZdS )GeneralMappingTestsN)r   r   r   r   	type2testr	   r	   r	   r
   r  G      r  c                   @   r   )rS   Nr   r	   r	   r	   r
   rS   J  r   rS   c                   @   r  )SubclassMappingTestsN)r   r   r   rS   r  r	   r	   r	   r
   r  M  r  r  __main__)r   collections.abcr   r  r    r"   r  Zunittestrg  r  r   ZTestCaser   r  r  ZBasicTestMappingProtocolr  r   rS   r  r   mainr	   r	   r	   r
   <module>   s>                &