
    daf$                        d dl Z d dlZd dlZd dlZd dlZd dlmZ  G d d      Z G d d      Z G d d      Z	 G d	 d
      Z
 G d d      Z G d d      Z G d d      Z G d de j                  e      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de j                  e      Z G d de      Z G d d e      Z G d! d"e      Zed#k(  r e j4                          yy)$    N)supportc                       e Zd ZdZd Zd Zy)GzSequence using __getitem__c                     || _         y Nseqnselfr	   s     ./root/Python-3.12.4/Lib/test/test_enumerate.py__init__z
G.__init__   s	    	    c                      | j                   |   S r   r   r   is     r   __getitem__zG.__getitem__   s    yy|r   N)__name__
__module____qualname____doc__r   r    r   r   r   r   	   s     r   r   c                   "    e Zd ZdZd Zd Zd Zy)Iz Sequence using iterator protocolc                      || _         d| _        y Nr   r	   r   r
   s     r   r   z
I.__init__       	r   c                     | S r   r   r   s    r   __iter__z
I.__iter__       r   c                     | j                   t        | j                        k\  rt        | j                  | j                      }| xj                   dz  c_         |S N   r   lenr	   StopIterationr   vs     r   __next__z
I.__next__   ?    66S^#=%8IIdff!r   Nr   r   r   r   r   r    r*   r   r   r   r   r      s    &r   r   c                       e Zd ZdZd Zd Zy)Igz9Sequence using iterator protocol defined with a generatorc                      || _         d| _        y r   r   r
   s     r   r   zIg.__init__   r   r   c              #   6   K   | j                   D ]  }|  y wr   r   )r   vals     r   r    zIg.__iter__"   s     99 	CI	s   Nr   r   r   r   r   r    r   r   r   r.   r.      s    ?r   r.   c                       e Zd ZdZd Zd Zy)Xz Missing __getitem__ and __iter__c                      || _         d| _        y r   r   r
   s     r   r   z
X.__init__(   r   r   c                     | j                   t        | j                        k\  rt        | j                  | j                      }| xj                   dz  c_         |S r#   r%   r(   s     r   r*   z
X.__next__+   r+   r   N)r   r   r   r   r   r*   r   r   r   r4   r4   &   s    &r   r4   c                   "    e Zd ZdZd Zd Zd Zy)EzTest propagation of exceptionsc                      || _         d| _        y r   r   r
   s     r   r   z
E.__init__3   r   r   c                     | S r   r   r   s    r   r    z
E.__iter__6   r!   r   c                     ddz   y )N   r   r   r   s    r   r*   z
E.__next__8   s	    	Qr   Nr,   r   r   r   r8   r8   1   s    $r   r8   c                       e Zd ZdZd Zd Zy)NzIterator missing __next__()c                      || _         d| _        y r   r   r
   s     r   r   z
