
    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JrJr  S SK	J
r
  S rS r " S S\5      r " S S	\R                  5      r\S
:X  a  \R$                  " 5         gg)    N)loadsdumps)supportc                 f    [        U S5      (       a  [        R                  " U 5      $ [        S5      e)zu
Helper function to convert a slice argument to an integer, and raise
TypeError with a suitable message on failure.

	__index__zBslice indices must be integers or None or have an __index__ method)hasattroperatorindex	TypeError)args    8/opt/python-3.13.8/usr/lib/python3.13/test/test_slice.pyevaluate_slice_indexr      s2     sK  ~~c""/0 	0    c                     [         R                  " U5      nU R                  c  SO[        U R                  5      nUS:  a  [	        S5      eUS:X  a  [	        S5      eUS:  a  SOSnUS:  a  US-
  OUnU R
                  c  US:  a  UOUnO4[        U R
                  5      nUS:  a  [        XQ-   U5      O
[        XT5      nU R                  c  US:  a  UOUnO4[        U R                  5      nUS:  a  [        Xa-   U5      O
[        Xd5      nXVU4$ )z9
Reference implementation for the slice.indices method.

   r   zlength should not be negativezslice step cannot be zero)	r	   r
   stepr   
ValueErrorstartmaxminstop)slicelengthr   lowerupperr   r   s          r   slice_indicesr      s    ^^F#F

"1(<UZZ(HD z899qy455 (BE(FQJE {{u$U[[1.3aiENE*S=N zzque#EJJ/,01Hs4=%(#d:Jr   c                        \ rS rSrS rS rSrg)MyIndexableA   c                     Xl         g Nvalue)selfr$   s     r   __init__MyIndexable.__init__B   s    
r   c                     U R                   $ r"   r#   r%   s    r   r   MyIndexable.__index__E   s    zzr   r#   N)__name__
__module____qualname____firstlineno__r&   r   __static_attributes__ r   r   r   r   A   s    r   r   c                   \    \ 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g)	SliceTestI   c                 t    U R                  [        [        5        U R                  [        [        SSSS5        g )Nr            )assertRaisesr   r   r)   s    r   test_constructorSliceTest.test_constructorK   s*    )U+)UAq!Q7r   c           	      P    U R                  [        [        SSS5      5      S5        g )Nr   r5   r6   zslice(1, 2, 3))assertEqualreprr   r)   s    r   	test_reprSliceTest.test_reprO   s     eAq!n-/?@r   c           	         U R                  [        [        S5      5      [        S5      R                  5       5        U R                  [        [        SS5      5      [        SS5      R                  5       5        U R                  [        [        SSS5      5      [        SSS5      R                  5       5        U R	                  [        S5      [        S5      5        U R                  [        5         [        [        SS/ 5      5        S S S 5        U R                  [        5         [        [        S0 5      5        S S S 5        g ! , (       d  f       NB= f! , (       d  f       g = f)N   r   r5   r6      r7   )r<   hashr   __hash__assertNotEqualr8   r   r)   s    r   	test_hashSliceTest.test_hashR   s    eAhq):):)<=eAqk*E!QK,@,@,BCeAq!n-uQ1~/F/F/HIE!HeAh/y)q!R! * y)q" *) *) *)s   1E%E
E
E#c                   ^^^ [        SSS5      m[        SSS5      m[        SSS5      nU R                  TT5        U R                  TU5        U R                  TS 5        U R                  TS5        U R                  TS5         " S S[        5      m " U4S	 jS
[        5      n[        U" 5       5      m[        U" 5       5      mU R                  TT5        U R                  TUU4S j5        [        SU" 5       5      m[        SU" 5       5      mU R                  TT5        U R                  TUU4S j5        [        SSU" 5       5      m[        SSU" 5       5      mU R                  TT5        U R                  TUU4S j5        g )Nr   r5   r6   r7   )r   r5   r6    c                       \ rS rSrSrg)SliceTest.test_cmp.<locals>.Exch   r0   Nr+   r,   r-   r.   r/   r0   r   r   ExcrK   h       r   rN   c                   "   > \ rS rSrU 4S jrSrg)"SliceTest.test_cmp.<locals>.BadCmpk   c                    > Ter"   r0   )r%   otherrN   s     r   __eq__)SliceTest.test_cmp.<locals>.BadCmp.__eq__l   s    	r   r0   N)r+   r,   r-   r.   rU   r/   )rN   s   r   BadCmprQ   k   s     r   rW   c                     > T T:H  $ r"   r0   s1s2s   r   <lambda>$SliceTest.test_cmp.<locals>.<lambda>r   	    rRxr   c                     > T T:H  $ r"   r0   rY   s   r   r\   r]   w   r^   r   c                     > T T:H  $ r"   r0   rY   s   r   r\   r]   |   r^   r   )r   r<   rE   	Exceptionobjectr8   )r%   s3rW   rN   rZ   r[   s      @@@r   test_cmpSliceTest.test_cmp^   sI   1a^1a^1a^R B#B%B	*B#	) 		V 	 68_68_R #/01fh1fhR #/01a"1a"R #/0r   c                    [        S5      nU R                  UR                  S 5        U R                  UR                  S5        U R                  UR                  S 5        [        SS5      nU R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S 5        [        SSS5      nU R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5         " S S5      nU" 5       n[        U5      nU R                  UR                  UL 5        g )Nr   r5   r6   c                       \ rS rSrSrg)(SliceTest.test_members.<locals>.AnyClass   r0   NrM   r0   r   r   AnyClassrh      rO   r   rj   )r   r<   r   r   r   
assertTrue)r%   srj   objs       r   test_membersSliceTest.test_members~   s   !H$'#&!QK!$#&!QN!$##	 	 j#J#&r   c                 F    UR                  U5      n [        X5      nU R                  X45        US:  aH  UR                  S:w  a7  [        UR                  U5      6 n[        U5      U   nU R                  X45        g g g ! [         a    Sn Nzf = f! [         a    Sn Nf = f)N
valueerrorr   )indicesr   r   r<   r   range)r%   r   r   actualexpecteds        r   check_indicesSliceTest.check_indices   s    	"]]6*F	$$U3H 	*Q;5::?EMM&12FV}U+HV. +;  	"!F	"  	$#H	$s"   A? B ?BBB B c                    U R                  [        S 5      R                  S5      S5        U R                  [        S S S5      R                  S5      S5        U R                  [        SS S5      R                  S5      S5        U R                  [        S S S5      R                  S5      S5        U R                  [        S S S	5      R                  S5      S
5        U R                  [        SS S	5      R                  S5      S5        U R                  [        S S5      R                  S5      S5        U R                  [        S S5      R                  S5      S5        U R                  [        S S5      R                  S5      S5        U R                  [        S SS5      R                  S5      S5        U R                  [        S SS5      R                  S5      S5        U R                  [        S SS5      R                  S5      S5        U R                  [        S S5      R                  S5      S5        U R                  [        S S5      R                  S5      S5        U R                  [        S S5      R                  S5      S5        U R                  [        S SS5      R                  S5      S5        U R                  [        S SS5      R                  S5      S5        U R                  [        S SS5      R                  S5      S5        U R                  [        SS5      R                  S5      [        S 5      R                  S5      5        U R                  [        SSS5      R                  S5      [        S S S5      R                  S5      5        U R                  [        SSS5      R                  S5      S5        U R                  [        [	        S5      5      S S [
        R                  S-
  2   S/5        S SS-  * SSSSSSS S!S"SS-  /nSSS S!S"SS-  /n[        R                  " USS#9 H%  n[        U6 nU H  nU R                  XE5        M     M'     U R                  [        SSS5      S$5        U R                  [        5         [        S 5      R                  S5        S S S 5        U R                  [        5         [        SSS5      R                  S%5        S S S 5        U R                  [        5         [        S&SS5      R                  S%5        S S S 5        U R                  [        5         [        SS'S5      R                  S%5        S S S 5        U R                  [        5         [        SSS(5      R                  S%5        S S S 5        U R                  [        5         [        SSS5      R                  S)5        S S S 5        U R                  [        SSS5      R                  S%5      S*5        U R                  [        [        S5      SS5      R                  S%5      S*5        U R                  [        S[        S5      S5      R                  S%5      S*5        U R                  [        SS[        S5      5      R                  S%5      S*5        U R                  [        SSS5      R                  [        S%5      5      S*5        g ! , (       d  f       GN2= f! , (       d  f       GN
= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNj= f)+N
   )r   ry   r   r5   )r   ry   r5   r   )r   ry   r5   r   )	   r   r   )rz   r   r{   r6   )r6   r   r{   i)r   r   r   i)r   r   r   i)rz   r   r   irz   )r   rz   r         )rz   r}   r   )rz   rz   r   id   r   i   ii   5   i   @)repeatrA   g        g      $@g      ?g      @)r   rA   r   )r<   r   rr   listrs   sysmaxsize	itertoolsproductrv   r8   r   r   r   )r%   valslengths
slice_argsrl   r   s         r   test_indicesSliceTest.test_indices   s   t/77;[ItdQ/77;[IqdQ/77;[ItdB/77;[ItdB/77;[IqdB/77;[ItR004i@tS)11"5yAtS)11"5yAtS"-55b9:FtS"-55b9;GtS"-55b9;GtQ//3Y?tR004jAtR004jAtQ+33B7DtQ+33B7DtR,44R8*E$"**2.$K#	
 	#r"**2.$b!))"-	
 	tS!,44R8+FeBi):3;;?):;aSA q#vgvsBAq!R3OaBq#v.#++D;Jz"A!""1- " < 	5B?B/ z*$K# + z*!RO##A& +
 y)#r1%%a( *y)!T1%%a( *y)!R%%a( *y)!RO##C( * 	q"a003Y?{1~r15==a@)Lq+b/15==a@)Lq"k!n5==a@)Lq"a00Q@)L/ +* +*
 *)))))))sH   [
[*[<>\8\ 2\2
['*
[9<
\
\ 
\/2
]c                    ^ / m " U4S jS[         5      nU" 5       nSUSS& U R                  T[        SS5      S4/5        g )Nc                   "   > \ rS rSrU 4S jrSrg)3SliceTest.test_setslice_without_getslice.<locals>.X   c                 *   > TR                  X45        g r"   )append)r%   iktmps      r   __setitem__?SliceTest.test_setslice_without_getslice.<locals>.X.__setitem__   s    

A6"r   r0   N)r+   r,   r-   r.   r   r/   )r   s   r   Xr      s    # #r   r   *   r   r5   )rb   r<   r   )r%   r   xr   s      @r   test_setslice_without_getslice(SliceTest.test_setslice_without_getslice   sF    	# 	# C!AaR012r   c                 V   SS K n[        SSS5      n[        UR                  S-   5       H|  n[	        [        X#5      5      nU R                  X$5        U R                  UR                  S5      UR                  S5      5        U R                  [        U5      [        U5      5        M~     g )Nr   ry      r6   r      )
pickler   rs   HIGHEST_PROTOCOLr   r   r<   rr   rE   id)r%   r   rl   protocolts        r   test_pickleSliceTest.test_pickle   s    "b!f559:HeA()AQ"QYYr]AIIbM:1r!u-	 ;r   c                 *   [        SS5      n[        R                  " U5      nU R                  X5        [        SSS5      n[        R                  " U5      nU R                  X5        [        SS/SS/SS/5      n[        R                  " U5      nU R                  X5        U R                  UR                  UR                  5        U R                  UR                  UR                  5        U R                  UR
                  UR
                  5        g Nr   ry   r5   r6   r7   rA   rB   )r   copyassertIsr   r   r   r%   rl   cs      r   	test_copySliceTest.test_copy   s    !RLIIaLa!ROIIaLa 1a&1a&1a&)IIaLaaggqww'affaff%affaff%r   c                 L   [        SS5      n[        R                  " U5      nU R                  X5        [        SSS5      n[        R                  " U5      nU R                  X5        [        SS/SS/SS/5      n[        R                  " U5      nU R	                  X5        U R                  X5        U R	                  UR
                  UR
                  5        U R	                  UR                  UR                  5        U R	                  UR                  UR                  5        g r   )r   r   deepcopyr<   assertIsNotr   r   r   r   s      r   test_deepcopySliceTest.test_deepcopy  s    !RLMM!!ROMM! 1a&1a&1a&)MM!!''*((r   c                      " S S5      nU" 5       n[        U5      Ul        [        R                  " U5      nS n[        R
                  " 5         U R                  U" 5       5        g )Nc                       \ rS rSrSrg)#SliceTest.test_cycle.<locals>.myobji"  r0   NrM   r0   r   r   myobjr   "  s    tr   r   )r   rl   weakrefrefr   
gc_collectassertIsNone)r%   r   ows       r   
test_cycleSliceTest.test_cycle!  sH    GAhKKN!#r   r0   N)r+   r,   r-   r.   r9   r>   rF   rd   rn   rv   r   r   r   r   r   r   r/   r0   r   r   r2   r2   I   sC    8A
1@'./ CMJ3.&")$r   r2   __main__)r   r	   r   unittestr   r   r   r   r   testr   r   r   rb   r   TestCaser2   r+   mainr0   r   r   <module>r      sc      
     0!L& _!! _B zMMO r   