
    z%iS                    
   d dl Z d dlZd dlmZ d dlmZ d dl d dlZd dlm	Z	 d dl
mZ d dlZd dlZd dlZd dlZd dlmZ d dlZd dlZd dlZd dlZd dlZd Zej0                  Ze d	z
  Zd
 Zd Zd Zd Zd Zd Z d Z!d Z" G d d      Z#d Z$d Z%d Z&d Z'd Z(d Z) e*ejV                  d	z         D  cg c]  } | fd	 c} Z, G d dejZ                        Z. G d dejZ                        Z/ G d d ejZ                        Z0 G d! d"ejZ                        Z1d# Z2 G d$ d%      Z3 G d& d'      Z4 G d( d)      Z5 G d* d+      Z6 G d, d-      Z7 G d. d/      Z8 G d0 d1      Z9 G d2 d3      Z:d4 Z; G d5 d6ejZ                        Z< G d7 d8ejZ                        Z= G d9 d:ejZ                        Z> G d; d<ejZ                        Z?ej                   G d= d>ejZ                               ZAd? ZBeCd@k(  r ej                          yyc c} w )A    N)support)threading_helper)*)Decimal)Fraction)reducec                       fd}|S )z Run the test three times.
    First, verify that a Deprecation Warning is raised.
    Second, run normally but with DeprecationWarnings temporarily disabled.
    Third, run with warnings promoted to errors.
    c                    | j                  t              5   |        d d d        t        j                         5  t        j                  dt                |        d d d        t        j                         5  t        j                  dt               | j                  t        t        t        f      5   |        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   *xY w# 1 sw Y   y xY w)Nignore)categoryerror)assertWarnsDeprecationWarningwarningscatch_warningssimplefilterassertRaisesAssertionErrorSystemError)selftestfuncs    G/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/test/test_itertools.pyinnerz pickle_deprecated.<locals>.inner   s    01 	TN	$$& 	!!(5GHTN	 $$& 	!!'4FG""$6#TU 	 		 		 	
 	 	s:   	C$C<<C68	C*C6CC'*C3	/C66C? )r   r   s   ` r   pickle_deprecatedr      s    	 L       c                  $    t        t        |        S N)listzipargss    r   lzipr$   *   s    T
r   c                     d| z  S )zTest function of one argument   r   xs    r   oneargr)   -   s    Q3Jr   c                      t         )z"Test function that raises an error)
ValueErrorr"   s    r   errfuncr,   1   s    
r   c               #   "   K   dD ]  } |   yw)zNon-restartable source sequencer   r   r&   Nr   )is    r   gen3r0   5   s         c                     | dz  dk(  S )Test predicater&   r   r   r'   s    r   isEvenr4   :       Q36Mr   c                     | dz  dk(  S )r3   r&   r   r   r'   s    r   isOddr7   >   r5   r   c                      | S r   r   r"   s    r   tupleizer9   B   s    Kr   c              #   4   K   t        |       D ]  }|  y wr   range)nr/   s     r   iranger>   E   s     1X    c                       e Zd ZdZd Zd Zy)StopNowz"Class emulating an empty iterable.c                     | S r   r   r   s    r   __iter__zStopNow.__iter__K       r   c                     t         r   StopIterationrC   s    r   __next__zStopNow.__next__M       r   N)__name__
__module____qualname____doc__rD   rI   r   r   r   rA   rA   I   s    (r   rA   c                 ,    t        t        ||             S )zHConvenience function for partially consuming a long of infinite iterable)r    islice)r=   seqs     r   takerR   P   s    sAr   c                 8    t        t        j                  | d      S Nr   )r   operatormuliterables    r   prodrY   T   s    (,,!,,r   c                 2    t        t        d| dz               S )	Factorialr   )rY   r<   )r=   s    r   factr\   W   s    a1r   c                     | d   S Nr   r   rs    r   testRra   \       Q4Kr   c                     | d   S Nr&   r   r_   s    r   testR2re   _   rb   r   c                     | dk  S )N
   r   r'   s    r   undertenrh   b   s    R4Kr   c                 T    t        j                  t        j                  | |            S r   )pickleloadsdumps)sprotos     r   <lambda>ro   e   s    V\\!U5K(L r   c                      e Zd Zd=dZed        Zd Zd Zd Zed        Z	ed        Z
ed	        Zej                  d
        Z ej                  d      d        Zed        Zej                  d        Z ej                  d      d        Zed        Zej                  d        Z ej                  d      d        Zd Zed        Zed        Zed        Zd Zed        Zed        Zed        Zed        Zd Z ed        Z!d Z" ej                  d      ed               Z#d  Z$ ej                  d      d!        Z%ed"        Z&d# Z'd$ Z(d% Z)d& Z*ej                  d'        Z+ ej                  d      d(        Z,ed)        Z-ed*        Z.ed+        Z/d, Z0ed-        Z1ed.        Z2ed/        Z3ed0        Z4ed1        Z5ed2        Z6d3 Z7d4 Z8 e9jt                         d5        Z;d6 Z<ejz                  d7        Z>ejz                  d8        Z?ejz                  d9        Z@ejz                  d:        ZAejz                  d;        ZBejz                  d<        ZCy)>TestBasicOpsNc                    dfd	t        j                  ||      }t        j                  |      }| j                  t	        |      t	        |              |       |      }	}| j                  ||	       |r |      }
| j                  ||
       t        j                  |      }d}	 t        |      D ]  }t        |       |dz  } 	 t        j                  ||      }t        j                  |      } |       |      }	}| j                  ||	       |r ||d       }
| j                  ||
       yy# t        $ r Y yw xY w)zITest that an iterator is the same after pickling, also when part-consumedr   c                     |dkD  rt        d      t        | t              r| S 	 t        t	        |             }|D cg c]  } ||dz          c}S # t
        $ r | cY S w xY wc c}w )Nrg   zinfinite recursion encounteredr   )RuntimeError
isinstancestrr    rP   	TypeError)itr/   leexpandstops       r   r{   z'TestBasicOps.pickletest.<locals>.expandl   sp    2v"#CDD"c"	D)* -..qF1acN..  	.s   A A%A"!A"r   Nr   )rj   rl   rk   assertEqualtyper<   nextrH   )r   protocolrx   r|   rR   comparedumpi2abci3tookr/   i4r{   s      `           @r   
pickletestzTestBasicOps.pickletestj   s7   
	/ ||B)\\$b48,bz6":1AwAQ" \\$	4[ R	
 ||B)\\$bz6":1Awtu~&AQ"   		s   / D> >	E
	E
c                 z   | j                  t        t        t        d                  g d       | j                  t        t        t        d                  g d       t        t
        t        t        fD ]N  }| j                  t        t        t        |t        d                        t        t        |g d                   P | j                  t        t        d            g d       | j                  t        t        g             g        | j                  t        t        dg            dg       | j                  t        t        t        d      dd       | j                  t        t               | j                  t        t        t        d      	       | j                  t        t        t        d
g g             g d}| j                  t        t        |t                    g d       | j                  t        t        |t                    g d       | j                  t        t        |t        j                              g d       | j                  t              5  t        t        |t                     d d d        t        t         j"                  d
z         D ]L  }| j%                  |t        t        d                   | j%                  |t        t        d      d             N | j                  t        t        g dd             g d       | j                  t        t        g dd            g d       | j                  t        t        g d            dg       | j                  t              5  t        t        ddgd             d d d        y # 1 sw Y   &xY w# 1 sw Y   y xY w)Nrg   )
r   r         rg            $   -   rW   abc)r   abr         r   r'   r   )
r&      	   r   r   r   r      r   r   )
r&   r&   r&   r&   r&   r   r   r   r   r   )
r&   r   r   r   r   r   r   r   r   r   )
r&         i  i  r   r   r   r   r   )initial)rg   r   r   )rg   r   r   d   )r   n   s   t      )r~   r    
accumulater<   intcomplexr   r   mapr   rw   minmaxrU   rV   chrrj   HIGHEST_PROTOCOLr   )r   typrm   rn   s       r   test_accumulatezTestBasicOps.test_accumulate   s   jr34>	@j%)<=>	@(2 	FCZCr 345SBCDF	F 	j/02DEjn-r2j!o.4)ZrAqA)Z0)Z59=)T:q"g+>?*jC017	9jC017	9jHLL9:?	Ay) 	%As#$	%622Q67 	EEOOE:eBi#89OOE:eBi#CD	E 	jTBC\RjSABDXYjS9:SEBy) 	,RHc*+	, 	,	% 	%	, 	,s   &N$N1$N.1N:c           
      &   | j                  t        t        dd            g d       | j                  t        t        dd            g d       | j                  t        t        dd            g d       | j                  t              5  t        t        d             d d d        | j                  t              5  t        t        ddd              d d d        | j                  t              5  t        t        d d             d d d        | j                  t              5  t        t        dd             d d d        | j                  t
              5  t        t        dd	             d d d        | j                  t
              5  t        t        dd
             d d d        d}t        dd      D ]  t        t        |            D ]  }|d | }t        t        |            }| j                  ||      5  | j                  dj                  t        |       |       | j                  t        d |D                     |ra|j                         }| j                  t        fd|D                     | j                  t        |      k         |j                  |       d d d          y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ZxY w# 1 sw Y   BxY w)NABCDEFGr   ))ABC)DEFGr&   )r   r   r   r   )r   r   r   r   ))r   )r   )r   )r   )r   )r   r   hellor   ABCDEFGHIJKLMNOPQRSTUVWXYZr   )rm   r=   batches c              3   >   K   | ]  }t        |      t        u   y wr   )r   tuple).0batchs     r   	<genexpr>z,TestBasicOps.test_batched.<locals>.<genexpr>   s     'RUu(<'Rs   c              3   :   K   | ]  }t        |      k(    y wr   len)r   r   r=   s     r   r   z,TestBasicOps.test_batched.<locals>.<genexpr>   s     +QCJ!O+Qs   )r~   r    batchedr   rw   r+   r<   r   subTestjoinchain
assertTrueallpopappend)r   datar/   rm   r   
last_batchr=   s         @r   test_batchedzTestBasicOps.test_batched   s   gi34G	Igi34I	Kgi34T	V y) 	%#$	%y) 	.At,-	.y) 	#q!"	#y) 	.G,-	.z* 	(A&'	(z* 	)B'(	) ,q! 	3A3t9% 3!Hwq!}-\\AG\< 
3$$RWWUG_%=qAOOC'R''R$RS%,[[]
+Q+Q(QRJ1(<=z2
3 
33	3	% 	%	. 	.	# 	#	. 	.	( 	(	) 	)
3 
3sU   J8>K2K%KK,K9?B,L8KKKK),K69LLc           
         d }t         |fD ]  }| j                  t         |dd            t        d             | j                  t         |d            t        d             | j                  t         |d            g        | j                  t        d |dd            t        d             | j	                  t
        t         |dd	              y )
Nc               7   0   K   | D ]  }|D ]  }|   yw)zPure python version in the docsNr   )	iterablesrx   elements      r   chain2z'TestBasicOps.test_chain.<locals>.chain2   s)      "! "G!M""s   r   defabcdefr   r   abcdr&   r   )r   r~   r    rR   r   rw   )r   r   r   s      r   
test_chainzTestBasicOps.test_chain   s    	"  	7AT!E5/2DNCT!E(^T%[9T!B%["-T!Que_5tF|Dia1g6	7r   c                    | j                  t        t        j                  ddg            t        d             | j                  t        t        j                  dg            t        d             | j                  t        t        j                  dg            g        | j                  t	        dt        j                  ddg            t        d             | j                  t        t        t        j                  ddg             | j                  t        t        t        j                  t        t        d	                  d            d
dg       y )Nr   r   r   r   r   r   r&   r   r   r   r   )
r~   r    r   from_iterablerR   r   rw   rP   repeatr<   rC   s    r   test_chain_from_iterablez%TestBasicOps.test_chain_from_iterable   s    e115%.ABDNSe115':;T%[Ie112$78"=a!4!4eU^!DEtF|T)T5+>+>1v+FGfU%8%8a9I%JANORSUVQWXr   c                    t         j                  gt        z   D ]  }t        dd      }| j	                  t         ||            t        d             | j	                  t        |      d       | j	                  t         ||            t        d             | j	                  t         |t        d                  g        | j	                  t        d |t        dd                  t        d             | j                  t        t
         |t        d	d
                    t        t        j                  dz         D ])  }| j                  |t        dd      t        d             + y )Nr   r   r   r   bcdefr   r   r   r&   r   r   r   )copydeepcopypicklecopiersr   r~   r    r   rR   r   rw   r<   rj   r   r   )r   operrx   rn   s       r   test_chain_reduciblez!TestBasicOps.test_chain_reducible   s   ]]Om3 	BDue$BT$r(^T(^<T"Xs+T$r(^T'];T$uRy/2B7T!T%u*=%>?fNitE!QK/@A	B 622Q67 	PEOOE5#6XOO	Pr   c                    | j                  t        t               j                  d       | j                  t        t               j                  g        | j                  t        t               j                  d       | j                  t        t               j                  g f       | j                  t        t               j                  t	        g       g f       t               }|j                  t	        ddg      f       | j                  t        |      g d       t               }|j                  t	        ddg      t	        dg      f       | j                  t        |      g d       y )Nr   r   r   r   )r   r   r   drz   fghi)r   r   r   r   r   rz   r   )r   rw   r   __setstate__iterr~   r    r   rx   s     r   test_chain_setstatez TestBasicOps.test_chain_setstate  s    )UW%9%92>)UW%9%92>)UW%9%91=)UW%9%9B5A)UW%9%9DHb>JW
uen-/0b#ABW
uen-tUG}=>b#HIr   c                    | j                  t        t        d       | j                  t        t        ddd       | j                  t        t        d        | j                  t        t        dd       d gt        z   D ]  }| j                  t         |t        dd                  g        | j                  t         |t        dd                  g d       t        dd      }t        |       | j                  t         ||            g d	       | j                  t         |t        t        d
      d                  g d       t        t        d
      d      }t        |       | j                  t         ||            g d        d }d }d }t        d      D ]8  }t        |      D cg c]
  }d|z  dz
   c}t        |dz         D ]  }t        t        |            }	| j                  t        |	      ||kD  rdn%t        |      t        |      z  t        ||z
        z         | j                  t        |	      t        t        |	                   | j                  |	t        |	             |	D ]  }
| j                  t        |
      |       | j                  t        t        |
            |       | j                  t        |
      t        |
             | j                  t        fd|
D                     | j                  t        |
      D cg c]	  }||
