
    dafr                       d dl Z d dlZd dlmZ d dlmZ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j2                  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jX                  d	z         D  cg c]  } | fd	 c} Z- G d dej\                        Z/ G d dej\                        Z0 G d d ej\                        Z1 G d! d"ej\                        Z2d# Z3 G d$ d%      Z4 G d& d'      Z5 G d( d)      Z6 G d* d+      Z7 G d, d-      Z8 G d. d/      Z9 G d0 d1      Z: G d2 d3      Z;d4 Z< G d5 d6ej\                        Z= G d7 d8ej\                        Z> G d9 d:ej\                        Z? G d; d<ej\                        Z@ej                   G d= d>ej\                               ZBd? ZCeDd@k(  r ej                          yyc c} w )A    N)support)threading_helperscript_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    ./root/Python-3.12.4/Lib/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   gen3r1   5   s         c                     | dz  dk(  S )Test predicater'   r   r   r(   s    r   isEvenr5   :       Q36Mr   c                     | dz  dk(  S )r4   r'   r   r   r(   s    r   isOddr8   >   r6   r   c                      | S r    r   r#   s    r   tupleizer:   B   s    Kr   c              #   4   K   t        |       D ]  }|  y wr    range)nr0   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    StopIterationrD   s    r   __next__zStopNow.__next__M       r   N)__name__
__module____qualname____doc__rE   rJ   r   r   r   rB   rB   I   s    (r   rB   c                 ,    t        t        ||             S )zHConvenience function for partially consuming a long of infinite iterable)r!   islice)r>   seqs     r   takerS   P   s    sAr   c                 8    t        t        j                  | d      S Nr   )r	   operatormuliterables    r   prodrZ   T   s    (,,!,,r   c                 2    t        t        d| dz               S )	Factorialr   )rZ   r=   )r>   s    r   factr]   W   s    a1r   c                     | d   S Nr   r   rs    r   testRrb   \       Q4Kr   c                     | d   S Nr'   r   r`   s    r   testR2rf   _   rc   r   c                     | dk  S )N
   r   r(   s    r   undertenri   b   s    R4Kr   c                 T    t        j                  t        j                  | |            S r    )pickleloadsdumps)sprotos     r   <lambda>rp   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*d' Z+d( Z,ej                  d)        Z- ej                  d      d*        Z.ed+        Z/ed,        Z0ed-        Z1d. Z2ed/        Z3ed0        Z4ed1        Z5ed2        Z6ed3        Z7ed4        Z8d5 Z9d6 Z:d7 Z; e<jz                         d8        Z>d9 Z?ej                  d:        ZAej                  d;        ZBej                  d<        ZCej                  d=        ZDej                  d>        ZEej                  d?        ZFy)A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 )Nrh   zinfinite recursion encounteredr   )RuntimeError
isinstancestrr!   rQ   	TypeError)itr0   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   )rk   rm   rl   assertEqualtyper=   nextrI   )r   protocolry   r}   rS   comparedumpi2abci3tookr0   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)Nrh   )
r   r         rh            $   -   rX   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)rh   r   r   )rh   r   r   d   )r   n   s   t      )r   r!   
accumulater=   intcomplexr   r   mapr   rx   minmaxrV   rW   chrrk   HIGHEST_PROTOCOLr   )r   typrn   ro   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   )rn   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   rx   r,   r=   r   subTestjoinchain
assertTrueallpopappend)r   datar0   rn   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   )	iterablesry   elements      r   chain2z'TestBasicOps.test_chain.<locals>.chain2   s)      "! "G!M""s   r   defabcdefr   r   abcdr'   r   )r   r   r!   rS   r   rx   )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_iterablerS   r   rx   rQ   repeatr=   rD   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   rS   r   rx   r=   rk   r   r   )r   operry   ro   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   dr{   fghi)r   r   r   r   r   r{   r   )r   rx   r   __setstate__iterr   r!   r   ry   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   rp   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   r0   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)rY   ra   r>   indicesr0   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!   rY   ra   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   r{   valuess     r   r   z1TestBasicOps.test_combinations.<locals>.<genexpr>V       '?V'?   )r   rx   combinationsr,   r   r   r!   r   r=   r   r]   r  r  r   r   rk   r   r   )r   optestIntermediater  r  r  r>   r)   ra   resultr   r{   ro   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   rD   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!   rD   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   rp   zATestBasicOps.test_combinations_with_replacement.<locals>.<lambda>s  r   r   ABC)r   r   r   r   r   r   r   r   r   )r   r   r6  r   r7  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=   )rY   ra   r>   r
  r0   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>   ra   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   rx   r,   r   r   r!   r   r=   r   r  r  r   r   groupbyr   rk   r   r   )r   cwrr!  r"  r;  r@  rC  r>   r)   ra   r#  regular_combsr   kvnorunsr{   ro   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  rD   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   rF  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   rn   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  )rY   ra   r>   r
  cyclesr0   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   rx   r  r,   r   r!   r=   r   r]   r  r  r   r   rk   r   r   )
