
    0hh              	          S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKJrJ	r	  S SK
r
S SKrS SKrS SKrS SKJr  S SKJrJr  S SKJrJr  \R,                  " SS/S9r\R,                  " SS/S	9r\R2                  S
 5       r " S S5      r " S S5      r " S S\\R:                  5      r " S S\R:                  5      rSRA                  5        H  r!\"" \\!\#" \\!5      5        M     C! " S S5      r$\RJ                  " \S5       " S S\\$\R:                  5      5       r& " S S\5      r' " S S\&5      r( " S S\R:                  5      r)\RJ                  " \S5       " S S \R:                  5      5       r* " S! S"\RV                  5      r,\RJ                  " \S5       " S# S$\RV                  5      5       r- " S% S&\RV                  5      r.\RJ                  " \S5       " S' S(\RV                  5      5       r/ " S) S*5      r0 " S+ S,5      r1 " S- S.\1\R:                  5      r2\RJ                  " \S5       " S/ S0\1\R:                  5      5       r3\4S1:X  a  \Rj                  " 5         gg)2    N)	randrangeshuffle)MutableMapping)mapping_testssupport)import_helpersuppress_immortalizationcollections_collections)blocked)freshc              #      #    [         R                  U    nU[         R                  U '    S v   U[         R                  U '   g ! U[         R                  U '   f = f7fN)sysmodules)namereplacementoriginal_modules      ?/opt/python-3.13.8/usr/lib/python3.13/test/test_ordered_dict.pyreplaced_moduler      sE     kk$'O#CKK,+DODs   'AA AAAc                   l   \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S% r'S& r(S' r)S( r*S) r+S* r,S+ r-S, r.S- r/S. r0\1" 5       S/ 5       r2S0 r3S1 r4\5Rl                  S2 5       r7S3r8g4)5OrderedDictTests"   c                     U R                   nU R                  [        5         U" SS/S 5        S S S 5        / SQnU R                  [	        U" [        U5      5      R                  5       5      U5        U R                  [	        U" S0 [        U5      D6R                  5       5      U5        U R                  [        U" U5      R                  5       5      U5        U R                  [        U" / SQSSS9R                  5       5      U5        U R                  [        U" SS	9R                  5       5      S
/5        U R                  [        U" SS9R                  5       5      S/5        U R                  [        US5        U R                  [        USS5        U R                  [        UR                  5        U" / SQ5      nUR                  SS/SSS9  U R                  [        UR                  5       5      / SQ5        g ! , (       d  f       GN= f)Na   b   r   r   c   d   e   r   r   )r#   	   r%   r$   r*   r#   r)   *   self)r0   r.   other)r2   r.    r   r   r"   )r&   ,   )r)   7   r(   f      r'   gr&   r   r   r"   r%   r(   r7   )r<   r:   )	OrderedDictassertRaises	TypeErrorassertEqualsorteddictitemslist__init__)r0   r>   pairsr&   s       r   	test_initOrderedDictTests.test_init$   s   &&y)8,d3 *BDK 8 > > @A5I :d5k : @ @ BCUKk%066895Ak*R,-449EG=>C	E 	kr288:;l^Lk399;<}oN)["5)["b9)[%9%9: LM	

Hh'1
2aggiR	T' *)s   G>>
Hc                     U R                   n/ SQn[        U5        U" U5      nU" S0 UD6nU R                  [        UR	                  5       5      U5        g )Nr=   r3   )r>   r   rA   rE   rD   )r0   r>   rD   argdictr&   s        r   test_468OrderedDictTests.test_468<   sJ    &&Ve$"'"aggi%0    c                    U R                   nU R                  [        5         U" 5       R                  SS/S 5        S S S 5        / SQnU" 5       nUR                  [	        U5      5        U R                  [        UR                  5       5      U5        U" 5       nUR                  " S0 [	        U5      D6  U R                  [        UR                  5       5      U5        U" 5       nUR                  U5        U R                  [        UR                  5       5      U5        U" 5       nUR                  / SQSSS9  U R                  [        UR                  5       5      U5        U" 5       nUR                  SS	9  U R                  [        UR                  5       5      S
/5        U" 5       nUR                  0 S9  U R                  [        UR                  5       5      S0 4/5        U" 5       nUR                  SSSSS9  U R                  [        [        UR                  5       5      5      / SQ5        U" / SQ5      nUR                  SS/SSS9  U R                  [        UR                  5       5      / SQ5        U R                  [        U" 5       R                  S5        U R                  [        U" 5       R                  SS5        U R                  [        UR                  5        U R                  [        U" 5       R                  S5        U R                  [        U" 5       R                  SS5        U R                  [        UR                  5        g ! , (       d  f       GN= f)Nr   r   r!   r+   r$   r*   r-      r/   )r0   rP   r1   r2   r9   r:      )redbluer2   r0   ))rS   r9   )r2   r:   )rR   r*   )r0   rQ   r4   r(   r7   r'   r;   r=   r.   r3   )	r>   r?   r@   updaterC   rA   rB   rD   rE   )r0   r>   rG   odr&   s        r   test_updateOrderedDictTests.test_updateD   s   &&y)M  (H!5t< *B]
		$u+
+U3]
		 DK 
+U3]
		%bhhj)51]
		:a1	Ebhhj)51 ]
		r	bhhj)L>:]
			bhhj)WbM?;]
		aaqq	1RXXZ 01M	O
 LM	(H%a0aggiR	T 	)[]%9%92>)[]%9%92rB)[%7%78)[]%9%92>)[]%9%92rB)[%7%78U *)s   M
