
    daf                     `   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
 d dlmZmZ  G d dej                        Z G d dej                        Zd dl	mZ  G d	 d
ej$                        Z G d de      Z G d dej$                        Zedk(  r ej0                          yy)    N)support)import_helperC_RECURSION_LIMITc                   ~   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/d. Z0d/ Z1d0 Z2d1 Z3d2 Z4e5jl                  d3        Z7e5jl                  d4        Z8e5jl                  d5        Z9d6 Z:e5jl                  d7        Z;e5jl                  d8        Z<e5jl                  d9        Z=e5jl                  d:        Z>e5jl                  d;        Z?e5jl                  d<        Z@e5jl                  d=        ZAd> ZBd? ZCd@ ZDdA ZEdB ZFdC ZGdD ZHdE ZIdF ZJdG ZKdH ZLdI ZMdJ ZNdK ZOdL ZPdM ZQdN ZRdO ZSdP ZTdQ ZUdR ZVdS ZWdT ZXe5jl                  dU        ZYe5jl                  dV        ZZdW Z[yX)YDictTestc                 *    G d dt               }ddi |ddi      fD ][  }| j                  t              5  t        di | d d d        | j                  t              5   i j                  di | d d d        ] y # 1 sw Y   <xY w# 1 sw Y   txY w)Nc                       e Zd Zy)7DictTest.test_invalid_keyword_arguments.<locals>.CustomN__name__
__module____qualname__     )/root/Python-3.12.4/Lib/test/test_dict.pyCustomr
          r   r         r   )dictassertRaises	TypeErrorupdate)selfr   invalids      r   test_invalid_keyword_argumentsz'DictTest.test_invalid_keyword_arguments   s    	T 	AwAw/ 	%G""9-  w ""9- %		$G$% %	%   % %s   A=B	=B		B	c                 l    | j                  t               i        | j                  t               i        y N)assertEqualr   assertIsNotr   s    r   test_constructorzDictTest.test_constructor   s&    $$r   c           
      d   dD ]  }t        |      D cg c]7  }dj                  t        j                  t        j
                  d            |f9 }}t        j                  |       d |D        }ddj                  |      z   dz   }| j                  t        |      t        |              y c c}w )N)r   r         i      c              3   F   K   | ]  \  }}d j                  ||        yw)z
{!r}: {:d}N)format).0kvs      r   	<genexpr>z4DictTest.test_literal_constructor.<locals>.<genexpr>%   s!     KTQ|221a8Ks   !{z, })
rangejoinrandomsamplestringascii_lettersshuffler   evalr   )r   niitemsformatted_itemsdictliterals         r   test_literal_constructorz!DictTest.test_literal_constructor   s     % 	=A#Ah( ggfmmF,@,@!DEqI (E (NN5!KUKO		/ ::S@KT+.U<	=(s   <B-c                    dddd}dddd}|j                         }||z  }| j                  ||z  ddddd       | j                  |ddddd       |j                         }||z  }| j                  ||z  ddddd       | j                  |ddddd       |j                         }|g d	z  }| j                  |ddddd       | j                  |j                  d       t               | j                  |j                  d
      t               | j                  |j                  d      t               | j                  |j                  d      t               | j                  t        |j                  d        | j                  |j                  d
      dddd       | j                  t        |j                  d       | j                  |j                  d      dddd       y )Nr   r   )r   r   r   r      r   r   r?   )r   r   r   r?   )r   r   r?   r   )r   r   r   r   r?   r?   r   BADr&   )	copyr   assertIs__or__NotImplementedr   r   __ior__
ValueError)r   abcs       r   test_merge_operatorzDictTest.test_merge_operator)   s   aAaAFFH	QQA!a 89aA!45FFH	QQA!a 89aA!45FFH	%%aA!45ahhtnn5ahhrlN3ahhuo~6ahhrlN3)QYY52A!(:;*aii72A!(:;r   c                     | j                  i  d       | j                  ddi       | j                  t        i       d       | j                  t        ddi      d       y )NTr   r   F)rF   
assertTrueboolr!   s    r   	test_boolzDictTest.test_boolI   sJ    "fd#Ad2h&dAq6lD)r   c                    i }| j                  t        |j                               t                      ddd}|j                         }| j                  t        |      ddh       | j                  d|       | j                  d|       | j                  d|       | j                  d|       | j	                  t
        |j                  d        | j                  t        t        d      j                               d       y )Nr   r   rK   rL   rK   rL   rK   zdict_keys(['a']))r   setkeysassertInr   r   reprr   )r   dr+   s      r   	test_keyszDictTest.test_keysO   s    QVVX.!FFHQ#s,c1c1c1c1)QVVT2dQinn./1CDr   c                 n   i }| j                  t        |j                               t                      ddi}| j                  t        |j                               dh       | j                  t        |j                  d        | j                  t        t        d      j                               d       y )Nr   r   rU   zdict_values([1]))r   rV   valuesr   r   rY   r   r   rZ   s     r   test_valueszDictTest.test_values\   s    QXXZ#%0qEQXXZ1#.)QXXt4dQi..013EFr   c                 n   i }| j                  t        |j                               t                      ddi}| j                  t        |j                               dh       | j                  t        |j                  d        | j                  t        t        d      j                               d       y )Nr   r   r   r   rU   zdict_items([('a', 1)]))r   rV   r:   r   r   rY   r   r^   s     r   
test_itemszDictTest.test_itemsd   s    QWWY/qEQWWY&2)QWWd3dQioo/02JKr   c                    t        t         j                        } G d dt              }t        |fD ]  } |       }|j                         j                  }|j                         j                  }|j                         j                  }|||fD ]&  }| j                  ||       | j                  ||       ( d|d<   |||fD ]&  }| j                  ||       | j                  ||       (  y )Nc                       e Zd Zy))DictTest.test_views_mapping.<locals>.DictNr   r   r   r   Dictre   o   r   r   rf   barfoo)	type__dict__r   rW   mappingr]   r:   assertIsInstancer   )	r   mappingproxyrf   clsrZ   m1m2m3ms	            r   test_views_mappingzDictTest.test_views_mappingm   s    DMM*	4 	$< 	'CA!!B##B""B"b\ '%%a6  A&' AeH"b\ '%%a6  A&'	'r   c                 .   i }| j                  d|       | j                  d|v        | j                  d|v       ddd}| j                  d|       | j                  d|       | j                  d|       | j	                  t
        |j                         y )NrK   r   r   rT   rL   rM   )assertNotInassertFalserP   rX   r   r   __contains__r^   s     r   test_containszDictTest.test_contains   s    a "1%!c1c1a )Q^^4r   c                 ~    i }| j                  t        |      d       ddd}| j                  t        |      d       y )Nr   r   r   rT   )r   lenr^   s     r   test_lenzDictTest.test_len   s9    Q#!Q#r   c                 X   ddd}| j                  |d   d       | j                  |d   d       d|d<   d|d<   | j                  |d   d       | j                  |d   d       |d= | j                  |ddd	       | j                  t        |j                          G fd
dt              }i }d| |       <   | j                  t
        |j                  d        G d dt               G fddt              } |       }d||<   d|_        | j                  |j                  |       y )Nr   r   rT   rK   rL   r?   rM      )rK   rM   c                       e Zd Z fdZd Zy)$DictTest.test_getitem.<locals>.BadEqc                             r   r   r   otherExcs     r   __eq__z+DictTest.test_getitem.<locals>.BadEq.__eq__   
    er   c                      y)N   r   r!   s    r   __hash__z-DictTest.test_getitem.<locals>.BadEq.__hash__       r   Nr   r   r   r   r   r   s   r   BadEqr      s    r   r   *      c                       e Zd Zy)"DictTest.test_getitem.<locals>.ExcNr   r   r   r   r   r          r   r   c                       e Zd ZdZ fdZy)&DictTest.test_getitem.<locals>.BadHashFc                 ,    | j                   r        yNr   failr   r   s    r   r   z/DictTest.test_getitem.<locals>.BadHash.__hash__       99%Kr   Nr   r   r   r   r   r   s   r   BadHashr          Dr   r   T)r   r   r   __getitem__objectKeyError	Exceptionr   )r   rZ   r   r   xr   s        @r   test_getitemzDictTest.test_getitem   s   !3#3###3#3#cF!!,-)Q]]3	F 	 %'
(AMM26")"	f 	 I!#q}}a0r   c                     dddd}|j                          | j                  |i        | j                  t        |j                   d        y Nr   r   r?   r@   )clearr   r   r   r^   s     r   
test_clearzDictTest.test_clear   s<    AO		B)QWWd3r   c                    i }|j                  ddi       |j                  ddi       |j                  dddd       | j                  |dddd       |j                          | j                  |dddd       | j                  t        t        f|j                   d         G d d      }|j                          |j                   |              | j                  |dddd        G d	 d
t              |j                           G fdd      }| j                  |j                    |               G fdd      }| j                  |j                    |               G fdd      }| j                  |j                    |               G fddt              }| j                  i j                    |              | j                  t        i j                   dg       y )Nr   d   r      r?   r@   c                       e Zd Zd Zd Zd Zy),DictTest.test_update.<locals>.SimpleUserDictc                     dddd| _         y r   rZ   r!   s    r   __init__z5DictTest.test_update.<locals>.SimpleUserDict.__init__   s    ar   c                 6    | j                   j                         S r   )rZ   rW   r!   s    r   rW   z1DictTest.test_update.<locals>.SimpleUserDict.keys   s    vv{{}$r   c                      | j                   |   S r   r   )r   r9   s     r   r   z8DictTest.test_update.<locals>.SimpleUserDict.__getitem__   s    vvay r   N)r   r   r   r   rW   r   r   r   r   SimpleUserDictr      s    )%!r   r   c                       e Zd Zy)!DictTest.test_update.<locals>.ExcNr   r   r   r   r   r      r   r   r   c                       e Zd Z fdZy)-DictTest.test_update.<locals>.FailingUserDictc                     r   r   r   s    r   rW   z2DictTest.test_update.<locals>.FailingUserDict.keys       	r   N)r   r   r   rW   r   s   r   FailingUserDictr          r   r   c                       e Zd Z fdZd Zy)r   c                 *     G fdd      } |       S )Nc                   $    e Zd Zd Zd Z fdZy)EDictTest.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIterc                     d| _         y Nr   r9   r!   s    r   r   zNDictTest.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIter.__init__   s	    !"r   c                     | S r   r   r!   s    r   __iter__zNDictTest.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIter.__iter__       #r   c                 0    | j                   rd| _         y)Nr   rK   r   r   s    r   __next__zNDictTest.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIter.__next__   s    66%&DF#&!	r   Nr   r   r   r   r   r   r   s   r   	BogonIterr      s    #$"r   r   r   )r   r   r   s     r   rW   z2DictTest.test_update.<locals>.FailingUserDict.keys   s    	" 	" !{"r   c                     |S r   r   r   keys     r   r   z9DictTest.test_update.<locals>.FailingUserDict.__getitem__   s    
r   Nr   r   r   rW   r   r   s   r   r   z-DictTest.test_update.<locals>.FailingUserDict   s    #r   c                       e Zd Zd Z fdZy)r   c                 $     G d d      } |       S )Nc                       e Zd Zd Zd Zd Zy)r   c                 $    t        d      | _        y )NrK   )ordr9   r!   s    r   r   zNDictTest.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIter.__init__   s    !$Sr   c                     | S r   r   r!   s    r   r   zNDictTest.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIter.__iter__   r   r   c                     | j                   t        d      k  r,t        | j                         }| xj                   dz  c_         |S t        )Nzr   )r9   r   chrStopIteration)r   rtns     r   r   zNDictTest.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIter.__next__   s7    66SX-"%dff+C FFaKF#&J++r   Nr   r   r   r   r   zEDictTest.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIter   s    *$,r   r   r   )r   r   s     r   rW   z2DictTest.test_update.<locals>.FailingUserDict.keys   s    
, 
, !{"r   c                     r   r   )r   r   r   s     r   r   z9DictTest.test_update.<locals>.FailingUserDict.__getitem__   r   r   Nr   r   s   r   r   z-DictTest.test_update.<locals>.FailingUserDict   s    #r   c                       e Zd Zd Z fdZy)$DictTest.test_update.<locals>.badseqc                     | S r   r   r!   s    r   r   z-DictTest.test_update.<locals>.badseq.__iter__      r   c                             r   r   r   s    r   r   z-DictTest.test_update.<locals>.badseq.__next__  r   r   Nr   r   r   r   r   r   s   r   badseqr         r   r   )	r   r   r   r   AttributeErrorr   r   r   rJ   )r   rZ   r   r   r   r   s        @r   test_updatezDictTest.test_update   s   	!C	!B	Aa!qAO,	
qAO,9n5qxxF	! 	! 	
		!"qAO,")"			 	 	#qxx):;	 	 	#qxx):;	 	  	#qxx):;	V 	 	#ryy&(3*bii)=r   c           
      R   | j                  t        j                  d      d d d d       i | j                  j                  d             | j                  j                  d      d d d d       | j                  j                  dd      ddd       | j                  j                  g       i        d }| j                  j                   |             dd i       | j	                  t
        i j                  d        G d d	t              }| j                  |j                  d
      d
d i       | j                   |       j                  d
      d
d i       | j                  |j                  d
      |       | j                   |       j                  d
      |        G d dt              }|j                  d      }| j                  |d d d       | j                  |t        j                         | j	                  t
        t        j                          G d dt               G fddt              }| j	                  |j                  dg        G fddt              }| j	                  t        j                   |               G fddt              }| j	                  |j                  dg       t        t        t        d      t        d                  | j                  t        j                  d      t        t        t        d      dgdz                      G fddt              }t        d      D 	ci c]  }	|	|	 c}	j                         }
|
j                  d d d        | j                  |j                  h d      |
       y c c}	w )NabcrK   rL   rM   )r}      r   c               3      K   d y wr   r   r   r   r   gz!DictTest.test_fromkeys.<locals>.g  s     Gs   r   r?   c                       e Zd Zy)(DictTest.test_fromkeys.<locals>.dictlikeNr   r   r   r   dictliker     r   r   r   rK   c                       e Zd Zd Zy)&DictTest.test_fromkeys.<locals>.mydictc                 *    t        j                         S r   )collectionsUserDict)rn   s    r   __new__z.DictTest.test_fromkeys.<locals>.mydict.__new__  s    "++--r   Nr   r   r   r   r   r   r   mydictr     s    .r   r   abrT   c                       e Zd Zy)#DictTest.test_fromkeys.<locals>.ExcNr   r   r   r   r   r   $  r   r   r   c                       e Zd Z fdZy)(DictTest.test_fromkeys.<locals>.baddict1c                             r   r   r   s    r   r   z1DictTest.test_fromkeys.<locals>.baddict1.__init__'  r   r   Nr   r   r   r   r   s   r   baddict1r   &      r   r   c                       e Zd Zd Z fdZy)&DictTest.test_fromkeys.<locals>.BadSeqc                     | S r   r   r!   s    r   r   z/DictTest.test_fromkeys.<locals>.BadSeq.__iter__-  r   r   c                             r   r   r   s    r   r   z/DictTest.test_fromkeys.<locals>.BadSeq.__next__/  r   r   Nr   r   s   r   BadSeqr   ,  r   r   r   c                       e Zd Z fdZy)(DictTest.test_fromkeys.<locals>.baddict2c                             r   r   )r   r   valuer   s      r   __setitem__z4DictTest.test_fromkeys.<locals>.baddict2.__setitem__5  r   r   N)r   r   r   r  r   s   r   baddict2r  4  r   r   r  r$   c                       e Zd Z fdZy)(DictTest.test_fromkeys.<locals>.baddict3c                     S r   r   )rn   rZ   s    r   r   z0DictTest.test_fromkeys.<locals>.baddict3.__new__?  s    r   Nr   r   s   r   baddict3r  >  s    r   r
  
   >   rK   rL   rM   )r   r   fromkeysr    r   r   rl   r   r   r   r   zipr0   rE   r   )r   r   r   r   udr   r   r  r
  r9   resr   rZ   s              @@r   test_fromkeyszDictTest.test_fromkeys  s   u-Dd/MNE*A.E*4T,JKE!,aj9B,	AC1T(3)R[[!4"t"**3/#d<,,S1C:>h//4h?hj11#6A	.T 	. __T"$D12b+"6"67)T]]3")"	t 	 	#x001#6	V 	 	#t}}fh7	t 	 	#x001#6 U1XuQx()q!,d3uQx!Q3G.HI	t 	 ""I&qQU&ffh

TTT
***?;SA 's   
N$c                    dddd}| j                  |j                         |       | j                  |j                         |       | j                  |j                         dddd       |j                         }d|d<   | j                  ||       | j                  i j                         i        | j	                  t
        |j                  d        y )Nr   r   r?   r@   r}   )r    rE   r   assertNotEqualr   r   )r   rZ   rE   s      r   	test_copyzDictTest.test_copyF  s    aA1%1%qQ1#56vvx!D!$B')QVVT2r   c                    dD ]  }t        j                  |dz  ||dz  z         }| j                  |      5  i }t        |      D ]  }|||<   	 |j	                         }| j                  ||       | j                  ||       d|d<   | j                  ||       | j                  t        |      t        |      dz          d d d         y # 1 sw Y   xY w)N)r  r     i'  i r   )	dict_sizer  r   r   )	r2   	randrangesubTestr0   rE   r    r   r  rz   )r   r  rZ   r9   d2s        r   test_copy_fuzzzDictTest.test_copy_fuzzS  s    7 	6I((Q	IN :<I	2 
6y) AAaD VVX  Q'  B'#5	##Ar*  R#a&1*5
6 
6	6
6 
6s   B
CC	c                      G d d      } |       }i ddi|difD ]J  }|j                         }| j                  t        j                  |      t        j                  |             L y )Nc                       e Zd Zy)0DictTest.test_copy_maintains_tracking.<locals>.ANr   r   r   r   Ar  d  r   r   r  rK   r   val)rE   r   gc
is_tracked)r   r  r   rZ   r  s        r   test_copy_maintains_trackingz%DictTest.test_copy_maintains_trackingc  sb    	 	 csAhe- 	BABR]]1-r}}R/@A	Br   c                     t        d      D ci c]  }|| }}t        d      D ]  }||=  |j                         }| j                  ||       y c c}w )Nr  i  )r0   rE   r   )r   r+   rZ   r  s       r   test_copy_noncompactzDictTest.test_copy_noncompactm  sY     !;'aQT''s 	A!	VVXQ	 (s   
Ac                 *   i }| j                  |j                  d      d        | j                  |j                  dd      d       ddd}| j                  |j                  d      d        | j                  |j                  dd      d       | j                  |j                  d      d       | j                  |j                  dd      d       | j                  t        |j                         | j                  t        |j                  d d d        y )NrM   r?   r   r   rT   rK   )rF   getr   r   r   r^   s     r   test_getzDictTest.test_getz  s    aeeCj$'sA*!aeeCj$'sA*sQ'sA*)QUU+)QUUD$=r   c                    i }| j                  |j                  d      d        |j                  dg        | j                  |j                  d      d        |j                  dg       j                  d       | j                  |d   d   d       |j                  dg       j                  d       | j                  t	        |d         d       | j                  t        |j                          G d dt               G fd	d
t              } |       }d||<   d|_	        | j                  |j                  |g        y )Nkey0r   r?   r   r}   r   c                       e Zd Zy)%DictTest.test_setdefault.<locals>.ExcNr   r   r   r   r   r+    r   r   r   c                       e Zd ZdZ fdZy))DictTest.test_setdefault.<locals>.BadHashFc                 ,    | j                   r        yr   r   r   s    r   r   z2DictTest.test_setdefault.<locals>.BadHash.__hash__  r   r   Nr   r   s   r   r   r-    r   r   r   r   T)
rF   
setdefaultappendr   rz   r   r   r   r   r   )r   rZ   r   r   r   s       @r   test_setdefaultzDictTest.test_setdefault  s    all6*D1	VR all6*D1	UB&&q)5!a(	UB&&q)QuX*)Q\\2")"	f 	 I!#q||Q3r   c                 ,    G d dt               } |       }|di} |       }|j                  |g        | j                  |j                  d       | j                  |j                  d       | j                  |j                  |j                  z   d       y )Nc                       e Zd Zd Zd Zd Zy)/DictTest.test_setdefault_atomic.<locals>.Hashedc                      d| _         d| _        y Nr   
hash_counteq_countr!   s    r   r   z8DictTest.test_setdefault_atomic.<locals>.Hashed.__init__      "# !r   c                 .    | xj                   dz  c_         yNr   r   r8  r!   s    r   r   z8DictTest.test_setdefault_atomic.<locals>.Hashed.__hash__      1$r   c                 Z    | xj                   dz  c_         t        |       t        |      k(  S r   r9  idr   r   s     r   r   z6DictTest.test_setdefault_atomic.<locals>.Hashed.__eq__  #    "$x2e9,,r   Nr   r   r   r   r   r   r   r   r   Hashedr4        "-r   rE  r   r   )r   r/  r   r8  r9  r   rE  hashed1yhashed2s        r   test_setdefault_atomiczDictTest.test_setdefault_atomic  s    		-V 		- (aL(	Wb!++Q/++Q/))G,<,<<a@r   c           
      "    G d dt               } |       }|dddddddddi} |       }g ||<   | j                  |j                  d       | j                  |j                  d       | j                  |j                  |j                  z   d       y )Nc                       e Zd Zd Zd Zd Zy)6DictTest.test_setitem_atomic_at_resize.<locals>.Hashedc                      d| _         d| _        y r6  r7  r!   s    r   r   z?DictTest.test_setitem_atomic_at_resize.<locals>.Hashed.__init__  r:  r   c                 .    | xj                   dz  c_         yr<  r=  r!   s    r   r   z?DictTest.test_setitem_atomic_at_resize.<locals>.Hashed.__hash__  r>  r   c                 Z    | xj                   dz  c_         t        |       t        |      k(  S r   r@  rB  s     r   r   z=DictTest.test_setitem_atomic_at_resize.<locals>.Hashed.__eq__  rC  r   NrD  r   r   r   rE  rN    rF  r   rE  r   r   r   r   r?   )r   r   r8  r9  rG  s        r   test_setitem_atomic_at_resizez&DictTest.test_setitem_atomic_at_resize  s    		-V 		- (aAq!Q1a0('
++Q/++Q/))G,<,<<a@r   c           	      x   dD ]  }t        d      D ]   }d|z  }i }i }t        |      D ]$  }||t        |      <   |dk  s||t        |      <   & |dkD  r|j                         }t        |      D ]}  }|j                         x\  }}}	| j	                  |t        |             |j                         x\  }
}}| j	                  |t        |
             | j                  |dk  xr |	|k7          | j                  |       | j                  |         i }| j                  t        |j                         y )N)r      r   r   )	r0   rY   rE   popitemr   intrv   r   r   )r   copymodelog2sizesizerK   rL   r9   kavatakbvbtbrZ   s                 r   test_popitemzDictTest.test_popitem  s:    	$H ""I $({t 'A!"Ad1gJ!|%&$q'
' a<At @A"#))+-FBR$$RR1"#))+-FBR$$RR1$$X\%>bBh?@   #  ##$	$, (AII.r   c                    i }d\  }}|||<   | j                  t        |j                  d       | j                  |j                  |      |       | j                  t	        |      d       | j                  t        |j                  |       | j                  |j                  ||      |       |||<   | j                  |j                  |d      |       | j                  t
        |j                          G d dt               G fddt              } |       }d	||<   d
|_        | j                  |j                  |       y )N)r   defghir   r   c                       e Zd Zy)DictTest.test_pop.<locals>.ExcNr   r   r   r   r   rf    r   r   r   c                       e Zd ZdZ fdZy)"DictTest.test_pop.<locals>.BadHashFc                 ,    | j                   r        yr   r   r   s    r   r   z+DictTest.test_pop.<locals>.BadHash.__hash__  r   r   Nr   r   s   r   r   rh    r   r   r   r   T)	r   r   popr   rz   r   r   r   r   )r   rZ   r+   r,   r   r   r   s         @r   test_popzDictTest.test_pop  s   1!(AEE51q1%Q#(AEE1-q!a(!q!a()QUU+")"	f 	 I!#quua(r   c                     i }d|d<   | j                  t              5  |D ]
  }d||dz   <    	 d d d        y # 1 sw Y   y xY wr   r   RuntimeErrorr   rZ   r9   s      r   test_mutating_iterationz DictTest.test_mutating_iteration  sO    !|, 	 !A#	 	 		   7A c                     i }d|d<   | j                  t              5  |D ]
  }|d= d|d<    	 d d d        y # 1 sw Y   y xY wr6  rm  ro  s      r   test_mutating_iteration_deletez'DictTest.test_mutating_iteration_delete  sR    !|, 	 aD!	 	 	rq  c                     i }d|d<   | j                  t              5  |j                         D ]
  }|d= d|d<    	 d d d        y # 1 sw Y   y xY wr6  )r   rn  r]   ro  s      r   *test_mutating_iteration_delete_over_valuesz3DictTest.test_mutating_iteration_delete_over_values  sX    !|, 	XXZ aD!	 	 	   AAc                     i }d|d<   | j                  t              5  |j                         D ]
  }|d= d|d<    	 d d d        y # 1 sw Y   y xY wr6  r   rn  r:   ro  s      r   )test_mutating_iteration_delete_over_itemsz2DictTest.test_mutating_iteration_delete_over_items   sX    !|, 	WWY aD!	 	 	rv  c                      G fdd       d      } d      }|di}||f_         d||<   | j                  ||di       y )Nc                   (    e Zd ZdZd Zd Z fdZy)/DictTest.test_mutating_lookup.<locals>.NastyKeyNc                     || _         y r   )r  )r   r  s     r   r   z8DictTest.test_mutating_lookup.<locals>.NastyKey.__init__.  s	    "
r   c                      yr   r   r!   s    r   r   z8DictTest.test_mutating_lookup.<locals>.NastyKey.__hash__1  s    r   c                     j                   rj                   \  }}d _         ||= | j                  |j                  k(  S r   )mutate_dictr  )r   r   r   r   NastyKeys       r   r   z6DictTest.test_mutating_lookup.<locals>.NastyKey.__eq__5  s=    ''"*"6"6KFC+/H(szzU[[00r   )r   r   r   r  r   r   r   )r  s   r   r  r|  +  s    K#1r   r  r   r   )r  r   )r   key1key2rZ   r  s       @r   test_mutating_lookupzDictTest.test_mutating_lookup)  sS    	1 	1" {{1I !4y$T1I&r   c                 D   i }| j                  t        |      d       d|d<   | j                  t        |      d       i }||d<   | j                  t        |      d        G d dt               G fdd	t              }d |       i}| j	                  t        |       y )
Nz{}r   r   z{1: 2}z
{1: {...}}c                       e Zd Zy)DictTest.test_repr.<locals>.ExcNr   r   r   r   r   r  L  r   r   r   c                       e Zd Z fdZy)#DictTest.test_repr.<locals>.BadReprc                             r   r   r   s    r   __repr__z,DictTest.test_repr.<locals>.BadRepr.__repr__O  r   r   N)r   r   r   r  r   s   r   BadReprr  N  r   r   r  )r   rY   r   r   r   )r   rZ   r  r   s      @r   	test_reprzDictTest.test_reprC  s    a$'!a(+!a,/")"	f 	 	N#tQ'r   c                 t    i }t        t        dz         D ]  }d|i} | j                  t        t        |       y r   )r0   r   r   RecursionErrorrY   ro  s      r   test_repr_deepzDictTest.test_repr_deepU  s<    (1,- 	AAA	.$2r   c                    | j                  i i        | j                  ddiddi        G d dt               G fddt              } |       di}ddi}| j                        5  ||k(   d d d        y # 1 sw Y   y xY w)Nr   r   c                       e Zd Zy)DictTest.test_eq.<locals>.ExcNr   r   r   r   r   r  _  r   r   r   c                       e Zd Z fdZd Zy) DictTest.test_eq.<locals>.BadCmpc                             r   r   r   s     r   r   z'DictTest.test_eq.<locals>.BadCmp.__eq__b  r   r   c                      yr   r   r!   s    r   r   z)DictTest.test_eq.<locals>.BadCmp.__hash__d      r   Nr   r   s   r   BadCmpr  a  s    r   r  )r   r   r   r   )r   r  d1r  r   s       @r   test_eqzDictTest.test_eq[  s    R !Q!Q(")"	V 	 h]Vs# 	"H	 	 	s   (A77B c                 L    | j                  d        | j                  d        y )Nc                 "    | j                         S r   )rW   r   s    r   <lambda>z.DictTest.test_keys_contained.<locals>.<lambda>n  s    QVVX r   c                 "    | j                         S r   r:   r  s    r   r  z.DictTest.test_keys_contained.<locals>.<lambda>o  s    QWWY r   )helper_keys_containedr!   s    r   test_keys_containedzDictTest.test_keys_containedm  s     ""#56""#67r   c                 b    |t                     } |t                     } |ddd      } |dddd      } |dddd      } |dddd      }| j                  ||k         | j                  ||k         | j                  ||kD         | j                  ||k\         | j                  ||k\         | j                  ||kD         | j                  ||k         | j                  ||k         | j                  ||k         | j                  ||k         | j                  ||kD         | j                  ||k\         | j                  ||k\         | j                  ||k         | j                  ||kD         | j                  ||k         | j                  ||k(         | j                  ||k7         | j                  ||k(         | j                  ||k7         | j                  ||k(         | j                  ||k7         | j                  ||k7         | j                  ||k(         y )Nr   r   ra   r?   r@   )r}   r   r?   )r   rP   rv   )r   fnemptyempty2smallerlargerlarger2larger3s           r   r  zDictTest.helper_keys_containedq  s    46
DFQZ.qAO$Q!_%Q!_%6)*6)*')*')*F*+F*+G+,G+,G+,G+,G+,G+, 	6)*6)*6)*6)*')*6)* 	(&)')*() 	')*7*+r   c                     G d d      }d |       i}d |       i}| j                  t              5  |j                         |j                         k(   d d d        | j                  t              5  |j                         |j                         k7   d d d        | j                  t              5  |j                         |j                         k   d d d        | j                  t              5  |j                         |j                         k\   d d d         |        |       d}| j                  t              5  |j                         |j                         k   d d d        | j                  t              5  |j                         |j                         kD   d d d        y # 1 sw Y   UxY w# 1 sw Y   #xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   {xY w# 1 sw Y   y xY w)Nc                       e Zd Zd Zy)9DictTest.test_errors_in_view_containment_check.<locals>.Cc                     t         r   rn  rB  s     r   r   z@DictTest.test_errors_in_view_containment_check.<locals>.C.__eq__  s    ""r   Nr   r   r   r   r   r   r   Cr    s    #r   r  r   ra   rx  )r   r  r  r  d3s        r   %test_errors_in_view_containment_checkz.DictTest.test_errors_in_view_containment_check  s   	# 	# XX|, 	%HHJ"((*$	%|, 	%HHJ"((*$	%|, 	%HHJ"((*$	%|, 	%HHJ"((*$	% |, 	$HHJ#	$|, 	$HHJ#	$ 	$	% 	%	% 	%	% 	%	% 	%	$ 	$	$ 	$sG   "F'1"F40"G/"G="G<"G%'F14F>G
GG"%G.c                 &   dddj                         }ddddj                         }ddij                         }| j                  ||z
  t                      | j                  ||z
  ddh       | j                  ||z
  dh       | j                  ||z
  dh       | j                  ||z  ddh       | j                  ||z  t                      | j                  ||z  h d       | j                  ||z  dh       | j                  ||z  h d       y )	Nr   r   ra   r?   r@   r}   >   r   r   r?   >   r   r   r}   )rW   r   rV   r   k1k2k3s       r   $test_dictview_set_operations_on_keysz-DictTest.test_dictview_set_operations_on_keys  s    QZ__Q!_!!#UZZ\b#%(b1Q%(b1#&b1#&b1Q%(b#%(b'*b1#&b'*r   c                 &   dddj                         }ddddj                         }ddij                         }| j                  ||z
  t                      | j                  ||z
  ddh       | j                  ||z
  d	h       | j                  ||z
  d
h       | j                  ||z  ddh       | j                  ||z  t                      | j                  ||z  h d       | j                  ||z  d	h       | j                  ||z  h d       y )Nr   r   ra   r?   r@   r}   rA   rB   rC   r}   r}   >   rA   rB   rC   >   rA   rB   r  )r:   r   rV   r  s       r   %test_dictview_set_operations_on_itemsz.DictTest.test_dictview_set_operations_on_items  s    QZQ!_""$U[[]b#%(b5%.1b5'*b5'*b5%.1b#%(b"78b5'*b"78r   c                    t         j                  }t        d      D ]  }t        d      D ci c]  } |d      s| |d       }}t        d      D ci c]  } |d      s| |d       }}| j                  ||      5  t	        |j                               t	        |j                               z  }|j                         |j                         z  }| j                  ||       d d d         y c c}w c c}w # 1 sw Y   xY w)Nr   r   r   r?   )leftright)r2   r  r0   r  rV   r:   r   )r   rr_r   r  r  expectedactuals           r   test_items_symmetric_differencez(DictTest.test_items_symmetric_difference  s    s 	3A%*2Y8"Q%AbeG8D8&+Bi92a5Qr!uW9E94u5 3tzz|,s5;;=/AA5  23 3	3893 3s#   C4C4C9"C9A'C>>D	c                 l   | j                  ddij                         dhk(         | j                  dhddij                         k(         | j                  ddij                         dhz  ddh       | j                  dhddij                         z  ddh       | j                  ddij                         dhk(         | j                  dhddij                         k(         | j                  ddij                         dhz  ddh       | j                  dhddij                         z  ddh       y )Nr   r   rA   )rP   rW   r   r:   r!   s    r   "test_dictview_mixed_set_operationsz+DictTest.test_dictview_mixed_set_operations  s
   1

+,!uzz|+,!A+aV4!!uzz|+aV41%01Aa5;;=01!A!,uaj9!!u{{},uaj9r   c                    | j                  t        t        d             | j                  t        i d              G d dt              } |ddd      }| j                  |d   d       | j                  |d   d       | j	                  d|       | j	                  d|j                                | j                  |d   d	        G d
 dt              } |       }| j                  t              5 }|d	    d d d        | j                  j                  j                  d        G d dt              } |       }| j                  t              5 }|d	    d d d        | j                  |j                  j                  d        G d dt              } |       }	| j                  t              5 }|	d	    d d d        | j                  |j                  j                  d       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   HxY w)N__missing__c                       e Zd Zd Zy) DictTest.test_missing.<locals>.Dc                      yr   r   r   s     r   r  z,DictTest.test_missing.<locals>.D.__missing__  r   r   Nr   r   r   r  r   r   r   Dr    s    r   r  r   r}   )r   r?   r   r?   r   c                       e Zd Zd Zy) DictTest.test_missing.<locals>.Ec                     t        |      r   r  r   s     r   r  z,DictTest.test_missing.<locals>.E.__missing__  s    "3''r   Nr  r   r   r   Er    s    (r   r  )r   c                       e Zd Zd Zy) DictTest.test_missing.<locals>.Fc                     d | _         y )Nc                      y r   r   )r   s    r   r  z;DictTest.test_missing.<locals>.F.__init__.<locals>.<lambda>  s    r   )r  r!   s    r   r   z)DictTest.test_missing.<locals>.F.__init__  s
    #3 r   Nr   r   r   r   Fr    s    4r   r  c                       e Zd Zy) DictTest.test_missing.<locals>.GNr   r   r   r   Gr    r   r   r  )rv   hasattrr   r   ru   rW   r   rn  	exceptionargsr   )
r   r  rZ   r  erM   r  fr  r   s
             r   test_missingzDictTest.test_missing  s   }56]34	 	 !lO1q!1q!AAFFH%1r"	( 	( C|, 	bE	))51	4 	4 Cx( 	AbE	))51	 	Cx( 	AbE	))51%	 		 		 	s$   1G$G0/G<$G-0G9<Hc                     i }| j                  t              5 }|d    d d d        | j                  j                  j                  d       y # 1 sw Y   0xY w)Nr   )r  )r   r   r   r  r  )r   rZ   rM   s      r   test_tuple_keyerrorzDictTest.test_tuple_keyerror  sM    x( 	AdG	))73	 	s   AAc                      G d dt                G fdd      }i } |       } |       }d||<   dD ]0  }| j                        5  t        |t                      d d d        2 y # 1 sw Y   =xY w)Nc                       e Zd Zy).DictTest.test_bad_key.<locals>.CustomExceptionNr   r   r   r   CustomExceptionr    r   r   r  c                       e Zd Zd Z fdZy))DictTest.test_bad_key.<locals>.BadDictKeyc                 ,    t        | j                        S r   )hash	__class__r!   s    r   r   z2DictTest.test_bad_key.<locals>.BadDictKey.__hash__  s    DNN++r   c                 8    t        || j                        r|S r   )
isinstancer  )r   r   r  s     r   r   z0DictTest.test_bad_key.<locals>.BadDictKey.__eq__"  s    eT^^4))r   Nr   r   r   r   r   )r  s   r   
BadDictKeyr    s    ,r   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}))r   r   execlocals)r   r  rZ   x1x2stmtr  s         @r   test_bad_keyzDictTest.test_bad_key  s~    	i 		 	 \\"* 	%D ""?3 %T68$% %	%% %s   A((A1	c                     i }t        d      D ]  }|||<   	 t        d      D ]  }||=  t        dd      D ]  }|||<   	 y )Nr   	   )r0   ro  s      r   test_resize1zDictTest.test_resize15  s]     q 	AAaD	q 	A!	q! 	AAaD	r   c                      G fddt               }i dd |       <   d |       <   d |       <   d |       <   d |       <   d	d
d<   y )Nc                        e Zd Zd Z fdZy) DictTest.test_resize2.<locals>.Xc                      y)Nr   r   r!   s    r   r   z)DictTest.test_resize2.<locals>.X.__hash__J  r  r   c                 *    rj                          yNFr   )r   r   rZ   resizings     r   r   z'DictTest.test_resize2.<locals>.X.__eq__L  s    GGIr   Nr  )rZ   r  s   r   Xr  I  s    r   r  Fr   r   r?   r}   r   Tr$   r  )r   )r   r  rZ   r  s     @@r   test_resize2zDictTest.test_resize2E  s`    	 	 !#!#!#!#!#!r   c           
      |    | j                  t              5  ddz  d d d d d d d d}d d d        i }y # 1 sw Y   i }y xY w)Nr   r   )rK   rL   rM   rZ   r  r  r   h)r   ZeroDivisionErrorr^   s     r   $test_empty_presized_dict_in_freelistz-DictTest.test_empty_presized_dict_in_freelist[  sN     01 	21f4dDD2A	2 	2 s   0;c                 x    G d dt               }t        j                  t        j                  t        j                  f}|D ]w  } |       }t        j                  |      }|di} ||      |_        t        |j                        |_	        ~~t        j                          | j                   |       d d       y y )Nc                       e Zd Zy)+DictTest.test_container_iterator.<locals>.CNr   r   r   r   r  r
  f  r   r   r  r   zCycle was not collected)r   r   r:   r]   rW   weakrefrefr,   iterr   r   collectrF   )r   r  viewsr,   objr  	containers          r   test_container_iteratorz DictTest.test_container_iteratorc  s    	 	T[[$))4 	BA#C++c"CaIiLCEKCEYJJLMM#%'@A	Br   c                     t        j                          t        j                          | j                  t        j                  |      |       y r   )r   r  rv   r!  r   ts     r   _not_trackedzDictTest._not_trackeds  s-    