v s| c}        | j                  |	t         ||                   | j                  |	t         ||                   | j                  |	t         ||                   t        t        j                   dz         D ]  }| j#                  |t        |                ; y c c}w c c}w )Nr   r&   r   c                     | S r   r   r   s    r   ro   z0TestBasicOps.test_combinations.<locals>.<lambda>      A r       ABCDr   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r.   r   r   r   r   r&   r   r   r&   r   )r   r   r   c              3   z  K   t        |       t              }||kD  ryt        t        |            }t        fd|D               	 t	        t        |            D ]  }||   ||z   |z
  k7  s n y||xx   dz  cc<   t        |dz   |      D ]  }||dz
     dz   ||<    t        fd|D               pw)%Pure python version shown in the docsNc              3   (   K   | ]	  }|     y wr   r   r   r/   pools     r   r   zHTestBasicOps.test_combinations.<locals>.combinations1.<locals>.<genexpr>/       1AQ1   r   c              3   (   K   | ]	  }|     y wr   r   r  s     r   r   zHTestBasicOps.test_combinations.<locals>.combinations1.<locals>.<genexpr>9       5DG5r  r   r   r    r<   reversed)rX   r`   r=   indicesr/   jr  s         @r   combinations1z5TestBasicOps.test_combinations.<locals>.combinations1(  s     ?DD	A1u58nG1111!%(+ AqzQUQY. 
a
qsA 2A!(1!1GAJ25W555 s   A-B;1A
B;c              3      K   t        |       t              }t        t        |      |      D ]0  }t	        |      t        |      k(  st        fd|D               2 yw)r   c              3   (   K   | ]	  }|     y wr   r   r  s     r   r   zHTestBasicOps.test_combinations.<locals>.combinations2.<locals>.<genexpr>A       9AQ9r  N)r   r   permutationsr<   sortedr    rX   r`   r=   r	  r  s       @r   combinations2z5TestBasicOps.test_combinations.<locals>.combinations2;  sT     ?DD	A'a!4 :'?d7m39999:   AA#
A#c              3      K   t        |       t              }t        t        |      |      D ]0  }t        t	        |            |k(  st        fd|D               2 yw)zPure python version from cwr()c              3   (   K   | ]	  }|     y wr   r   r  s     r   r   zHTestBasicOps.test_combinations.<locals>.combinations3.<locals>.<genexpr>I  r  r  N)r   r   combinations_with_replacementr<   setr  s       @r   combinations3z5TestBasicOps.test_combinations.<locals>.combinations3C  sU     ?DD	A8q1E :s7|$)9999:r  r   r      r   c              3   &   K   | ]  }|v  
 y wr   r   r   rz   valuess     r   r   z1TestBasicOps.test_combinations.<locals>.<genexpr>V       '?V'?   )r   rw   combinationsr+   r   r~   r    r   r<   r   r\   r  r  r   r   rj   r   r   )r   optestIntermediater  r  r  r=   r(   r`   resultr   rz   rn   r  s                @r   test_combinationszTestBasicOps.test_combinations  sG   )\59)\5!Q?)\48*lE2>,. 	:BT"\%%<"=>CT"\&!%<"=>_a+FA6!"T"%5"67TV T"\%(A%>"?@AC+E!Ha8!"T"%5"678:	:"	6&	:	: q 	DA&+Ah/ac"f/F1Q3Z Dl6156  V1Q3aDGd1g<MPTUVWXUXPY<YZ  Vc#f+.>?  8 DA$$SVQ/$$SQ[!4$$T!WfQi8OOC'?Q'?$?@$$T!W17%BA16a%BDD   mFA.F)GH  mFA.F)GH  mFA.F)GH"6#:#:Q#>? DEOOE<+BCD!D	D/ &Cs   3O	O$(O$c                 |    | j                  t        t        f      5  t        dd       d d d        y # 1 sw Y   y xY w)NAAi    )r   OverflowErrorMemoryErrorr  rC   s    r   test_combinations_overflowz'TestBasicOps.test_combinations_overflow`  s4    {;< 	&u%	& 	& 	&   2;z"tuple reuse is specific to CPythonc                    | j                  t        t        t        t        t        dd                        d       | j                  t        t        t        t        t        t        dd                              d       y Nabcder   r   )r~   r   r  r   idr  assertNotEqualr    rC   s    r   test_combinations_tuple_reusez*TestBasicOps.test_combinations_tuple_reusef  W    SRgq)A!BCDaHCCDgq1I,J$K LMqQr   c                    t         }| j                  t        |d       | j                  t        |ddd       | j                  t        |d        | j                  t        |dd       d gt        z   D ]c  }| j                  t         | |dd                  g d        |dd      }t        |       | j                  t         ||            g d       e d	 }d
 }d }t        d      D ]a  }t        |      D cg c]
  }d|z  dz
   c}t        |dz         D ]-  }	t         ||	            }
| j                  t        |
       |||	             | j                  t        |
      t        t        |
                   | j                  |
t        |
             t        t        |	            }|dk(  s|	dk  r| j                  |
|       n&| j                  t        |
      t        |      k\         |
D ]  }| j                  t        |      |	       t        |      D cg c]  \  }}|	 }}}| j                  t        |      t        t        |                   | j                  t        |      t        |             | j                  t        fd|D                     | j                  |D cg c]	  }||v s| c}        | j                  |
t         ||	                   | j                  |
t         ||	                   t        t         j"                  dz         D ]  }| j%                  | ||	              0 d y c c}w c c}}w c c}w )Nr   r&   r   r   c                     | S r   r   r   s    r   ro   zATestBasicOps.test_combinations_with_replacement.<locals>.<lambda>s  r   r   ABC)r   r   r   r   r   r   r   r   r   )r   r   r5  r   r6  c              3     K   t        |       t              }|s|rydg|z  }t        fd|D               	 t        t        |            D ]  }||   |dz
  k7  s n y||   dz   g||z
  z  ||d t        fd|D               Pw)r   Nr   c              3   (   K   | ]	  }|     y wr   r   r  s     r   r   zPTestBasicOps.test_combinations_with_replacement.<locals>.cwr1.<locals>.<genexpr>  r  r  r   c              3   (   K   | ]	  }|     y wr   r   r  s     r   r   zPTestBasicOps.test_combinations_with_replacement.<locals>.cwr1.<locals>.<genexpr>  r  r  )r   r   r  r<   )rX   r`   r=   r	  r/   r  s        @r   cwr1z=TestBasicOps.test_combinations_with_replacement.<locals>.cwr1|  s      ?DD	AcAgG1111!%(+ AqzQU* &qzA~.!a%85W555 s   AB-Bc              3      K   t        |       t              }t        t        |      |      D ]0  }t	        |      t        |      k(  st        fd|D               2 yw)r   r   c              3   (   K   | ]	  }|     y wr   r   r  s     r   r   zPTestBasicOps.test_combinations_with_replacement.<locals>.cwr2.<locals>.<genexpr>  r  r  N)r   r   productr<   r  r    r  s       @r   cwr2z=TestBasicOps.test_combinations_with_replacement.<locals>.cwr2  sT     ?DD	A"58A6 :'?d7m39999:s   AA$A$c                 j    | s|rdS dS t        | |z   dz
        t        |      z  t        | dz
        z  S Nr   r   )r\   )r=   r`   s     r   numcombszATestBasicOps.test_combinations_with_replacement.<locals>.numcombs  s:    q$1$!A;a($qs)33r   r   r   r  r   c              3   &   K   | ]  }|v  
 y wr   r   r  s     r   r   zBTestBasicOps.test_combinations_with_replacement.<locals>.<genexpr>  r  r  )r  r   rw   r+   r   r~   r    r   r<   r   r  r  r  r   groupbyr   rj   r   r   )r   cwrr   r!  r:  r?  rB  r=   r(   r`   r"  regular_combsr   kvnorunsrz   rn   r  s                     @r   "test_combinations_with_replacementz/TestBasicOps.test_combinations_with_replacementk  s   +)S%0)S%A6)S$/*c5"5,. 	VBT"S]"34_a"5!}!"T"%5"67TV	V	6$	:	4
 q 	:A&+Ah/ac"f/F1Q3Z :c&!n-  Vhq!n=  Vc#f+.>?  8 $\&!%< =6Q!V$$V];OOCK3}3E$EF DA$$SVQ/+21:6CAaa6F6$$S[#c&k2BC$$T!WfQi8OOC'?Q'?$?@$$V17%BA16a%BDD   d61o)>?  d61o)>?"6#:#:Q#>? :EOOE3va=9:1:	:/  7
 &Cs   =M#M6	M Mc                 |    | j                  t        t        f      5  t        dd       d d d        y # 1 sw Y   y xY w)Nr%     @)r   r&  r'  r  rC   s    r   +test_combinations_with_replacement_overflowz8TestBasicOps.test_combinations_with_replacement_overflow  s4    {;< 	7)$6	7 	7 	7r)  c                    t         }| j                  t        t        t	        t
         |dd                        d       | j                  t        t        t	        t
        t         |dd                              d       y r+  )r  r~   r   r  r   r-  r.  r    )r   rE  s     r   .test_combinations_with_replacement_tuple_reusez;TestBasicOps.test_combinations_with_replacement_tuple_reuse  sZ    +SRWa!9:;Q?CCDWa,A$B CDaHr   c                   	 | j                  t        t               | j                  t        t        ddd       | j                  t        t        d        | j                  t        t        dd       | j	                  t        t        dd            g        | j                  t        t        dd       | j	                  t        t        t        d      d            g d       dd	}dd
}t        d      D ]  }t        |      D cg c]
  }d|z  dz
   c}	t        |dz         D ]  }t        t        	|            }| j	                  t        |      ||kD  rdnt        |      t        ||z
        z         | j	                  t        |      t        t        |                   | j	                  |t        |             |D ]d  }| j	                  t        |      |       | j	                  t        t        |            |       | j                  t        	fd|D                     f | j	                  |t         |	|                   | j	                  |t         |	|                   ||k(  rI| j	                  |t        t        	d                    | j	                  |t        t        	                   t        t        j                  dz         D ]  }| j                  |t        	|                	 y c c}w )Nr   r&   r   r   r   rm   r   )r   r   r   r&   r   r   r   r&   )r&   r   )r&   r   c              3     K   t        |       t              }||n|}||kD  ryt        t        |            }t        t        ||z
  dz   |dz               ddd   }t        fd|d| D               |rt	        t        |            D ]f  }||xx   dz  cc<   ||   dk(  r||dz   d |||dz    z   ||d ||z
  ||<   5||   }||    ||   c||<   || <   t        fd|d| D                n y|ryyw)r   Nr   r   c              3   (   K   | ]	  }|     y wr   r   r  s     r   r   zHTestBasicOps.test_permutations.<locals>.permutations1.<locals>.<genexpr>  s     5AQ5r  r   c              3   (   K   | ]	  }|     y wr   r   r  s     r   r   zHTestBasicOps.test_permutations.<locals>.permutations1.<locals>.<genexpr>  s     #ADG#Ar  r  )rX   r`   r=   r	  cyclesr/   r
  r  s          @r   permutations1z5TestBasicOps.test_permutations.<locals>.permutations1  s)    ?DD	AYAA1u58nG%!Aqs+,TrT2F5!555!%(+ A1INIayA~&-acdmga!n&D$%Eq	"1I291"+wqz/
GQBK##AWRa[#AAA  s   C6C<:C<c              3      K   t        |       t              }||n|}t        t        |      |      D ]0  }t        t	        |            |k(  st        fd|D               2 yw)r   Nr<  c              3   (   K   | ]	  }|     y wr   r   r  s     r   r   zHTestBasicOps.test_permutations.<locals>.permutations2.<locals>.<genexpr>  r  r  )r   r   r>  r<   r  r  s       @r   permutations2z5TestBasicOps.test_permutations.<locals>.permutations2  s`     ?DD	AYAA"58A6 :s7|$)9999:s   AA*A*r   r   r  r   c              3   &   K   | ]  }|v  
 y wr   r   r  s     r   r   z1TestBasicOps.test_permutations.<locals>.<genexpr>  r  r  r   )r   rw   r  r+   r~   r    r<   r   r\   r  r  r   r   rj   r   r   )
r   rY  r\  r=   r(   r`   r"  prn   r  s
            @r   test_permutationszTestBasicOps.test_permutations  sl   )\2)\5!Q?)\48*lE2>l5"56;)\5#>l58Q78+U	W	0	: q 	DA&+Ah/ac"f/F1Q3Z Dl6156  V1Q3aDGd1Q3i<OP  Vc#f+.>?  8 AA$$SVQ/$$SQ[!4OOC'?Q'?$?@A   mFA.F)GH  mFA.F)GH6$$VT,vt2L-MN$$VT,v2F-GH"6#:#:Q#>? DEOOE<+BCDD	D/s   K?c                 |    | j                  t        t        f      5  t        dd       d d d        y # 1 sw Y   y xY w)Nr   rL  )r   r&  r'  r  rC   s    r   test_permutations_overflowz'TestBasicOps.test_permutations_overflow  s4    {;< 	%e$	% 	% 	%r)  c                    | j                  t        t        t        t        t        dd                        d       | j                  t        t        t        t        t        t        dd                              d       y r+  )r~   r   r  r   r-  r  r.  r    rC   s    r   test_permutations_tuple_reusez*TestBasicOps.test_permutations_tuple_reuse	  r0  r   c                    t        d      D ]g  }dd | }t        d      D ]P  }t        t        ||            }t        t        ||            }t        t	        ||            }t        t        ||            }| j                  t        |      ||z         | j                  t        |      |r,t        ||z   dz
        t        |      z  t        |dz
        z  n|        | j                  t        |      ||kD  rdnt        |      t        ||z
        z         | j                  t        |      ||kD  rdn%t        |      t        |      z  t        ||z
        z         | j                  |t        t        |                   | j                  |t        t        |                   | j                  |t        t        |                   | j                  |t        t        |                   | j                  ||D cg c]  }t        |      t        |      k(  s| c}       | j                  ||D cg c]  }t        t        |            |k(  s| c}       | j                  ||D cg c]  }t        |      t        |      k(  s| c}       | j                  ||D cg c]  }t        t        |            |k(  s| c}       | j                  |t        t        t        |      j                  |                   | j                  |t        t        t        |      j                  |                   | j                  |t        t        |      t        |      z               S j y c c}w c c}w c c}w c c}w )Nr   r   r   r<  r   r   )r<   r    r>  r  r  r  r~   r   r\   r  r  filter__contains__)	r   r=   rm   r`   rY   rE  permcombts	            r   test_combinatoricszTestBasicOps.test_combinatorics  s    q 	EA"1A1X EGAa018A>?LA./LA./   TAqD1  SQRD1QK$q',A4!9,L]^Y^`  T1A$q'D1I:MN  T1A$q'DG:KdSTUVSVi:WX   vc$i'89  fSX&67  vc$i'89  vc$i'89   $&MQ&)T!W:Lq&MN  4'Ja3s1v;>'JK  4'Na6!9d1g;M'NO  3'Ia#c!f+q.'IJ  tF3s83H3H$,O'PQ  tF3t93I3I3,O'PQ  vc#hT.B'CD3E	E* 'N'J'N'Is0   M8M89M=M=1NN)NNc                 ,   | j                  t        t        dg d            t        d             | j                  t        t        dg d            t        d             | j                  t        t        dg d            t        d             | j                  t        t        dg d            t        d             | j                  t        t        dg d            t        d	             | j                  t        t        d
g d            t        d             d}t        j	                  t        t        d      |            }t        j	                  t        d            }| j                  t        t        ||            g d|z         | j                  t        t        d t        d             | j                  t        t        t        d      d        | j                  t        t        t        d             | j                  t        t        t        d      d        d d gt        z   D ]  }dg dddfdg dddfdg dddfdg dd	dfd
g dddffD ]  \  }}}}| j                  t         |t        ||                  t        |             | j                  t         |t        ||                  t        |             t        ||      }|st        |       | j                  t         ||            t        |               y )NABCDEFr   r   r   r   r   r   )r   	selectorsACEF)r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   ACr3  )r   r   r   r   r   r   BC'  r   rQ  r   r   r   c                 ,    t        j                   |       S r   )r   r   s    r   ro   z,TestBasicOps.test_compress.<locals>.<lambda>A  s    DIIaL r   c                 ,    t        j                  |       S r   )r   r   r   s    r   ro   z,TestBasicOps.test_compress.<locals>.<lambda>A  s    4==3C r   CEFBCDEFr   )r~   r    compressr   r   r   r<   r   rw   r   r   )r   r=   r   rn  r   result1result2r!  s           r   test_compresszTestBasicOps.test_compress/  st   hHNOQUV\Q]^hx?@$v,Ohx?@$r(Khx?@$x.Qhx9:DJGhum<=tDzJ""6%(A#67''v7	htY78'A+F)XtU1X>)XuQx>)XuQx8)XuQx> )*CD}T 	PB=&%8="b1=(G<7D#.tS16 P1i'   bty)Q&R!SUYZaUbc  b$	)B&C!Dd7mT#+D)#< )*$$T"-=*>%?gOP	Pr   c                 
   | j                  t        dt                     g d       | j                  t        dt        d            g d       | j                  t        dt        dt        d                  ddg       | j                  t        dt	        dt        d                  d	d
g       | j                  t        dt	        dt        d                  ddg       | j                  t        t        ddd       | j                  t        t        d       | j                  t        dt        t        dz
              t        t        t        dz
  t        dz                      | j                  t        dt        t         dz
              t        t        t         dz
  t         dz                      | j                  t        dt        d            g d       | j                  t        dt        d            g d       | j                  t        dt        t        d                  t        d      t        d      t        d      g       | j                  t        dt        t        dd                  t        dd      t        dd      t        dd      g       ddz  }| j                  t        dt        |            ||dz   |dz   g       t        d      }| j                  t        |      d       t        |       | j                  t        |      d       t        d      }| j                  t        |      d       t        |       | j                  t        |      d        | j                  t        t        d!            d"       | j                  t        t        d#            d$       | j                  t        t        t        d#                  t               t         j                   dz
  t         j                   dz   d%dd&dt         j                  dz
  t         j                  dz   fD ]9  }t        t        |            }d'j#                  |      }| j                  ||       ; ddt        dz
  t        dz   fD ]  }t        |      }| j                  t        t%        j$                  |            |       | j                  t        t%        j&                  |            |       t        t(        j*                  dz         D ]  }| j-                  |t        |               t        dt        dz          t!        j.                          y )(Nr   r   r   r   r   r   r&   r   )r   r   r   r   )r   r   r&   r  r  r   )r   r   )r   r   )r   r  )r   r   r   r   rg   r         