M"c                 v   ^ / m " U4S jS5      nU R                  U" 5       5        U R                  TS/5        g )Nc                   .   > \ rS rSrU 4S jrU 4S jrSrg).OrderedDictTests.test_init_calls.<locals>.Spamt   c                 (   > TR                  S5        g)Nkeysr3   appendr0   callss    r   r]   3OrderedDictTests.test_init_calls.<locals>.Spam.keysu   s    V$rN   c                 (   > TR                  S5        g)NrD   r3   r^   r`   s    r   rD   4OrderedDictTests.test_init_calls.<locals>.Spam.itemsx   s    W%rN   r3   N)__name__
__module____qualname____firstlineno__r]   rD   __static_attributes__)ra   s   r   SpamrZ   t   s     rN   rj   r]   )r>   rA   )r0   rj   ra   s     @r   test_init_calls OrderedDictTests.test_init_callsr   s6    	 	 	 )rN   c                 J    U R                   n " S SU5      nU" 5       nSUS'   g )Nc                       \ rS rSrS rSrg)3OrderedDictTests.test_overridden_init.<locals>.ODNI   c                      g r   r3   )argskwargss     r   rF   <OrderedDictTests.test_overridden_init.<locals>.ODNI.__init__   s    rN   r3   N)re   rf   rg   rh   rF   ri   r3   rN   r   ODNIro      s    rN   ru   r   r   r>   )r0   r>   ru   rU   s       r   test_overridden_init%OrderedDictTests.test_overridden_init   s-     &&	; 	 V3rN   c                    U R                   nUR                  S5      nU R                  [        UR	                  5       5      S Vs/ s H  o3S 4PM     sn5        UR                  SS S9nU R                  [        UR	                  5       5      S Vs/ s H  o3S 4PM     sn5        UR                  SSS9nU R                  [        UR	                  5       5      S Vs/ s H  o3S4PM     sn5        g s  snf s  snf s  snf )Nabcvaluer   )r>   fromkeysrA   rE   rD   )r0   r>   rU   r#   s       r   test_fromkeysOrderedDictTests.test_fromkeys   s    &&!!%(bhhj)u+Eu!Iu+EF!!%t!4bhhj)u+Eu!Iu+EF!!%q!1bhhj)E+BEqFE+BC	 ,F+E+Bs   C0
C5
C:
c                     U R                   nU R                  U" 5       [        5        U R                  [	        U[        5      5        g r   )r>   assertIsInstancer   
assertTrue
issubclass)r0   r>   s     r   test_abcOrderedDictTests.test_abc   s2    &&km^<
;?@rN   c                     U R                   n/ SQn[        U5        U" U5      nU R                  [        U5      [        U5      5        UR	                  5         U R                  [        U5      S5        g N)r#   r   r   )r   r$   r%   r(   r7   r   )r>   r   rA   lenclearr0   r>   rG   rU   s       r   
test_clearOrderedDictTests.test_clear   sX    &&LR#e*-

R!$rN   c                 &   U R                   n/ SQnU" U5      nUS	 U R                  SU5        U R                  [        5         US	 S S S 5        U R	                  [        UR                  5       5      US S USS  -   5        g ! , (       d  f       NA= f)Nr   r   r    r$   )r>   assertNotInr?   KeyErrorrA   rE   rD   r   s       r   test_delitemOrderedDictTests.test_delitem   s    &&LsGb!x(3 )bhhj)5!9uQRy+@A )(s   B
Bc                     U R                   nU" / SQ5      nSUS'   SUS'   U R                  [        UR                  5       5      / SQ5        g )N)r&   r   r   r"   r   r'   r(   
   r#      r8   )r   r   )r#   r   r   r(   )r8   r   r>   rA   rE   rD   r0   r>   rU   s      r   test_setitemOrderedDictTests.test_setitem   sI    &&KL33bhhj)W	YrN   c                 d   U R                   n/ SQn[        U5        U" U5      nU R                  [        U5      U Vs/ s H  oDS   PM	     sn5        U R                  [        UR	                  5       5      U Vs/ s H  oDS   PM	     sn5        U R                  [        UR                  5       5      U Vs/ s H  oDS   PM	     sn5        U R                  [        UR                  5       5      U5        U R                  [        [        U5      5      [        U5       Vs/ s H  oDS   PM	     sn5        U R                  [        [        UR	                  5       5      5      [        U5       Vs/ s H  oDS   PM	     sn5        U R                  [        [        UR                  5       5      5      [        U5       Vs/ s H  oDS   PM	     sn5        U R                  [        [        UR                  5       5      5      [        [        U5      5      5        g s  snf s  snf s  snf s  snf s  snf s  snf )Nr   r   r   )r>   r   rA   rE   r]   valuesrD   reversedr0   r>   rG   rU   ts        r   test_iteratorsOrderedDictTests.test_iterators   s   &&Lb%#8%QaD%#89bggi*?AQ4*?@biik*5,A5aqT5,ABbhhj)51hrl+(081A$8	:hrwwy12(081A$8	:hryy{34(081A$8	:hrxxz23T(5/5JK $9*?,A 988s#   H
9H
5H
H#
,H(
:H-
c                     U R                   nUR                  S5      n[        U5      n[        U5      nX$	 U R	                  [
        5         [        U5        S S S 5        g ! , (       d  f       g = f)Nrz   )r>   r}   iternextr?   	Exception)r0   r>   rU   itkeys        r   %test_detect_deletion_during_iteration6OrderedDictTests.test_detect_deletion_during_iteration   sW    &&!!%("X2hGy) H *))s   A  
A.c           
         U R                   nU R                  [        5         U" SS/S 5        S S S 5        / SQnU" U5      nU R                  [	        U5      U Vs/ s H  oDS   PM	     sn5        U R                  [	        UR                  5       5      U Vs/ s H  oDS   PM	     sn5        U R                  [	        UR                  5       5      U Vs/ s H  oDS   PM	     sn5        U R                  [	        UR                  5       5      U5        U R                  [	        [        U5      5      [	        [        U5       Vs/ s H  oDS   PM	     sn5      5        g ! , (       d  f       GN4= fs  snf s  snf s  snf s  snf )Nr   r   r!   r   r   )	r>   r?   r@   rA   rB   r]   r   rD   r   r   s        r   test_sorted_iterators&OrderedDictTests.test_sorted_iterators   s&   &&y)8,d3 *BE%:EqdE%:;	*5,A5aqT5,AB		,U.CUtU.CD
+U3-x ?!1 ?@	B *) &;,A.C !@s#   EE-
E2
E7
E<
E*c                    U R                   nU" 5       n/ nU R                  [        U5      U5        U R                  [        UR                  5       5      U5        U R                  [        UR	                  5       5      U5        U R                  [        UR                  5       5      U5        U R                  [        [        U5      5      U5        U R                  [        [        UR                  5       5      5      U5        U R                  [        [        UR	                  5       5      5      U5        U R                  [        [        UR                  5       5      5      U5        g r   )r>   rA   rE   r]   r   rD   r   )r0   r>   rU   emptys       r   test_iterators_empty%OrderedDictTests.test_iterators_empty   s    &&]b5)bggi%0biik*E2bhhj)51hrl+U3hrwwy12E:hryy{34e<hrxxz23U;rN   c                 z   U R                   n/ SQn[        U5        U" U5      nU(       a7  U R                  UR                  5       UR	                  5       5        U(       a  M7  U R                  [        5         UR                  5         S S S 5        U R                  [        U5      S5        g ! , (       d  f       N*= fr   )r>   r   rA   popitempopr?   r   r   r   s       r   test_popitemOrderedDictTests.test_popitem   s    &&LRZZ\599;7 ex(JJL )R!$ )(s   7B,,
B:c                 *   U R                   n[        S5       Vs/ s H  o"U4PM     nnU" U5      n[        S5       H  nUR                  S5        M     UR                  S5        UR                  SS9  U R                  [	        U5      S5        g s  snf )N   rQ   Tlastr   )r>   ranger   rA   r   )r0   r>   irG   objs        r   test_popitem_last"OrderedDictTests.test_popitem_last   s~    &&!&r+AQ+% qAKK DS2& ,s   Bc                    U R                   n/ SQn[        U5        U" U5      n[        U5        U(       a<  UR                  5       u  pEU R                  UR                  U5      U5        U(       a  M<  U R	                  [
        5         UR                  S5        S S S 5        U R                  [        U5      S5        U R                  UR                  WS5      S5         " S SU5      nU" SS9nU R                  UR                  S	S
5      S
5        U R                  UR                  SS5      S5        U R                  UR                  SS5      S5        U R                  UR                  SSS9S5        U R	                  [
        5         UR                  S5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       g = f)Nr   xyzr   i90  c                       \ rS rSrS rSrg)*OrderedDictTests.test_pop.<locals>.Missingi  c                     gNr   r3   r0   r   s     r   __missing__6OrderedDictTests.test_pop.<locals>.Missing.__missing__      rN   r3   Nre   rf   rg   rh   r   ri   r3   rN   r   Missingr         rN   r   r   r   r   r*   r   r9   default)r>   r   r   rA   r?   r   r   )r0   r>   rG   rU   kvr   ms           r   test_popOrderedDictTests.test_pop   s]   &&L99;DARVVAY* e x(FF5M )R!$5)51	k 	 aLsA*sA*sA*sA.2x(EE#J )( )( )(s   F%
F7%
F47
Gc                 d   U R                   n/ SQn[        U5        U" U5      nU" U5      nU R                  X45        USS  US S -   nU" U5      nU R                  X45        U R                  U[	        U5      5        U R                  [	        U5      U5        U R                  X1" US S 5      5        g )Nr   r    )r>   r   rA   assertNotEqualrC   )r0   r>   rG   od1od2s        r   test_equalityOrderedDictTests.test_equality  s    &&L% % "ab	E"1I%% C%d3i(cC(CU3BZ!89rN   c           	        ^ ^ T R                   n/ SQnU" U5      mS/Tl        S/Tl        UU 4S jnU" TR                  5       5        [        R                  " T5      nU" U5        T R	                  UR                  TR                  5        T R	                  UR                  TR                  5        T R                  [        US5      5        [        R                  " T5      nU" U5        T R                  UR                  TR                  5        T R                  UR                  TR                  5        T R                  UR                  TR                  5        T R                  UR                  TR                  5        T R                  [        US5      5        [        ST R                  5         [        [        R                  S-   5       H  nT R                  US9   [        R                   " [        R"                  " TU5      5      nU" U5        T R                  UR                  TR                  5        T R                  UR                  TR                  5        T R                  [        US5      5        S S S 5        M     S S S 5        U" [%        ['        T5      5      5        U" 5       nUR)                  T5        U" U5        U" U" T5      5        g ! , (       d  f       GM  = f! , (       d  f       Nj= f)	Nr   xzc                 t  > SU < ST< 3nTR                  U TU5        TR                  U T5        TR                  [        U R                  5       5      [        TR                  5       5      5        TR                  [	        U 5      [	        T5      5        TR                  [        U 5      [        T5      5        g )Nz
copy: z
od: )assertIsNotrA   rE   rD   r   type)dupmsgrU   r0   s     r   check,OrderedDictTests.test_copying.<locals>.check1  s    *-r2CS"c*S"%T#))+.RXXZ0@ASXs2w/T#YR1rN   yr
   r   )proto)r>   r   r   copyassertIsassertFalsehasattrdeepcopyrA   r   r   moduler   pickleHIGHEST_PROTOCOLsubTestloadsdumpsevalreprrT   )r0   r>   rG   r   r   r   update_testrU   s   `      @r   test_copyingOrderedDictTests.test_copying)  s   && Muu	2 	bggiiimc
ceeRTT"ceeRTT"c*+mmBc
%%%%c*+]DKK8v66:;\\\. ,,v||B'>?C#J$$SUUBDD1$$SUUBDD1$$WS#%67 /. < 9 	d48n!m2kk"o /. 98s%   4/K.#BK>K.
K+%	K..
K<c                     U R                   n/ SQnU" U5      nU R                  [        S UR                  5       S    5       5      5        g )Nr   c              3   F   #    U  H  n[        U5      [        :H  v   M     g 7fr   )r   rE   ).0pairs     r   	<genexpr>5OrderedDictTests.test_yaml_linkage.<locals>.<genexpr>\  s     L9KDJ,9Ks   !r   )r>   r   all
__reduce__r   s       r   test_yaml_linkage"OrderedDictTests.test_yaml_linkageT  sC    && M 	L9KLLMrN   c                 N   U R                   n/ SQnU" U5      nU R                  UR                  [        5        U R	                  UR                  5       S   5        SUl        U R                  UR                  S   S5        U R                  UR                  5       S   SS05        g )Nr   r    r   r   )r>   r   __dict__rC   assertIsNoner   r   rA   r   s       r   test_reduce_not_too_fat(OrderedDictTests.test_reduce_not_too_fat^  s    &&Lbkk40"--/!,-S)2.+c2Y7rN   c                    U R                   nU" 5       nX"S'   [        SU R                  5         [        S[        R
                  S-   5       H}  n[        R                  " [        R                  " X#5      5      nU R                  XB5        U R                  [        UR                  5       5      S/5        U R                  US   U5        M     S S S 5        g ! , (       d  f       g = f)Nr   r
   r   )r>   r   r   r   r   r   r   r   r   rA   rE   r]   r   )r0   r>   rU   r   r   s        r   test_pickle_recursive&OrderedDictTests.test_pickle_recursivei  s    &&]1 ]DKK8r6#:#:Q#>?ll6<<#:;  )  chhj!1A37c!fc*	 @ 988s   BC
C$c                     U R                   nU" / SQ5      nU R                  [        U5      S5        U R                  [        [        U5      5      U5        U R                  [        U" 5       5      S5        g )Nr   z=OrderedDict({'c': 1, 'b': 2, 'a': 3, 'd': 4, 'e': 5, 'f': 6})zOrderedDict())r>   rA   r   r   r   s      r   	test_reprOrderedDictTests.test_reprv  s_    &&UVbK	Md2h,km,o>rN   c                 |    U R                   nUR                  S5      nX"S'   U R                  [        U5      S5        g )Nrz   r   z8OrderedDict({'a': None, 'b': None, 'c': None, 'x': ...}))r>   r}   rA   r   r   s      r   test_repr_recursive$OrderedDictTests.test_repr_recursive~  s<    &&!!%(3bF	HrN   c                     U R                   nU" 5       nUR                  5       US'   [        U5      nU R                  U[        5        UR                  5       US'   [        U5      nU R                  U[        5        g )Nr.   )r>   r   r   r   strrD   )r0   r>   rU   rs       r   test_repr_recursive_values+OrderedDictTests.test_repr_recursive_values  sf    &&]2H 	a%2Ha%rN   c                 R   U R                   n/ SQn[        U5        U" U5      n[        UR                  5       5      nU R	                  UR                  SS5      S5        U R	                  [        UR                  5       5      U5        U R	                  UR                  SS5      S5        U R	                  [        UR                  5       5      S   S5        U R	                  UR                  SS	S
9S	5         " S SU5      nU R	                  U" 5       R                  SS	5      S	5        g )Nr   r   r   r$   r   r   )r   r   r<   r,   r   c                       \ rS rSrS rSrg)1OrderedDictTests.test_setdefault.<locals>.Missingi  c                     gr   r3   r   s     r   r   =OrderedDictTests.test_setdefault.<locals>.Missing.__missing__  r   rN   r3   Nr   r3   rN   r   r   r    r   rN   r   r*   )r>   r   rE   rD   rA   
setdefault)r0   r>   rG   rU   
pair_orderr   s         r   test_setdefault OrderedDictTests.test_setdefault  s    &&L"((*%
sB/3bhhj):6sB/4bhhj)"-y9sA6:	k 	 	--a3Q7rN   c                     U R                   nU" 5       nSUS'   SUS'   US	 U R                  [        UR                  5       5      S/5        SUS'   U R                  [        UR                  5       5      SS/5        g )Nr   r   r    r   r   r   r   r   s      r   test_reinsertOrderedDictTests.test_reinsert  su    && ]33sGbhhj)H:63bhhj)Hh+?@rN   c                    U R                   nUR                  S5      nU R                  [        U5      [        S5      5        UR	                  S5        U R                  [        U5      [        S5      5        UR	                  SS5        U R                  [        U5      [        S5      5        UR	                  SS5        U R                  [        U5      [        S5      5        UR	                  S5        U R                  [        U5      [        S5      5        UR	                  SSS9  U R                  [        U5      [        S	5      5        U R                  [        5         UR	                  S
5        S S S 5        U R                  [        5         UR	                  S
S5        S S S 5        g ! , (       d  f       N?= f! , (       d  f       g = f)Nabcder#   abdecFcabder)   r   r   bcader   )r>   r}   rA   rE   move_to_endr?   r   r   s      r   test_move_to_end!OrderedDictTests.test_move_to_end  sD   &&!!'*b4=1
sb4=1
sE"b4=1
sE"b4=1
sb4=1
s'b4=1x(NN3 )x(NN3& )( )(((s   !F,F=,
F:=
Gc                    U R                   nUR                  S5      nUR                  SSS9  U R                  [	        U5      [	        S5      5        UR                  SSS9  U R                  [	        U5      [	        S5      5        UR                  S5      nUR                  S5        U R                  [	        U5      [	        S5      5        UR                  S5        U R                  [	        U5      [	        S	5      5        g )
Nrz   r#   Fr   cabr   acbbcabac)r>   r}   r&  rA   rE   r   s      r   test_move_to_end_issue25406,OrderedDictTests.test_move_to_end_issue25406  s    &&!!%(
s'b4;/
s'b4;/!!%(
sb4;/
sb4;/rN   c                     U R                   n[        SS9nU" S0 UD6nU R                  [        R                  " U5      [        R                  " U5      5        g )Nr   r   r3   )r>   rC   assertGreaterr   	getsizeof)r0   r>   r&   rU   s       r   test_sizeofOrderedDictTests.test_sizeof  sE    &&1I13==,cmmA.>?rN   c                 :   U R                   nSR                  5       nUR                  U5      nU R                  UR	                  5       [        U5      R	                  5       5        U R                  UR                  5       [        U5      R                  5       5        g )Nz@the quick brown fox jumped over a lazy dog yesterday before dawn)r>   splitr}   rA   r]   rC   rD   )r0   r>   srU   s       r   
test_viewsOrderedDictTests.test_views  sl    &&NTTV!!!$DHMMO4T"X^^%56rN   c                     U R                   n " S SU5      n/ SQnU R                  [        U" U5      R                  5       5      U5        g )Nc                       \ rS rSrS rSrg)3OrderedDictTests.test_override_update.<locals>.MyODi  c                     [        5       er   )r   )r0   rr   kwdss      r   rT   :OrderedDictTests.test_override_update.<locals>.MyOD.update  s
    k!rN   r3   N)re   rf   rg   rh   rT   ri   r3   rN   r   MyODr<    s    "rN   r@  )r   r"   r   r   )r0   r>   r@  rD   s       r   test_override_update%OrderedDictTests.test_override_update  sB    &&	"; 	" /d5k//12E:rN   c                     U R                   nS n[        S5       H  nU" S U4/5      nM     A[        R                  " 5         g )Ni  )r>   r   r   
gc_collect)r0   r>   r   _s       r   test_highly_nested#OrderedDictTests.test_highly_nested  sA     &&tAc{m,C rN   c           
        ^ U R                   n/ m " U4S jSU5      nS n[        S5       H  nU" S U4/5      nXCl        M     A[        R                  " 5         U R                  T[        [        [        S5      5      5      5        g )Nc                   "   > \ rS rSrU 4S jrSrg):OrderedDictTests.test_highly_nested_subclass.<locals>.MyODi  c                 <   > TR                  U R                  5        g r   )r_   r   )r0   deleteds    r   __del__BOrderedDictTests.test_highly_nested_subclass.<locals>.MyOD.__del__  s    tvv&rN   r3   N)re   rf   rg   rh   rM  ri   )rL  s   r   r@  rJ    s    ' 'rN   r@  d   )r>   r   r   r   rD  rA   rE   r   )r0   r>   r@  r   r   rL  s        @r   test_highly_nested_subclass,OrderedDictTests.test_highly_nested_subclass  sz     &&	'; 	' sAs}%CE  $xc
';"<=rN   c                    U R                   n " S S5      nS nSnU" U5      nU" U5      nU" U" U5      5      nU" 5       nSX'   SX'   SX'   SUS'   X	 X	 U R                  [        UR                  5       5      US4S/5        g )Nc                   ,    \ rS rSrS rS rS rS rSrg)9OrderedDictTests.test_delitem_hash_collision.<locals>.Keyi  c                 B    Xl         [        [        U 5      5      U l        g r   )_hashr  idr|   )r0   hashs     r   rF   BOrderedDictTests.test_delitem_hash_collision.<locals>.Key.__init__  s    !
 D]
rN   c                     U R                   $ r   )rV  r/   s    r   __hash__BOrderedDictTests.test_delitem_hash_collision.<locals>.Key.__hash__      zz!rN   c                 V     U R                   UR                   :H  $ ! [         a     gf = f)NF)r|   AttributeErrorr0   r2   s     r   __eq__@OrderedDictTests.test_delitem_hash_collision.<locals>.Key.__eq__  s,    !::44% ! !s    
((c                     U R                   $ r   r{   r/   s    r   __repr__BOrderedDictTests.test_delitem_hash_collision.<locals>.Key.__repr__  r]  rN   )rV  r|   N)	re   rf   rg   rh   rF   r[  ra  rd  ri   r3   rN   r   KeyrT    s    +"!
"rN   rf  c                 0    SnXS-
  -  nUS-  U-   U -   S-   $ )NrQ   r   r    r3   )rX  MINSIZEr   s      r   blocking_hashCOrderedDictTests.test_delitem_hash_collision.<locals>.blocking_hash  s+    G	!AFa<$&**rN   r   .after)rk  .r   )	r0   r>   rf  ri  	COLLIDINGr   	collidingblockingrU   s	            r   test_delitem_hash_collision,OrderedDictTests.test_delitem_hash_collision	  s    &&	" 	"	+ 	)n	N	}Y/0]7LMbhhj)S#J+GHrN   c                    U R                   n " S S5      nU" 5       n[        S5       H  nU" 5       nXCU'   M     U R                  [        5         [	        UR                  5       5        S S S 5        U R                  [        5         [	        UR                  5       5        S S S 5        U R                  [        5         [        U5        S S S 5        U R                  [        5         UR                  5         S S S 5        g ! , (       d  f       N= f! , (       d  f       Nw= f! , (       d  f       N_= f! , (       d  f       g = f)Nc                       \ rS rSrS rSrg)-OrderedDictTests.test_issue24347.<locals>.Keyi3  c                     [        S5      $ )Ni )r   r/   s    r   r[  6OrderedDictTests.test_issue24347.<locals>.Key.__hash__4  s     ((rN   r3   Nre   rf   rg   rh   r[  ri   r3   rN   r   rf  rs  3  s    )rN   rf  rO  )	r>   r   r?   r   rE   r   rD   r   r   )r0   r>   rf  rU   r   r   s         r   test_issue24347 OrderedDictTests.test_issue243470  s    &&	) 	) ]sA%CsG 
 x( )x( )x(H )x(GGI )( )(((((((s0   DD>D#'D4
D
D #
D14
Ec                 p    U R                   n " S S5      nU" 5       nSX2" 5       '   UR                  5         g )Nc                       \ rS rSrS rSrg)-OrderedDictTests.test_issue24348.<locals>.KeyiI  c                     g)Nr   r3   r/   s    r   r[  6OrderedDictTests.test_issue24348.<locals>.Key.__hash__J  r   rN   r3   Nrv  r3   rN   r   rf  r{  I  r   rN   rf  r   )r>   r   )r0   r>   rf  rU   s       r   test_issue24348 OrderedDictTests.test_issue24348F  s4    &&	 	 ]35	


rN   c                     U R                   nU" 5       nS H2  nS H)  n[        U5      S:X  a  UR                  SS9  X4-   nXRU'   M+     M4     g)a7  
dict resizes after a certain number of insertion operations,
whether or not there were deletions that freed up slots in the
hash table.  During fast node lookup, OrderedDict must correctly
respond to all resizes, even if the current "size" is the same
as the old one.  We verify that here by forcing a dict resize
on a sparse odict and then perform an operation that should
trigger an odict resize (e.g. popitem).  One key aspect here is
that we will keep the size of the odict the same at each popitem
call.  This verifies that we handled the dict resize properly.
0123456789ABCDEFr'   Fr   N)r>   r   r   )r0   r>   rU   c0c1r   s         r   test_issue24667 OrderedDictTests.test_issue24667R  sQ     &&]$B(r7a<JJEJ*g3 ) %rN   c                     U R                   nU" 5       n[        R                  USS5        U R                  S[	        U5      5        g Nspamr   NULL)r>   rC   __setitem__r   r   r   s      r   test_dict_setitem"OrderedDictTests.test_dict_setitemk  s:    &&]VQ'b*rN   c                     U R                   nU" 5       nSUS'   SUS'   [        R                  US5        U R                  [        5         [        U5        S S S 5        g ! , (       d  f       g = fNr   r  r    ham)r>   rC   __delitem__r?   r   r   r   s      r   test_dict_delitem"OrderedDictTests.test_dict_delitemq  sW    &&]6
5	V$x(H )((   	A
A,c                     U R                   nU" 5       nSUS'   SUS'   [        R                  U5        U R                  S[	        U5      5        g )Nr   r  r    r  r  )r>   rC   r   r   r   r   s      r   test_dict_clear OrderedDictTests.test_dict_clearz  sE    &&]6
5	

2b*rN   c                     U R                   nU" 5       nSUS'   SUS'   [        R                  US5        U R                  [        5         [        U5        S S S 5        g ! , (       d  f       g = fr  )r>   rC   r   r?   r   r   r   s      r   test_dict_popOrderedDictTests.test_dict_pop  sU    &&]6
5	Vx(H )((r  c                     U R                   nU" 5       nSUS'   SUS'   [        R                  U5        U R                  [        5         [        U5        S S S 5        g ! , (       d  f       g = fr  )r>   rC   r   r?   r   r   r   s      r   test_dict_popitem"OrderedDictTests.test_dict_popitem  sS    &&]6
5	Rx(H )((s   A
A+c                     U R                   nU" 5       n[        R                  USS5        U R                  S[	        U5      5        g r  )r>   rC   r  r   r   r   s      r   test_dict_setdefault%OrderedDictTests.test_dict_setdefault  s8    &&]FA&b*rN   c                     U R                   nU" 5       n[        R                  US/5        U R                  S[	        U5      5        g )N)r  r   r  )r>   rC   rT   r   r   r   s      r   test_dict_update!OrderedDictTests.test_dict_update  s8    &&]B&b*rN   c                    ^ U R                   m " U4S jS5      nS UR                  U'   [        R                  " U5      nA[        R
                  " 5         U R                  U" 5       5        g )Nc                   &   > \ rS rSr Y " 5       rSrg)/OrderedDictTests.test_reference_loop.<locals>.Ai  r3   N)re   rf   rg   rh   rU   ri   rv   s   r   Ar    s
    BrN   r  )r>   rU   weakrefrefgccollectr  )r0   r  r  r>   s      @r   test_reference_loop$OrderedDictTests.test_reference_loop  sP     &&	 	QKKN


!#rN   c                 "   [         R                  " U [        U R                  5        [         R                  " U S U R                  5        [         R                  " U S U R                  5        [         R                  " U S U R                  5        g )Nc                 4    [        U R                  5       5      $ r   )r   r]   r&   s    r   <lambda><OrderedDictTests.test_free_after_iterating.<locals>.<lambda>  s    4>rN   c                 4    [        U R                  5       5      $ r   )r   r   r  s    r   r  r    s    4
;KrN   c                 4    [        U R                  5       5      $ r   )r   rD   r  s    r   r  r    s    4	?rN   )r   check_free_after_iteratingr   r>   r/   s    r   test_free_after_iterating*OrderedDictTests.test_free_after_iterating  se    **4t7G7GH**41I4K[K[\**41KTM]M]^**41JDL\L\]rN   c                    U R                   nU" SSSS.5      nU" SSSS.5      nUR                  5       nUR                  5       nXC-  nU[        UR                  5       5      -  nU" SSSSS.5      nU R	                  U[        U5      -  U5        U R	                  X#-  U5        U R	                  XF5        U R	                  XV5        UR                  5       nXB-  nU" SSSSS.5      nU R	                  [        U5      U-  U5        U R	                  X2-  U5        U R	                  XF5        U R                  [        X#-  5      U5        U R                  [        [        U5      U-  5      U5        U R                  [        U[        U5      -  5      U5        UR                  5       nUS	-  nUS
-  nU R	                  X&5        U R                  [        5         US -    S S S 5        U R                  [        5         US	-    S S S 5        U R                  [        5         US-    S S S 5        U R                  [        5         US
-    S S S 5        U R                  [        5         US-  nS S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nw= f! , (       d  f       Ne= f! , (       d  f       g = f)Nr   r   )r   r   r    r    r$   )r   r    r$   )r   r   r    r$   )r   r    r$   r   r3    BAD)r>   r   rE   rD   rA   rC   r   r   r?   r@   
ValueError)r0   r>   r   r   r#   r&   expecteds          r   test_merge_operator$OrderedDictTests.test_merge_operator  s7   &&A!*+A!*+FFHFFH		T!'')_1qQ78T!Wh/)%%FFH	1qQ78a1h/)%d15k;/d47Q;'5d1tAw;'5668	R	R%y)H *y)F *y)I *y)F *z*JA +* *)))))))**s<   I08JJ>J#!J40
I>
J
J #
J14
Kc                     [        U R                  S / 05      R                  5       5      n[        R                  " 5         U R                  [        R                  " [        U5      5      5        g r   )r   r>   rD   r  r  r   
is_trackedr   )r0   r   s     r   !test_ordered_dict_items_result_gc2OrderedDictTests.test_ordered_dict_items_result_gc  sJ    
 $""D":.4467


 	d2h/0rN   r3   N)9re   rf   rg   rh   rH   rL   rV   rk   rw   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r'  r.  r3  r8  rA  rF  rP  ro  rw  r~  r  r  r  r  r  r  r  r  r	   r  r  r  r   cpython_onlyr  ri   r3   rN   r   r   r   "   s/   T01,9\*	DA
%BYL"	B<	%	'4: )VN	8+?H&8(
A'&0@7;	>"%IN,
2++++ 	  	^)V 	1 	1rN   r   c                   .    \ rS rSrSrSrS rS rS rSr	g)	_TriggerSideEffectOnEquali  r   r   c                     U R                   R                  U R                   R                  :X  a  U R                  5         U R                   =R                  S-  sl        g)Nr   T)	__class__counttriggerside_effectr`  s     r   ra   _TriggerSideEffectOnEqual.__eq__  sB    >>4>>#9#99!rN   c                     g)Nr   r3   r/   s    r   r[  "_TriggerSideEffectOnEqual.__hash__  s    rN   c                     [         er   )NotImplementedErrorr/   s    r   r  %_TriggerSideEffectOnEqual.side_effect  s    !!rN   r3   N)
re   rf   rg   rh   r  r  ra  r[  r  ri   r3   rN   r   r  r    s    EG"rN   r  c                   6    \ rS rSr\r\R                  rS rSrg)PurePythonOrderedDictTestsi  c                 8  ^^  " UU4S jS[         5      nU" 5       mU R                  [        R                  STS45      5      mU R                  [        R                  SU" 5       S45      5      n[        R
                  " S5      nU R                  [        U[        R                  TU5        U R                  UR                  S5        U R                  T[        R                  S5      5        U R                  U[        R                  SU" 5       S45      5        g )Nc                   $   > \ rS rSrU U4S jrSrg)HPurePythonOrderedDictTests.test_issue119004_attribute_error.<locals>.Keyi  c                    > TT	 g r   r3   r0   TODELdict1s    r   r  TPurePythonOrderedDictTests.test_issue119004_attribute_error.<locals>.Key.side_effect  
    %LrN   r3   Nre   rf   rg   rh   r  ri   r  r  s   r   rf  r        ! !rN   rf  r   @z('NoneType' object has no attribute 'key'r    r   r  )r  r>   rC   r}   reescapeassertRaisesRegexr_  operatoreqrA   r  assertDictEqual)r0   rf  dict2r   r  r  s       @@r    test_issue119004_attribute_error;PurePythonOrderedDictTests.test_issue119004_attribute_error   s    	! 	!+ 	!   5#!?@  35#!?@iiBC~sHKKNA&UDMM($;<UDMM1ceS/$BCrN   r3   N)	re   rf   rg   rh   py_collr   r>   r  ri   r3   rN   r   r  r    s    F%%KDrN   r  c                        \ rS rSrSr\r\rSr	g)CPythonBuiltinDictTestsi  zYBuiltin dict preserves insertion order.

Reuse some of tests in OrderedDict selectively.
r3   N)
re   rf   rg   rh   __doc__builtinsr   rC   r>   ri   r3   rN   r   r  r    s    
 FKrN   r  ztest_init test_update test_abc test_clear test_delitem test_setitem test_detect_deletion_during_iteration test_popitem test_reinsert test_override_update test_highly_nested test_highly_nested_subclass test_delitem_hash_collision c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
CPythonOrderedDictSideEffectsi#  c                 |    [         R                  " S5      nU R                  [        U[        R
                  X5        g )Nz$OrderedDict mutated during iteration)r  r  r  RuntimeErrorr  r  )r0   r  r  r   s       r   check_runtime_error_issue119004=CPythonOrderedDictSideEffects.check_runtime_error_issue119004%  s)    ii>?|S(++uLrN   c                   ^  " U4S jS[         5      nU R                  [        R                  SU" 5       S45      5      mU R                  [        R                  SU" 5       S45      5      nU R	                  TU5        U R                  UR                  S5        U R                  T0 5        U R                  U[        R                  SU" 5       S45      5        g )Nc                   "   > \ rS rSrU 4S jrSrg)PCPythonOrderedDictSideEffects.test_issue119004_change_size_by_clear.<locals>.Keyi*  c                 &   > TR                  5         g r   r   r0   r  s    r   r  \CPythonOrderedDictSideEffects.test_issue119004_change_size_by_clear.<locals>.Key.side_effect+  s    rN   r3   Nr  r  s   r   rf  r  *  s     rN   rf  r   r  r    r  r>   rC   r}   r  rA   r  r  r0   rf  r  r  s      @r   %test_issue119004_change_size_by_clearCCPythonOrderedDictSideEffects.test_issue119004_change_size_by_clear)  s    	+ 	   35#!?@  35#!?@,,UE:A&UB'UDMM1ceS/$BCrN   c                   ^^  " UU4S jS[         5      nU" 5       mU R                  [        R                  STS45      5      mU R                  [        R                  SU" 5       S45      5      nU R	                  TU5        U R                  UR                  S5        U R                  T[        R                  S5      5        U R                  U[        R                  SU" 5       S45      5        g )Nc                   $   > \ rS rSrU U4S jrSrg)UCPythonOrderedDictSideEffects.test_issue119004_change_size_by_delete_key.<locals>.Keyi6  c                    > TT	 g r   r3   r  s    r   r  aCPythonOrderedDictSideEffects.test_issue119004_change_size_by_delete_key.<locals>.Key.side_effect7  r  rN   r3   Nr  r  s   r   rf  r  6  r  rN   rf  r   r  r    r  r  r0   rf  r  r  r  s      @@r   *test_issue119004_change_size_by_delete_keyHCPythonOrderedDictSideEffects.test_issue119004_change_size_by_delete_key5  s    	! 	!+ 	!   5#!?@  35#!?@,,UE:A&UDMM($;<UDMM1ceS/$BCrN   c                   ^  " U4S jS[         5      nU R                  [        R                  SU" 5       S45      5      mU R                  [        R                  SU" 5       S45      5      nU R	                  TU5        U R                  UR                  S5        U R                  T[        R                  SS5      5        U R                  U[        R                  SU" 5       S45      5        g )Nc                   "   > \ rS rSrU 4S jrSrg)WCPythonOrderedDictSideEffects.test_issue119004_change_linked_list_by_clear.<locals>.KeyiC  c                 :   > TR                  5         S=TS'   TS'   g )Nr#   r   r   r  r  s    r   r  cCPythonOrderedDictSideEffects.test_issue119004_change_linked_list_by_clear.<locals>.Key.side_effectD  s    *--c
U3ZrN   r3   Nr  r  s   r   rf  r
  C  s    . .rN   rf  r   r  r    )r   r   r#   r  r  s      @r   ,test_issue119004_change_linked_list_by_clearJCPythonOrderedDictSideEffects.test_issue119004_change_linked_list_by_clearB  s    	.+ 	.
   35#!?@  35#!?@,,UE:A&UDMM*c$BCUDMM1ceS/$BCrN   c                   ^^  " UU4S jS[         5      nU" 5       mU R                  [        R                  STS45      5      mU R                  [        R                  SU" 5       S45      5      nU R	                  TU5        U R                  UR                  S5        U R                  TS SS S.5        U R                  U[        R                  SU" 5       S45      5        g )Nc                   $   > \ rS rSrU U4S jrSrg)\CPythonOrderedDictSideEffects.test_issue119004_change_linked_list_by_delete_key.<locals>.KeyiP  c                    > TT	 STS'   g )Nr#   r   r3   r  s    r   r  hCPythonOrderedDictSideEffects.test_issue119004_change_linked_list_by_delete_key.<locals>.Key.side_effectQ  s    %L c
rN   r3   Nr  r  s   r   rf  r  P  s    ! !rN   rf  r   r  r    r#   )r   r   r  r  r  s      @@r   1test_issue119004_change_linked_list_by_delete_keyOCPythonOrderedDictSideEffects.test_issue119004_change_linked_list_by_delete_keyO  s    	! 	!+ 	!
   5#!?@  35#!?@,,UE:A&U3T$BCUDMM1ceS/$BCrN   c                   ^^  " UU4S jS[         5      nU" 5       mU R                  [        R                  STS45      5      mU R                  [        R                  SU" 5       S45      5      nU R	                  UR
                  S5        U R                  TU5        U R	                  UR
                  S5        U R                  T[        R                  S5      5        U R                  U[        R                  SU" 5       S45      5        g )Nc                   (   > \ rS rSrSrU U4S jrSrg)`CPythonOrderedDictSideEffects.test_issue119004_change_size_by_delete_key_in_dict_eq.<locals>.Keyi^  r   c                    > TT	 g r   r3   r  s    r   r  lCPythonOrderedDictSideEffects.test_issue119004_change_size_by_delete_key_in_dict_eq.<locals>.Key.side_effect`  r  rN   r3   N)re   rf   rg   rh   r  r  ri   r  s   r   rf  r  ^  s    G! !rN   rf  r   r  r    r  )r  r>   rC   r}   rA   r  r   r  r  s      @@r   5test_issue119004_change_size_by_delete_key_in_dict_eqSCPythonOrderedDictSideEffects.test_issue119004_change_size_by_delete_key_in_dict_eq]  s    	! 	!+ 	!
   5#!?@  35#!?@A&E5)A&UDMM($;<UDMM1ceS/$BCrN   r3   N)re   rf   rg   rh   r  r  r  r  r  r  ri   r3   rN   r   r  r  #  s&    M
DDDDDrN   r  z0requires the C version of the collections modulec                       \ rS rSr\r\R                  r\R                  r\R                  S 5       r
S rS r\R                  S 5       rSrg)CPythonOrderedDictTestsin  c                    U R                   n[        R                  n[        R                  nU R
                  nU" S5      nU" S5      nU" S5      nU" S5      nU" S5      n	U" 5       n
U" X5        SU
l        U" X5        U
R                  [        S5       Vs/ s H  oU4PM     sn5        U" XU-   SU-  -   S-   S	U-  -   SU	-  -   5        U
R                  [        SS
5       Vs/ s H  oU4PM     sn5        U" XU-   SU-  -   S-   S
U-  -   S
U	-  -   5        U" U
R                  5       U" S5      5        U" U
R                  5       U" S5      5        U" U
R                  5       U" S5      5        U" S5      nU" [        U
5      U5        U" [        U
R                  5       5      U5        U" [        U
R                  5       5      U5        U" [        U
R                  5       5      U5        g s  snf s  snf )NnQ2P3PnPn2Pn2BI2nn2PPPn2Pr   r$   rQ   r*   r      iP2n2P)r>   structcalcsizer   calcobjsizecheck_sizeofr   rT   r   r]   rD   r   r   )r0   r>   r(  sizer   	basicsizekeysize	entrysizepnodesizerU   r   itersizes                r   test_sizeof_exact)CPythonOrderedDictTests.test_sizeof_exactw  s   &&??""!!+,	8$UO	SMF#]bb
		58,8aq68,-bg%!+a/!I+=(
JK
		5B<0<aq6<01bg%1,r1ByL@2h;NObggic#bhhj$s)$biik49%>d2h!d2779ox(d288:)d299;* -0s   G*$G/c                    U R                   nUR                  S5      nU R                  [        U5      [        S5      5        U R	                  [
        5         [        U5       H(  u  p4UR                  U5        U R                  US5        M*     S S S 5        U R	                  [
        5         U H  nS US'   M
     S S S 5        U R	                  [
        5         U H  nUS	 M     S S S 5        U R                  [        U5      [        S5      5        g ! , (       d  f       N= f! , (       d  f       Nn= f! , (       d  f       NU= f)Nr"  r*   r8   r#   bdeaf)	r>   r}   rA   rE   r?   r  	enumerater&  
assertLess)r0   r>   rU   r   r   s        r    test_key_change_during_iteration8CPythonOrderedDictTests.test_key_change_during_iteration  s    &&!!'*b4=1|,!"q!1% & - |,3  - |,sG  - 	b4=1 -, -, -,s$   8D,D#D4
D #
D14
Ec                    U R                   n/ SQnU" U5      nS H  n[        X45      n[        U" 5       5      SS  n[        [        R
                  S-   5       H  nU R                  XGS9   [        U" 5       5      n[        U5        [        R                  " X5      n	[        R                  " U	5      n
U R                  [        U
5      U5        U R                  [        U5      U5        S S S 5        M     M     g ! , (       d  f       M  = f)Nr   )r]   r   rD   r   )method_nameprotocol)r>   getattrrE   r   r   r   r   r   r   r   r   rA   )r0   r>   rG   rU   r;  methr  r   r   r/  	unpickleds              r   test_iterators_pickling/CPythonOrderedDictTests.test_iterators_pickling  s    &&L6K2+DDF|AB'H622Q67\\k\FdfBHR+A &QI$$T)_h?$$T"Xx8 GF 8 7 GFs   *A>C99
Dc                     [         R                  " 5         U R                  5       nXl        / nUR	                  U5        [
        R                  " U5      nUR	                  U5        AAA[         R                  " 5         g r   )r  r  r>   cycler_   r  r  )r0   r   rC  x_refs       r   "test_weakref_list_is_not_traversed:CPythonOrderedDictTests.test_weakref_list_is_not_traversed  sZ    
 	

UAUue


rN   r3   N)re   rf   rg   rh   c_collr   r>   r   r*  r  r2  r8  r@  rE  ri   r3   rN   r   r  r  n  s\    
 F$$K''L+ +@2"9"  rN   r  c                   B    \ rS rSr\r " S S\R                  5      rSrg)"PurePythonOrderedDictSubclassTestsi  c                       \ rS rSrSrg).PurePythonOrderedDictSubclassTests.OrderedDicti  r3   Nre   rf   rg   rh   ri   r3   rN   r   r>   rK        rN   r>   r3   N)re   rf   rg   rh   r  r   r>   ri   r3   rN   r   rI  rI    s    Fg)) rN   rI  c                   B    \ rS rSr\r " S S\R                  5      rSrg)CPythonOrderedDictSubclassTestsi  c                       \ rS rSrSrg)+CPythonOrderedDictSubclassTests.OrderedDicti  r3   NrL  r3   rN   r   r>   rQ    rM  rN   r>   r3   N)re   rf   rg   rh   rG  r   r>   ri   r3   rN   r   rO  rO    s    Ff(( rN   rO  c                   Z    \ rS rSr\r " S S\R                  5      r\R                  rSr	g)*PurePythonOrderedDictWithSlotsCopyingTestsi  c                       \ rS rSrSrSrg)6PurePythonOrderedDictWithSlotsCopyingTests.OrderedDicti  r   r   r3   Nre   rf   rg   rh   	__slots__ri   r3   rN   r   r>   rU        	rN   r>   r3   N)
re   rf   rg   rh   r  r   r>   r   r   ri   r3   rN   r   rS  rS    s$    Fg)) #00LrN   rS  c                   Z    \ rS rSr\r " S S\R                  5      r\R                  rSr	g)'CPythonOrderedDictWithSlotsCopyingTestsi  c                       \ rS rSrSrSrg)3CPythonOrderedDictWithSlotsCopyingTests.OrderedDicti  rV  r3   NrW  r3   rN   r   r>   r]    rY  rN   r>   r3   N)
re   rf   rg   rh   rG  r   r>   r   r   ri   r3   rN   r   r[  r[    s&     Ff(( #00LrN   r[  c                   *    \ rS rSr\S 5       rS rSrg)PurePythonGeneralMappingTestsi  c                 .    [         R                  U l        g r   r  r>   	type2testclss    r   
setUpClass(PurePythonGeneralMappingTests.setUpClass  s    ++rN   c                 d    U R                  5       nU R                  [        UR                  5        g r   _empty_mappingr?   r   r   r0   r&   s     r   r   *PurePythonGeneralMappingTests.test_popitem  $    !(AII.rN   r3   Nre   rf   rg   rh   classmethodre  r   ri   r3   rN   r   r_  r_    s    , ,/rN   r_  c                   *    \ rS rSr\S 5       rS rSrg)CPythonGeneralMappingTestsi  c                 .    [         R                  U l        g r   rG  r>   rb  rc  s    r   re  %CPythonGeneralMappingTests.setUpClass  s    **rN   c                 d    U R                  5       nU R                  [        UR                  5        g r   rh  rj  s     r   r   'CPythonGeneralMappingTests.test_popitem   rl  rN   r3   Nrm  r3   rN   r   rp  rp    s     + +/rN   rp  c                   *    \ rS rSr\S 5       rS rSrg)PurePythonSubclassMappingTestsi  c                 B     " S S[         R                  5      nXl        g )Nc                       \ rS rSrSrg)@PurePythonSubclassMappingTests.setUpClass.<locals>.MyOrderedDicti	  r3   NrL  r3   rN   r   MyOrderedDictrz  	      rN   r{  ra  rd  r{  s     r   re  )PurePythonSubclassMappingTests.setUpClass  s    	G// 	%rN   c                 d    U R                  5       nU R                  [        UR                  5        g r   rh  rj  s     r   r   +PurePythonSubclassMappingTests.test_popitem  rl  rN   r3   Nrm  r3   rN   r   rw  rw    s    & &
/rN   rw  c                   *    \ rS rSr\S 5       rS rSrg)CPythonSubclassMappingTestsi  c                 B     " S S[         R                  5      nXl        g )Nc                       \ rS rSrSrg)=CPythonSubclassMappingTests.setUpClass.<locals>.MyOrderedDicti  r3   NrL  r3   rN   r   r{  r    r|  rN   r{  rr  r}  s     r   re  &CPythonSubclassMappingTests.setUpClass  s    	F.. 	%rN   c                 d    U R                  5       nU R                  [        UR                  5        g r   rh  rj  s     r   r   (CPythonSubclassMappingTests.test_popitem  rl  rN   r3   Nrm  r3   rN   r   r  r    s     & &
/rN   r  c                   L   ^  \ rS rSrU 4S jrU 4S jrU 4S jrU 4S jrSrU =r	$ )SimpleLRUCachei   c                 d   > [         TU ]  5         Xl        [        R	                  SS5      U l        g )Ngetsetdelr   )superrF   r+  rC   r}   counts)r0   r+  r  s     r   rF   SimpleLRUCache.__init__"  s&    	mm$91=rN   c                 v   > U R                   S==   S-  ss'   [        TU ]	  U5      nU R                  U5        U$ )Nr  r   )r  r  __getitem__r&  )r0   itemr|   r  s      r   r  SimpleLRUCache.__getitem__'  s9    Ea#D)rN   c                   > U R                   S==   S-  ss'   X;  aH  [        U 5      U R                  :  a/  U R                  SS9  X;  a  [        U 5      U R                  :  a  M/  [        TU ]  X5        U R                  U5        g )Nr  r   Fr   )r  r   r+  r   r  r  r&  )r0   r   r|   r  s      r   r  SimpleLRUCache.__setitem__-  sj    Eao#d)tyy"8LLeL$ o#d)tyy"8C'rN   c                 R   > U R                   S==   S-  ss'   [        TU ]	  U5        g )Nr  r   )r  r  r  )r0   r   r  s     r   r  SimpleLRUCache.__delitem__4  s$    EaC rN   )r  r+  )
re   rf   rg   rh   rF   r  r  r  ri   __classcell__)r  s   @r   r  r     s    >
! !rN   r  c                   ,    \ rS rSrS rS rS rS rSrg)SimpleLRUCacheTestsi9  c                     U R                  S5      nSUS'   SUS'   SUS'   U R                  UR                  SSSS.5        U R                  [        U5      SS/5        U R                  UR                  SSSS.5        g )	Nr    r   t1t2r$   t3r   r  )rb  rA   r  rE   )r0   r#   s     r   test_add_after_full'SimpleLRUCacheTests.test_add_after_full;  sy    NN1$$$1Qq#ABa4,/1Qq#ABrN   c                    U R                  S5      n[        SS5       H  nX!U'   M	     U R                  UR                  SS9S5        U R                  UR                  SS9S5        U R                  UR                  S	SS	S
.5        g )Nr$   r   r'   Fr   )r   r   T)r$   r$   r   r  )rb  r   rA   r   r  r0   r#   r   s      r   r    SimpleLRUCacheTests.test_popitemD  sx    NN1q!AaD .7-v61Qq#ABrN   c                    U R                  S5      n[        SS5       H  nX!U'   M	     U R                  UR                  SSSS.5        U R                  UR	                  S5      S5        U R                  UR                  SSSS.5        U R                  UR	                  SS5      S5        U R                  UR                  SSSS.5        U R                  [        UR                  S5        U R                  UR                  SSSS.5        g )Nr$   r   r'   r   r  r    )rb  r   rA   r  r   r?   r   r  s      r   r   SimpleLRUCacheTests.test_popL  s    NN1q!AaD 1Qq#ABq1%1Qq#ABq!a(1Qq#AB(AEE1-1Qq#ABrN   c           	         U R                  S5      n[        SS5       H  nX!U'   M	     U R                  [        U5      [        [        SS5      5      5        U R                  UR                  SSSS.5        U R                  US   S5        U R                  UR                  SSSS.5        U R                  [        U5      / SQ5        g )Nr$   r   r'   r   r  r    )r   r$   r    )rb  r   rA   rE   r  r  s      r   test_change_order_on_get,SimpleLRUCacheTests.test_change_order_on_getX  s    NN1q!AaD a$uQ{"341Qq#AB1q!1Qq#ABa),rN   r3   N)	re   rf   rg   rh   r  r   r   r  ri   r3   rN   r   r  r  9  s    CC
C-rN   r  c                   @    \ rS rSr " S S\\R                  5      rSrg)PySimpleLRUCacheTestsic  c                       \ rS rSrSrg)PySimpleLRUCacheTests.type2testie  r3   NrL  r3   rN   r   rb  r  e  rM  rN   rb  r3   N)	re   rf   rg   rh   r  r  r>   rb  ri   r3   rN   r   r  r  c  s    NG$7$7 rN   r  c                   $    \ rS rSr\S 5       rSrg)CSimpleLRUCacheTestsii  c                 L     " S S[         [        R                  5      nXl        g )Nc                       \ rS rSrSrg)2CSimpleLRUCacheTests.setUpClass.<locals>.type2testin  r3   NrL  r3   rN   r   rb  r  n  r|  rN   rb  )r  rG  r>   rb  )rd  rb  s     r   re  CSimpleLRUCacheTests.setUpClassl  s    	(:(: 	!rN   r3   N)re   rf   rg   rh   rn  re  ri   r3   rN   r   r  r  i  s     " "rN   r  __main__)6r  
contextlibr   r  r  r   r  randomr   r   r'  r   unittestr  collections.abcr   testr   r   test.supportr   r	   import_fresh_moduler  rG  contextmanagerr   r   r  TestCaser  r  r6  methodsetattrr=  r  
skipUnlessr  rI  rO  rS  r[  BasicTestMappingProtocolr_  rp  rw  r  r  r  r  r  re   mainr3   rN   r   <module>r     s      	   	 %  
   * ' @ 
+
+M5C4DF		*	*=2@1A
C , ,E1 E1P" ""D!183D3D D*h// # %*EG,F #VW5Ev-NO, HD HDV 
VOP].;&//] Q]@)C &= 11B1B 1 
VOP1h.?.? 1 Q1/M$J$J / 
VOP/!G!G / Q/
/]%K%K 
/ 
VOP
/-"H"H 
/ Q
/! !2'- '-T/1B1B  
VOP".0A0A " Q" zMMO rN   