q)1-r   c                     | j                  t        j                  |      |       t        j                          t        j                          | j                  t        j                  |      |       y r   )rP   r   r!  r  r  s     r   _trackedzDictTest._trackedy  sB    a(!,





a(!,r   c                 n    t        d      D ]'  }i }t        d      D ]  }||t        |      <    ||d<   ) y )Nr  rh   )r0   str)r   r9   rZ   js       r   !test_string_keys_can_track_valuesz*DictTest.test_string_keys_can_track_values  sC    r 	AA2Y #a&	AeH		r   c                    dddg f\  }}}}| j                  i        | j                  |d|||di       | j                  ddd       | j                  dt        d       | j                  dt               i       | j                  dg i       | j                  dg fi       | j                  di i       | j                  dt	               i       y )	N      ?rK   )r   Nr   r   r   )r   rL   )r   )NTFr   )r  rW  r   r  rV   )r   r   rI  r   ws        r   test_track_literalszDictTest.test_track_literals  s     #y",
1a"1R1a*+c*+a#>?1fh-( 	q"gq2%j!q"gq#%j!r   c                 |    G d dt               }dddt               fg  |       f\  }}}}}t               }| j                  |       d|d<   | j                  |       d||<   | j                  |       d||<   | j                  |       | j                  |j                                ||d<   | j	                  |       | j	                  |j                                d |d<   | j                  |       | j                  |j                                t               }t               }||d<   | j                  |       | j	                  |       ||d<   | j	                  |       t        j                  |||g      }| j                  |       t               }|j                  |       | j                  |       t        j                  ||||g      }| j	                  |       t               }|j                  |       | j	                  |       t        |||	      }| j                  |       t        ||||
      }| j	                  |       t               }|j                  |||	       | j                  |       |j                  |       | j	                  |       t        ||f|dfg      }| j                  |       t        ||f||fg      }| j	                  |       t               }|j                  ||f|dfg       | j                  |       |j                  ||f||fg       | j	                  |       y )Nc                       e Zd Zy)-DictTest.test_track_dynamic.<locals>.MyObjectNr   r   r   r   MyObjectr#    r   r   r$  r  rK   r   r   r?   r}   r   rI  r   )r   rI  r   r  )r  )r   r   r  rE   r  r  r   )	r   r$  r   rI  r   r  orZ   dds	            r   test_track_dynamiczDictTest.test_track_dynamic  s   	v 	S1fh-XZ?1aAF!!!!!!!!&&(#!aaffh!!!&&(# FV!"a1bMM1a)$!V
		!"MM1aA,'aV
		!b1Q!1Q!$aF	1Q!	1a1a&1a&!"!1a&1a&!"aF	1a&1a&!"!	1a&1a&!"ar   c                 N     G d dt               }| j                   |              y )Nc                       e Zd Zy),DictTest.test_track_subtypes.<locals>.MyDictNr   r   r   r   MyDictr+    r   r   r,  )r   r  )r   r,  s     r   test_track_subtypeszDictTest.test_track_subtypes  s    	T 	fhr   c                      G d d      }g }t        |      D ]9  } |       }d\  |_        |_        |_        |j	                  |j
                         ; |S )Nc                       e Zd Zy)(DictTest.make_shared_key_dict.<locals>.CNr   r   r   r   r  r0    r   r   r  r@   )r0   r   rI  r   r0  rj   )r   r8   r  dictsr9   rK   s         r   make_shared_key_dictzDictTest.make_shared_key_dict  sU    	 	 q 	%AA#MACacLL$	%
 r   c                 6   | j                  d      \  }}d|d<   t        j                  |      }d|d<   |j                  dd       t        j                  |      }d|d<   | j	                  t        |      g d       | j	                  t        |      g d       y)zcsplit table must keep correct insertion
        order when attributes are adding using setdefault()r   r   rK   rL   )r   rI  r   rK   rL   )r   rI  r   rL   rK   N)r2  sys	getsizeofr/  r   list)r   rK   rL   size_asize_bs        r   test_splittable_setdefaultz#DictTest.test_splittable_setdefault  s     ((+1#q!#	S!q!#a";<a";<r   c                    | j                  d      \  }}t        j                  |      }|d= | j                  t              5  |d= ddd       | j                  t        |      ddg       | j                  t        |      g d       d|d<   | j                  t        |      g d       | j                  t        |      g d       y# 1 sw Y   xY w)	z*split table must be combined when del d[k]r   rI  Nr   r   r%  r   r   r   rI  )r2  r4  r5  r   r   r   r6  )r   rK   rL   	orig_sizes       r   test_splittable_delzDictTest.test_splittable_del  s     ((+1MM!$	cFx( 	#	 	a3*-a/2 #a/2a/2	 	s   CCc                    | j                  d      \  }}|j                  d       | j                  t              5  |j                  d       d d d        | j	                  t        |      ddg       | j	                  t        |      g d       d|d<   | j	                  t        |      g d       | j	                  t        |      g d       y # 1 sw Y   xY w)Nr   rI  r   r   r%  r   r;  )r2  rj  r   r   r   r6  r   rK   rL   s      r   test_splittable_popzDictTest.test_splittable_pop  s    ((+1	c