@)r  g      @g      @      
@      )r  y      @            @      1.1z2.1z3.1r   r     zcount(3)zcount(4)z	count(-9)ig     $@zcount(10.25)g      $@zcount(10.0)r   	count(%r))r~   r$   countrR   r!   r   rw   maxsizer    r<   r   r   reprr   r   floatsys__mod__r   r   rj   r   r   exc_info)r   BIGINTr   r/   r1r2valuern   s           r   
test_countzTestBasicOps.test_countQ  s   eEG,.LMeE!H-/MNaeE!H!5688LMaU59!56H8MNaU59!56I8NO)UAq!4)UC0b%	"23eGAIwqy9:	<b%
"34eWHQJ
;<	>at-/ABaw02MNawu~!67!%.'%.'%.I	Kax1~!67"1a.(1a.(1a.I	KDav/&&(F1H1MN!Ha*-Qa*-"Ia+.Qa"%eEl+^<eDk*M:d5;/0%8;;,q.3;;,q.#r1b#++a-QTQ\Q\]^Q^_ 	%AeAhB$$Q'BR$		% GAIwqy0 	5EeAT$))A,/7T$--"23U;v66:; 5uU|45		5 	aS\\^r   c                    | j                  t        dt        dd            g d       | j                  t        dt        dd            g d       | j                  t        dt        d            g d       | j                  t        t        d	d
       | j                  t        dt        dd            g d       | j                  t        dt        dd            g d       | j                  t        dt        dd            g d       | j                  t        dt        t        dz
  d            t        dt        t        dz
  t        dz   d                   | j                  t        dt        t         dz
  d            t        dt        t         dz
  t         dz   d                   | j                  t        dt        dt        dz               t        t        dddt        dz   z  z   t        dz                      | j                  t        dt        dd            g d       | j                  t        dt        dd            g d       | j                  t        dt        t        d      t        d                  t        d      t        d      t        d      g       | j                  t        dt        t        dd      t        dd                  t        dd      t        dd      t        dd      g       ddz  }| j                  t        dt        |            d|d|z  g       | j                  t        t        dt        dd                   t        g d!             t        dd      }| j                  t        |      d"       t        |       | j                  t        |      d#       t        d$d      }| j                  t        |      d%       t        |       | j                  t        |      d%       t        d$d&      }| j                  t        |      d'       t        |       | j                  t        |      d(       | j                  t        |      d(       | j                  t        t        d)d            d*       | j                  t        t        d)d            d+       | j                  t        t        d)d,            d-       | j                  t        t        dd,            d.       t        dd,      }| j                  t        t        |            t               | j                  t        t        |            t               t         j                   dz
  t         j                   dz   d/dddt         j                  dz
  t         j                  dz   fD ]  }t         j                   dz
  t         j                   dz   d/ddddt         j                  dz
  t         j                  dz   f	D ]z  }t        t        ||            }|dk(  rd0|z  }n	d1|d2|d3}| j                  ||       t        t"        j$                  dz         D ]  }| j'                  |t        ||               |  y )4Nr   r&   r   )r   r&   )r   r   )r   r   )startstepr   )r  )r  )r   r   )r   r   r   r   r   )r  )r   r&   r  r   )r  )r   r   )r   r   r   r   r   rg   r   g      ?)r&   r  g      @r  )r&   r  y      !@       r  z.1z1.2z1.3r      r   r  g      @)rg   g      )@g      .@zcount(3, 5)zcount(8, 5)r  zcount(-9, 0)r  zcount(-9, -3)zcount(-12, -3)g      %@zcount(10.5, 1.25)zcount(10.5)g      ?zcount(10.5, 1.0)zcount(10, 1.0)r  r  zcount(z, ))r~   r$   r  r   rw   rR   r  r<   r    r   r   r  r   r   r   r  r  rj   r   r   )r   r  r   r/   r
  r  r  rn   s           r   test_count_with_stridez#TestBasicOps.test_count_with_stride  s(   eE!AJ/1OPeEq$9:7	9eErN39	;)UC5eE!AJ/1OPeE!AJ/1OPeE!AJ/1OPb%
A"67b%PR
T[\_T_abBc9deb%Q"78$r5'RTV]U]^aUacdCe:fgar719!56eB1gai=(8'!)DE	Gaq$0.Aaq'!235IJawu~wt}!EF!%.'%.'%.I	Kax!}hqm!DE"1Q-"R(2b/J	LDaF!34q&!F(6KLd1eBn56=M8NO!QKa-0Qa-0"aLa.1Qa.1"bMa/2Qa"23a"23eD$/02EFeD!n-}=eD$/02DEeBo.0@A"cNd1g,d1g.;;,q.3;;,q.#r1b#++a-QTQ\Q\]^Q^_ 
	8A|A~|A~sB1b#++VW-Y\YdYdefYfg 	8%1+&6%/B  ./2B  R("6#:#:Q#>? 8EOOE5A;78	8
	8r   c           
         | j                  t        dt        d            t        d             | j                  t        t        d            g        | j	                  t
        t               | j	                  t
        t        d       | j                  t        t        t        t                     d            g d       y )Nrg   r   
abcabcabcar   r   )
r   r   r&   r   r   r&   r   r   r&   r   )r~   rR   cycler    r   rw   rP   r0   rC   s    r   
test_cyclezTestBasicOps.test_cycle  s    b%,/l1CDeBi"-)U+)UA.fU46]2679NOr   c                 b   t        d      }| j                  t        |      d       | j                  t        dt	        j
                  |            t        d             t        t        j                  dz         D ]  }| j                  t        dt        j                  t        j                  ||                  t        d             t        |       | j                  t        dt        j                  t        j                  ||                  t        d             t        |       t        |        t        t        j                  dz         D ]  }| j                  |t        d              t        t        j                  dz         D ]  }t        d      }t        |      }t        d      D cg c]  }t        |       }}t        j                  ||      }t        j                  |      }| j                  t        d	|      t        d
             t        d      }t        |      }t        d      D cg c]  }t        |       }}t        j                  ||      }t        j                  |      }| j                  t        d	|      t        d
              y c c}w c c}w )Nr   r   rg   
bcabcabcabr   
cabcabcabcr,  r&   r   cdeabcdeabcdeabcdeabr   )r  r~   r   rR   r   r   r    r<   rj   r   rk   rl   r   r   )r   r   rn   rx   r/   _r^  r   s           r   test_cycle_copy_picklez#TestBasicOps.test_cycle_copy_pickle  s    %La#& 	b$--"23T,5GH622Q67 	ET"fll6<<53I&JK!,/1GT"fll6<<53I&JK!,/1GG	 622Q67 	1EOOE5<0	1 622Q67 	HEgBb	A"'(+Qa+A+Q&AQAT"a[$/E*FG gBb	A"'(+Qa+A+Q&AQAT"a[$/E*FG	H , ,s   8J'?J,c                     g d}|D ]5  }t        j                  |      }| j                  t        d|      g d       7 y )N)sH   citertools
cycle
(c__builtin__
iter
((lI1
aI2
aI3
atRI1
btR((lI1
aI0
tb.s?   citertools
cycle
(c__builtin__
iter
(](KKKetRKbtR(]KaK tb.s>   citertools
cycle
c__builtin__
iter
](KKKeRKbR]KaK b.s;   citertools
cycle
cbuiltins
iter
](KKKeRKbR]KaK b.sH   =       	itertoolscyclebuiltinsiter](KKKeRKbR]KaK b.sH   citertools
cycle
(c__builtin__
iter
((lp0
I1
aI2
aI3
atRI1
btR(g0
I1
tb.s?   citertools
cycle
(c__builtin__
iter
(]q (KKKetRKbtR(h Ktb.s>   citertools
cycle
c__builtin__
iter
]q (KKKeRKbRh Kb.s;   citertools
cycle
cbuiltins
iter
]q (KKKeRKbRh Kb.sG   <       	itertoolscyclebuiltinsiter](KKKeRKbRh Kb.sI   citertools
cycle
(c__builtin__
iter
((lI1
aI2
aI3
atRI1
btR((lI1
aI00
tb.sA   citertools
cycle
(c__builtin__
iter
(](KKKetRKbtR(]KaI00
tb.s=   citertools
cycle
c__builtin__
iter
](KKKeRKbR]Kab.s:   citertools
cycle
cbuiltins
iter
](KKKeRKbR]Kab.sG   <       	itertoolscyclebuiltinsiter](KKKeRKbR]Kab.sI   citertools
cycle
(c__builtin__
iter
((lp0
I1
aI2
aI3
atRI1
btR(g0
I01
tb.sA   citertools
cycle
(c__builtin__
iter
(]q (KKKetRKbtR(h I01
tb.s=   citertools
cycle
c__builtin__
iter
]q (KKKeRKbRh b.s:   citertools
cycle
cbuiltins
iter
]q (KKKeRKbRh b.sF   ;       	itertoolscyclebuiltinsiter](KKKeRKbRh b.rg   )
r&   r   r   r&   r   r   r&   r   r   r&   )rj   rk   r~   rR   )r   	testcasesri  rx   s       r   test_cycle_unpickle_compatz'TestBasicOps.test_cycle_unpickle_compat  s@    
	4  	KAaBT"b\+IJ	Kr   c                    t        d      }|j                  t        d      df       | j                  t	        d|      t        d             t        d      }|j                  t        d      df       | j                  t	        d|      t        d             | j                  t              5  t        d      j                  t        d      dg       d d d        | j                  t              5  t        d      }|j                  t        d      df       d d d        t	        d|       | j                  t              5  t        d      j                  t        d      df       d d d        | j                  t        t        d	      j                  d
       | j                  t        t        d	      j                  g f       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   wxY w)Ndefgr   r   r   defgabcdefgabcdefgababcdefgr   r(   r   r   )r  r   r    r~   rR   r   rw   r   )r   r   s     r   test_cycle_setstatez TestBasicOps.test_cycle_setstate  s    &M	UQ'(b!d+A&BC &M	Y+,b!d+A&BC y) 	=&M&&Y';<	= y) 	/fANNE&M1-.	/ 	R y) 	?&M&&Y'=>	? 	)U2Y%;%;R@)U2Y%;%;bUC	= 	=	/ 	/	? 	?s$   .&G1(G&GGGG'c                 v   | j                  g t        t        g                    | j                  g t        t        g t                           | j	                  t
        t        t        dg              | j	                  t
        t        d        | j	                  t
        t        dd d       g d}g }t        |d       D ]2  \  }}|D ](  }| j                  ||d          |j                  |       * 4 | j                  ||       t        t        j                  dz         D ]  }g }t        j                  t        j                  t        |t              |            D ]2  \  }}|D ](  }| j                  ||d          |j                  |       * 4 | j                  ||        g }t        |t              D ]_  \  }}t        |t              D ]G  \  }}|D ]=  }| j                  ||d          | j                  ||d	          |j                  |       ? I a | j                  ||       t        t        j                  dz         D ]  }g }t        j                  t        j                  t        |t              |            D ]  \  }}t        j                  t        j                  t        |t              |            D ]G  \  }}|D ]=  }| j                  ||d          | j                  ||d	          |j                  |       ? I  | j                  ||        t        |t              D cg c]  \  }}|	 }	}}t        |D 
cg c]  }
|
d   	 c}
      }| j                  t        |	      |       | j                  t        |	      t        |             t        t!        d