r   rZ  r]  r>   r)   ra   r#  pro   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   rM  )r   r'  r(  r  rD   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!   rD   s    r   test_permutations_tuple_reusez*TestBasicOps.test_permutations_tuple_reuse	  r1  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>   rn   ra   rZ   rF  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   ACr4  )r   r   r   r   r   r   BC'  r   rR  r   r   r   c                 ,    t        j                   |       S r    )r   r   s    r   rp   z,TestBasicOps.test_compress.<locals>.<lambda>A  s    DIIaL r   c                 ,    t        j                  |       S r    )r   r   r   s    r   rp   z,TestBasicOps.test_compress.<locals>.<lambda>A  s    4==3C r   CEFBCDEFr   )r   r!   compressr   r   r   r=   r   rx   r   r   )r   r>   r   ro  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   rh   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%   countrS   r"   r   rx   maxsizer!   r=   r   r   reprr   r   floatsys__mod__r   r   rk   r   r   exc_info)r   BIGINTr   r0   r1r2valuero   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   rh   r   g      ?)r'   r  g      @r  )r'   r  y      !@       r  z.1z1.2z1.3r      r   r  g      @)rh   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   rx   rS   r  r=   r!   r   r   r  r   r   r   r  r  rk   r   r   )r   r  r   r0   r  r  r  ro   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 )Nrh   r   
abcabcabcar   r   )
r   r   r'   r   r   r'   r   r   r'   r   )r   rS   cycler!   r   rx   rQ   r1   rD   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   rh   
bcabcabcabr   
cabcabcabcr-  r'   r   cdeabcdeabcdeabcdeabr   )r  r   r   rS   r   r   r!   r=   rk   r   rl   rm   r   r   )r   r   ro   ry   r0   _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}t        |      dk(  sJ |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.r   rh   )
r'   r   r   r'   r   r   r'   r   r   r'   )r   rk   rl   r   rS   )r   	testcasesrj  ry   s       r   test_cycle_unpickle_compatz'TestBasicOps.test_cycle_unpickle_compat  sR    
	2 9~### 	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   rS   r   rx   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   rp   z+TestBasicOps.test_groupby.<locals>.<lambda>2      a r   rh   ))r   rh   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   rp   z+TestBasicOps.test_groupby.<locals>.<lambda>8  s
    ! r   r   r   r'   	AABBBAAAAr   )r   r   abracadabra)r   r   r   r   ra   )r   r   ra   )r   r   r'   r   )r   r   )r   r   r'   ra   T)reverser   )r  r  r  c                       e Zd Zy)0TestBasicOps.test_groupby.<locals>.ExpectedErrorNrL   rM   rN   r   r   r   ExpectedErrorr    s    r   r  c              3   8   K   t        |       D ]  }d  w)Nyor<   )r>   r0   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    )rE  )rY   keypfuncrH  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)rL   rM   rN   r  )r  s   r   DummyCmpr    s    $r   r  )r  c                 T    j                   dkD  rxj                   dz  c_         | S rB  )skip)objr  keyfuncs    r   r  z*TestBasicOps.test_groupby.<locals>.keyfunc  s(    ||a!