x( 	EE#J	 	a3*-a/2 #a/2a/2	 	s   CCc                     | j                  d      \  }}d|d<   | j                  t              5  |j                  d       ddd       y# 1 sw Y   yxY w)z3pop a pending key in a split table should not crashr   r}   rK   N)r2  r   r   rj  r?  s      r   test_splittable_pop_pendingz$DictTest.test_splittable_pop_pending  sO     ((+1#x( 	EE#J	 	 	s   A

Ac                    | j                  d      \  }}t        j                  |      }|j                         }| j	                  |d       | j                  t              5  |d= ddd       | j                  t        j                  |      |       | j	                  t        |      ddg       | j	                  t        |      g d       y# 1 sw Y   ixY w)z-split table must be combined when d.popitem()r   )r   r?   r   Nr   rI  r%  )	r2  r4  r5  rV  r   r   r   assertGreaterr6  )r   rK   rL   r<  items        r   test_splittable_popitemz DictTest.test_splittable_popitem(  s     ((+1MM!$	yy{x(x( 	#	 	3==+Y7a3*-a/2	 	s   !CCc                      G d d      } |d      } |d      }| j                  t        |j                        g d       i }|j                  |j                         | j                  t        |      g d       y)z0dict.update(other) must preserve order in other.c                       e Zd Zd Zy)*DictTest.test_splittable_update.<locals>.Cc                 ^    |rd\  | _         | _        | _        y d\  | _        | _        | _         y )Nr@   r   )r   orders     r   r   z3DictTest.test_splittable_update.<locals>.C.__init__<  s)    -4*DFDFDF-4*DFDFDFr   Nr   r   r   r   r  rI  ;  s    5r   r  TF)rM   rL   rK   N)r   r6  rj   r   )r   r  r&  rZ   s       r   test_splittable_updatezDictTest.test_splittable_update8  sb    	5 	5 dGeHajj)?;	a/2r   c                     G d d      } |       }d|_         |j                  }t        j                  |      }d|d<   | j	                  t        j                  |      |       | j                  t        |      ddg       y)zMsplit table must be correctly resized and converted to generic combined tablec                       e Zd Zy)<DictTest.test_splittable_to_generic_combinedtable.<locals>.CNr   r   r   r   r  rO  L  r   r   r  r   r   r   N)r   rj   r4  r5  rD  r   r6  )r   r  rK   rZ   before_resizes        r   (test_splittable_to_generic_combinedtablez1DictTest.test_splittable_to_generic_combinedtableI  sm    	 	 CJJa(!3==+];a3(+r   c                 
   t        t        j                  dz         D ]  }dddd}t        |      }t        j                  ||      }t        j
                  |      }| j                  t        |      t        |             t        j
                  |      }	 t        |      }t        j                  ||      }t        j
                  |      }||= | j                  t        |      t        |              y # t        $ r Y w xY wNr   rK   rL   rM   r@   )