t        d                  }t        |t              }t#        |      \  }}t#        |      \  }}t#        |      \  }}| j                  t        |      g        | j                  t        |      g        | j                  t#        |      d       t        |       | j                  t        |      g        t        t        j                  dz         D ]x  }t        |t              }t#        |      \  }}t#        |       t#        |       | j                  t        t        j                  t        j                  ||                  g        z d}t        t%        |            D cg c]  \  }}|	 }
}}| j                  |
g d       t        t%        |            D cg c]  \  }}t        t'        |dd	            s|  }
}}| j                  |
g d       t        t%        |            D cg c]  \  }}t        t        |            |f }
}}| j                  |
g d       t%        t        t%        |            D cg c]  \  }}t        t        |            |f c}}d      d d }
| j                  |
g d        G d dt(              dfd	}d t        fd}| j	                  | |d             | j	                  | |d              G fdd      } |        |       d g}| j	                  ||t               | j	                  ||       fdd_        | j	                  |d g       d_        | j	                  |d d g       y c c}}w c c}
w c c}}w c c}}w c c}}w c c}}w )Nkeyr   c                     | S r   r   r'   s    r   ro   z+TestBasicOps.test_groupby.<locals>.<lambda>2      a r   rg   ))r   rg   r   )r      r   )r   r  r   )r      r   )r         )r&   r   r  )r   r      )r   r  r  c                     | d   S r^   r   r_   s    r   ro   z+TestBasicOps.test_groupby.<locals>.<lambda>8  s
    ! r   r   r   r&   	AABBBAAAAr   )r   r   abracadabra)r   r   r   r   r`   )r   r   r`   )r   r   r&   r   )r   r   )r   r   r&   r`   T)reverser   )r  r  r  c                       e Zd Zy)0TestBasicOps.test_groupby.<locals>.ExpectedErrorNrK   rL   rM   r   r   r   ExpectedErrorr    s    r   r  c              3   8   K   t        |       D ]  }d  w)Nyor;   )r=   r/   r  s     r   delayed_raisez0TestBasicOps.test_groupby.<locals>.delayed_raise  s%     1X 
s   c                 X    t        | |      D cg c]  \  }} ||       c}}S c c}}w r   )rD  )rX   keypfuncrG  gs        r   gulpz'TestBasicOps.test_groupby.<locals>.gulp  s%    (/$(?@1DG@@@s   &c                       e Zd Z fdZy)+TestBasicOps.test_groupby.<locals>.DummyCmpc                     r   r   )r   dstr  s     r   __eq__z2TestBasicOps.test_groupby.<locals>.DummyCmp.__eq__  s	    ##r   N)rK   rL   rM   r  )r  s   r   DummyCmpr    s    $r   r  )r  c                 T    j                   dkD  rxj                   dz  c_         | S rA  )skip)objr  keyfuncs    r   r  z*TestBasicOps.test_groupby.<locals>.keyfunc  s(    ||a!
##r   r}   )r~   r    rD  r-  r   rw   r   r<   rj   r   rk   rl   ra   re   r  r   r!   r   r  rP   	Exceptionr  )r   rm   duprG  r  elemrn   ikigkeysr`   expectedkeysrx   r  g1g2g3r  r  r  r  r  s                       @@r   test_groupbyzTestBasicOps.test_groupby+  sN    	T'"+./T'"""567)T75"+=>)Wd3)WeZD.A}- 	!DAq !  DG,

4 !	! 	C  622Q67 	%ECV\\'!U2CU%KL %1 %D$$QQ0JJt$%% Q$	% Au% 	%DAq!!V, %B %D$$QQ0$$Ra1JJt$%%	% 	C  622Q67 	%ECV\\'!U2CU%KL )1$ll6<<68JE+RS )FB " )((DG4((T!W5

4())) Q$	% &a/0da00!,QAaD,-TL1TC$56 [%(+,QR2R2R2b2&b2&b8,Rb2&622Q67 	MEE"B8DAqHHT&,,v||Au/E"FGL	M "6!9-.41aQ..56"6!9-E41afQqm1DQEEO,+26!9+=>41ac$q'lA>>NO76!93EF41aSa\A&FPTUVXWXY:;	I 		  !%4 	A 	-}Q/?@-}Q/?@	$ 	$ ZT* 	-qr:-q1	$ -vw?-d|WE] 1,6 / F ? Gs*   8\\!\#\):\), \/? \5
c                 <   | j                  t        t        t        t	        d                  g d       | j                  t        t        d g d            ddg       | j                  t        t        t
        g d            ddg       | j                  t        dt        t        t                           g d       | j                  t        t               | j                  t        t        d        | j                  t        t        d	 t	        d      d
       | j                  t        t        t        d       | j                  t        t        t        t	        d      t	        d                   g d}t        t        t	        d            }| j                  t        t        j                  |            |       t        t        t	        d            }| j                  t        t        j                  |            |       t	        t        j                  dz         D ]  }t        t        t	        d            }| j                  t        t        j                  t        j                   ||                  |       t        |       | j                  t        t        j                  t        j                   ||                  |dd          t	        t        j                  dz         D ]-  }t        t        t	        d            }| j#                  ||       / y )Nr   )r   r&   r   r   r   r   r&   r   r   r&   r   )r   r&   r   r   c                     | S r   r   r'   s    r   ro   z*TestBasicOps.test_filter.<locals>.<lambda>      a r   c                     | S r   r   r'   s    r   ro   z*TestBasicOps.test_filter.<locals>.<lambda>  r  r   r   r   )r~   r    re  r4   r<   boolrR   r  r   rw   r   r   r   rj   r   rk   rl   r   r   ansr   rn   s       r   test_filterzTestBasicOps.test_filter  s$   fVU1X67AfT;781Q%@fT;781Q%@a!899E)V,)VZ8)VZq1E)VVQ7)T6%(E!H+EF 658$diil+S1658$dmmA./5622Q67 	REvuQx(AT&,,v||Au/E"FGMGT&,,v||Au/E"FGQRQ		R
 622Q67 	&EvuQx(AOOE1%	&r   c           
      |   | j                  t        t        t        t	        d                  g d       | j                  t        t        d g d            g d       | j                  t        t        t
        g d            g d       | j                  t        dt        t        t                           g d       | j                  t        t               | j                  t        t        d        | j                  t        t        d t	        d      d	       | j                  t        t        t        d
       | j                  t        t        t        t	        d      t	        d                   t	        t        j                  dz         D ]+  }| j                  |t        t        t	        d                   - y )Nr   rt  r  r   r   r   r   )r   r   r   r   c                     | S r   r   r'   s    r   ro   z/TestBasicOps.test_filterfalse.<locals>.<lambda>      1 r   c                     | S r   r   r'   s    r   ro   z/TestBasicOps.test_filterfalse.<locals>.<lambda>  r  r   r   r   r   )r~   r    filterfalser4   r<   r  rR   r  r   rw   r   rj   r   r   r   rn   s     r   test_filterfalsezTestBasicOps.test_filterfalse  s%   k&%(;<gFk$<=wGk$<=wGaVUW!=>	J)[1)[*=)[*eAhJ)[&!<)T;uQxq+JK622Q67 	BEOOE;vuQx#@A	Br   c           
      F   t        dt                     D cg c]	  \  }}||f }}}| j                  |g d       | j                  t        t        dt	        d                  t        dt	        d                   | j                  t        t        dt	        d                  t        dt	        d                   | j                  t        dt        dt                           t        dt	        d                   | j                  t        t        d            t        d             | j                  t        t                     t                      | j                  t        t         d       | j                  t        t         t	        d      d       | j                  t        dd      D cg c]  }t        t        |             c}t        dd             | j                  t        dd      D cg c]  }| c}t        dd             y c c}}w c c}w c c}w )Nr   r~  r   r   r   r   )
r!   r  r~   r    r<   r$   rR   r   rw   r   )r   r(   yr  pairs        r   test_zipzTestBasicOps.test_zip  s   !$U57!34A!u44<=c%q23T%q5JKc(E!H56XuQx8PQaHeg 67ha9QRc(m,d8n=cedf-)S!,)S%(A6E58IJ%T
+JeU+	-3ue+<=4$=eU+	- 5 K=s   H1H7	Hc                 x   t        t        t        t        dd                  }| j	                  t        |      t        |             t        t        t        t        t        dd                        }| j	                  t        t        j                  |            t        |             t        j                  t        dt                           D cg c]	  \  }}||f }}}| j	                  |g d       t        j                  t        dt                           D cg c]	  \  }}||f }}}| j	                  |g d       t        t        j                  dz         D ]e  }t        j                   t        j"                  t        dt                     |            D cg c]	  \  }}||f }}}| j	                  |g d       g t        t        j                  dz         D ]r  }t        dt                     }t%        |       t        j                   t        j"                  ||            D cg c]	  \  }}||f }}}| j	                  |ddg       t t        t        j                  dz         D ]&  }| j'                  |t        dt                            ( y c c}}w c c}}w c c}}w c c}}w )Nr   r   r~  r   r  r  )r    r   r-  r!   r~   r   r   r   dictfromkeysr   r  r   r<   rj   r   rk   rl   r   r   )r   idsr(   r  r  rn   r!  s          r   test_zip_tuple_reusez!TestBasicOps.test_zip_tuple_reuse  s+    3r3ue,-.S3s8,3r4E5 1234T]]3/0#c(; "&3uUW+=!>?A!u??<=!%s5/A!BCA!uCC<=622Q67 	BE%+\\&,,s5?QSX2Y%Z[TQAa5[C[S"@A	B 622Q67 	8E"51!"%+\\&,,?OQV2W%XYTQAa5YCYS8X"67		8 622Q67 	8EOOE3ueg#67	8! @ D \ Zs   J$$J*&J07J6c                    dt        d      gt        d      dgt        d      t        dd      t        dd      gt        d      t        d      t        dd      t        d	      t        d
      gt        d      t        d      t        dd      t        d	      t        d
      t        d      gfD ]  }t        t        t        t        |                  D cg c].  }t	        |D cg c]  }|t        |      k  r||   nd  c}      0 }}}| j                  t        t        |       |       | j                  t        t        |i i       |       |D cg c]  }t	        d |D               }}| j                  t        t        |i t        d            |        | j                  t        dt        dt                           t        t        dt        d                         | j                  t        t                     t        t                            | j                  t        t        g             t        t        g                    | j                  t        t        d            t        t        d                   | j                  t        t        di i       t        t        t        d      d gz   d                   | j                  t        t        d       | j                  t        t        t        d      d       dD ]4  }	 t        |t               t!                      | j#                  d|z          6 | j                  t        dd      D cg c]  }t	        t        |             c}t        t        dd                   | j                  t        dd      D cg c]  }| c}t        t        dd                   y c c}w c c}}w c c}w # t        $ r Y w xY wc c}w c c}w )Nr   r   r    i4  i  i  r   i  i  c              3   4   K   | ]  }|d u xr dxs |  y w)NXr   )r   rz   s     r   r   z/TestBasicOps.test_ziplongest.<locals>.<genexpr>  s!     @Q$Y.33!3@r?   r  	fillvaluer   r   r  )zzip_longest('abc', fv=1)z3zip_longest('abc', fillvalue=1, bogus_keyword=None)zDid not raise Type in:  r   )r   r  )r<   r   r   r   r   r~   r    zip_longestr  rR   r  r!   r   rw   evalglobalslocalsfail)r   r#   r/   argtargetri  stmtr  s           r   test_ziplongestzTestBasicOps.test_ziplongest  s5   a!q5!teD.d40@AteAhd4(8%+uT{SteAhd4(8%+uT{TYZ[T\] 	VD  %SS$%89; N#q3s8|SV=NO ;F ;T+t"45v>T+t":r":;VDJPQQe@a@@QFQT+t"Ktc7J"KLfU	V 	aHeg >?c(TYZ[T\F]A^_km,d35k:k"o.SW>k(34d3x=6IJk>2>?c$u+tf"4f=>	@)[!4)[%(A>
 		=D=T79fh/ 		4t;<		= 	E58QR%T
+Rc%/0	2;ue+DE4$Ec%/0	2? O ; R(  
 SEs<   O$O 	OOO$ O3/	O8O$	O0/O0c                 X   t        t        t        t        dd                  }| j	                  t        |      t        |             t        t        t        t        t        dd                        }| j	                  t        t        j                  |            t        |             y )Nr   r   )
r    r   r-  r  r~   r   r   r   r  r  )r   r  s     r   test_zip_longest_tuple_reusez)TestBasicOps.test_zip_longest_tuple_reuse-  sq    3r;ue456S3s8,3r4E5 9:;<T]]3/0#c(;r   c           	      *   t        t        j                  dz         D ]t  }| j                  |t	        dd             | j                  |t	        dd             | j                  |t	        ddd             | j                  |t	        dd             v y )Nr   r   r   defghr  r   )r<   rj   r   r   r  r  s     r   test_zip_longest_picklingz&TestBasicOps.test_zip_longest_pickling4  sw    622Q67 	=EOOE;ue#<=OOE;ug#>?OOE;ug#KLOOE;r7#;<		=r   c                     t                G fdd      }| j                  t               5 }t         |              d d d        | j                  j                         y # 1 sw Y   &xY w)Nc                       e Zd Z fdZy)?TestBasicOps.test_zip_longest_bad_iterable.<locals>.BadIterablec                     r   r   )r   	exceptions    r   rD   zHTestBasicOps.test_zip_longest_bad_iterable.<locals>.BadIterable.__iter__@  s    r   N)rK   rL   rM   rD   )r  s   r   BadIterabler  ?  s     r   r  )rw   r   r  assertIsr  )r   r  cmr  s      @r   test_zip_longest_bad_iterablez*TestBasicOps.test_zip_longest_bad_iterable<  sY    K		  	  y) 	'R&	' 	bllI.	' 	's   A##A,c                     G d d      } |ddt               } |ddt               }d }| j                   |||      g d        |ddt              } |ddt               }t        ||d	
      }| j                  t	        |      d       | j                  t	        |      d       | j                  t	        |      d       | j                  t        t        |       y )Nc                       e Zd Zd Zd Zd Zy),TestBasicOps.test_bug_7244.<locals>.Repeaterc                 @    || _         t        |      | _        || _        y r   )or   ri  rz   )r   r  ri  rz   s       r   __init__z5TestBasicOps.test_bug_7244.<locals>.Repeater.__init__L  s    Qr   c                     | S r   r   rC   s    r   rD   z5TestBasicOps.test_bug_7244.<locals>.Repeater.__iter__P      r   c                 z    | j                   dkD  r!| xj                   dz  c_         | j                  S | j                  rA  )ri  r  rz   rC   s    r   rI   z5TestBasicOps.test_bug_7244.<locals>.Repeater.__next__R  s,    66A:FFaKF66M&&Lr   N)rK   rL   rM   r   rD   rI   r   r   r   Repeaterr  J  s    !r   r$  r   r   r&   r   c                     g }t        | |d      D ]C  \  }}t        j                  d      5  t        ||f       d d d        |j	                  ||f       E |S # 1 sw Y    xY w)Nr   r  stdout)r  r   captured_outputprintr   )r  r  r"  r/   r
  s        r   runz'TestBasicOps.test_bug_7244.<locals>.run]  sh    F#Ba8 &1,,X6 "1a&M"q!f%& M" "s   AA"	)rT  rT  rT  rR  r   r  rT  )rH   r~   rt   r  r   r   )r   r$  r  r  r)  rx   s         r   test_bug_7244zTestBasicOps.test_bug_7244H  s    	! 	!" aM*aM*	 	R&BC aL)aM*R1-b6*b6*b6*,b1r   c                 |   | j                  t        t        d            g        | j                  t        t        d            g        | j                  t        t        d            dg      f | j                  t        t        d            g d       | j                  t        t        t        d                  t        t	        t        d      t        dd                         | j                  t              5  t                d d d        | j                  t              5  t        d	d
       d d d        | j                  t              5  t        d	       d d d        | j                  t              5  t        d        d d d        y # 1 sw Y   xY w# 1 sw Y   ixY w# 1 sw Y   KxY w# 1 sw Y   y xY w)Nr   r   r   r   r   r,  )r,  )r   r   r   r   )r   rz   rs  r   r   rg   rW   )r~   r    pairwiser<   r!   r   rw   rC   s    r   test_pairwisezTestBasicOps.test_pairwisep  s_   hrl+R0hsm,b1htn-)l	, 	-hw/0N	PhuV}56c%-q&1ABC	E y) 	J	y) 	 UB	 y) 	%e$	%y) 	TN	 		 		  	 	% 	%	 	s0   =F%FF&9F2FF#&F/2F;c                    g dgfdgddgft        d      t        d      gg dft        d      t        d      t        d      gg ft        d      t        d      t        d      gg ft        d      t        d      t        d      gg ffD ]v  \  }}| j                  t        t        |       |       t        d	      D ]B  }| j                  t        t        ||z         t        t        |i t	        |
                   D x | j                  t        t        t        t        d      gdz               d       | j                  t        t        t        d      d        d }d }dddt        d      t        d	      t	        ddd      t        d      t        d      t        t        d            g	}t        d      D ]  }t        t        j                  d            D cg c]  }t        j                  |       }}t        t        t
        |            }	| j                  t        t        t        |             |	       | j                  t        t        |       t         ||              | j                  t        t        |       t         ||              t        t        |      }| j                  t        t        t        |             |	        y c c}w )Nr   r   r   r   r&   r   )r   r   rQ  rR  rS  )r   r   rT  r   r   r<  r   r   i c               ?     K   t        t        t        |             |j                  dd      z  }t	        |      }|dk(  rd y t        d |D              ry dg|z  }t        d t        ||      D               	 t        t        |            D ]_  }||   t	        ||         dz
  k(  r||xx   dz  cc<   t        |dz   |      D ]  }d||<   	 t        d t        ||      D                n y xw)Nr   r   r   r   c              3   8   K   | ]  }t        |      d k(    yw)r   Nr   )r   r  s     r   r   z>TestBasicOps.test_product.<locals>.product1.<locals>.<genexpr>  s     4d3t9>4s   c              3   ,   K   | ]  \  }}||     y wr   r   r   r  r/   s      r   r   z>TestBasicOps.test_product.<locals>.product1.<locals>.<genexpr>  s     CGD!QC   c              3   ,   K   | ]  \  }}||     y wr   r   r6  s      r   r   z>TestBasicOps.test_product.<locals>.product1.<locals>.<genexpr>  s     KGD!QKr7  )	r    r   r   getr   anyr!   r  r<   )r#   kwdspoolsr=   r	  r/   r
  s          r   product1z+TestBasicOps.test_product.<locals>.product1  s     UD)*TXXh-BBEE
AAv4e44cAgGCs5'/BCCC!%(+ 	AqzSq]Q%66 AJ!OJ"1Q3] '%&
'Ks5'7JKKK	  s   C2C4c               ?      K   t        t        t        |             |j                  dd      z  }g g}|D ]  }|D cg c]  }|D ]  }||gz   
  }}}  |D ]  }t        |        yc c}}w w)z Pure python version used in docsr   r   N)r    r   r   r9  )r#   r;  r<  r"  r  r(   r  rY   s           r   product2z+TestBasicOps.test_product.<locals>.product2  s     UD)*TXXh-BBETF ?)/>A>A!QC%>%>>? "Dk!" ?s   :A0A* A0r   r   r   )r   r   r   r  r  r  r   r   )r<   r~   r    r>  r  r   r   rw   r  r   random	randrangechoicerY   r   r   )
r   r#   r"  r`   r=  r?  argtypesr/   r
  expected_lens
             r   test_productzTestBasicOps.test_product  si   "JVff%&Aha!#MNAha%(+R0Aha%(+R0Aha%(+R0 	ILD& T'4.16:1X I  gQ&8!9!%gt&Ft1~&F!GII	I 	T'E!H:a<"89:DA)WeAh=	,	" r58U1Xta17J	NE"IuU2Y/?As 	FA5:6;K;KA;N5OPFMM(+PDPC/LSgtn!56ET'4.14$3HIT'4.14$3HItT?DSgtn!56E	FPs    Kc                     | j                  t        t        f      5  t        dgdz  ddi d d d        y # 1 sw Y   y xY w)Nr   r   r   i   )r   r&  r'  r>  rC   s    r   test_product_overflowz"TestBasicOps.test_product_overflow  s=    {;< 	2tfTk151	2 	2 	2s   5>c                    | j                  t        t        t        t        t        dd                        d       | j                  t        t        t        t        t        t        dd                              d       y )Nr   r   r   )r~   r   r  r   r-  r>  r.  r    rC   s    r   test_product_tuple_reusez%TestBasicOps.test_product_tuple_reuse  sW    SR)>!?@A1ECCD1F,G$H IJANr   c           
      f   g dgfdgddgft        d      t        d      gg dft        d      t        d      t        d      gg ft        d      t        d      t        d      gg ft        d      t        d      t        d      gg ffD ]  \  }}| j                  t        t        j                  t	        |             |       | j                  t        t        j
                  t	        |             |       t        t        j                  d	z         D ]  }| j                  |t	        |          y )
Nr   r   r   r1  r&   r   r2  r   r   )	r<   r~   r    r   r>  r   rj   r   r   )r   r#   r"  rn   s       r   test_product_picklingz"TestBasicOps.test_product_pickling  s    "JVff%&Aha!#MNAha%(+R0Aha%(+R0Aha%(+R0 	7LD& T$))GTN";<fET$--"?@&Iv66:; 7w~67	7r   c                     t        dd      }|j                  d       | j                  t        |      d       t        ddd      }|j                  d       | j	                  t
        t        |       y )NrT  )r   )r      r&   r   r   )r   r   rM  )r>  r   r~   r   r   rH   )r   r^  s     r   test_product_issue_25021z%TestBasicOps.test_product_issue_25021  s\     F4 	{#a&)FB%	~&-q1r   c                    | j                  t        t        dd            g d       | j                  t        t	        d      t        d            g d       | j                  t        t        dd            g d       | j                  t        dt        d            g d       | j                  t        t        dd            g        | j                  t        t        dd            g        | j                  t        t               | j                  t        t        d dd       | j                  t        t        d d       t        d	      }| j                  t        |      d
       t        d	d      }| j                  t        |      d       t        |       | j                  t        |      d       t        dd      }| j                  t        |      d       | j                  t        dt        j                  |            t        d             | j                  t        dt        j                  |            t        d             t	        t        j                  dz         D ]  }| j                  |t        dd             ! y )Nr   r   )objecttimes)r   r   r   ))r   r   r   r   )r&   r   r   r  r   y      ?        zrepeat((1+0j))r   zrepeat((1+0j), 5)zrepeat((1+0j), 0)rg   r&   aar   )r~   r    r   r$   r<   rR   r   rw   r  r   r   r   rj   r   r   )r   r`   r   rn   s       r   test_repeatzTestBasicOps.test_repeat  s   fCq9:OLeAhvc{37	9fS!n-?a-?fS!n-r2fS"o.3)V,)VT1a8)VT374La"234Oa"56Qa"56 #R(a#&a1.W>aq!12DMB622Q67 	AEOOE6B#?@	Ar   c                 0   | j                  t        t        dd            d       | j                  t        t        dd            d       | j                  t        t        dd            d       | j                  t        t        dd            d       y )Nr   r   zrepeat('a', 0)r   rR  )r~   r  r   rC   s    r   test_repeat_with_negative_timesz,TestBasicOps.test_repeat_with_negative_times  st    fS"o.0@AfS"o.0@AfS346FGfS346FGr   c                    | j                  t        t        t        j                  t        d      t        dd                  g d       | j                  t        t        t        dt        d                  g d       | j                  t        t        t        dt                           g d       | j                  t        dt        t        dt                           d	d
g       | j                  t        t        t        j                  g             g        | j                  t        t               | j                  t        t        t        d t        d      t        d                   | j                  t        t        t        j                         | j                  t        t        t        dt        d                   | j                  t        t        t        t        dgdg             | j                  t        t        t        t        dgdg             g d}t        t        dt                     }| j                  t        t!        j                   |            |       t        t        dt                     }| j                  t        t!        j"                  |            |       t        t$        j&                  dz         D ]-  }t        t        dt                     }| j)                  ||       / y )Nr   r   r   r   r   r   r   r   r~  r&   r  r  rg   r   )r~   r    r   rU   powr<   r9   r  rR   r   rw   negr   r+   r,   r)   r   r   rj   r   r   r  s       r   test_mapzTestBasicOps.test_map  s   c(,,a%!*EF+	-c(E58<=2	4c(E57;<2	4aHeUW =>!'*	,c(,,34b9)S))T3tU1XuQx+HI)S(,,7)T3r58+<=*dC!qc,BC)T3vsQC+@A (%)diil+S1%)dmmA./5622Q67 	&EHeUW-AOOE1%	&r   c                    | j                  t        t        t        j                  t        t        d      t        dd                        g d       | j                  t        dt        t        j                  t        t               t        d                        g d       | j                  t        t        t        j                  g             g        | j                  t        t        t        j                  t        ddg      g            dg       | j                  t        t        t        t        j                  d g             | j                  t        t               | j                  t        t        t        j                  dgd	       | j                  t        t        t        d
dg             | j                  t        t        t        t        dg             | j                  t        t        t        t        dg             g d}t        t        j                  t        t        d      t        dd                  }| j                  t        t!        j                   |            |       t        t        j                  t        t        d      t        dd                  }| j                  t        t!        j"                  |            |       t        t$        j&                  dz         D ]K  }t        t        j                  t        t        d      t        dd                  }| j)                  ||       M y )Nr   r   r   rZ  r   r   i   r   r   extrarg   )r~   r    starmaprU   r[  r!   r<   rR   r  r   r   rw   r   r+   r,   r)   r   r   rj   r   r   r  s       r   test_starmapzTestBasicOps.test_starmap"  s"   ghllCa%!*4MNO+	-as57E!H7M!NO+	-ghllB78"=ghllT1Q%[MBCdVL)T78<<$+HI)W-)WhllUGWM)T72w+?@*dGGeW,EF)T76E7+CD !HLL#eAha
";<diil+S1HLL#eAha
";<dmmA./5622Q67 	&Ec%(E!AJ&?@AOOE1%	&r   c                    dD ]?  }| j                  t        t        t        d      g|       t        t        |              A dD ]B  \  }}| j                  t        t        t        d      g|       t        t        |              D | j                  t        t        t        d      d             t        t        d                   | j                  t        t        t        d      d d             t        t        d                   | j                  t        t        t        d      d d d             t        t        d                   | j                  t        t        t        d      dd             t        t        dd                   | j                  t        t        t        d      dd d            t        t        ddd                   t	        t        d            }| j                  t        t        |d            t        t        d                   | j                  t        |      t        t        dd                   t	        t        d            }| j                  t        t        |dd            g        | j                  t        |      t        t        dd                   t        d      }| j                  t        t        |       | j                  t        t        |dddd       | j                  t        t        |d	dd       | j                  t        t        |dd	d
       | j                  t        t        |ddd
       | j                  t        t        |ddd       | j                  t        t        |d       | j                  t        t        |dd       | j                  t        t        |dd       | j                  t        t        |ddd       | j                  t        t        |ddd       | j                  t        t        t        t               ddt                          d       t               }| j                  t        t        |ddd            dg       | j                  t        |      d       dD ]  }| j                  t        t        j                  t        t        d      g|             t        t        |              | j                  t        t        j                  t        t        d      g|             t        t        |              t        t        j                  dz         D ]'  }| j!                  |t        t        d      g|        )  d dD        }t#        j$                  |      }t        |d      }| j'                   |              t        |       t)        j*                          | j-                   |               G d dt.              }| j                  t        t        t        d       |d                  t        t        d                   | j                  t        t        t        d       |d       |d                  t        t        dd                   | j                  t        t        t        d       |d       |d       |d                  t        t        ddd                   y )N)rg   r   r   rg   r   r   rg   r   )rg   rg   rg   r   r   r   )))rg   r   r   )rg   r   r   ))rg   r   )rg   r   ))r   )r   rg   r&   r   r   r   r   r   r   2   )rd  re  rf  rg  rh  c              3       K   | ]  }|  y wr   r   )r   r(   s     r   r   z+TestBasicOps.test_islice.<locals>.<genexpr>  s      Aa    rT  c                       e Zd Zd Zd Zy))TestBasicOps.test_islice.<locals>.IntLikec                     || _         y r   valr   rq  s     r   r   z2TestBasicOps.test_islice.<locals>.IntLike.__init__  s	    r   c                     | j                   S r   rp  rC   s    r   	__index__z3TestBasicOps.test_islice.<locals>.IntLike.__index__  s    xxr   N)rK   rL   rM   r   rt  r   r   r   IntLikern    s     r   ru  r   )r~   r    rP   r<   r   r   rw   r+   r   r  r  r   r   r   rj   r   r   weakrefrefassertIsNotNoner   
gc_collectassertIsNonerQ  )	r   r#   tgtargsrx   rar   rn   wrru  s	            r   test_islicezTestBasicOps.test_islice>  s=    		1D T&s";d";<!%,/1		1 	4MD'
 T&s";d";<!%/24	4 	fU2Y56U2YHfU2Yd;<d59oNfU2YdDABDrOTfU2Y4894a;MNfU2Y4;<d5BPQ?>ST %)_fRm,d58n=b4a#56%)_fRA./4b4a#56 2Y)VR0)VRAq!<*fb"b!<*fb!R<*fb!R<*fb!R;*fb#6*fb#q9*fb!S9*fb#q!<*fb!S!<T&!R"ABCQG GfQ1b12QC8a!$ 	BD T$))F5:,E,E"FG!%,/1T$--uSz0ID0I"JK!%,/1v66:; BveCj'@4'@AB	B  ! [[_B]RT"R"$	 f 	 
 	fU3Z=>U2YPfU3ZgbkJKeBm,	.fU3Zgbk7ST:VWeBr!n-	/r   c           
      @   g d}| j                  t        t        t        |            g d       | j                  t        t        t        g             g        | j	                  t
        t               | j	                  t
        t        t        j                         | j	                  t
        t        t        j                  dgd       | j	                  t
        t        t        ddg             | j	                  t        t        t        t        dg             t        t        g d      }| j                  t        |      g d       | j	                  t        t        |       | j                  t        t        j                  t        t        |                  g d       | j                  t        t        j                  t        t        |                  g d       t        t         j"                  dz         D ]"  }| j%                  |t        t        |             $ y )	Nr   r   r   r   r&   r   r   r   rt  r_  r`  rg   )r   r   r   r   r   r   r   r   r   r   )r~   r    	takewhilerh   r   rw   rU   r[  r   r+   r,   r  rH   r   r   r<   rj   r   r   )r   r   ri  rn   s       r   test_takewhilezTestBasicOps.test_takewhile  sm   (i$78)Di"56;)Y/)Y=)YugwO)T9R%+AB*dIgw,GHd./a),-q1 	dii	(D(ABCYOdmmIh,EFG!	#622Q67 	>EOOE9Xt#<=	>r   c           
         g d}| j                  t        t        t        |            g d       | j                  t        t        t        g             g        | j	                  t
        t               | j	                  t
        t        t        j                         | j	                  t
        t        t        j                  dgd       | j	                  t
        t        t        ddg             | j	                  t        t        t        t        dg             | j                  t        t        j                  t        t        |                  g d       | j                  t        t        j                  t        t        |                  g d       t        t        j                  dz         D ]"  }| j!                  |t        t        |             $ y )Nr  )r   r&   r   r   r   r_  r`  rg   r   )r~   r    	dropwhilerh   r   rw   rU   r[  r   r+   r,   r   r   r<   rj   r   r   )r   r   rn   s      r   test_dropwhilezTestBasicOps.test_dropwhile  s<   (i$78:JKi"56;)Y/)Y=)YugwO)T9R%+AB*dIgw,GH 	dii	(D(ABCEUVdmmIh,EFG(	*622Q67 	>EOOE9Xt#<=	>r   c           	         d}t        g       \  }}| j                  t        |      g        | j                  t        |      g        t        t        |            \  }}| j                  t	        ||      t	        t        |      t        |                   t        t        |            \  }}| j                  t        |      t        t        |                   | j                  t        |      t        t        |                   t        t        |            \  }}t        d      D ]  }| j                  t        |      |        ~| j                  t        |      t        t        |                   t        t        |            \  }}t        d      D ]  }| j                  t        |      |        ~| j                  t        |      t        t        d|                   t        d      D ]  }dg|z  dg|z  z   }t        j                  |       g g f}t        t        |            }|D ]$  }t        ||         }	||   j                  |	       & | j                  |d   t        t        |                   | j                  |d   t        t        |                    | j                  t        t                | j                  t        t         d       | j                  t        t         ddgd       | j                  t        t         ddgdd       t        d	      \  }} t        |      d
      }
| j                  t        |
      t        d
             t        t        d      d      \  }}}
t        d      D ]  }| j                  t        |      |        | j                  t        |      t        t        d                   | j                  t        |
      t        |
      gt        t        d                   | j                  t        |      t        t        dd                   | j                  t        |
      t        t        dd                   | j                  t        t         d	d       | j                  t        t         g d       t        d      D ]~  }t        d	|      }| j                  t        |      t               | j                  t        |      |       | j                  |D cg c]  }t        |       c}t        d	      g|z          t        d	      \  }}t        |      \  }
}| j!                  ||
u        t        d	      \  }}t        |      }| j                  t        |       | j                  t        |d        ||      }| j!                  t        |      t        |      cxk(  xr t        |      cxk(  xr t        d	      k(  nc        t        t        d            \  }}t#        j$                  |      }| j                  t'        |d      t        |             ~t)        j*                          | j                  t,        t&        |d       t        d	      }t        t        d            }t        d	      \  }}| j                  t        t/        j.                  |            |       | j                  t        t/        j.                  |            |       t        t        t        d                  \  }}| j                  t        t/        j.                  |            |       | j                  t        t/        j.                  |            |       t        d	      \  }}t1        d|       t1        d|       | j                  t        t/        j.                  |            |dd         | j                  t        t/        j.                  |            |dd         | j                  t        |      |dd         | j                  t        |      |dd         t        t        d            \  }}t1        d|       t1        d|       | j                  t        t/        j.                  |            |dd         | j                  t        t/        j.                  |            |dd         | j                  t        |      |dd         | j                  t        |      |dd         t        d	      \  }}| j                  t        t/        j2                  |            |       | j                  t        t/        j2                  |            |       | j                  t        |      |       | j                  t        |      |       t        t        d            \  }}| j                  t        t/        j2                  |            |       | j                  t        t/        j2                  |            |       | j                  t        |      |       | j                  t        |      |       t        d	      \  }}t1        d|       t1        d|       | j                  t        t/        j2                  |            |dd         | j                  t        t/        j2                  |            |dd         | j                  t        |      |dd         | j                  t        |      |dd         t        t        d            \  }}t1        d|       t1        d|       | j                  t        t/        j2                  |            |dd         | j                  t        t/        j2                  |            |dd         | j                  t        |      |dd         | j                  t        |      |dd         t        t4        j6                  dz         D ]\  }| j9                  |t;        t        d	                   t        d	      \  }}| j9                  |||       | j9                  |||       ^ y c c}w )N   r   r   r   r   r   r&   r(   r   r   r  invalidr   rg   	__class__rs  <   r   )teer~   r    r>   r$   r<   r   r@  shuffler   r   rw   r   r+   r   r   r   rv  proxygetattrr   ry  ReferenceErrorr   rR   r   rj   r   r   r   )r   r=   r   r   r/   r
  orderlistsitsr  r   r"  r(   r   t1t2tnewt3r^  r  long_ansrn   s                         r   test_teezTestBasicOps.test_tee  sz	   2w1a"%a"%6!9~1aDq58$<=6!9~1a$uQx.1a$uQx.16!9~1s 	)AT!Wa(	)a$uQx.16!9~1s 	)AT!Wa(	)a$uS!}"56q 		7ACEQCEMENN5!HEfQi.C 'SVa&' U1XtE!H~6U1XtE!H~6		7 	)S))S!,)S1Q%5)S1Q%C8 5z1DGENa$u+. eDk1%1as 	)AT!Wa(	)a$uT{"34$q'47+T%(^<a$uS"78a$uQt}"56 	)S%;*c2r2q 	IA]FT&\51S[!,v6!d1g6eaH		I 5z11v1Q UBBx)T*)T2."XRDHGRGDKGH 59~1MM!K0$q':.'1kB5ke% 5z1diil+S1diil+S14e%&1diil+X6diil+X6 5z1Q
Q
diil+SW5diil+SW5a#ab'*a#ab'*5< 1S!Rdiil+Xcd^<diil+Xbc];a(34.1a(23-0 5z1dmmA./5dmmA./5a#&a#&5< 1dmmA./:dmmA./:a(+a(+ 5z1Q
Q
dmmA./QR9dmmA./QR9a#ab'*a#ab'*5< 1S!RdmmA./#$@dmmA./"#?a(34.1a(23-0 622Q67 	3EOOE4E
#34u:DAqOOE1cO2OOE1cO2		3_ 7s   >q
c                 ^    t        t        d d            \  }}	 t        |       ~y #  ~~ xY w)Ni -1)r  r   r:  )r   forwardbackwards      r   test_tee_del_backwardz"TestBasicOps.test_tee_del_backward[  s6    tX 67	L	s   ' ,c                      G fdd      }t         |             \  }| j                  t        d      5  t        |       d d d        y # 1 sw Y   y xY w)Nc                   "    e Zd ZdZd Z fdZy)(TestBasicOps.test_tee_reenter.<locals>.ITc                     | S r   r   rC   s    r   rD   z1TestBasicOps.test_tee_reenter.<locals>.I.__iter__g  r"  r   c                 F    | j                   }d| _         |rt              S y NF)firstr   )r   r  r   s     r   rI   z1TestBasicOps.test_tee_reenter.<locals>.I.__next__i  s$    

"
7N r   N)rK   rL   rM   r  rD   rI   r1  s   r   Ir  e  s    E#r   r  r  )r  assertRaisesRegexrt   r   )r   r  r   r   s      @r   test_tee_reenterzTestBasicOps.test_tee_reenterd  sJ    	# 	# 13x1##L%8 	G	 	 	s   AAc                    t        j                         t        j                          G fdd      }t         |             \  }}t        j                  t        |g      }|j                          	 j                          | j                  t        d      5  t	        |       d d d        j                          |j                          y # 1 sw Y   *xY w# j                          |j                          w xY w)Nc                        e Zd Zd Z fdZy)+TestBasicOps.test_tee_concurrent.<locals>.Ic                     | S r   r   rC   s    r   rD   z4TestBasicOps.test_tee_concurrent.<locals>.I.__iter__x  r"  r   c                 F    j                          j                          y r   )r  wait)r   finishr  s    r   rI   z4TestBasicOps.test_tee_concurrent.<locals>.I.__next__z  s    		r   N)rK   rL   rM   rD   rI   )r  r  s   r   r  r  w  s    r   r  )r
  r#   r  )	threadingEventr  Threadr   r  r  r  rt   r  r   )r   r  r   r   threadr  r  s        @@r   test_tee_concurrentz TestBasicOps.test_tee_concurrents  s    !"	 	 13x1!!QC8	JJL''e< Q JJLKKM	  JJLKKMs$   8&C C*C CC "Dc           
         | j                  t        t        t                      t        t
        t        t        fD ]L  }| j                  t        t         |g              | j                  t        t         |t                            N | j                  t        t        t        g d              | j                  t        t        t        t               d              t        g       \  }}| j                  t        t        |       | j                  t        t        |       t        t                     \  }}| j                  t        t        |       | j                  t        t        |       | j                  t        t        t        d d             t        t        t        t        t        t         fD ]P  }| j                  t        t         |d g              | j                  t        t         |d t                            R y )Nr   c                     | S r   r   r'   s    r   ro   z1TestBasicOps.test_StopIteration.<locals>.<lambda>  r  r   c                     | S r   r   r'   s    r   ro   z1TestBasicOps.test_StopIteration.<locals>.<lambda>  r  r   )r   rH   r   r!   r   r  rD  rA   rP   r  r   re  r  r   r  r  ra  )r   r   r^  qs       r   test_StopIterationzTestBasicOps.test_StopIteration  sb   -su5W- 	AAmT1R59mT1WY<@	A 	-vb$/?@-vgi/FG2w1-q1-q179~1-q1-q1-vdA?+sIy'J 	MAmT1Z3DEmT1Z3KL	Mr   c                     t        d g gd      }t        |       t        j                          | j	                  t        j
                  t        |                   y rT   )r  r   gccollectr   
is_trackedr   s     r   test_combinations_result_gcz(TestBasicOps.test_combinations_result_gc  s?    
 4*a(R


 	d2h/0r   c                     t        d g gd      }t        |       t        j                          | j	                  t        j
                  t        |                   y rT   )r  r   r  r  r   r  r   s     r   ,test_combinations_with_replacement_result_gcz9TestBasicOps.test_combinations_with_replacement_result_gc  s=     +D":q9R


d2h/0r   c                     t        d g gd      }t        |       t        j                          | j	                  t        j
                  t        |                   y rT   )r  r   r  r  r   r  r   s     r   test_permutations_result_gcz(TestBasicOps.test_permutations_result_gc  s=     4*a(R


d2h/0r   c                     t        d g g      }t        |       t        j                          | j	                  t        j
                  t        |                   y r   )r>  r   r  r  r   r  r   s     r   test_product_result_gcz#TestBasicOps.test_product_result_gc  s;     dBZ R


d2h/0r   c                     t        g g      }t        j                          | j                  t        j                  t        |                   y r   )r  r  r  r   r  r   r   s     r   test_zip_longest_result_gcz'TestBasicOps.test_zip_longest_result_gc  s2     "


d2h/0r   c                    ddl m}m}m} t        t
        t        t        t        t        t        t        t        t        t        |t        t         t"        t$        t&        t(        t*        ||t,        f}|D ]C  }| j/                  |      5  | j1                  t2        d      5  d|_        d d d        d d d        E y # 1 sw Y   xY w# 1 sw Y   \xY w)Nr   )_grouper_tee_tee_dataobject)tp	immutabler   )	itertoolsr  r  r  r   r   r   r  r  ry  r  r  r  r  rD  rP   r.  r  r>  r   ra  r  r  r   r  rw   foobar)r   r  r  r  datasetr  s         r   test_immutable_typesz!TestBasicOps.test_immutable_types  s    ==)-
0  	"B$ "++I{C " !BI"" "	"" "" "s$   CB8%C8C=CC	)r   r   N)DrK   rL   rM   r   r   r   r   r   r   r   r   r#  r   bigaddrspacetestr(  impl_detailr/  rJ  rM  rO  r_  ra  rc  rj  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r*  r/  rE  rG  rI  rK  rO  rU  rX  r]  rb  r~  r  r  r  r  r  r   requires_working_threadingr  r  cpython_onlyr  r  r  r  r  r  r   r   r   rq   rq   h   so   '$R !, !,F$3L7Y P P J J MD MD^ & &
 W=>R ?R J: J:X 7 7
 W=>I ?I
 =D =D~ % % W=>R ?REB P PB ., .,` 58 58nP "H "HH K K> "D "DH @F @FD&6 B B-  W=>8  ?84(2T W=>< ?< = =
/&2P&8Ft 2 2 W=>O ?O 7 7 2 2 A A4H & &< & &6 \/ \/| > >( > >" S3 S3l 1002 3*M. 
1 
1 1 1 1 1 1 1 1 1 " "r   rq   c                       e Zd Zd Zed        Zed        Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)TestExamplesc                 T    | j                  t        t        g d            g d       y Nr   r&   r   r   r   r   r   r   rg   r   )r~   r    r   rC   s    r   r   zTestExamples.test_accumulate  s    j568IJr   c                    g d}g d}t        t        j                  dz         D ]  }t        |      }| j	                  t        t        j                  t        j                  ||                  |d d         | j	                  t        |      d       | j	                  t        t        j                  t        j                  ||                  |dd          t        |      }| j	                  t        |      d       | j	                  t        t        j                  |            |dd         | j	                  t        t        j                  |            |dd         y )Nr  r  r   )r<   rj   r   r   r~   r    rk   rl   r   r   r   )r   r   accumulatedrn   rx   s        r   test_accumulate_reduciblez&TestExamples.test_accumulate_reducible  s    '622Q67 	[ED!BT&,,v||B/F"GH+VW.YT"Xq)T&,,v||B/F"GH+VWVX/Z		[
 b1%dmmB/0+ab/Bdiim,k!"o>r   c                     t        g dt        j                        }| j                  t	        |      d        t        t        j                  dz         D ]H  }t        j                  t        j                  ||            }| j                  t        |      ddg       J | j                  t        t        j                  |            ddg       | j                  t        t        j                  |            ddg       y )N)NNNr   TF)r   rU   is_r~   r   r<   rj   r   rk   rl   r    r   r   )r   rx   rn   it_copys       r   test_accumulate_reducible_nonez+TestExamples.test_accumulate_reducible_none  s     *HLL9b4(622Q67 	;Ell6<<E#:;GT']T5M:	; 	dmmB/04-@diim,tUm<r   c                 Z    | j                  dj                  t        dd            d       y Nr   r3  DEFrl  )r~   r   r   rC   s    r   r   zTestExamples.test_chain  s"    ue!45x@r   c                 p    | j                  dj                  t        j                  ddg            d       y r  )r~   r   r   r   rC   s    r   r   z%TestExamples.test_chain_from_iterable  s*    !4!4eU^!DExPr   c           	          | j                  t        t        dd            g d       | j                  t        t        t        d      d            g d       y )Nr   r&   r   r   r   r   )r~   r    r  r<   rC   s    r   r#  zTestExamples.test_combinations  sE    l6156[	]l58Q78=	?r   c                 R    | j                  t        t        dd            g d       y )Nr3  r&   r4  )r~   r    r  rC   s    r   rJ  z/TestExamples.test_combinations_with_replacement  s#    ;E1EF[	]r   c           	      d    | j                  t        t        dg d            t        d             y )Nrl  rm  ro  )r~   r    ry  rC   s    r   r|  zTestExamples.test_compress  s"    hx?@$v,Or   c           	      d    | j                  t        t        t        d      d            g d       y )Nrg   r   )rg   r  r  r  r  )r~   r    rP   r  rC   s    r   r  zTestExamples.test_count   s#    fU2Y235IJr   c           	      r    | j                  t        t        t        d      d            t        d             y )Nr   r  ABCDABCDABCD)r~   r    rP   r  rC   s    r   r  zTestExamples.test_cycle#  s'    fU6]B78$~:NOr   c           	      X    | j                  t        t        d g d            g d       y )Nc                     | dk  S Nr   r   r'   s    r   ro   z-TestExamples.test_dropwhile.<locals>.<lambda>'  
    !A# r   r   r   r   r   r   )r   r   r   )r~   r    r  rC   s    r   r  zTestExamples.test_dropwhile&  s    i{CDgNr   c           	      H   | j                  t        d      D cg c]  \  }}|	 c}}t        d             | j                  t        d      D cg c]  \  }}t        |       c}}t        d      t        d      t        d      t        d      g       y c c}}w c c}}w )NAAAABBBCCDAABBBABCDAB
AAAABBBCCDAAAABBBCCr   )r~   rD  r    )r   rG  r  s      r   r  zTestExamples.test_groupby)  s|    0A(BC1!Ch	)0EF147Fv,UT$ZcK	M DFs   B
B
c           
      f    | j                  t        t        d t        d                  g d       y )Nc                     | dz  S rd   r   r'   s    r   ro   z*TestExamples.test_filter.<locals>.<lambda>0  s
    qs r   rg   )r   r   r   r   r   )r~   r    re  r<   rC   s    r   r  zTestExamples.test_filter/  s"    f]E"I>?Mr   c           
      f    | j                  t        t        d t        d                  g d       y )Nc                     | dz  S rd   r   r'   s    r   ro   z/TestExamples.test_filterfalse.<locals>.<lambda>3  s
    AaC r   rg   )r   r&   r   r   r   )r~   r    r  r<   rC   s    r   r  zTestExamples.test_filterfalse2  s"    k-rCDkRr   c           	      \    | j                  t        t        t        dd            g d       y )N)r&   r   rg   )r   r&   r   r   r   r  )r~   r    r   r[  rC   s    r   r]  zTestExamples.test_map5  s     c#x9:MJr   c           
      |   | j                  t        t        dd            t        d             | j                  t        t        ddd            t        d             | j                  t        t        ddd             t        d             | j                  t        t        ddd d            t        d             y )	Nr   r&   ABr   CDCDEFGr   ACEG)r~   r    rP   rC   s    r   r~  zTestExamples.test_islice8  s    fY23T$Z@fY156T
CfY4894=IfY4;<d6lKr   c                 R    | j                  t        t        dd            ddg       y )Nr   xyr   r(   r   r  )r~   r    r!   rC   s    r   r  zTestExamples.test_zip>  s#    c&$/0:z2JKr   c           	      V    | j                  t        t        ddd            g d       y )Nr   r  -r  )r  r  )r   r  )r   r  )r~   r    r  rC   s    r   test_zip_longestzTestExamples.test_zip_longestA  s$    k&$#FGI	Kr   c           
          | j                  t        t        dd            t        t        t        dj                                            | j                  t        t        t        d                  g d       y )Nr   r&   z#AB AC AD BA BC BD CA CB CD DA DB DCr   )r.   )r   r&   r   )r   r   r&   )r   r&   r   )r&   r   r   )r&   r   r   )r~   r    r  r   r   splitr<   rC   s    r   r_  zTestExamples.test_permutationsE  sZ    l6156c%)N)T)T)VWX	Zl5845O	Qr   c           
          | j                  t        t        dd            t        t        t        dj                                            | j                  t        t        t        d      d            g d       y )Nr   r  zAx Ay Bx By Cx Cy Dx Dyr&   r   r<  )r  )r   r   r   )r   r   r   )r   r   r   )r   r   r   rp  )r   r   r   r  )r~   r    r>  r   r   r
  r<   rC   s    r   rE  zTestExamples.test_productK  s]    gfd34c%)B)H)H)JKL	NgeAhq9:=	>r   c                 R    | j                  t        t        dd            g d       y )Nrg   r   )rg   rg   rg   )r~   r    r   rC   s    r   rU  zTestExamples.test_repeatR  s    fRm,l;r   c           	      ^    | j                  t        t        t        g d            g d       y )N))r&   r   r   r&   rg  r  )r~   r    ra  r[  rC   s    r   test_stapmapzTestExamples.test_stapmapU  s"    gc+ABC&	(r   c           	      X    | j                  t        t        d g d            ddg       y )Nc                     | dk  S r  r   r'   s    r   ro   z-TestExamples.test_takewhile.<locals>.<lambda>Z  r  r   r  r   r   )r~   r    r  rC   s    r   r  zTestExamples.test_takewhileY  s"    i{CDqeLr   N)rK   rL   rM   r   r   r  r  r   r   r#  rJ  r|  r  r  r  r  r  r  r]  r~  r  r  r_  rE  rU  r  r  r   r   r   r  r    s    K ? ? = =AQ?]PKPOMNSKLLKQ><(Mr   r  c                   (    e Zd Zd Zed        Zd Zy)TestPurePythonRoughEquivalentsc           	         d }t        g dg d      D ]r  \  }}| j                  ||      5  	 d t        t        ||            }}	 d t         |||            }}| j                  ||       | j                  ||       d d d        t y # t        $ r}t        |      d }}Y d }~_d }~ww xY w# t        $ r}t        |      d }}Y d }~md }~ww xY w# 1 sw Y   xY w)Nc              3      K   |dk  rt        d      t        |       }t        t        ||            x}r| t        t        ||            x}ryyw)zBBatch data into tuples of length n. The last batch may be shorter.r   zn must be at least oneN)r+   r   r   rP   )rX   r=   rx   r   s       r   batched_recipezJTestPurePythonRoughEquivalents.test_batched_recipe.<locals>.batched_recipe`  sW      1u !9::hB A//%/ !A//%/s   AAA)	r   r   r   r   r   r,  r   r  N)r   r   r   r&   r   r   r   r   r   r   r   N)rX   r=   )r>  r   r    r   r  r   r~   )	r   r  rX   r=   e1r  rz   e2r  s	            r   test_batched_recipez2TestPurePythonRoughEquivalents.test_batched_recipe_  s    	 #R8: 	)KHa x15 
)+!4!(<#=B+!4x(C#DB   R(  R(
) 
)	) ! +!!WdB+ ! +!!WdB+
) 
)sX   CB
B-$C
	B*B% C%B**C-	C6CCCCC	c              '     K   t        | }|j                  xs d|j                  xs t        j                  |j
                  xs d}}}t        t        |||            }	 t        |      }	 t        |       D ]  \  }}	||k(  s|	 t        |      } y # t        $ r  t        t        |      |       D ]  \  }}	 Y y w xY w# t        $ r$ t        t        dz   |      |       D ]  \  }}	 Y y w xY wwrA  )slicer  r|   r  r  r  r   r<   r   rH   r!   	enumerate)
rX   r#   rm   r  r|   r  rx   nextir/   r   s
             r   rP   z%TestPurePythonRoughEquivalents.islicex  s     4LGGLq!&&*?CKK1Tt%tT*+	HE	'1 %
7:!M HE%  	!%,9 
7		  	!%At"4h? 
7	sN   AC1 B ,C C C1&B>;C1=B>>C1*C.+C1-C..C1c           
      ,   | j                  t        | j                  dd            t        d             | j                  t        | j                  ddd            t        d             | j                  t        | j                  ddd             t        d             | j                  t        | j                  ddd d            t        d             t        t	        d	            }| j                  t        | j                  |d
            t        t	        d
                   | j                  t        |      t        t	        d
d	                   t        t	        d	            }| j                  t        | j                  |d
d
            g        | j                  t        |      t        t	        d
d	                   t               }| j                  t        | j                  |dd
d            dg       | j                  t        |      d
       y )Nr   r&   r  r   r  r   r   r  rg   r   r   rj  )r~   r    rP   r   r<   r  r   )r   rx   r   s      r   test_islice_recipez1TestPurePythonRoughEquivalents.test_islice_recipe  s}   dkk)Q78$t*Edkk)Q:;T$ZHdkk)Q=>WNdkk)Qa@A4<P%)_dkk"a014a>Bb4a#56%)_dkk"a34b9b4a#56Gdkk!Q267!=a!$r   N)rK   rL   rM   r  staticmethodrP   r  r   r   r   r  r  ]  s     )2  *%r   r  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)TestGCc                 @    |j                  |       t        |       ~~y r   )r   r   )r   iterator	containers      r   	makecyclezTestGC.makecycle  s    "Xxr   c                 F    g }| j                  t        dd|dg      |       y Nr   r&   r   )r&  r   r   r   s     r   r   zTestGC.test_accumulate  s"    z1Qq),a0r   c                 H    g }| j                  t        dd|dgd      |       y r(  )r&  r   r)  s     r   r   zTestGC.test_batched  s$    w!Aay!,a0r   c                 >    g }| j                  t        |      |       y r   )r&  r   r)  s     r   r   zTestGC.test_chain  s    uQx#r   c                 T    g }| j                  t        j                  |g      |       y r   )r&  r   r   r)  s     r   r   zTestGC.test_chain_from_iterable  s"    u**A3/3r   c                 H    g }| j                  t        dd|dgd      |       y r(  )r&  r  r)  s     r   r#  zTestGC.test_combinations  $    |Qq1Iq115r   c                 H    g }| j                  t        dd|dgd      |       y r(  )r&  r  r)  s     r   rJ  z)TestGC.test_combinations_with_replacement  s%    4a!AYBAFr   c                 D    g }| j                  t        dg d      |       y )Nrl  )r   r   r   r   r   r   )r&  ry  r)  s     r   r|  zTestGC.test_compress  s    x-8!<r   c                     g }t        dt        ft        |            }| j                  t	         |d       |d            |       y )NIntr'   r   r   )r   r   r  r&  r  )r   r   r2  s      r   r  zTestGC.test_count  s8    53&$),uSVSV,a0r   c                 F    g }| j                  t        |gdz        |       y rd   )r&  r  r)  s     r   r  zTestGC.test_cycle  s    uaSU|Q'r   c                 N    g }| j                  t        t        d||g      |       y r^   )r&  r  r  r)  s     r   r  zTestGC.test_dropwhile  s"    y1ay115r   c                 J    g }| j                  t        |gdz  d       |       y )Nr&   c                     | S r   r   r'   s    r   ro   z%TestGC.test_groupby.<locals>.<lambda>  s    q r   )r&  rD  r)  s     r   r  zTestGC.test_groupby  s"    ws1uj115r   c                     d}d }t        t        |      |      D ]0  \  }}|j                  j                  dg       j	                  |       2 y )Nrg   c                     | S r   r   r'   s    r   ro   z'TestGC.test_issue2246.<locals>.<lambda>  r   r   r  r(   )rD  r<   __dict__
setdefaultr   )r   r=   r  r/   r
  s        r   test_issue2246zTestGC.test_issue2246  sK    E!H'2 	:DAq''B/66q9	:r   c                 J    g }| j                  t        d |gdz        |       y )Nc                      y)NTr   r'   s    r   ro   z$TestGC.test_filter.<locals>.<lambda>      r   r&   )r&  re  r)  s     r   r  zTestGC.test_filter  s"    vmaSU3Q7r   c                 B    g }| j                  t        d |      |       y )Nc                      yr  r   r'   s    r   ro   z)TestGC.test_filterfalse.<locals>.<lambda>  r>  r   )r&  r  r)  s     r   r  zTestGC.test_filterfalse  s    {>15q9r   c                 P    g }| j                  t        |gdz  |gdz        |       y )Nr&   r   )r&  r!   r)  s     r   r  zTestGC.test_zip  s(    sA3q51#a%(!,r   c                     g }| j                  t        |gdz  |gdz        |       |d g}| j                  t        |gdz  |gdz  |      |       y )Nr&   r   r  )r&  r  )r   r   r   s      r   r  zTestGC.test_zip_longest  sT    {A3q51#a%0!4I{A3q51#a%1=qAr   c                 J    g }| j                  t        d |gdz        |       y )Nc                     | S r   r   r'   s    r   ro   z!TestGC.test_map.<locals>.<lambda>  s    A r   r&   )r&  r   r)  s     r   r]  zTestGC.test_map  s"    s:s1u-q1r   c                 H    g }| j                  t        |gdz  d       |       y rd   )r&  rP   r)  s     r   r~  zTestGC.test_islice  s"    vqc!eT*A.r   c                 F    g }| j                  t        |gdz        |       y r  )r&  r.  r)  s     r   r/  zTestGC.test_pairwise  s    xA*r   c                 H    g }| j                  t        dd|dgd      |       y r(  )r&  r  r)  s     r   r_  zTestGC.test_permutations  r.  r   c                 J    g }| j                  t        dd|dgd      |       y )Nr   r&   r   r<  )r&  r>  r)  s     r   rE  zTestGC.test_product  s$    w!Aay3Q7r   c                 >    g }| j                  t        |      |       y r   )r&  r   r)  s     r   rU  zTestGC.test_repeat  s    vay!$r   c                 N    g }| j                  t        d ||fgdz        |       y )Nc                      | S r   r   )ri  s    r   ro   z%TestGC.test_starmap.<locals>.<lambda>  s    ! r   r&   )r&  ra  r)  s     r   rb  zTestGC.test_starmap  s&    w|qeWQY7;r   c           	      P    g }| j                  t        t        dd||g      |       y )Nr   r   )r&  r  r  r)  s     r   r  zTestGC.test_takewhile	  s$    y1a|4a8r   N)rK   rL   rM   r&  r   r   r   r   r#  rJ  r|  r  r  r  r  r;  r  r  r  r  r]  r~  r/  r_  rE  rU  rb  r  r   r   r   r"  r"    s     
11$46G=1
(66:8:-B2/+68%<9r   r"  c              #   "   K   | D ]  }|  yw)zRegular generatorNr   seqnr/   s     r   RrP    s      r1   c                       e Zd ZdZd Zd Zy)r   zSequence using __getitem__c                     || _         y r   rO  r   rO  s     r   r   z
G.__init__  s	    	r   c                      | j                   |   S r   rS  )r   r/   s     r   __getitem__zG.__getitem__  s    yy|r   N)rK   rL   rM   rN   r   rV  r   r   r   r   r     s     r   r   c                   "    e Zd ZdZd Zd Zd Zy)r  z Sequence using iterator protocolc                      || _         d| _        y r^   rN  rT  s     r   r   z
I.__init__      	r   c                     | S r   r   rC   s    r   rD   z
I.__iter__  rE   r   c                     | j                   t        | j                        k\  rt        | j                  | j                      }| xj                   dz  c_         |S rT   r/   r   rO  rH   r   rH  s     r   rI   z
I.__next__   ?    66S^#=%8IIdff!r   NrK   rL   rM   rN   r   rD   rI   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^   rN  rT  s     r   r   zIg.__init__(  rY  r   c              #   6   K   | j                   D ]  }|  y wr   rS  rr  s     r   rD   zIg.__iter__+  s     99 	CI	s   NrK   rL   rM   rN   r   rD   r   r   r   ra  ra  &  s    ?r   ra  c                       e Zd ZdZd Zd Zy)r  z Missing __getitem__ and __iter__c                      || _         d| _        y r^   rN  rT  s     r   r   z
X.__init__1  rY  r   c                     | j                   t        | j                        k\  rt        | j                  | j                      }| xj                   dz  c_         |S rT   r\  r]  s     r   rI   z
X.__next__4  r^  r   N)rK   rL   rM   rN   r   rI   r   r   r   r  r  /  s    &r   r  c                       e Zd ZdZd Zd Zy)NzIterator missing __next__()c                      || _         d| _        y r^   rN  rT  s     r   r   z
N.__init__<  rY  r   c                     | S r   r   rC   s    r   rD   z
N.__iter__?  rE   r   Nrd  r   r   r   ri  ri  :  s    !r   ri  c                   "    e Zd ZdZd Zd Zd Zy)r   zTest propagation of exceptionsc                      || _         d| _        y r^   rN  rT  s     r   r   z
E.__init__D  rY  r   c                     | S r   r   rC   s    r   rD   z
E.__iter__G  rE   r   c                     ddz   y )Nr   r   r   rC   s    r   rI   z
E.__next__I  s	    	Qr   Nr_  r   r   r   r   r   B  s    $r   r   c                   "    e Zd ZdZd Zd Zd Zy)E2z3Test propagation of exceptions after two iterationsc                      || _         d| _        y r^   rN  rT  s     r   r   zE2.__init__N  rY  r   c                     | S r   r   rC   s    r   rD   zE2.__iter__Q  rE   r   c                     | j                   dk(  rt        | j                  | j                      }| xj                   dz  c_         |S )Nr&   r   )r/   ZeroDivisionErrorrO  r]  s     r   rI   zE2.__next__S  s7    66Q;##IIdff!r   Nr_  r   r   r   rq  rq  L  s    9r   rq  c                   "    e Zd ZdZd Zd Zd Zy)SzTest immediate stopc                      y r   r   rT  s     r   r   z
S.__init__\  s    r   c                     | S r   r   rC   s    r   rD   z
S.__iter__^  rE   r   c                     t         r   rG   rC   s    r   rI   z
S.__next__`  rJ   r   Nr_  r   r   r   rw  rw  Z  s    r   rw  c                 d    t        t        d t        t        t	        |                               S )z Test multiple tiers of iteratorsc                     | S r   r   r'   s    r   ro   zL.<locals>.<lambda>e  s    a r   )r   r   rP  ra  r   rS  s    r   Lr}  c  s     Z2ag;011r   c                   x    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zy)TestVariousIteratorArgsc           
         g d}g d}t        |      }t        t        t        t        t
        fD ],  }| j                  t        t         ||                  |       . | j                  t        t        t        |                  g        | j                  t        t        t        |             | j                  t        t        t        |             | j                  t        t        t        t        |                   y r  )r   r   r  ra  r}  rP  r~   r    r   rw  r   rw   r  ri  ru  r   r   rm   r`   r=   r  s        r   r   z'TestVariousIteratorArgs.test_accumulatej  s    FQAq! 	8AT*QqT"23Q7	8j1./4)Z16)Z16+T:ad3CDr   c                    d}g d}d}t         t        t        t        t        fD ]H  }| j                  |      5  | j                  t        t         ||      |            |       d d d        J | j                  t        t        t        |      d            g        | j                  t        t        t        |      d       | j                  t        t        t        |      d       | j                  t        t        t        t        |      d             | j                  t        t        t        t!        |      d             y # 1 sw Y   *xY w)Nr,  )r,  r-  )rz   r&   )r  r   )r   r  ra  r}  rP  r   r~   r    r   rw  r   rw   r  ri  ru  r   rq  r  s        r   r   z$TestVariousIteratorArgs.test_batchedu  s   ,QAq! 	<A" <  gadA&6!7;< <	< 	gadA./4)WadA6)WadA6+T71Q43CD+T72a5!3DE< <s   ,EE	c                    ddt        d      dt        ddd      fD ]:  }t        t        t        t        t
        t        fD ]  }| j                  t        t         ||                  t         ||                   | j                  t        t         ||       ||                  t         ||            t         ||            z           | j                  t        t        t        t        |                   | j                  t        t        t        t        |                   | j                  t        t        t        t        |                   = y N123r   r  dog333333?r    r   )r<   r   r  ra  rw  r}  rP  r~   r    r   r   rw   r  ri  ru  r   r   rm   r  s      r   r   z"TestVariousIteratorArgs.test_chain  s    U4[+uT$q7IJ 	DAB1a( Q  eAaDk!2D1J?  eAaD!A$&7!8$qt*T!A$Z:OPQ iuQqT{;iuQqT{;/uQqT{C	Dr   c                 T   ddt        d      dt        ddd      fD ]	  }t        |      }t        t        t        t
        t        t        fD ]E  }| j                  t        t         ||      t        d                  t         ||                   G | j                  t        t        t        |      t        d             | j                  t        t        t        |      t        d             | j                  t         t        t        t#        |      t        d                    y 	Nr  r   r  r  r  r  r   r   )r<   r   r   r  ra  rw  r}  rP  r~   r    ry  r   r   rw   r  ri  ru  r   )r   rm   r=   r  s       r   r|  z%TestVariousIteratorArgs.test_compress  s    U4[+uT$q7IJ 	RAAAB1a( N  hqtVAY&?!@$qt*MNi1Q4Ci1Q4C/x!fQi7PQ	Rr   c           	         ddt        d      dt        ddd      fD ]n  }| j                  t        t        t	        |             | j                  t        t        t        |             | j                  t        t        t        |             p y r  )r<   r   rw   r>  r  ri  ru  r   )r   rm   s     r   rE  z$TestVariousIteratorArgs.test_product  sn    U4[+uT$q7IJ 	@Ai!A$7i!A$7/!A$?	@r   c                 (   ddt        d      dt        ddd      fD ]  }t        t        t        t        t
        t        fD ]Z  }t        |      dz  }t         ||            dz  }t        t        t         ||            |            }| j                  ||       \ | j                  t        t        t        |             | j                  t        t        t        |             | j                  t         t        t        t#        |                    y )	Nr  r   r  r  r  r  r   r   )r<   r   r  ra  rw  r}  rP  r   r    rP   r  r~   r   rw   r  ri  ru  r   )r   rm   r  tgtlenexpectedactuals         r   r  z"TestVariousIteratorArgs.test_cycle  s    U4[+uT$q7IJ 	DAB1a( 3Q!!:a<fU1Q4[&9:  2	3
 i!5i!5/uQqT{C	Dr   c           
      .   t        d      t        d      t        d      dt        ddd      fD ]  }t        t        t        t        t
        t        fD ]E  }| j                  t         ||            D cg c]  \  }}|	 c}}t         ||                   G | j                  t        t        t        |             | j                  t        t        t        |             | j                  t        t        t        t        |                    y c c}}w Nrg   r   r  r   r  r  r  r   )r<   r   r  ra  rw  r}  rP  r~   rD  r    r   rw   r  ri  ru  r   )r   rm   r  rG  sbs        r   r  z$TestVariousIteratorArgs.test_groupby  s    )U1XuT{FE$tA<NO 	FAB1a( M  1!?2!!?adLMi!A$7i!A$7/wqt}E	F!?s   3Dc                 b   t        d      t        d      t        d      dt        ddd      fD ]  }t        t        t        t        t
        t        fD ]Q  }| j                  t        t        t         ||                   ||      D cg c]  }t        |      s| c}       S | j                  t        t        t        t        |             | j                  t        t        t        t        |             | j                  t        t        t        t        t!        |                    y c c}w r  )r<   r   r  ra  rw  r}  rP  r~   r    re  r4   r   rw   r  ri  ru  r   r   rm   r  r(   s       r   r  z#TestVariousIteratorArgs.test_filter  s    )U1XuT{FE$tA<NO 	MAB1a( A  fVQqT&:!;-.qT!?VAY!!?AA i1>i1>/vfad7KL	M "@   D,D,c                 b   t        d      t        d      t        d      dt        ddd      fD ]  }t        t        t        t        t
        t        fD ]Q  }| j                  t        t        t         ||                   ||      D cg c]  }t        |      s| c}       S | j                  t        t        t        t        |             | j                  t        t        t        t        |             | j                  t         t        t        t        t#        |                    y c c}w r  )r<   r   r  ra  rw  r}  rP  r~   r    r  r4   r7   r   rw   r  ri  ru  r   r  s       r   r  z(TestVariousIteratorArgs.test_filterfalse  s    )U1XuT{FE$tA<NO 	RAB1a( @  k&!A$&?!@-.qT!>U1X!!>@@ ifadCifadC/{61Q47PQ	R "?r  c                 |   ddt        d      dt        ddd      fD ]  }t        t        t        t        t
        t        fD ]  }| j                  t        t         ||                  t         ||                   | j                  t        t         ||       ||                  t         ||       ||                    | j                  t        t        t        |             | j                  t        t        t        |             | j                  t        t        t        t!        |                     y r  )r<   r   r  ra  rw  r}  rP  r~   r    r!   r$   r   rw   r  ri  ru  r   r  s      r   r  z TestVariousIteratorArgs.test_zip  s    U4[+uT$q7IJ 	BAB1a( J  c!A$i$qt*=  c!A$!o!6QqT1Q48HIJ iad3iad3/s1Q4yA	Br   c                    ddt        d      dt        ddd      fD ]/  }t        t        t        t        t
        t        fD ]  }| j                  t        t         ||                  t        t         ||                         | j                  t        t         ||       ||                  t        t         ||       ||                          | j                  t        t        t        |             | j                  t        t        t        |             | j                  t        t        t        t!        |                   2 y r  )r<   r   r  ra  rw  r}  rP  r~   r    r  r!   r   rw   r  ri  ru  r   r  s      r   r  z'TestVariousIteratorArgs.test_ziplongest  s    U4[+uT$q7IJ 	JAB1a( W  k!A$&7!8$s1Q4y/J  k!A$!&=!>S1qQRt_@UVW iad;iad;/{1Q47HI	Jr   c                    t        d      t        d      t        d      dt        ddd      fD ]O  }t        t        t        t        t
        t        fD ]  }| j                  t        t        t         ||                   ||      D cg c]  }t        |       c}       | j                  t        t        t        j                   ||       ||                   ||      D cg c]  }||z  	 c}        | j                  t        t        t        t        |             | j                  t        t        t        t!        |             | j                  t"        t        t        t        t%        |                   R y c c}w c c}w Nrg   r   r   r  r   rj  r   )r<   r   r  ra  rw  r}  rP  r~   r    r   r)   rU   r[  r   rw   r  ri  ru  r   r  s       r   r]  z TestVariousIteratorArgs.test_map  s   )U1XuSz65Bq>J 	JAB1a( 7  c&!A$&7!856qT!:&)!:<  c(,,!ad&C!D01!!51!Q$!577
 ifad;ifad;/s61Q47HI	J ";!5s   F%Fc                    ddt        d      dt        ddd      fD ]  }t        t        t        t        t
        t        fD ]D  }| j                  t        t         ||      dd d	            t         ||            dd d	          F | j                  t        t        t        |      d
       | j                  t        t        t        |      d
       | j                  t        t        t        t        |      d
              y )N12345r   r  r  r  r  r   r   r&   rg   )r<   r   r  ra  rw  r}  rP  r~   r    rP   r   rw   r  ri  ru  r   r  s      r   r~  z#TestVariousIteratorArgs.test_islice  s    2uT{KtD9KL 	IAB1a( P  fQqT!D&;!<d1Q4jA>NOPi1r:i1r:/vadB7GH	Ir   c           
      "   ddt        d      dt        ddd      fD ]  }t        t        t        t        t
        t        fD ]W  }t         ||            }t        t        ||dd              }t        t         ||                  }| j                  ||       Y | j                  t        t        t        |             | j                  t        t        t        |             | j                  t        t        t        t!        |                    y r  )r<   r   r  ra  rw  r}  rP  r    r!   r.  r~   r   rw   r  ri  ru  r   )r   rm   r  rQ   r  r  s         r   r/  z%TestVariousIteratorArgs.test_pairwise  s    U4[+uT$q7IJ 	GAB1a( 31Q4jCQR 12hqtn-  2	3
 i1Q48i1Q48/x!~F	Gr   c                    t        d      t        d      t        d      dt        ddd      fD ]&  }t        t        t        t        t
        t        fD ]^  }t        ||      }| j                  t        t        t        j                   ||                   ||      D cg c]  }||z  	 c}       ` | j                  t        t        t        j                  t                     | j                  t        t        t        j                  t!        |             | j                  t"        t        t        t        j                  t%        |                   ) y c c}w r  )r<   r   r  ra  rw  r}  rP  r$   r~   r    ra  rU   r[  r   rw   r  ri  ru  r   )r   rm   r  ssr(   s        r   rb  z$TestVariousIteratorArgs.test_starmap  s    )U1XuSz65Bq>J 	UAB1a( 7!QZ  ghllAbE&B!C01!!51!Q$!577 i(,,"Fi(,,"F/wx||QrU7ST	U "6s   Ec                 v   t        d      t        d      t        d      dt        ddd      fD ]  }t        t        t        t        t
        t        fD ]^  }g } ||      D ]   }t        |      s n|j                  |       " | j                  t        t        t         ||                  |       ` | j                  t        t        t        t        |             | j                  t        t        t        t        |             | j                  t         t        t        t        t#        |                    y r  )r<   r   r  ra  rw  r}  rP  r4   r   r~   r    r  r   rw   r  ri  ru  r   r   rm   r  tgtr  s        r   r  z&TestVariousIteratorArgs.test_takewhile  s    )U1XuT{FE$tA<NO 		PAB1a( EaD %D!$<JJt$%   i!&=!>DE iFAaDAiFAaDA/y17NO		Pr   c                 x   t        d      t        d      t        d      dt        ddd      fD ]	  }t        t        t        t        t
        t        fD ]_  }g } ||      D ]!  }|st        |      r|j                  |       # | j                  t        t        t         ||                  |       a | j                  t        t        t        t        |             | j                  t        t        t        t        |             | j                  t         t        t        t        t#        |                    y r  )r<   r   r  ra  rw  r}  rP  r7   r   r~   r    r  r   rw   r  ri  ru  r   r  s        r   r  z&TestVariousIteratorArgs.test_dropwhile	  s    )U1XuT{FE$tA<NO 		OAB1a( DaD %D5;JJt$%   iqt&<!=sCD iE1Q4@iE1Q4@/y!7MN		Or   c           
      R   ddt        d      dt        ddd      fD ]  }t        t        t        t        t
        t        fD ]j  }t         ||            \  }}| j                  t        |      t         ||                   | j                  t        |      t         ||                   l | j                  t        t        t        |             | j                  t        t        t        |             | j                  t        t        t        t        |            d           y )	Nr  r   r  r  r  r  r   r   )r<   r   r  ra  rw  r}  rP  r  r~   r    r   rw   r  ri  ru  r   )r   rm   r  it1it2s        r   r  z TestVariousIteratorArgs.test_tee	  s    U4[+uT$q7IJ 	EAB1a( 8qt9S  cD1J7  cD1J78 iad3iad3/s1Q4y|D	Er   N)rK   rL   rM   r   r   r   r|  rE  r  r  r  r  r  r  r]  r~  r/  rb  r  r  r  r   r   r   r  r  h  sn    	EFDR@	DFMRBJ	JI	GU
P
OEr   r  c                       e Zd Zd Zd Zy)LengthTransparencyc                    | j                  t        j                  t        d d            d       | j                  t        j                  t        d d            d       | j                  t        j                  t        d       d      d       y )Nrj  r   r  r~   rU   length_hintr   rC   s    r   rU  zLengthTransparency.test_repeat	  sf    --fT2.>?D--fT1o>B--fTlB?Dr   c                    | j                  t        j                  t        d d            d       | j                  t        j                  t        d d            d       | j                  t        j                  t        d d            d       | j                  t        j                  t        d d            d       y )Nr   r   r   rW  r  rC   s    r   rX  z2LengthTransparency.test_repeat_with_negative_times"	  s    --fT2.>?C--fT2.>?C--fT.DEqI--fT.DEqIr   N)rK   rL   rM   rU  rX  r   r   r   r  r  	  s    E
Jr   r  c                   r    e Zd Zd Zd Zej                   ej                  d      d               Zd Z	d Z
y)RegressionTestsc                 p    d }fd}g  |d|d       t        t              }| j                  |       y )Nc                     dgffd	}t        |      }t        |       |dd t        ||      }t        |gt        |       z   t	               y )Nr   c                 8    |r|d d =  t                     | S r   r   )r  r  r   zs     r   r  z@RegressionTests.test_sf_793826.<locals>.mutatingtuple.<locals>.g1	  s    ad1gJr   )r    r   r!   r   r   )tuple1r   tuple2r  itemsgenr  s    `    @r   mutatingtuplez5RegressionTests.test_sf_793826.<locals>.mutatingtuple-	  sP     !"s 
 LEfE!AJa-CcU3v;&'AGr   c                 .    | a t        t               d d  y r   )Tr    )ri  r  s    r   r   z)RegressionTests.test_sf_793826.<locals>.f<	  s    AAwE!Hr   r   )r   r   r   )r    r  r~   )r   r  r   secondr  s       @r   test_sf_793826zRegressionTests.test_sf_793826*	  s9    		
 gq'*a'r   c           
         fd}fd}g | j                  t        t        t         |        |d                   | j	                  ddg       g | j                  t        t        t         |        |d                   | j	                  ddg       g | j                  t        t        t         |                    | j	                  ddg       y )Nc               3   d   K    j                  d       d  j                  d       t        wrA  )r   r   )hists   r   gen1z,RegressionTests.test_sf_950057.<locals>.gen1K	  s(     KKNGKKN  s   -0c              3   Z   K   j                  d       d j                  d       y w)Nr   r&   r   )r   )r(   r  s    r   gen2z,RegressionTests.test_sf_950057.<locals>.gen2R	  s"     KKNGKKNs   (+Fr   r   T)r   r   r    r   r~   r  )r   r  r  r  s      @r   test_sf_950057zRegressionTests.test_sf_950057G	  s    		
 .$dfd5k0JK!u%.$dfd4j0IJ!u%.$df>!u%r   cpuc                     t         j                  d t        d      D              }| j                  t              5  t        |       d d d        y # 1 sw Y   y xY w)Nc              3       K   | ]  }d   yw)r   Nr   )r   unuseds     r   r   zERegressionTests.test_long_chain_of_empty_iterables.<locals>.<genexpr>i	  s      B Brl  i )r   r   r<   r   rH   r   r   s     r   "test_long_chain_of_empty_iterablesz2RegressionTests.test_long_chain_of_empty_iterablesc	  sH        B%/ BB}- 	H	 	 	s   AAc                 `    fd}t        t        d      |      D ]  \  }t                y )Nc                 .    | dk(  rt               | dk7  S )Nr   r   )r    )r=   r   s    r   r   z,RegressionTests.test_issue30347_1.<locals>.fn	  s    AvQ6Mr   rg   )rD  r<   r    )r   r   rG  r   s      @r   test_issue30347_1z!RegressionTests.test_issue30347_1m	  s/    	 eBi+ 	FQG	r   c                      G fdd      }dt        t        t        d      |            d   t        d      D ]  }t        d         y )Nc                        e Zd Zd Z fdZy),RegressionTests.test_issue30347_2.<locals>.Kc                      y r   r   r]  s     r   r   z5RegressionTests.test_issue30347_2.<locals>.K.__init__w	  s    r   c                 2    dz  dk(  rt        d        y)Nr   Tr  )r   otherr  r/   s     r   r  z3RegressionTests.test_issue30347_2.<locals>.K.__eq__y	  s    Q6DMr   N)rK   rL   rM   r   r  )r  r/   s   r   Kr  v	  s    r   r  r   rg   r   r&   )r   rD  r<   )r   r  r
  r  r/   s      @@r   test_issue30347_2z!RegressionTests.test_issue30347_2u	  sJ    	 	 rA&'*q 	ADM	r   N)rK   rL   rM   r  r  r   skip_if_pgo_taskrequires_resourcer  r  r  r   r   r   r  r  (	  sE    (:&8 Wu% & r   r  c                       e Zd Zd Zy)SubclassWithKwargsTestc                    t         dddgft        ddgdfddgft        d ddgfdgft        d ddgfdgft        ddgdd	gfg d
ft
        t        ddgfddgft        t        j                  dfddgft        g dddfddgft        t        g dfdgft        t        g dfdd	gft        ddgfg dft        dg dfddgfg}|D ]  \  }}}| j!                  |      5   G d d|      } || }| j#                  t%        |      |       | j'                  t)        t        |dd            |       | j+                  t,              5   ||ddi d d d        d d d         |D ]  \  }}}|t         t        t        fv r| j!                  |      5   G d d|      } ||ddi}| j#                  t%        |      |       | j'                  t)        t        |dd            |       | j'                  |j.                  d       d d d         |D ]  \  }}}| j!                  |      5   G d d|      } ||ddi}| j#                  t%        |      |       | j'                  t)        t        |dd            |       | j'                  |j.                  d       d d d         y # 1 sw Y   SxY w# 1 sw Y   xY w# 1 sw Y   axY w# 1 sw Y   xY w)NrT  r   r&   r   rS  r  r   r   r   r   12)rN  r  r   r   )r   r&   r   r   )r&   r   r   )r   r&   r   r3  rp  r   r   c                       e Zd Zy)BSubclassWithKwargsTest.test_keywords_in_subclass.<locals>.subclassNr  r   r   r   subclassr  	  s    r   r  newargc                       e Zd ZdddZy)LSubclassWithKwargsTest.test_keywords_in_subclass.<locals>.subclass_with_initNr  c                    || _         y r   r  )r   r  r#   s      r   r   zUSubclassWithKwargsTest.test_keywords_in_subclass.<locals>.subclass_with_init.__init__	  s	    &,r   )rK   rL   rM   r   r   r   r   subclass_with_initr  	  s
    59 -r   r  c                   $     e Zd Zdd fd
Z xZS )KSubclassWithKwargsTest.test_keywords_in_subclass.<locals>.subclass_with_newNr  c                6    t        |   | g| }||_        |S r   )super__new__r  )clsr  r#   r   r  s       r   r  zSSubclassWithKwargsTest.test_keywords_in_subclass.<locals>.subclass_with_new.__new__	  s"    $ws:T:&,#r   )rK   rL   rM   r  __classcell__)r  s   @r   subclass_with_newr  	  s    37 $ $r   r  )r   r!   re  r  r   r   rv   ra  rU   r[  rP   r  r4   r  r  ry  r   r  r   r~   r    r   rw   r  )	r   r  r  r#   r"  r  ur  r  s	            r   test_keywords_in_subclassz0SubclassWithKwargsTest.test_keywords_in_subclass	  s    VaV$Aq64.8X"67dQF^aS)4!Q.1#.aVaV$i03A-#s,x||%56A?lAq)Aq62+aS1+aV4aVIy)y)C:6
	 "+ 	.Cvc" .s dOd1gx0  fQ1o!6?&&y1 .d-1-.. .	. "+ 	.Cv vsH--c" .- - '7Q7d1g'9:  fQ1o!6?  1-. .	. "+ 
	.Cvc" 	.$ $
 &t6A6d1g'89  fQ1o!6?  1-	. 	.
	.%. .. .. .	. 	.s?   A'J&?	JJ&A1J3A1K J#J&&J0	3J=	 K		N)rK   rL   rM   r  r   r   r   r  r  	  s    3.r   r  c                   B    e Zd Zd Zej
                  Zd Zd Zd Zd Z	y)
SizeofTestc                 8    t        j                  d      | _        y )Nr=   )structcalcsizessize_trC   s    r   setUpzSizeofTest.setUp	  s    s+r   c                     t        j                  d      }| j                  } |t        dd      |d| j                  z  z           |t        d |d| j                  z  z          y )N3Pir   12r&   )
r   r   r   r   r   r   r   r   r   r   rg   )r   calcobjsizecheck_sizeofr>  r  r   basesizechecks      r   test_product_sizeofzSizeofTest.test_product_sizeof	  sY    &&u-!!gdD!8a$,,.>#>?g'B4E)EFr   c                     t        j                  d      }| j                  } |t        dd      |d| j                  z  z           |t        t        d      d      |d| j                  z  z          y N3Pnir   r   rg   r   )r   r  r  r  r  r<   r  s      r   test_combinations_sizeofz#SizeofTest.test_combinations_sizeof	  s_    &&v.!!l61%x!dll2B'BCl59a((Q5E*EFr   c                     t         }t        j                  d      }| j                  } | |dd      |d| j                  z  z           | |t        d      d      |d| j                  z  z          y r  )r  r   r  r  r  r<   )r   rE  r  r  s       r   )test_combinations_with_replacement_sizeofz4SizeofTest.test_combinations_with_replacement_sizeof	  sc    +&&v.!!c&!nhT\\)99:c%)QA,<!<=r   c                    t        j                  d      }| j                  } |t        d      |d| j                  z  z   d| j                  z  z           |t        dd      |d| j                  z  z   d| j                  z  z           |t        dd      |d| j                  z  z   d| j                  z  z           |t        t        d      d      |d| j                  z  z   d| j                  z  z          y )N4Pnir   r   r   r,  r   rg   )r   r  r  r  r  r<   r  s      r   test_permutations_sizeofz#SizeofTest.test_permutations_sizeof	  s    &&v.!!l6"T\\))A,<<	>l61%T\\))A,<<	>l7A&T\\))A,<<	>l59a(dll**Q-==	?r   N)
rK   rL   rM   r  r   r  r  r  r  r  r   r   r   r  r  	  s*    , ''LGG>
?r   r  c                 L    |j                  t        j                                |S r   )addTestdoctestDocTestSuite)loadertestspatterns      r   
load_testsr  	  s    	MM'&&()Lr   __main__)Er  unittesttestr   test.supportr   r  rv  decimalr   	fractionsr   rU   r@  r   rj   	functoolsr   r  r  r  r  r   r   MAX_Py_ssize_tr  minsizer$   r)   r,   r0   r4   r7   r9   r>   rA   rR   rY   r\   ra   re   rh   r<   r   r   TestCaserq   r  r  r"  rP  r   r  ra  r  ri  r   rq  rw  r}  r  r  r  r  r  r  r  rK   main)rn   s   0r   <module>r     s)      )          
   	 & 
 
 (1*
  -
 $F$;$;a$?@B "'L BB"8$$ B"J4mM8$$ mM`@%X%6%6 @%Fk9X k9Z
   	 	    2
qEh// qEfJ** JZh'' Zz4.X.. 4.n 	#?"" #? #?L
 zHMMO GLBs   4H 