##r   r~   )r   r!   rE  r.  r   rx   r   r=   rk   r   rl   rm   rb   rf   r  r   r"   r   r  rQ   	Exceptionr  )r   rn   duprH  r  elemro   ikigkeysra   expectedkeysry   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   rp   z*TestBasicOps.test_filter.<locals>.<lambda>      a r   c                     | S r    r   r(   s    r   rp   z*TestBasicOps.test_filter.<locals>.<lambda>  r  r   r   r   )r   r!   rf  r5   r=   boolrS   r  r   rx   r   r   r   rk   r   rl   rm   r   r   ansr   ro   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   ru  r  r   r   r   r   )r   r   r   r   c                     | S r    r   r(   s    r   rp   z/TestBasicOps.test_filterfalse.<locals>.<lambda>      1 r   c                     | S r    r   r(   s    r   rp   z/TestBasicOps.test_filterfalse.<locals>.<lambda>  r  r   r   r   r   )r   r!   filterfalser5   r=   r  rS   r  r   rx   r   rk   r   r   r   ro   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%   rS   r   rx   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=   rk   r   rl   rm   r   r   )r   idsr)   r  r  ro   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   r{   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  rS   r  r"   r   rx   evalglobalslocalsfail)r   r$   r0   argtargetrj  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=   rk   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   rE   zHTestBasicOps.test_zip_longest_bad_iterable.<locals>.BadIterable.__iter__@  s    r   N)rL   rM   rN   rE   )r  s   r   BadIterabler  ?  s     r   r  )rx   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   rj  r{   )r   r   rj  r{   s       r   __init__z5TestBasicOps.test_bug_7244.<locals>.Repeater.__init__L  s    Qr   c                     | S r    r   rD   s    r   rE   z5TestBasicOps.test_bug_7244.<locals>.Repeater.__iter__P      r   c                 z    | j                   dkD  r!| xj                   dz  c_         | j                  S | j                  rB  )rj  r   r{   rD   s    r   rJ   z5TestBasicOps.test_bug_7244.<locals>.Repeater.__next__R  s,    66A:FFaKF66M&&Lr   N)rL   rM   rN   r!  rE   rJ   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#  r0   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"	)rU  rU  rU  rS  r   r  rU  )rI   r   ru   r  r   r   )r   r%  r  r  r*  ry   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   r{   rt  r   r   rh   rX   )r   r!   pairwiser=   r"   r   rx   rD   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                      fd} |dhdgdgfdgfdgdgfg        |dhdgdgdgffdgdgfdgfdgdgfg        |dhdgdgfdgdgdgffdgdgfdgfdgdgfg        |ddhdgdgfdgfdgfdgdgfg        |ddhdgdgdgffdgfdgdgfg        |ddhdgdgfdgdgfdgffdgdgfdgfdgfdgdgfg        |ddhdgdgdgdgfffdgdgdgffdgfdgdgfg       y )	Nc                       G  fdd      }t         |             |D ]  }j                  t              |        y )Nc                   $    e Zd ZdZd Z fdZy)<TestBasicOps.test_pairwise_reenter.<locals>.check.<locals>.Ir   c                     | S r    r   rD   s    r   rE   zETestBasicOps.test_pairwise_reenter.<locals>.check.<locals>.I.__iter__      Kr   c                 z    | xj                   dz  c_         | j                   v rt              S | j                   gS rU   )r  r   )r   ry   
reenter_ats    r   rJ   zETestBasicOps.test_pairwise_reenter.<locals>.check.<locals>.I.__next__  s1    JJNJzzZ/#Bx JJ<'r   NrL   rM   rN   r  rE   rJ   )ry   r8  s   r   Ir4    s     (r   r:  )r/  r   r   )r8  expectedr:  itemry   r   s   `   @r   checkz1TestBasicOps.test_pairwise_reenter.<locals>.check  s=    ( ( !#B  1  b401r   r   r'   r   r   r   r   r   r   r   r=  s   ` r   test_pairwise_reenterz"TestBasicOps.test_pairwise_reenter  s   	1 	qccA3Z!S1#J
 	 	qcSA3*cA3Z!S1#J
 	
 	qcS1#JSA3*cA3Z!S1#J	
 	 	q!fsQCj1#$S1#J
 	 	q!fcQC!:$S1#J
 	 	q!fcA3ZA3*qc*+sQCj1#$S1#J
 	
 	q!fSA3!qc
#$cQC!:$S1#J
 	r   c                 h      fd} |dg         |dg         |dg         |ddgdgfdgfg       y )Nc                 z      G  fdd      }t         |             j                  t              |       y )Nc                   $    e Zd ZdZd Z fdZy)=TestBasicOps.test_pairwise_reenter2.<locals>.check.<locals>.Ir   c                     | S r    r   rD   s    r   rE   zFTestBasicOps.test_pairwise_reenter2.<locals>.check.<locals>.I.__iter__  r6  r   c                     | j                   k\  rt        | xj                   dz  c_         | j                   dk(  rt        d       S | j                   gS rU   )r  rI   r   )r   ry   maxcounts    r   rJ   zFTestBasicOps.test_pairwise_reenter2.<locals>.check.<locals>.I.__next__  sE    zzX-++JJNJzzQ#B~- JJ<'r   Nr9  )ry   rF  s   r   r:  rC    s     (r   r:  )r/  r   r!   )rF  r;  r:  ry   r   s   `  @r   r=  z2TestBasicOps.test_pairwise_reenter2.<locals>.check  s.    