r0   pickleHIGHEST_PROTOCOLr  dumpsloadsr   r6  nextr   r   protodataitrZ   drops         r   test_iterator_picklingzDictTest.test_iterator_picklingX  s    622Q67 	3ESC(DdBR'AaBT"XtDz2aBBx R'AaBT
T"XtDz2	3 ! s   C66	DDc                 <   t        t        j                  dz         D ]  }dddd}t        |j	                               }t        j
                  ||      }t        j                  |      }| j                  |t        j                  j                         | j                  t        |      |       t        j                  |      }t        |      }t        j
                  ||      }t        j                  |      }||d   = | j                  t        |      |        y Nr   rK   rL   rM   r@   r   )r0   rT  rU  r  r:   rV  rW  rl   r   r   Iteratorr   r   rX  r   rZ  r[  itorgrZ   r\  r]  s          r   test_itemiterator_picklingz#DictTest.test_itemiterator_picklingj  s    622Q67 	-ESC(D&EUE*AaB !!"koo&>&>?T"Xt,aB8DR'AaBT!WT"Xt,'	-r   c           
      l   t        t        j                  dz         D ]  }dddd}t        |j	                               }t        j
                  ||      }t        j                  |      }| j                  t        |      t        |j	                                      t        j                  |      }t        |      }t        j
                  ||      }t        j                  |      }t        |      |gz   }| j                  t        |      t        t        |j	                                             y rS  )r0   rT  rU  r  r]   rV  rW  r   r6  rX  sortedr   rZ  r[  r\  rZ   r]  r]   s          r   test_valuesiterator_picklingz%DictTest.test_valuesiterator_pickling  s    622Q67 	JESC(Ddkkm$BR'AaBT"XtDKKM':;aB8DR'AaB"X&FVF^VD4G-HI	Jr   c           	      .   t        t        j                  dz         D ]  }dddd}t        |      }t        j                  ||      }t        j
                  |      }| j                  t        |      t        t        |                   t        j
                  |      }	 t        |      }t        j                  ||      }t        j
                  |      }||= | j                  t        |      t        t        |                    y # t        $ r Y w xY wrS  )