N.__init__=   r   r   c                     | S r   r   r   s    r   r    z
N.__iter__@   r!   r   Nr2   r   r   r   r>   r>   ;   s    !r   r>   c                       e Zd Zd Zy)
PickleTestc                 4   t        t        j                  dz         D ]  }t        j                  ||      }t        j                  |      }| j                  t        |      t        |             | j                  t        |      |       t        j                  |      }	 t        |       t        j                  ||      }t        j                  |      }| j                  t        |      |dd          y # t        $ r | j                  |dd         Y w xY wr#   )rangepickleHIGHEST_PROTOCOLdumpsloadsassertEqualtypelistnextr'   assertFalse)r   itorgseqprotodits         r   check_picklezPickleTest.check_pickleE   s    622Q67 	0EUE*AaBT%[$r(3T"Xs+aBR R'AaBT"Xs12w/	0 !   QR)s    C77DDN)r   r   r   rS   r   r   r   rB   rB   C   s    0r   rB   c                       e Zd ZeZdg dcZZd Zd Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Zej$                  d        Zej$                  d        Zy)EnumerateTestCaseabc))r   a)r$   b)   cc                    | j                  t        | j                  | j                              | j                         | j                  | j                        }| j                  t	        |      |       | j                  t        | j                  | j                              | j                         | j                  j                   y r   )rI   rJ   enumrO   iterrK   resr   r   es     r   test_basicfunctionz$EnumerateTestCase.test_basicfunction[   s    dii12DII>IIdhha!$dii12DHH=		r   c                 n    | j                  | j                  | j                        | j                         y r   )rS   r\   rO   r^   r   s    r   test_picklezEnumerateTestCase.test_pickleb   s#    $))DHH-txx8r   c           	          | j                  t        | j                  t        | j                                    | j
                         | j                  t        d            }| j                  t        t        |       y N )	rI   rK   r\   r   rO   r^   assertRaisesr'   rL   r_   s     r   test_getitemseqnz"EnumerateTestCase.test_getitemseqne   P    dii$((45txx@IIae-q1r   c           	          | j                  t        | j                  t        | j                                    | j
                         | j                  t        d            }| j                  t        t        |       y re   )	rI   rK   r\   r   rO   r^   rg   r'   rL   r_   s     r   test_iteratorseqnz#EnumerateTestCase.test_iteratorseqnj   ri   r   c           	          | j                  t        | j                  t        | j                                    | j
                         | j                  t        d            }| j                  t        t        |       y re   )	rI   rK   r\   r.   rO   r^   rg   r'   rL   r_   s     r   test_iteratorgeneratorz(EnumerateTestCase.test_iteratorgeneratoro   sP    dii48856AIIbf-q1r   c                 l    | j                  t        | j                  t        | j                               y r   )rg   	TypeErrorr\   r4   rO   r   s    r   test_noniterablez"EnumerateTestCase.test_noniterablet        )TYY$((<r   c                 l    | j                  t        | j                  t        | j                               y r   )rg   ro   r\   r>   rO   r   s    r   test_illformediterablez(EnumerateTestCase.test_illformediterablew   rq   r   c           	      ~    | j                  t        t        | j                  t	        | j
                                     y r   )rg   ZeroDivisionErrorrK   r\   r8   rO   r   s    r   test_exception_propagationz,EnumerateTestCase.test_exception_propagationz   s&    +T499Qtxx[3IJr   c                    | j                  t        | j                         | j                  t        | j                  d       | j                  t        | j                  dd       | j                  t        | j                  ddd       y )Nr$   rV   rW   rY   r<   )rg   ro   r\   r   s    r   test_argumentcheckz$EnumerateTestCase.test_argumentcheck}   s^    )TYY/)TYY2)TYYs;)TYYq!<r   c           
         | j                  t        | j                  t        | j                                    | j
                         t        | j                  t        | j                        d            }| j                  t        | j                  t        | j                        d            |       | j                  t        | j                  dt        | j                                    |       | j                  t        | j                  g d       | j                  t        | j                  dd       | j                  t        | j                  dd       | j                  t        | j                  d	       y )
N)iterabler   )rz   start)r{   rz   r<   )rz   x)r{   r|   )r|   y)r|   )rI   rK   r\   r.   rO   r^   rg   ro   )r   expecteds     r   test_kwargszEnumerateTestCase.test_kwargs   s   diiDHHi>?J		"TXX,23diiDHHQiGH!	#diia"TXX,iGH!	#)TYYqA)TYYa1=)TYY!q9)TYY!4r   c                    | j                  t        t        t        t        t        t        | j                                                t        | j                               | j                  t        t        t        t        t        | j                                          t        dt        | j                                     y r#   )	rI   r&   setmapidrK   	enumeraterO   minr   s    r   test_tuple_reusez"EnumerateTestCase.test_tuple_reuse   st     	SRi.A)B!CDEs488}USR488)<!=>?Qs488}AUVr   c                     | j                  g g      }t        j                          | j                  t        j                  t        |                   y r   )r\   gccollect
assertTrue
is_trackedrL   )r   rR   s     r   test_enumerate_result_gcz*EnumerateTestCase.test_enumerate_result_gc   s7    
 YYt_


 	d2h/0r   N)r   r   r   r   r\   rO   r^   ra   rc   rh   rk   rm   rp   rs   rv   rx   r   r   cpython_onlyr   r   r   r   r   rU   rU   V   s|    D1HC92