( 
( !#BT"Xx0r   r   r'   r   r   r   r>  s   ` r   test_pairwise_reenter2z#TestBasicOps.test_pairwise_reenter2  sA    	1  	aaaaQC!:s#$%r   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   rR  rS  rT  )r   r   rU  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  r0   s      r   r   z>TestBasicOps.test_product.<locals>.product1.<locals>.<genexpr>  s     CGD!QC   c              3   ,   K   | ]  \  }}||     y wr    r   rN  s      r   r   z>TestBasicOps.test_product.<locals>.product1.<locals>.<genexpr>  s     KGD!QKrO  )	r!   r   r   getr   anyr"   r	  r=   )r$   kwdspoolsr>   r
  r0   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   rQ  )r$   rS  rT  r#  r  r)   r  rZ   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   rx   r  r   random	randrangechoicerZ   r   r   )
r   r$   r#  ra   rU  rW  argtypesr0   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?  rD   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!   rD   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   rI  r'   r   rJ  r   r   )	r=   r   r!   r   r?  r   rk   r   r   )r   r$   r#  ro   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 )NrU  )r   )r      r'   r   r   )r   r   re  )r?  r   r   r   r   rI   )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)rh   r'   aar   )r   r!   r   r%   r=   rS   r   rx   r  r   r   r   rk   r   r   )r   ra   r   ro   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   rj  )r   r  r   rD   s    r   test_repeat_with_negative_timesz,TestBasicOps.test_repeat_with_negative_timesE  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  rh   r   )r   r!   r   rV   powr=   r:   r  rS   r   rx   negr   r,   r-   r*   r   r   rk   r   r   r  s       r   test_mapzTestBasicOps.test_mapK  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   rr  r   r   i   r   r   extrarh   )r   r!   starmaprV   rs  r"   r=   rS   r  r   r   rx   r   r,   r-   r*   r   r   rk   r   r   r  s       r   test_starmapzTestBasicOps.test_starmapj  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)rh   r   r   rh   r   r   rh   r   )rh   rh   rh   r   r   r   )))rh   r   r   )rh   r   r   ))rh   r   )rh   r   ))r   )r   rh   r'   r   r   r   r   r   r   2   )r|  r}  r~  r  r  c              3       K   | ]  }|  y wr    r   )r   r)   s     r   r   z+TestBasicOps.test_islice.<locals>.<genexpr>  s      Aa    rU  c                       e Zd Zd Zd Zy))TestBasicOps.test_islice.<locals>.IntLikec                     || _         y r    valr   r  s     r   r!  z2TestBasicOps.test_islice.<locals>.IntLike.__init__  s	    r   c                     | j                   S r    r  rD   s    r   	__index__z3TestBasicOps.test_islice.<locals>.IntLike.__index__  s    xxr   N)rL   rM   rN   r!  r  r   r   r   IntLiker    s     r   r  r   )r   r!   rQ   r=   r   r   rx   r,   r   r  r  r   r   r   rk   r   r   weakrefrefassertIsNotNoner   
gc_collectassertIsNoneri  )	r   r$   tgtargsry   rar   ro   wrr  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   ru  rw  rx  rh   )r   r   r   r   r   r   r   r   r   r   )r   r!   	takewhileri   r   rx   rV   rs  r   r,   r-   r  rI   r   r   r=   rk   r   r   )r   r   rj  ro   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   rw  rx  rh   r   )r   r!   	dropwhileri   r   rx   rV   rs  r   r,   r-   r   r   r=   rk   r   r   )r   r   ro   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   rh   	__class__rt  <   r   )teer   r!   r?   r%   r=   r   rX  shuffler   r   rx   r   r,   r   r   r   r  proxygetattrr   r  ReferenceErrorr   rS   r   rk   r   r   r   )r   r>   r   r   r0   r  orderlistsitsr  r   r#  r)   r   t1t2tnewt3r_  r  long_ansro   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                 4    d}t        j                  d|       y )NzHimport typing, copyreg, itertools; copyreg.buggy_tee = itertools.tee(())z-c)r   assert_python_ok)r   scripts     r   test_tee_dealloc_segfaultz&TestBasicOps.test_tee_dealloc_segfault  s    4 	 	&&tV4r   c                 ^    t        t        d d            \  }}	 t        |       ~y #  ~~ xY w)Ni -1)r  r   rR  )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   rD   s    r   rE   z1TestBasicOps.test_tee_reenter.<locals>.I.__iter__  r#  r   c                 F    | j                   }d| _         |rt              S y NF)firstr   )r   r  r   s     r   rJ   z1TestBasicOps.test_tee_reenter.<locals>.I.__next__  s$    