r0   rT  rU  reversedrV  rW  r   r6  rX  r   rY  s         r   test_reverseiterator_picklingz&DictTest.test_reverseiterator_pickling  s    622Q67 	=ESC(D$BR'AaBT"XtHTN';<aBBx R'AaBT
T"XtHTN';<	= ! s   D	DDc                 <   t        t        j                  dz         D ]  }dddd}t        |j	                               }t        j
                  ||      }t        j                  |      }| j                  |t        j                  j                         | j                  t        |      |       t        j                  |      }t        |      }t        j
                  ||      }t        j                  |      }||d   = | j                  t        |      |        y r`  )r0   rT  rU  rj  r:   rV  rW  rl   r   r   ra  r   r   rX  rb  s          r   !test_reverseitemiterator_picklingz*DictTest.test_reverseitemiterator_pickling  s    622Q67 	-ESC(DTZZ\*EUE*AaB !!"koo&>&>?T"Xt,aB8DR'AaBT!WT"Xt,'	-r   c           
      l   t        t        j                  dz         D ]  }dddd}t        |j	                               }t        j
                  ||      }t        j                  |      }| j                  t        |      t        t        |j	                                            t        j                  |      }t        |      }t        j
                  ||      }t        j                  |      }t        |      |gz   }| j                  t        |      t        |j	                                       y rS  )r0   rT  rU  rj  r]   rV  rW  r   r6  rX  rf  rg  s          r   #test_reversevaluesiterator_picklingz,DictTest.test_reversevaluesiterator_pickling  s    622Q67 	DESC(D$++-(BR'AaBT"XtHT[[],C'DEaB8DR'AaB"X&FVF^VDKKM-BC	Dr   c           	           G d d      } |d      } G d dt               }| j                  |j                  t        | |d                   | j                  |j                  |j                   |d                y )Nc                       e Zd Zd Zy)=DictTest.test_instance_dict_getattr_str_subclass.<locals>.Fooc                     || _         y r   )msg)r   rt  s     r   r   zFDictTest.test_instance_dict_getattr_str_subclass.<locals>.Foo.__init__  s	    r   Nr   r   r   r   Foorr    s    r   ru  123c                       e Zd Zy)>DictTest.test_instance_dict_getattr_str_subclass.<locals>._strNr   r   r   r   _strrx    r   r   ry  rt  )r  r   rt  getattrrj   )r   ru  r  ry  s       r   'test_instance_dict_getattr_str_subclassz0DictTest.test_instance_dict_getattr_str_subclass  sc    	 	 J	3 	4; 78

4; 78r   c                      G d d      } |       }d|j                   d<   d|_        | j                  |j                   ddd       y )Nc                       e Zd Zy)FDictTest.test_object_set_item_single_instance_non_str_key.<locals>.FooNr   r   r   r   ru  r~    r   r   ru  r   rK   )r   rK   )rj   rK   r   )r   ru  r  s      r   0test_object_set_item_single_instance_non_str_keyz9DictTest.test_object_set_item_single_instance_non_str_key  s:    E

1s^4r   c                      G fdd      }dD ci c]
  }| |        c}t              D ]  }||<   	 y c c}w )Nc                       e Zd Z fdZy)4DictTest.check_reentrant_insertion.<locals>.Mutatingc                             y r   r   )r   rZ   mutates    r   __del__z<DictTest.check_reentrant_insertion.<locals>.Mutating.__del__  s
    q	r   Nr   r   r   r  )rZ   r  s   r   Mutatingr    s    r   r  abcdefghijklmnopqr)r6  )r   r  r  r+   rZ   s    `  @r   check_reentrant_insertionz"DictTest.check_reentrant_insertion  sF    	 	 %99qQ
]9a 	AAaD	 :s   <c                      d } j                  |        fd} j                  |       d } j                  |       y )Nc                     d| d<   y )Nr   rL   r   r   s    r   r  z1DictTest.test_reentrant_insertion.<locals>.mutate  s    AcFr   c                 \    | j                  j                         | j                          y r   )r   rj   r   )rZ   r   s    r   r  z1DictTest.test_reentrant_insertion.<locals>.mutate  s    HHT]]#GGIr   c                 0    | r| j                          | ry y r   )rV  r   s    r   r  z1DictTest.test_reentrant_insertion.<locals>.mutate  s    		 r   )r  )r   r  s   ` r   test_reentrant_insertionz!DictTest.test_reentrant_insertion  s@    	&&v.	 	&&v.	 	&&v.r   c                      G fdd      }t        dd      D cg c]  }|df }}t        |      d |       <    |       dddi}| j                  t        |j                         y c c}w )Nc                       e Zd Zd Z fdZy))DictTest.test_merge_and_mutate.<locals>.Xc                      yr6  r   r!   s    r   r   z2DictTest.test_merge_and_mutate.<locals>.X.__hash__  r  r   c                 &    j                          yr  r   )r   r&  r   s     r   r   z0DictTest.test_merge_and_mutate.<locals>.X.__eq__  s    r   Nr  )r   s   r   r  r    s    r   r  r   i9  r   )r0   r   r   rn  r   )r   r  r9   lrZ   r   s        @r   test_merge_and_mutatezDictTest.test_merge_and_mutate  sj    	 	 "!TN+qaU++Qac
S!QN,%8	 ,s   A+c                     t        j                  | t        t               t        j                  | d t               t        j                  | d t               t        j                  | d t               y )Nc                 4    t        | j                               S r   )r  rW   r   s    r   r  z4DictTest.test_free_after_iterating.<locals>.<lambda>  s    4> r   c                 4    t        | j                               S r   )r  r]   r   s    r   r  z4DictTest.test_free_after_iterating.<locals>.<lambda>  s    4
;K r   c                 4    t        | j                               S r   )r  r:   r   s    r   r  z4DictTest.test_free_after_iterating.<locals>.<lambda>  s    4	? r   )r   check_free_after_iteratingr  r   r!   s    r   test_free_after_iteratingz"DictTest.test_free_after_iterating  sM    **4t<**41I4P**41KTR**41JDQr   c                      G fdd      } |       di |        |       i| j                  k(          G fdd      }d |       i}dt               i| j                  |k(         y )Nc                   (    e Zd ZfdZ fdZd Zy)9DictTest.test_equal_operator_modifying_operand.<locals>.Xc                 &    j                          y r   r   )r   dict_bs    r   r  zADictTest.test_equal_operator_modifying_operand.<locals>.X.__del__  s    r   c                 &    j                          yNTr   )r   r   dict_as     r   r   z@DictTest.test_equal_operator_modifying_operand.<locals>.X.__eq__      r   c                      yN   r   r!   s    r   r   zBDictTest.test_equal_operator_modifying_operand.<locals>.X.__hash__  r   r   N)r   r   r   r  r   r   )r  r  s   r   r  r    s    r   r  r   c                       e Zd Z fdZy)9DictTest.test_equal_operator_modifying_operand.<locals>.Yc                 &    j                          yr  r   )r   r   dict_ds     r   r   z@DictTest.test_equal_operator_modifying_operand.<locals>.Y.__eq__  r  r   Nr  )r  s   r   Yr    s    r   r  )rP   rV   )r   r  r  dict_cr  r  r  s       @@@r   %test_equal_operator_modifying_operandz.DictTest.test_equal_operator_modifying_operand
  sk    		 		 #q#qs&()	 	
 QSSU&()r   c                      G fddt               }i  |d      d |d      di	 t        j                         y # t        $ r Y y w xY w)Nc                       e Zd Zd Z fdZy)ADictTest.test_fromkeys_operator_modifying_dict_operand.<locals>.Xc                      yr  r   r!   s    r   r   zJDictTest.test_fromkeys_operator_modifying_dict_operand.<locals>.X.__hash__(  r   r   c                 B    t              dkD  rj                          yNr   Frz   r   r   r   rZ   s     r   r   zHDictTest.test_fromkeys_operator_modifying_dict_operand.<locals>.X.__eq__+      q6A:GGIr   Nr  r   s   r   r  r  '      r   r  r   r   rW  r   r  rn  r   r  rZ   s     @r   -test_fromkeys_operator_modifying_dict_operandz6DictTest.test_fromkeys_operator_modifying_dict_operand%  sO    	 	 qT1adA	MM! 		s   > 	A
	A