2
2
==K=
5 W W 	1 	1r   rU   c                       e Zd Zy)MyEnumN)r   r   r   r   r   r   r   r      s    r   r   c                       e Zd ZeZy)SubclassTestCaseN)r   r   r   r   r\   r   r   r   r   r      s    Dr   r   c                       e Zd Zdg cZZy)	TestEmptyrf   N)r   r   r   rO   r^   r   r   r   r   r      s    2HCr   r   c                   J    e Zd Z eddd      Z e e ed      e            Zy)TestBig
   i N  rY   N)r   r   r   rD   rO   rK   zipr^   r   r   r   r   r      s%    
5
C
s5<%
&Cr   r   c                   v    e Zd Zd Zd Zd Zd Zd Z ej                   e
ed      d      d        Zd	 Zd
 Zy)TestReversedc           	      N    G d d      }dt        d      t        t        d             |       t        ddd      t        j	                  d      fD ]5  }| j                  t        |      d d d   t        t        |                   7 | j                  t        t        g d	       y )
Nc                       e Zd Zd Zd Zy)#TestReversed.test_simple.<locals>.Ac                 .    |dk  rt        |      S t        N   )strr'   r   s     r   r   z/TestReversed.test_simple.<locals>.A.__getitem__   s    q5q6M##r   c                      yr   r   r   s    r   __len__z+TestReversed.test_simple.<locals>.A.__len__   s    r   N)r   r   r   r   r   r   r   r   Ar      s    $r   r   rV   r   r$      abcde)rW   )
rD   tupler   dictfromkeysrI   rK   reversedrg   ro   )r   r   datas      r   test_simplezTestReversed.test_simple   s    	 	 E!HeIe,<&=qs!BqM4==#9; 	EDT$Z"-tHTN/CD	E 	)XrQ7r   c                     t        d      }| j                  t        t        |            t        t	        |                   y r#   )rD   rI   rJ   r   r]   )r   r|   s     r   test_range_optimizationz$TestReversed.test_range_optimization   s,    !Hhqk*DaM:r   c                    dt        d      t        d      t        d      fD ]t  }| j                  t	        j
                  t        |            t        |             t        |      }t        |       | j                  t	        j
                  |      d       v  G d d      }t         |             }| j                  t        t        j
                  |       y )Nhellor   r   c                       e Zd ZdZd Zd Zy).TestReversed.test_len.<locals>.SeqWithWeirdLenFc                 6    | j                   sd| _         yt        )NTr   )calledru   r   s    r   r   z6TestReversed.test_len.<locals>.SeqWithWeirdLen.__len__   s    {{"&DK''r   c                     |S r   r   r   indexs     r   r   z:TestReversed.test_len.<locals>.SeqWithWeirdLen.__getitem__       r   N)r   r   r   r   r   r   r   r   r   SeqWithWeirdLenr      s    F(
r   r   )
r   rK   rD   rI   operatorlength_hintr   r&   rg   ru   )r   srr   s       r   test_lenzTestReversed.test_len   s    5>4=%(C 	9AX11(1+>AGAGX11!4a8		9
	 	 _&'+X-A-A1Er   c                 J     G d d      } |       }t        |      }||_        y )Nc                       e Zd Zd Zd Zy)!TestReversed.test_gc.<locals>.Seqc                      y)Nr   r   r   s    r   r   z)TestReversed.test_gc.<locals>.Seq.__len__   s    r   c                     |S r   r   r   s     r   r   z-TestReversed.test_gc.<locals>.Seq.__getitem__   r   r   N)r   r   r   r   r   r   r   r   Seqr      s    r   r   )r   r   )r   r   r   r   s       r   test_gczTestReversed.test_gc   s%    	 	
 EQKr   c                 p    | j                  t        t               | j                  t        t        g d       y )Nextra)rg   ro   r   r   s    r   	test_argszTestReversed.test_args   s&    )X.)Xr7;r   getrefcountztest needs sys.getrefcount()c                    d }t               x}|_        t        j                  |      }t	        d      D ]  }	 t        |       | j                  d       ! | j                  |t        j                  |             y # t        $ r Y Sw xY w)Nc                       y r   r   r   r   r   fz'TestReversed.test_bug1229429.<locals>.f   s    r   r   z'non-callable __reversed__ didn't raise!)	object__reversed__sysr   rD   r   failro   rI   )r   r   r   rcr   s        r   test_bug1229429zTestReversed.test_bug1229429   s    	#X%AN__Qr 	EAE 		CD	E 	S__Q/0	  s   A==	B	B	c                 *    G d dt               } |       }| j                  t        t        |        G d dt               } |       }| j                  t        t        |        G d dt               } |       }| j                  t        t        |       y )Nc                       e Zd Zd Zy)+TestReversed.test_objmethods.<locals>.NoLenc                      yr#   r   r   s     r   r   z7TestReversed.test_objmethods.<locals>.NoLen.__getitem__       Qr   N)r   r   r   r   r   r   r   NoLenr      s    .r   r   c                       e Zd Zd Zy)/TestReversed.test_objmethods.<locals>.NoGetItemc                      yNrY   r   r   s    r   r   z7TestReversed.test_objmethods.<locals>.NoGetItem.__len__       ar   N)r   r   r   r   r   r   r   	NoGetItemr      s    'r   r   c                       e Zd Zd Zd ZdZy)-TestReversed.test_objmethods.<locals>.Blockedc                      yr#   r   r   s     r   r   z9TestReversed.test_objmethods.<locals>.Blocked.__getitem__  r   r   c                      yr   r   r   s    r   r   z5TestReversed.test_objmethods.<locals>.Blocked.__len__  r   r   N)r   r   r   r   r   r   r   r   r   Blockedr     s    .'Lr   r   )r   rg   ro   r   )r   r   nlr   ngir   rX   s          r   test_objmethodszTestReversed.test_objmethods   ss    	/F 	/W)Xr2	( 	(k)Xs3	 f 	  I)Xq1r   c                     dt        d      t        t        d            t        ddd      fD ],  }| j                  t	        |      t        |      d d d          . y )NrV   r   r$   r   r   )rD   r   r   rS   r   rK   )r   r   s     r   rc   zTestReversed.test_pickle  sS    58U9U+;%<eAbmK 	@Dhtnd4j2.>?	@r   N)r   r   r   r   r   r   r   r   unittest