"
7N r   N)rL   rM   rN   r  rE   rJ   rI  s   r   r:  r    s    E#r   r:  r  )r  assertRaisesRegexru   r   )r   r:  r   r   s      @r   test_tee_reenterzTestBasicOps.test_tee_reenter  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   rD   s    r   rE   z4TestBasicOps.test_tee_concurrent.<locals>.I.__iter__  r#  r   c                 F    j                          j                          y r    )r  wait)r   finishr  s    r   rJ   z4TestBasicOps.test_tee_concurrent.<locals>.I.__next__  s    		r   N)rL   rM   rN   rE   rJ   )r  r  s   r   r:  r    s    r   r:  )r  r$   r  )	threadingEventr  Threadr   r  r  r  ru   r  r   )r   r:  r   r   threadr  r  s        @@r   test_tee_concurrentz TestBasicOps.test_tee_concurrent  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   rp   z1TestBasicOps.test_StopIteration.<locals>.<lambda>  r  r   c                     | S r    r   r(   s    r   rp   z1TestBasicOps.test_StopIteration.<locals>.<lambda>  r  r   )r   rI   r   r"   r   r  rE  rB   rQ   r  r   rf  r  r   r  r  ry  )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 rU   )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 rU   )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 rU   )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  rz  r  r  r  r  rE  rQ   r/  r  r?  r   ry  r  r  r   r  rx   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)GrL   rM   rN   r   r   r   r   r   r   r   r   r$  r   bigaddrspacetestr)  impl_detailr0  rK  rN  rP  r`  rb  rd  rk  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r+  r0  r?  rG  r]  r_  ra  rc  rg  rm  rp  ru  rz  r  r  r  r  r  r  r  r   requires_working_threadingr  r  cpython_onlyr  r  r  r  r  r  r   r   r   rr   rr   h   s   '$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&0d&,8Ft 2 2 W=>O ?O 7 7 2 2 A A4H & &< & &6 \/ \/| > >( > >" S3 S3j5 1002 3*M. 
1 
1 1 1 1 1 1 1 1 1 " "r   rr   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   rh   r   )r   r!   r   rD   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=   rk   r   r   r   r!   rl   rm   r   r   r   )r   r   accumulatedro   ry   s        r   test_accumulate_reduciblez&TestExamples.test_accumulate_reducibleB  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   rV   is_r   r   r=   rk   r   rl   rm   r!   r   r   )r   ry   ro   it_copys       r   test_accumulate_reducible_nonez+TestExamples.test_accumulate_reducible_noneR  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   r4  DEFrm  )r   r   r   rD   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   rD   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=   rD   s    r   r$  zTestExamples.test_combinationsc  sE    l6156[	]l58Q78=	?r   c                 R    | j                  t        t        dd            g d       y )Nr4  r'   r5  )r   r!   r  rD   s    r   rK  z/TestExamples.test_combinations_with_replacementi  s#    ;E1EF[	]r   c           	      d    | j                  t        t        dg d            t        d             y )Nrm  rn  rp  )r   r!   rz  rD   s    r   r}  zTestExamples.test_compressm  s"    hx?@$v,Or   c           	      d    | j                  t        t        t        d      d            g d       y )Nrh   r   )rh   r  r  r  r  )r   r!   rQ   r  rD   s    r   r  zTestExamples.test_countp  s#    fU2Y235IJr   c           	      r    | j                  t        t        t        d      d            t        d             y )Nr   r  ABCDABCDABCD)r   r!   rQ   r  rD   s    r   r  zTestExamples.test_cycles  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   rp   z-TestExamples.test_dropwhile.<locals>.<lambda>w  
    !A# r   r   r   r   r   r   )r   r   r   )r   r!   r  rD   s    r   r  zTestExamples.test_dropwhilev  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   rE  r!   )r   rH  r  s      r   r  zTestExamples.test_groupbyy  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 re   r   r(   s    r   rp   z*TestExamples.test_filter.<locals>.<lambda>  s
    qs r   rh   )r   r   r   r   r   )r   r!   rf  r=   rD   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 re   r   r(   s    r   rp   z/TestExamples.test_filterfalse.<locals>.<lambda>  s
    AaC r   rh   )r   r'   r   r   r   )r   r!   r  r=   rD   s    r   r  zTestExamples.test_filterfalse  s"    k-rCDkRr   c           	      \    | j                  t        t        t        dd            g d       y )N)r'   r   rh   )r   r'   r   r   r   r  )r   r!   r   rs  rD   s    r   ru  zTestExamples.test_map  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!   rQ   rD   s    r   r  zTestExamples.test_islice  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"   rD   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  rD   s    r   test_zip_longestzTestExamples.test_zip_longest  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=   rD   s    r   r`  zTestExamples.test_permutations  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   rq  )r   r   r   r  )r   r!   r?  r   r   r%  r=   rD   s    r   r]  zTestExamples.test_product  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 )Nrh   r   )rh   rh   rh   )r   r!   r   rD   s    r   rm  zTestExamples.test_repeat  s    fRm,l;r   c           	      ^    | j                  t        t        t        g d            g d       y )N))r'   r   r   r'   r  r  )r   r!   ry  rs  rD   s    r   test_stapmapzTestExamples.test_stapmap  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   rp   z-TestExamples.test_takewhile.<locals>.<lambda>  r	  r   r
  r   r   )r   r!   r  rD   s    r   r  zTestExamples.test_takewhile  s"    i{CDqeLr   N)rL   rM   rN   r   r   r  r  r   r   r$  rK  r}  r  r  r  r  r  r  ru  r  r  r#  r`  r]  rm  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   rQ   )rY   r>   ry   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)rY   r>   )r?  r   r!   r   r  r   r   )	r   r1  rY   r>   e1r  r{   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rB  )slicer  r}   r  r  r  r   r=   r   rI   r"   	enumerate)