c                      G fddt               }i  |d       |d      h	 t        j                         y # t        $ r Y y w xY w)Nc                       e Zd Zd Z fdZy)@DictTest.test_fromkeys_operator_modifying_set_operand.<locals>.Xc                      yr  r   r!   s    r   r   zIDictTest.test_fromkeys_operator_modifying_set_operand.<locals>.X.__hash__:  r   r   c                 B    t              dkD  rj                          yr  r  r  s     r   r   zGDictTest.test_fromkeys_operator_modifying_set_operand.<locals>.X.__eq__=  r  r   Nr  r   s   r   r  r  9  r  r   r  r   r   r  r  s     @r   ,test_fromkeys_operator_modifying_set_operandz5DictTest.test_fromkeys_operator_modifying_set_operand7  sJ    	 	 qT1Q4L	MM! 		s   < 	AAc                 h     G fdd      }dt               id |       fj                         v  y )Nc                       e Zd Z fdZy):DictTest.test_dictitems_contains_use_after_free.<locals>.Xc                 0    j                          t        S r   r   rH   r  s     r   r   zADictTest.test_dictitems_contains_use_after_free.<locals>.X.__eq__K      	%%r   Nr  r   s   r   r  r  J  s    &r   r  r   )rV   r:   r  s     @r   &test_dictitems_contains_use_after_freez/DictTest.test_dictitems_contains_use_after_freeI  s.    	& 	&
 J	