skipUnlesshasattrr   r   r   rc   r   r   r   r   r      sS    8;F&< Xm46TU1 V1 2&@r   r   c                       e Zd Zd Zy)EnumerateStartTestCasec                     | j                  | j                        }| j                  t        |      |       | j                  t	        | j                  | j                              | j
                         y r   )r\   rO   rI   r]   rK   r^   r_   s     r   ra   z)EnumerateStartTestCase.test_basicfunction  sN    IIdhha!$dii12DHH=r   N)r   r   r   ra   r   r   r   r   r     s    >r   r   c                   "    e Zd ZddZdg dcZZy)	TestStartc                     t        ||      S N)r{   r   r   rz   r{   s      r   r\   zTestStart.enum      //r   rV   ))   rW   )   rX   )   rZ   N)r   )r   r   r   r\   rO   r^   r   r   r   r   r     s    0 7HCr   r   c                       e Zd Zej                  dz   fdZdej                  dz   dfej                  dz   dfej                  dz   dfgcZZy	)
TestLongStartr$   c                     t        ||      S r   r   r   s      r   r\   zTestLongStart.enum   r   r   rV   rW   rY   rX   r<   rZ   N)r   r   r   r   maxsizer\   rO   r^   r   r   r   r   r     sP    #&;;? 0 Ac*S[[]3,?Ac*,HCr   r   __main__)r   r   r   rE   r   testr   r   r   r.   r4   r8   r>   rB   TestCaserU   r   r   r   r   r   r   r   r   r   r   mainr   r   r   <module>r      s     
  	    	 	  0 0&J1)): J1X	Y 	( ! ' '
[@8$$j [@|>. >8& 8,* , zHMMO r   