rY   r$   rn   r  r}   r  ry   nextir0   r   s
             r   rQ   z%TestPurePythonRoughEquivalents.islice  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  rh   r   r   r  )r   r!   rQ   r   r=   r  r   )r   ry   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)rL   rM   rN   r4  staticmethodrQ   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   )rA  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 rC  )rA  r   rD  s     r   r   zTestGC.test_batched  s$    w!Aay!,a0r   c                 >    g }| j                  t        |      |       y r    )rA  r   rD  s     r   r   zTestGC.test_chain  s    uQx#r   c                 T    g }| j                  t        j                  |g      |       y r    )rA  r   r   rD  s     r   r   zTestGC.test_chain_from_iterable  s"    u**A3/3r   c                 H    g }| j                  t        dd|dgd      |       y rC  )rA  r   rD  s     r   r$  zTestGC.test_combinations  $    |Qq1Iq115r   c                 H    g }| j                  t        dd|dgd      |       y rC  )rA  r  rD  s     r   rK  z)TestGC.test_combinations_with_replacement  s%    4a!AYBAFr   c                 D    g }| j                  t        dg d      |       y )Nrm  )r   r   r   r   r   r   )rA  rz  rD  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  rA  r  )r   r   rM  s      r   r  zTestGC.test_count  s8    53&$),uSVSV,a0r   c                 F    g }| j                  t        |gdz        |       y re   )rA  r  rD  s     r   r  zTestGC.test_cycle  s    uaSU|Q'r   c                 N    g }| j                  t        t        d||g      |       y r_   )rA  r  r  rD  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   rp   z%TestGC.test_groupby.<locals>.<lambda>"  s    q r   )rA  rE  rD  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 )Nrh   c                     | S r    r   r(   s    r   rp   z'TestGC.test_issue2246.<locals>.<lambda>'  r   r   r  r)   )rE  r=   __dict__