ACAGGIr   c                 `     G fddt               } |       di| j                  dv        y )Nc                       e Zd Z fdZd Zy)4DictTest.test_dict_contain_use_after_free.<locals>.Sc                 0    j                          t        S r   r  r  s     r   r   z;DictTest.test_dict_contain_use_after_free.<locals>.S.__eq__U  r  r   c                     t        d      S )Ntestr  r!   s    r   r   z=DictTest.test_dict_contain_use_after_free.<locals>.S.__hash__Y      F|#r   Nr   r   s   r   Sr  T  s    &$r   r  r  r  )r  rv   )r   r  rZ   s     @r    test_dict_contain_use_after_freez)DictTest.test_dict_contain_use_after_freeR  s.    	$ 	$ S'N1%r   c                 H     G fdd      } |       dgt        g       y )Nc                       e Zd Z fdZy),DictTest.test_init_use_after_free.<locals>.Xc                     g d d  yr  r   )r   pairs    r   r   z5DictTest.test_init_use_after_free.<locals>.X.__hash__a  s    Qr   N)r   r   r   r   )r  s   r   r  r  `  s    r   r  {   )r   )r   r  r  s     @r   test_init_use_after_freez!DictTest.test_init_use_after_free_  s#    	 	
 SzdVr   c                      G fddt               }t        d      D ci c]  }| ||       c}fd}| j                  t        |       y c c}w )Nc                       e Zd Z fdZy);DictTest.test_oob_indexing_dictiter_iternextitem.<locals>.Xc                 &    j                          y r   r   r^   s    r   r  zCDictTest.test_oob_indexing_dictiter_iternextitem.<locals>.X.__del__j  s    	r   Nr  r   s   r   r  r  i  r   r   r  r'   c                  L    j                         D ]  } | d   dk(  sd d<    y )Nr   r   r  )resultrZ   s    r   iter_and_mutatezIDictTest.test_oob_indexing_dictiter_iternextitem.<locals>.iter_and_mutateo  s,    '')  !9>AaD r   )rW  r0   r   rn  )r   r  r9   r  rZ   s       @r   'test_oob_indexing_dictiter_iternextitemz0DictTest.test_oob_indexing_dictiter_iternextitemh  sI    	 	 $Ah'Q!W'	 
 	,8 (s   Ac                     dddddd}|d= t        |      }| j                  t        |      t        d             | j                  t        t
        |       y )	Nr   r   r   r?   r}   )rK   rL   rh   rM   rZ   rh   dcba)rj  r   r6  r   r   rX  )r   rZ   rs      r   test_reversedzDictTest.test_reversedv  sL    !AAA6eHQKa$v,/-q1r   c                 ,   | j                  t        t        i             g        | j                  t        t        i j                                     g        | j                  t        t        i j	                                     g        | j                  t        t        i j                                     g        | j                  t        t        t                           g        | j                  t        t        t               j                                     g        | j                  t        t        t               j	                                     g        | j                  t        t        t               j                                     g        y r   )r   r6  rj  r:   r]   rW   r   r!   s    r   $test_reverse_iterator_for_empty_dictz-DictTest.test_reverse_iterator_for_empty_dict}  s    	hrl+R0hrxxz23R8hryy{34b9hrwwy12B7 	htv./4htv||~67<htv}}78"=htv{{}56;r   c           
      ^    G d d      }| j                  t        t         |dd      j                              ddg       | j                  t        t         |dd      j                              dg       | j                  t        t         |dd      j                              dg       y )Nc                       e Zd Zd Zy)ADictTest.test_reverse_iterator_for_shared_shared_dicts.<locals>.Ac                 *    |r|| _         |r|| _        y y r   )r   rI  )r   r   rI  s      r   r   zJDictTest.test_reverse_iterator_for_shared_shared_dicts.<locals>.A.__init__  s    qdfqdf1r   Nr   r   r   r   r  r    s    !r   r  r   r   rI  r   r   )r   r6  rj  rj   )r   r  s     r   -test_reverse_iterator_for_shared_shared_dictsz6DictTest.test_reverse_iterator_for_shared_shared_dicts  s    	! 	!
 	hqAw'7'789C:FhqAw'7'789C5AhqAw'7'789C5Ar   c                 &   t        j                  ddg      }|j                  d       t        |j	                               }t        |      }| j                  t        |j	                               |        G d dt
              }g d} ||      }| j                  |t        t        |      j	                                       G d dt
              } ||      }| j                  |d d d	   t        t        |      j	                                      y )
NrK   r   rL   r   rK   c                       e Zd Zy)1DictTest.test_dict_copy_order.<locals>.CustomDictNr   r   r   r   
CustomDictr    r   r   r  )r  r  )rM   r?   c                       e Zd Zd ZeZd Zy)9DictTest.test_dict_copy_order.<locals>.CustomReversedDictc                 P    t        t        t        j                  |                   S r   )rj  r6  r   rW   r!   s    r   rW   z>DictTest.test_dict_copy_order.<locals>.CustomReversedDict.keys  s    TYYt_ 566r   c                 >    t        t        j                  |             S r   )rj  r   r:   r!   s    r   r:   z?DictTest.test_dict_copy_order.<locals>.CustomReversedDict.items  s    

4 011r   N)r   r   r   rW   r   r:   r   r   r   CustomReversedDictr    s    7 H2r   r  rT  )r   OrderedDictmove_to_endr6  r:   r   r   )r   odr  rE   r  pairsrZ   r  s           r   test_dict_copy_orderzDictTest.test_dict_copy_order  s    $$h%9:
s
#Bxdjjl+X6	 	 /uT!W]]_ 56	2 	2 u%ttd47==?&;<r   c                     t        d g ij                               }t        j                          | j	                  t        j
                  t        |                   y r   )r  r:   r   r  rP   r!  rX  r   r\  s     r   test_dict_items_result_gcz"DictTest.test_dict_items_result_gc  s?    
 4*""$%


 	d2h/0r   c                     t        d g ij                               }t        j                          | j	                  t        j
                  t        |                   y r   )rj  r:   r   r  rP   r!  rX  r  s     r   "test_dict_items_result_gc_reversedz+DictTest.test_dict_items_result_gc_reversed  s=     tRj&&()


d2h/0r   c           	      j    G d dt               }d G fdd       |d      }        }        }g }||fD ]/  |j                  ddd	d
di       dd
d}d|<   |j                  |       dd
d}| j                  |j                  d      d       |j                  |       dd
d}|j	                  di       |j                  |       dd
d}|diz  }|j                  |       fd}t         |             }|j                  |       |j                         }|j                  |       t        dd	g      D 	ci c]  \  }}	|	d|z    }}}	|j                  |       2 |D ]*  }| j                  |      5  | j                  |j                  d      d       d}
|
dz  }
t        j                  d      rd}| j                  |
|u        | j                  |j                  |
      d       | j                  |j                  d      d       | j                  |j                  |      d       | j                  |j                  |      d       d| j                  |j                  |      d       | j                  d       d d d        - y c c}	}w # 1 sw Y   ?xY w)Nc                       e Zd Zy)(DictTest.test_str_nonstr.<locals>.StrSubNr   r   r   r   StrSubr    r   r   r  r   c                        e Zd Zd Z fdZy)&DictTest.test_str_nonstr.<locals>.Key3c                     t        d      S )Nkey3r  r!   s    r   r   z/DictTest.test_str_nonstr.<locals>.Key3.__hash__  r  r   c                 T    t        |      st        |t              r|dk(  rdz  yy)Nr	  r   TF)r  r  )r   r   Key3r9  s     r   r   z-DictTest.test_str_nonstr.<locals>.Key3.__eq__  s,    eT*j.DRXMHr   Nr  )r  r9  s   r   r  r    s    $r   r  r	  r  r   r  +   ,   )r  r  c               3   *   K   d d  df y w)N)r  r   )r  r  r  r   )r	  s   r   
make_pairsz,DictTest.test_str_nonstr.<locals>.make_pairs  s     """"Rj s   r   key1T)cpythonr   )r  r0  r   r/  r   r   rE   	enumerater  r&  r   check_impl_detailrv   assertGreaterEqual)r   r  key3_1key3_2key3_3r1  rZ   r  r9   r   noninterned_key1interned_key1r  r9  r	  s               @@@r   test_str_nonstrzDictTest.test_str_nonstr  s   
	S 	 		 		  V$ &	DLL&"fb$;< R(AAdGLLO R(AQ\\$3R8LLO R(AHHdBZ LLO R(A$OALLO! Z\"ALLO ALLO +4VVT4J*KL3b1fLALLLOM&	P  	5A" 5  v3 $(  D( ,,T:$*M$$%5%FG  '7!8"=  v3  v3  v3   v3''!455 5	5 M5 5s   
J"	DJ((J2	N)\r   r   r   r   r"   r=   rN   rR   r[   r_   rb   rs   rx   r{   r   r   r   r  r  r  r"  r$  r'  r1  rK  rR  ra  rk  rp  rs  ru  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   cpython_onlyr   r(  r-  r2  r9  r=  r@  rB  rF  rL  rQ  r^  rd  rh  rk  rm  ro  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   %%
	=<@*EGL'(
5$$1L4J>X8Bt36 B 
>46A(A*/6)B'4($3$8*,X$,+93
:)2V4%8 ,B .- " "" = =~    
 = = 3 3$ 3 3   3 3 3 3  , ,3$-,J =$-,D 95
/ 9R*6$$&92<B=< 	1 	1 1 1b5r   r   c                   0    e Zd Zej                  d        Zy)CAPITestc           	         t        j                  d      }|j                  }dddd}| j                   ||dt	        d            d       | j                   ||dt	        d            d       | j                   ||dt	        d            d       | j                  t        |g dt	        d             | j                  t        |i dt	        d              G d	 d
t               G fdd      } |        |       }}|di}| j                   |||t	        |            d       | j                  |||t	        |             y )N	_testcapir   r   r?   r%  r   rI  r   c                       e Zd Zy),CAPITest.test_getitem_knownhash.<locals>.ExcNr   r   r   r   r   r"  >  r   r   r   c                       e Zd Z fdZd Zy).CAPITest.test_getitem_knownhash.<locals>.BadEqc                     r   r   r   s     r   r   z5CAPITest.test_getitem_knownhash.<locals>.BadEq.__eq__@  r   r   c                      y)N   r   r!   s    r   r   z7CAPITest.test_getitem_knownhash.<locals>.BadEq.__hash__B  r  r   Nr   r   s   r   r   r$  ?  s    r   r   )	r   import_moduledict_getitem_knownhashr   r  r   SystemErrorr   r   )r   r   r)  rZ   r   r  r  r   s          @r   test_getitem_knownhashzCAPITest.test_getitem_knownhash/  s    !//<	!*!A!A!!$/3S	BAF/3S	BAF/3S	BAF 	+'=r1d1gN($:B47K")"	 	 %'BG/2tBx@!D#5q"d2hGr   N)r   r   r   r   r  r+  r   r   r   r  r  ,  s     H Hr   r  )mapping_testsc                       e Zd ZeZy)GeneralMappingTestsN)r   r   r   r   	type2testr   r   r   r.  r.  M      Ir   r.  c                       e Zd Zy)rf   Nr   r   r   r   rf   rf   P  s    r   rf   c                       e Zd ZeZy)SubclassMappingTestsN)r   r   r   rf   r/  r   r   r   r3  r3  S  r0  r   r3  __main__)r   collections.abcr   rT  r2   r4   r4  unittestr  r  r   test.supportr   r   TestCaser   r  r,  BasicTestMappingProtocolr.  r   rf   r3  r   mainr   r   r   <module>r;     s      	    
    9[5x   [5|0Hx   H> -@@ 	4 	=AA  zHMMO r   