setdefaultr   )r   r>   r  r0   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   rp   z$TestGC.test_filter.<locals>.<lambda>-      r   r'   )rA  rf  rD  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   rp   z)TestGC.test_filterfalse.<locals>.<lambda>1  rY  r   )rA  r  rD  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   )rA  r"   rD  s     r   r  zTestGC.test_zip3  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  )rA  r  )r   r   r   s      r   r#  zTestGC.test_zip_longest7  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   rp   z!TestGC.test_map.<locals>.<lambda>?  s    A r   r'   )rA  r   rD  s     r   ru  zTestGC.test_map=  s"    s:s1u-q1r   c                 H    g }| j                  t        |gdz  d       |       y re   )rA  rQ   rD  s     r   r  zTestGC.test_isliceA  s"    vqc!eT*A.r   c                 F    g }| j                  t        |gdz        |       y r  )rA  r/  rD  s     r   r0  zTestGC.test_pairwiseE  s    xA*r   c                 H    g }| j                  t        dd|dgd      |       y rC  )rA  r  rD  s     r   r`  zTestGC.test_permutationsI  rI  r   c                 J    g }| j                  t        dd|dgd      |       y )Nr   r'   r   r=  )rA  r?  rD  s     r   r]  zTestGC.test_productM  s$    w!Aay3Q7r   c                 >    g }| j                  t        |      |       y r    )rA  r   rD  s     r   rm  zTestGC.test_repeatQ  s    vay!$r   c                 N    g }| j                  t        d ||fgdz        |       y )Nc                      | S r    r   )rj  s    r   rp   z%TestGC.test_starmap.<locals>.<lambda>W  s    ! r   r'   )rA  ry  rD  s     r   rz  zTestGC.test_starmapU  s&    w|qeWQY7;r   c           	      P    g }| j                  t        t        dd||g      |       y )Nr   r   )rA  r  r  rD  s     r   r  zTestGC.test_takewhileY  s$    y1a|4a8r   N)rL   rM   rN   rA  r   r   r   r   r$  rK  r}  r  r  r  r  rV  r  r  r  r#  ru  r  r0  r`  r]  rm  rz  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   seqnr0   s     r   Rrk  ]  s      r2   c                       e Zd ZdZd Zd Zy)r   zSequence using __getitem__c                     || _         y r    rj  r   rj  s     r   r!  z
G.__init__d  s	    	r   c                      | j                   |   S r    rn  )r   r0   s     r   __getitem__zG.__getitem__f  s    yy|r   N)rL   rM   rN   rO   r!  rq  r   r   r   r   r   b  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_   ri  ro  s     r   r!  z
I.__init__k      	r   c                     | S r    r   rD   s    r   rE   z
I.__iter__n  rF   r   c                     | j                   t        | j                        k\  rt        | j                  | j                      }| xj                   dz  c_         |S rU   r0   r   rj  rI   r   rI  s     r   rJ   z
I.__next__p  ?    66S^#=%8IIdff!r   NrL   rM   rN   rO   r!  rE   rJ   r   r   r   r:  r:  i  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_   ri  ro  s     r   r!  zIg.__init__x  rt  r   c              #   6   K   | j                   D ]  }|  y wr    rn  r  s     r   rE   zIg.__iter__{  s     99 	CI	s   NrL   rM   rN   rO   r!  rE   r   r   r   r|  r|  v  s    ?r   r|  c                       e Zd ZdZd Zd Zy)r  z Missing __getitem__ and __iter__c                      || _         d| _        y r_   ri  ro  s     r   r!  z
X.__init__  rt  r   c                     | j                   t        | j                        k\  rt        | j                  | j                      }| xj                   dz  c_         |S rU   rw  rx  s     r   rJ   z
X.__next__  ry  r   N)rL   rM   rN   rO   r!  rJ   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_   ri  ro  s     r   r!  z
N.__init__  rt  r   c                     | S r    r   rD   s    r   rE   z
N.__iter__  rF   r   Nr  r   r   r   r  r    s    !r   r  c                   "    e Zd ZdZd Zd Zd Zy)r   zTest propagation of exceptionsc                      || _         d| _        y r_   ri  ro  s     r   r!  z
E.__init__  rt  r   c                     | S r    r   rD   s    r   rE   z
E.__iter__  rF   r   c                     ddz   y )Nr   r   r   rD   s    r   rJ   z
E.__next__  s	    	Qr   Nrz  r   r   r   r   r     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_   ri  ro  s     r   r!  zE2.__init__  rt  r   c                     | S r    r   rD   s    r   rE   zE2.__iter__  rF   r   c                     | j                   dk(  rt        | j                  | j                      }| xj                   dz  c_         |S )Nr'   r   )r0   ZeroDivisionErrorrj  rx  s     r   rJ   zE2.__next__  s7    66Q;##IIdff!r   Nrz  r   r   r   r  r    s    9r   r  c                   "    e Zd ZdZd Zd Zd Zy)SzTest immediate stopc                      y r    r   ro  s     r   r!  z
S.__init__  s    r   c                     | S r    r   rD   s    r   rE   z
S.__iter__  rF   r   c                     t         r    rH   rD   s    r   rJ   z
S.__next__  rK   r   Nrz  r   r   r   r  r    s    r   r  c                 d    t        t        d t        t        t	        |                               S )z Test multiple tiers of iteratorsc                     | S r    r   r(   s    r   rp   zL.<locals>.<lambda>  s    a r   )r   r   rk  r|  r   rn  s    r   Lr    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:  r|  r  rk  r   r!   r   r  r   rx   r  r  r  r   r   rn   ra   r>   r  s        r   r   z'TestVariousIteratorArgs.test_accumulate  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.  )r{   r'   )r  r   )r   r:  r|  r  rk  r   r   r!   r   r  r   rx   r  r  r  r   r  r  s        r   r   z$TestVariousIteratorArgs.test_batched  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:  r|  r  r  rk  r   r!   r   r   rx   r  r  r  r   r   rn   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:  r|  r  r  rk  r   r!   rz  r   r   rx   r  r  r  r   )r   rn   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   rx   r?  r  r  r  r   )r   rn   s     r   r]  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:  r|  r  r  rk  r   r!   rQ   r  r   r   rx   r  r  r  r   )r   rn   r  tgtlenr;  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 Nrh   r   r  r   r  r   r  r   )r=   r   r:  r|  r  r  rk  r   rE  r!   r   rx   r  r  r  r   )r   rn   r  rH  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:  r|  r  r  rk  r   r!   rf  r5   r   rx   r  r  r  r   r   rn   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:  r|  r  r  rk  r   r!   r  r5   r8   r   rx   r  r  r  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:  r|  r  r  rk  r   r!   r"   r%   r   rx   r  r  r  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:  r|  r  r  rk  r   r!   r  r"   r   rx   r  r  r  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 Nrh   r   r   r  r   r  r   )r=   r   r:  r|  r  r  rk  r   r!   r   r*   rV   rs  r   rx   r  r  r  r   r  s       r   ru  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'   rh   )r=   r   r:  r|  r  r  rk  r   r!   rQ   r   rx   r  r  r  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:  r|  r  r  rk  r!   r"   r/  r   r   rx   r  r  r  r   )r   rn   r  rR   r;  r  s         r   r0  z%TestVariousIteratorArgs.test_pairwise4	  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:  r|  r  r  rk  r%   r   r!   ry  rV   rs  r   rx   r  r  r  r   )r   rn   r  ssr)   s        r   rz  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:  r|  r  r  rk  r5   r   r   r!   r  r   rx   r  r  r  r   r   rn   r  tgtr  s        r   r  z&TestVariousIteratorArgs.test_takewhileI	  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:  r|  r  r  rk  r8   r   r   r!   r  r   rx   r  r  r  r   r  s        r   r  z&TestVariousIteratorArgs.test_dropwhileU	  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:  r|  r  r  rk  r  r   r!   r   rx   r  r  r  r   )r   rn   r  it1it2s        r   r  z TestVariousIteratorArgs.test_teea	  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)rL   rM   rN   r   r   r   r}  r]  r  r  r  r  r  r  ru  r  r0  rz  r  r  r  r   r   r   r  r    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 )Nr  r   r  r   rV   length_hintr   rD   s    r   rm  zLengthTransparency.test_repeatm	  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   ro  r  rD   s    r   rp  z2LengthTransparency.test_repeat_with_negative_timesr	  s    --fT2.>?C--fT2.>?C--fT.DEqI--fT.DEqIr   N)rL   rM   rN   rm  rp  r   r   r   r  r  k	  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>.g	  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!   )rj  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_793826z	  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rB  )r   r   )hists   r   gen1z,RegressionTests.test_sf_950057.<locals>.gen1	  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>.gen2	  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_950057	  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>	  s      B Br  i )r   r   r=   r   rI   r   r   s     r   "test_long_chain_of_empty_iterablesz2RegressionTests.test_long_chain_of_empty_iterables	  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>.f	  s    AvQ6Mr   rh   )rE  r=   r!   )r   r   rH  r   s      @r   test_issue30347_1z!RegressionTests.test_issue30347_1	  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   rx  s     r   r!  z5RegressionTests.test_issue30347_2.<locals>.K.__init__	  s    r   c                 2    dz  dk(  rt        d        y)Nr   Tr  )r   otherr  r0   s     r   r  z3RegressionTests.test_issue30347_2.<locals>.K.__eq__	  s    Q6DMr   N)rL   rM   rN   r!  r  )r  r0   s   r   Kr  	  s    r   r  r   rh   r   r'   )r   rE  r=   )r   r  r  r  r0   s      @@r   test_issue30347_2z!RegressionTests.test_issue30347_2	  sJ    	 	 rA&'*q 	ADM	r   N)rL   rM   rN   r  r  r   skip_if_pgo_taskrequires_resourcer  r  r  r   r   r   r  r  x	  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)NrU  r   r'   r   rk  r  r   r   r   r   12)rf  r)  r   r   )r   r'   r   r   )r'   r   r   )r   r'   r   r4  rq  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   )rL   rM   rN   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   )rL   rM   rN   r  __classcell__)r  s   @r   subclass_with_newr  
  s    37 $ $r   r  )r   r"   rf  r  r   r   rw   ry  rV   rs  rQ   r  r5   r  r  rz  r   r  r   r   r!   r   rx   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)rL   rM   rN   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_trD   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   rh   )r   calcobjsizecheck_sizeofr?  r  r   basesizer=  s      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   rh   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   rF  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   rh   )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)
rL   rM   rN   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)  3
  s    	MM'&&()Lr   __main__)Fr$  unittesttestr   test.supportr   r   r  r  decimalr   	fractionsr   rV   rX  r   rk   	functoolsr	   r  r  r  r  r   r   MAX_Py_ssize_tr  minsizer%   r*   r-   r1   r5   r8   r:   r?   rB   rS   rZ   r]   rb   rf   ri   r=   r   r   TestCaserr   r  r.  r=  rk  r   r:  r|  r  r  r   r  r  r  r  r  r  r  r  r  r)  rL   main)ro   s   0r   <module>r5     s)      8          
   	 & 
 
 (1*
  -
 $F$;$;a$?@B "'L BR"8$$ R"j6m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 gNBs   6H