
    7bh                        d dl Z 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    =/opt/python-3.12.12/usr/lib/python3.12/test/test_itertools.pyinnerz pickle_deprecated.<locals>.inner   s    01TN 2$$&!!(5GHTN ' $$&!!'4FG""$6#TU V '& 21&&
 V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-   2   s    
r   c               #   "   K   dD ]  } |   yw)zNon-restartable source sequencer   r   r'   Nr   )is    r   gen3r1   6   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:   C   s    Kr   c              #   4   K   t        |       D ]  }|  y wr    range)nr0   s     r   iranger?   F   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__L       r   c                     t         r    StopIterationrD   s    r   __next__zStopNow.__next__N       r   N)__name__
__module____qualname____doc__rE   rJ   r   r   r   rB   rB   J   s    (r   rB   c                 ,    t        t        ||             S )zHConvenience function for partially consuming a long of infinite iterable)r!   islice)r>   seqs     r   takerS   Q   s    sAr   c                 8    t        t        j                  | d      S Nr   )r	   operatormuliterables    r   prodrZ   U   s    (,,!,,r   c                 2    t        t        d| dz               S )	Factorialr   )rZ   r=   )r>   s    r   factr]   X   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   c   s    R4Kr   c                 T    t        j                  t        j                  | |            S r    )pickleloadsdumps)sprotos     r   <lambda>rp   f   s    V\\!U5K(Lr   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>.expandm   st    2v"#CDD"c"	D)* -..AqF1acNA..  	.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.pickletestk   s2   
	/ ||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%)<=>	@(2CZCr 345SBCDF 3 	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7EOOE:eBi#89OOE:eBi#CD 8 	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(<'s   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s   )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!A3t9%!Hwq!}-\\AG\<$$RWWUG_%=qAOOC'R''R$RS%,[[]
+Q+Q(QRJ1(<=z2 =< &  *)))))))**** =<sU   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    	" AT!E5/2DNCT!E(^T%[9T!B%["-T!Que_5tF|Dia1g6 !r   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3Due$BT$r(^T(^<T"Xs+T$r(^T'];T$uRy/2B7T!T%u*=%>?fNitE!QK/@A 4 622Q67EOOE5#6XOO 8r   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>      Ar       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>0       1AQ   r   c              3   (   K   | ]	  }|     y wr    r   r  s     r   r   zHTestBasicOps.test_combinations.<locals>.combinations1.<locals>.<genexpr>:       5WDGWr  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A!(1!1GAJ '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>B       9AQr  N)r   r   permutationsr=   sortedr!   rY   ra   r>   r
  r  s       @r   combinations2z5TestBasicOps.test_combinations.<locals>.combinations2<  sO     ?DD	A'a!4'?d7m39999 5   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>J  r  r  N)r   r   combinations_with_replacementr=   setr  s       @r   combinations3z5TestBasicOps.test_combinations.<locals>.combinations3D  sQ     ?DD	A8q1Es7|$)9999 Fr  r   r      r   c              3   &   K   | ]  }|v  
 y wr    r   r   r{   valuess     r   r   z1TestBasicOps.test_combinations.<locals>.<genexpr>W       '?QVQ   )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  s/   )\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A&+Ah/hac"fh/F1Q3Zl6156  V1Q3aDGd1g<MPTUVWXUXPY<YZ  Vc#f+.>?  8A$$SVQ/$$SQ[!4$$T!WfQi8OOC'?Q'?$?@$$T!W17%BA16a%BD     mFA.F)GH  mFA.F)GH  mFA.F)GH"6#:#:Q#>?EOOE<+BC @!   / &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_overflowa  s+    {;<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_reuseg  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>t  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  sO     ?DD	A"58A6'?d7m39999 7s   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_replacementl  s   +)S%0)S%A6)S$/*c5"5,.BT"S]"34_a"5!}!"T"%5"67TV /	6$	:	4
 qA&+Ah/hac"fh/F1Q3Zc&!n-  Vhq!n=  Vc#f+.>?  8 $\&!%< =6Q!V$$V];OOCK3}3E$EFA$$SVQ/+21:6:CAaa:F6$$S[#c&k2BC$$T!WfQi8OOC'?Q'?$?@$$V17%BA16a%B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  s+    {;<)$6 =<<r*  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     5AQr  r   c              3   (   K   | ]	  }|     y wr    r   r  s     r   r   zHTestBasicOps.test_permutations.<locals>.permutations1.<locals>.<genexpr>  s     #A[DG[r  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 7s   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  sU   )\2)\5!Q?)\48*lE2>l5"56;)\5#>l58Q78+U	W	0	: qA&+Ah/hac"fh/F1Q3Zl6156  V1Q3aDGd1Q3i<OP  Vc#f+.>?  8A$$SVQ/$$SQ[!4OOC'?Q'?$?@     mFA.F)GH  mFA.F)GH6$$VT,vt2L-MN$$VT,v2F-GH"6#:#:Q#>?EOOE<+BC @   /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  s+    {;<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A"1A1X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   $&M$Q&)T!W:Lq$&MN  4'J4a3s1v;>4'JK  4'N4a6!9d1g;M4'NO  3'I3a#c!f+q.3'IJ  tF3s83H3H$,O'PQ  tF3t93I3I3,O'PQ  vc#hT.B'CD3  * '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>B  s    DIIaLr   c                 ,    t        j                  |       S r    )r   r   r   s    r   rp   z,TestBasicOps.test_compress.<locals>.<lambda>B  s    4==3Cr   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_compress0  sg   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}TB=&%8="b1=(G<7D#.tS161i'   bty)Q&R!SUYZaUbc  b$	)B&C!Dd7mT#+D)#< )*$$T"-=*>%?gO6 U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                    t        t        dz   t        dz   g       | 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         d&       t        t        dz
        }| j                  t        |      d%t        dz
   d&       t        |       | j                  t        |      d%t         d&       t        |       | j                  t        |      d%t        dz    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   r   rh   r         
@)r  g      @g      @      
@      )r  y      @            @      1.1z2.1z3.1r     zcount(3)zcount(4)z	count(-9)ig     $@zcount(10.25)g      $@zcount(10.0)count()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_countR  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aw0 'A+w{;	=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:eGn-y/BC'A+aF7Q;-q"9:QaF7)1"56QaF7Q;-q"9:d5;/0%8;;,q.3;;,q.#r1b#++a-QTQ\Q\]^Q^_AeAhB$$Q'BR$	 ` GAIwqy0EeAT$))A,/7T$--"23U;v66:;uU|4 <	 1 	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        t        d            t        t        dz   t        dz   g       | j                  t        dt        t        t                    t        dt        z  dt        z  g       | j                  t        dt        t         t                    t         dt        g       | 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   d0dddt         j                  dz
  t         j                  dz   fD ]  }t         j                   dz
  t         j                   dz   d0ddddt         j                  dz
  t         j                  dz   f	D ]z  }t        t        ||            }|dk(  rd1|z  }n	d2|d3|d4}| j                  ||       t        t"        j$                  dz         D ]  }| j'                  |t        ||               |  t        t        dz
  d      }| j                  t        |      d2t        dz
   d5       t        |       | j                  t        |      d2t         d5       t        |       | j                  t        |      d2t        dz    d5       t        t        dz   d      }| j                  t        |      d2t        dz    d6       t        |       | j                  t        |      d2t         d6       t        |       | j                  t        |      d2t        dz
   d6       y )7Nr   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   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  r  z, r  z, 2)z, -1))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w!23!7Q;!<	>aw!89!1w;G<	>ax!9:!1g.	0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^_A|A~|A~sB1b#++VW-Y\YdYdefYfg%1+&6%/B  ./2B  R("6#:#:Q#>?EOOE5A;7 @ h ` '1*a aF7Q;-t"<=QaF7)4"89QaF7Q;-t"<='A+r"aF7Q;-u"=>QaF7)5"9:QaF7Q;-u"=>r   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7ET"fll6<<53I&JK!,/1GT"fll6<<53I&JK!,/1GG 8 622Q67EOOE5<0 8 622Q67E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 8 , ,s   8J'?J,c                     g d}|D ]5  }t        j                  |      }| j                  t        d|      g d       7 y )N)sH   citertools
cycle
(c__builtin__
iter
((lI1
aI2
aI3
atRI1
btR((lI1
aI0
tb.s?   citertools
cycle
(c__builtin__
iter
(](KKKetRKbtR(]KaK tb.s>   citertools
cycle
c__builtin__
iter
](KKKeRKbR]KaK b.s;   citertools
cycle
cbuiltins
iter
](KKKeRKbR]KaK b.sH   =       	itertoolscyclebuiltinsiter](KKKeRKbR]KaK b.sH   citertools
cycle
(c__builtin__
iter
((lp0
I1
aI2
aI3
atRI1
btR(g0
I1
tb.s?   citertools
cycle
(c__builtin__
iter
(]q (KKKetRKbtR(h Ktb.s>   citertools
cycle
c__builtin__
iter
]q (KKKeRKbRh Kb.s;   citertools
cycle
cbuiltins
iter
]q (KKKeRKbRh Kb.sG   <       	itertoolscyclebuiltinsiter](KKKeRKbRh Kb.sI   citertools
cycle
(c__builtin__
iter
((lI1
aI2
aI3
atRI1
btR((lI1
aI00
tb.sA   citertools
cycle
(c__builtin__
iter
(](KKKetRKbtR(]KaI00
tb.s=   citertools
cycle
c__builtin__
iter
](KKKeRKbR]Kab.s:   citertools
cycle
cbuiltins
iter
](KKKeRKbR]Kab.sG   <       	itertoolscyclebuiltinsiter](KKKeRKbR]Kab.sI   citertools
cycle
(c__builtin__
iter
((lp0
I1
aI2
aI3
atRI1
btR(g0
I01
tb.sA   citertools
cycle
(c__builtin__
iter
(]q (KKKetRKbtR(h I01
tb.s=   citertools
cycle
c__builtin__
iter
]q (KKKeRKbRh b.s:   citertools
cycle
cbuiltins
iter
]q (KKKeRKbRh b.sF   ;       	itertoolscyclebuiltinsiter](KKKeRKbRh b.rh   )
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  s9    
	4 AaBT"b\+IJ 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&  so    &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>R      ar   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>X  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_groupbyK  s$    	T'"+./T'"""567)T75"+=>)Wd3)WeZD.A}-DAq  DG,

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

4( !# T M Q$ 8 &a/0/da/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7EE"B8DAqHHT&,,v||Au/E"FGL 8 "6!9-.-41aQ-.56"6!9-E-41afQqm1DQ-EO,+26!9+=>+=41ac$q'lA+=>NO76!93EF3E41aSa\A&3E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>      ar   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7EvuQx(AT&,,v||Au/E"FGMGT&,,v||Au/E"FGQRQ	 8
 622Q67EvuQx(AOOE1% 8r   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>      1r   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7EOOE;vuQx#@A 8r   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!3A!u!3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J8I%T
+8I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!BA!u!BC<=622Q67E%+\\&,,s5?QSX2Y%Z[%ZTQAa5%ZC[S"@A 8 622Q67E"51!"%+\\&,,?OQV2W%XY%XTQAa5%XCYS8X"67	 8 622Q67E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"     @aQ$Y.33!3ar@   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#  s=   a!q5!teD.d40@AteAhd4(8%+uT{SteAhd4(8%+uT{TYZ[T\]D  %SS$%89;9! N#q3s8|SV=NO9  ;T+t"45v>T+t":r":;VDJPQ&Qe@a@@&FQT+t"Ktc7J"KLfU 	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R8Q%T
+8QRc%/0	2;ue+DE+D4$+D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_reuseM  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_picklingT  sr    622Q67EOOE;ue#<=OOE;ug#>?OOE;ug#KLOOE;r7#;<	 8r   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\  sR    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}  s\    F#Ba81,,X61a&M 7q!f% 9 M 76s   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_pairwise  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   r:  s   r   Ir6    s     (r   r<  )r1  r   r   )r:  expectedr<  itemry   r   s   `   @r   checkz1TestBasicOps.test_pairwise_reenter.<locals>.check  s8    ( ( !#B   b40 !r   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__  r8  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   Nr;  )ry   rH  s   r   r<  rE    s     (r   r<  )r1  r   r!   )rH  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     4ed3t9>es   c              3   ,   K   | ]  \  }}||     y wr    r   r   r  r0   s      r   r   z>TestBasicOps.test_product.<locals>.product1.<locals>.<genexpr>  s     C/BGD!Q/B   c              3   ,   K   | ]  \  }}||     y wr    r   rP  s      r   r   z>TestBasicOps.test_product.<locals>.product1.<locals>.<genexpr>  s     K7JGD!Q7JrQ  )	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   rS  )r$   rU  rV  r#  r  r)   r  rZ   s           r   product2z+TestBasicOps.test_product.<locals>.product2  ss     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   rW  rY  argtypesr0   r  expected_lens
             r   test_productzTestBasicOps.test_product  sW   "JVff%&Aha!#MNAha%(+R0Aha%(+R0Aha%(+R0LD& T'4.16:1X  gQ&8!9!%gt&Ft1~&F!GI  	T'E!H:a<"89:DA)WeAh=	,	" r58U1Xta17J	NE"IuU2Y/?AsA5:6;K;KA;N5OP5OFMM(+5OD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 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%  s4    {;<tfTk151 =<<s   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   rK  r'   r   rL  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LD& T$))GTN";<fET$--"?@&Iv66:;w~6 <r   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   rg  )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_repeatJ  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7EOOE6B#?@ 8r   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   rl  )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7EHeUW-AOOE1% 8r   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   rt  r   r   i   r   r   extrarh   )r   r!   starmaprV   ru  r"   r=   rS   r  r   r   rx   r   r,   r-   r*   r   r   rk   r   r   r  s       r   test_starmapzTestBasicOps.test_starmap  s   ghllCa%!*4MNO+	-as57E!H7M!NO+	-ghllB78"=ghllT1Q%[MBCdVL)T78<<$+HI)W-)WhllUGWM)T72w+?@*dGGeW,EF)T76E7+CD !HLL#eAha
";<diil+S1HLL#eAha
";<dmmA./5622Q67Ec%(E!AJ&?@AOOE1% 8r   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assertIsNonerk  )	r   r$   tgtargsry   rar   ro   wrr  s	            r   test_islicezTestBasicOps.test_islice  s%   D T&s";d";<!%,/1MD'
 T&s";d";<!%/2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!$D T$))F5:,E,E"FG!%,/1T$--uSz0ID0I"JK!%,/1v66:;veCj'@4'@A <  ! [[_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  ry  rz  rh   )r   r   r   r   r   r   r   r   r   r   )r   r!   	takewhileri   r   rx   rV   ru  r   r,   r-   r  rI   r   r   r=   rk   r   r   )r   r   rj  ro   s       r   test_takewhilezTestBasicOps.test_takewhile  sh   (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7EOOE9Xt#<= 8r   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   ry  rz  rh   r   )r   r!   	dropwhileri   r   rx   rV   ru  r   r,   r-   r   r   r=   rk   r   r   )r   r   ro   s      r   test_dropwhilezTestBasicOps.test_dropwhile  s7   (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7EOOE9Xt#<= 8r   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        |      \  }
}t        |
      \  }}| j!                  t        |||
|||h      dk(         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   r   rh   	__class__rt  <   r   )teer   r!   r?   r%   r=   r   rZ  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   r{   r   t1t2tnewt3r_  r  long_ansro   s                           r   test_teezTestBasicOps.test_tee,  sy	   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ACEQCEMENN5!HEfQi.CSVa&  U1XtE!H~6U1XtE!H~6  	)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A]FT&\51S[!,v6v!d1gv6eaH	  5z11v11v1Q1aA./145 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7EOOE4E
#34u:DAqOOE1cO2OOE1cO2	 8a 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   rT  )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   rK  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  sA    	# 	# 13x1##L%8G 988s   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  r{  )r   r   r_  qs       r   test_StopIterationzTestBasicOps.test_StopIteration  sU   -su5W-AmT1R59mT1WY<@ . 	-vb$/?@-vgi/FG2w1-q1-q179~1-q1-q1-vdA?+sIy'JAmT1Z3DEmT1Z3KL K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_gc6  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   r1  r  r?  r   r{  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 D %$ CC %$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-  r2  rA  rI  r_  ra  rc  re  ri  ro  rr  rw  r|  r  r  r  r  r  r  r  r   requires_working_threadingr  r  cpython_onlyr  r  r  r  r  r  r   r   r   rr   rr   i   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 9, 9,v I? I?V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 \/ \/| > >( > >" T3 T3l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_reduciblec  s    '622Q67ED!BT&,,v||B/F"GH+VW.YT"Xq)T&,,v||B/F"GH+VWVX/Z	 8
 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_nones  s     *HLL9b4(622Q67Ell6<<E#:;GT']T5M: 8 	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_combinations  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_replacement  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_compress  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_count  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_cycle  s'    fU6]B78$~:NOr   c           	      X    | j                  t        t        d g d            g d       y )Nc                     | dk  S Nr   r   r(   s    r   rp   z-TestExamples.test_dropwhile.<locals>.<lambda>      !A#r   r   r   r   r   r   )r   r   r   )r   r!   r  rD   s    r   r  zTestExamples.test_dropwhile  s    i{CDgNr   c           	      H   | j                  t        d      D cg c]  \  }}|	 c}}t        d             | j                  t        d      D cg c]  \  }}t        |       c}}t        d      t        d      t        d      t        d      g       y c c}}w c c}}w )NAAAABBBCCDAABBBABCDAB
AAAABBBCCDAAAABBBCCr   )r   rE  r!   )r   rH  r  s      r   r  zTestExamples.test_groupby  s    0A(BC(B1!(BCh	)0EF0E1470E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sr   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    AaCr   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   ru  rD   s    r   rw  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   ro  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!   r{  ru  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  rw  r  r  r%  r`  r_  ro  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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   r3  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( 65: ! +!!WdB+ ! +!!WdB+ 65sX   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 2  	!%,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   c           
      `   dfd	} G fdd      d} |g       \  }}| j                  t        |      g        | j                  t        |      g         |t        |            \  }}| j                  t        ||      t        t	        |      t	        |                    |t        |            \  }}| j                  t        |      t        t	        |                   | j                  t        |      t        t	        |                    |t        |            \  }}t	        d      D ]  }| j                  t        |      |        ~| j                  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        |            }	|D ]$  }t        |	|         }
||   j                  |
       & | j                  |d   t        t	        |                   | j                  |d	   t        t	        |                    | j                  t        |       | j                  t        |d
       | j                  t        |d	dgd       | j                  t        |d	dgd
d        |d      \  }} t        |      d      }| j                  t        |      t        d              |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        |dd       | j                  t        |g d       t	        d      D ]{  } |d|      }| j                  t        |      t               | j                  t        |      |       | j                  |D cg c]  }t        |       c}t        d      g|z         }  |d      \  }} ||      \  }} ||      \  }}| j                  t        ||||||h      dk(          |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	        d            \  }}t!        j"                  |      }| j                  t%        |d      t        |             ~t'        j(                          | j                  t*        t$        |d       t        d      }t        t	        d            }	  |t1        d d            \  }}	 t3        |       ~y c c}w #  ~~ xY w)Nr'   c                     |dk  rt         |dk(  ry |       }|g}t        |dz
        D ]  }|j                   |              t        |      S )Nr   r   r   )r,   r=   r   r   )rY   r>   iteratorr#  r  r  s        r   r  z;TestPurePythonRoughEquivalents.test_tee_recipe.<locals>.tee  sV    1u  AvH~HZF1q5\d8n- "= r   c                   $    e Zd Z fdZd Zd Zy)<TestPurePythonRoughEquivalents.test_tee_recipe.<locals>._teec                     t        |      }t        |      r#|j                  | _        |j                  | _        y || _        d d g| _        y r    )r   rv   r?  link)r   rY   ry   r  s      r   r"  zETestPurePythonRoughEquivalents.test_tee_recipe.<locals>._tee.__init__"  s>    (^b$'$&KKDM "DI$&DM!%tDIr   c                     | S r    r   rD   s    r   rE   zETestPurePythonRoughEquivalents.test_tee_recipe.<locals>._tee.__iter__+  r$  r   c                 z    | j                   }|d   t        | j                        |d<   d d g|d<   |\  }| _         |S Nr   r   )rC  r   r?  )r   rC  r  s      r   rJ   zETestPurePythonRoughEquivalents.test_tee_recipe.<locals>._tee.__next__.  sD    yy7?"4==1DG#TlDG#' tyr   Nr&  )r  s   r   r  rA     s    -r   r  r  r   r   r   r   r   r)   r   r   r  r  r   r   rh   r  rt  )r'   )r   r!   r?   r%   r=   r   rZ  r  r   r   rx   r   r,   r   r   r   r  r  r  r  r  r  r   rS   r   rT  )r   r  r>   r   r   r0   r  r  r  r  r  r   r#  r)   r   r{   r   r  r  r  r  r_  r  r  r  r  r  s                             @r   test_tee_recipez.TestPurePythonRoughEquivalents.test_tee_recipe  sg   		!	 	0 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ACEQCEMENN5!HEfQi.CSVa&  U1XtE!H~6U1XtE!H~6  	)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A]FT&\51S[!,v6v!d1gv6eaH	  5z11v11v1Q1aA./145 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% 4  tT 23	Ls 7t	s   Z#
Z( (Z-N)rL   rM   rN   r6  staticmethodrQ   r<  rG  r   r   r   r0  r0    s&    )2  *%$cr   r0  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   r?  	containers      r   	makecyclezTestGC.makecycle  s    "Xxr   c                 F    g }| j                  t        dd|dg      |       y Nr   r'   r   )rM  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 rO  )rM  r   rP  s     r   r   zTestGC.test_batched  s$    w!Aay!,a0r   c                 >    g }| j                  t        |      |       y r    )rM  r   rP  s     r   r   zTestGC.test_chain  s    uQx#r   c                 T    g }| j                  t        j                  |g      |       y r    )rM  r   r   rP  s     r   r   zTestGC.test_chain_from_iterable  s"    u**A3/3r   c                 H    g }| j                  t        dd|dgd      |       y rO  )rM  r   rP  s     r   r$  zTestGC.test_combinations  $    |Qq1Iq115r   c                 H    g }| j                  t        dd|dgd      |       y rO  )rM  r  rP  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   )rM  rz  rP  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  rM  r  )r   r   rY  s      r   r  zTestGC.test_count  s8    53&$),uSVSV,a0r   c                 F    g }| j                  t        |gdz        |       y re   )rM  r  rP  s     r   r  zTestGC.test_cycle  s    uaSU|Q'r   c                 N    g }| j                  t        t        d||g      |       y r_   )rM  r  r  rP  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    qr   )rM  rE  rP  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  sF    E!H'2DAq''B/66q9 3r   c                 J    g }| j                  t        d |gdz        |       y )Nc                      y)NTr   r(   s    r   rp   z$TestGC.test_filter.<locals>.<lambda>  s    tr   r'   )rM  rf  rP  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>  s    Er   )rM  r  rP  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   )rM  r"   rP  s     r   r  zTestGC.test_zip  s(    sA3q51#a%(!,r   c                     g }| j                  t        |gdz  |gdz        |       |d g}| j                  t        |gdz  |gdz  |      |       y )Nr'   r   r  )rM  r  )r   r   r   s      r   r%  zTestGC.test_zip_longest  sT    {A3q51#a%0!4I{A3q51#a%1=qAr   c                 J    g }| j                  t        d |gdz        |       y )Nc                     | S r    r   r(   s    r   rp   z!TestGC.test_map.<locals>.<lambda>	  s    Ar   r'   )rM  r   rP  s     r   rw  zTestGC.test_map	  s"    s:s1u-q1r   c                 H    g }| j                  t        |gdz  d       |       y re   )rM  rQ   rP  s     r   r  zTestGC.test_islice	  s"    vqc!eT*A.r   c                 F    g }| j                  t        |gdz        |       y r
  )rM  r1  rP  s     r   r2  zTestGC.test_pairwise	  s    xA*r   c                 H    g }| j                  t        dd|dgd      |       y rO  )rM  r  rP  s     r   r`  zTestGC.test_permutations	  rU  r   c                 J    g }| j                  t        dd|dgd      |       y )Nr   r'   r   r=  )rM  r?  rP  s     r   r_  zTestGC.test_product	  s$    w!Aay3Q7r   c                 >    g }| j                  t        |      |       y r    )rM  r   rP  s     r   ro  zTestGC.test_repeat	  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>	  s    !r   r'   )rM  r{  rP  s     r   r|  zTestGC.test_starmap	  s&    w|qeWQY7;r   c           	      P    g }| j                  t        t        dd||g      |       y rF  )rM  r  r  rP  s     r   r  zTestGC.test_takewhile 	  s$    y1a|4a8r   N)rL   rM   rN   rM  r   r   r   r   r$  rK  r}  r  r  r  r  rb  r  r  r  r%  rw  r  r2  r`  r_  ro  r|  r  r   r   r   rJ  rJ    s     
11$46G=1
(66:8:-B2/+68%<9r   rJ  c              #   "   K   | D ]  }|  yw)zRegular generatorNr   seqnr0   s     r   Rrv  $	  s      r2   c                       e Zd ZdZd Zd Zy)r   zSequence using __getitem__c                     || _         y r    ru  r   ru  s     r   r"  z
G.__init__+	  s	    	r   c                      | j                   |   S r    ry  )r   r0   s     r   __getitem__zG.__getitem__-	  s    yy|r   N)rL   rM   rN   rO   r"  r|  r   r   r   r   r   )	  s     r   r   c                   "    e Zd ZdZd Zd Zd Zy)r<  z Sequence using iterator protocolc                      || _         d| _        y r_   rt  rz  s     r   r"  z
I.__init__2	      	r   c                     | S r    r   rD   s    r   rE   z
I.__iter__5	  rF   r   c                     | j                   t        | j                        k\  rt        | j                  | j                      }| xj                   dz  c_         |S rU   r0   r   ru  rI   r   rI  s     r   rJ   z
I.__next__7	  ?    66S^#=%8IIdff!r   NrL   rM   rN   rO   r"  rE   rJ   r   r   r   r<  r<  0	  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_   rt  rz  s     r   r"  zIg.__init__?	  r  r   c              #   6   K   | j                   D ]  }|  y wr    ry  r  s     r   rE   zIg.__iter__B	  s     99CI s   NrL   rM   rN   rO   r"  rE   r   r   r   r  r  =	  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_   rt  rz  s     r   r"  z
X.__init__H	  r  r   c                     | j                   t        | j                        k\  rt        | j                  | j                      }| xj                   dz  c_         |S rU   r  r  s     r   rJ   z
X.__next__K	  r  r   N)rL   rM   rN   rO   r"  rJ   r   r   r   r  r  F	  s    &r   r  c                       e Zd ZdZd Zd Zy)NzIterator missing __next__()c                      || _         d| _        y r_   rt  rz  s     r   r"  z
N.__init__S	  r  r   c                     | S r    r   rD   s    r   rE   z
N.__iter__V	  rF   r   Nr  r   r   r   r  r  Q	  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_   rt  rz  s     r   r"  z
E.__init__[	  r  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   Nr  r   r   r   r   r   Y	  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_   rt  rz  s     r   r"  zE2.__init__e	  r  r   c                     | S r    r   rD   s    r   rE   zE2.__iter__h	  rF   r   c                     | j                   dk(  rt        | j                  | j                      }| xj                   dz  c_         |S )Nr'   r   )r0   ZeroDivisionErrorru  r  s     r   rJ   zE2.__next__j	  s7    66Q;##IIdff!r   Nr  r   r   r   r  r  c	  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   rz  s     r   r"  z
S.__init__s	  s    r   c                     | S r    r   rD   s    r   rE   z
S.__iter__u	  rF   r   c                     t         r    rH   rD   s    r   rJ   z
S.__next__w	  rK   r   Nr  r   r   r   r  r  q	  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    ar   )r   r   rv  r  r   ry  s    r   Lr  z	  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  rv  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!AT*QqT"23Q7 "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/  r0  )r{   r'   )r  r   )r   r<  r  r  rv  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  rv  r   r!   r   r   rx   r  r  r  r   r   rn   r  s      r   r   z"TestVariousIteratorArgs.test_chain	  s    U4[+uT$q7IJAB1a(  eAaDk!2D1J?  eAaD!A$&7!8$qt*T!A$Z:OP ) iuQqT{;iuQqT{;/uQqT{C K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  rv  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JAAAB1a(  hqtVAY&?!@$qt*M )i1Q4Ci1Q4C/x!fQi7PQ K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	  sh    U4[+uT$q7IJAi!A$7i!A$7/!A$? K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  rv  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JAB1a(Q!!:a<fU1Q4[&9:  2	 )
 i!5i!5/uQqT{C K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  rv  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OAB1a(  1!?2!!?adL )i!A$7i!A$7/wqt}E P!?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  rv  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OAB1a(  fVQqT&:!;-.qT!?TVAY!T!?A ) i1>i1>/vfad7KL P "@   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  rv  r   r!   r  r5   r8   r   rx   r  r  r  r   r  s       r   r  z(TestVariousIteratorArgs.test_filterfalse	  s    )U1XuT{FE$tA<NOAB1a(  k&!A$&?!@-.qT!>TU1X!T!>@ ) ifadCifadC/{61Q47PQ P "?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  rv  r   r!   r"   r%   r   rx   r  r  r  r   r  s      r   r  z TestVariousIteratorArgs.test_zip	  s    U4[+uT$q7IJAB1a(  c!A$i$qt*=  c!A$!o!6QqT1Q48HI ) iad3iad3/s1Q4yA K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  rv  r   r!   r  r"   r   rx   r  r  r  r   r  s      r   r  z'TestVariousIteratorArgs.test_ziplongest	  s    U4[+uT$q7IJAB1a(  k!A$&7!8$s1Q4y/J  k!A$!&=!>S1qQRt_@UV ) iad;iad;/{1Q47HI K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  rv  r   r!   r   r*   rV   ru  r   rx   r  r  r  r   r  s       r   rw  z TestVariousIteratorArgs.test_map	  s   )U1XuSz65Bq>JAB1a(  c&!A$&7!856qT!:T&)T!:<  c(,,!ad&C!D01!!51!Q$!57 )
 ifad;ifad;/s61Q47HI K ";!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  rv  r   r!   rQ   r   rx   r  r  r  r   r  s      r   r  z#TestVariousIteratorArgs.test_islice	  s    2uT{KtD9KLAB1a(  fQqT!D&;!<d1Q4jA>NO )i1r:i1r:/vadB7GH M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  rv  r!   r"   r1  r   r   rx   r  r  r  r   )r   rn   r  rR   r=  r  s         r   r2  z%TestVariousIteratorArgs.test_pairwise	  s    U4[+uT$q7IJAB1a(1Q4jCQR 12hqtn-  2	 )
 i1Q48i1Q48/x!~F K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  rv  r%   r   r!   r{  rV   ru  r   rx   r  r  r  r   )r   rn   r  ssr)   s        r   r|  z$TestVariousIteratorArgs.test_starmap
  s    )U1XuSz65Bq>JAB1a(!QZ  ghllAbE&B!C01!!51!Q$!57 ) i(,,"Fi(,,"F/wx||QrU7ST K "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  rv  r5   r   r   r!   r  r   rx   r  r  r  r   r   rn   r  tgtr  s        r   r  z&TestVariousIteratorArgs.test_takewhile
  s    )U1XuT{FE$tA<NOAB1a(aDD!$<JJt$ !   i!&=!>D ) 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  rv  r8   r   r   r!   r  r   rx   r  r  r  r   r  s        r   r  z&TestVariousIteratorArgs.test_dropwhile
  s    )U1XuT{FE$tA<NOAB1a(aDD5;JJt$ !   iqt&<!=sC ) iE1Q4@iE1Q4@/y!7MN P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  rv  r  r   r!   r   rx   r  r  r  r   )r   rn   r  it1it2s        r   r  z TestVariousIteratorArgs.test_tee(
  s    U4[+uT$q7IJAB1a(qt9S  cD1J7  cD1J7 ) iad3iad3/s1Q4y|D Kr   N)rL   rM   rN   r   r   r   r}  r_  r  r  r  r  r  r  rw  r  r2  r|  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   ro  zLengthTransparency.test_repeat4
  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   rq  r  rD   s    r   rr  z2LengthTransparency.test_repeat_with_negative_times9
  s    --fT2.>?C--fT2.>?C--fT.DEqI--fT.DEqIr   N)rL   rM   rN   ro  rr  r   r   r   r  r  2
  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>.gH
  s    ad1gJr   )r!   r   r"   r   r   )tuple1r   tuple2r  itemsgenr  s    `    @r   mutatingtuplez5RegressionTests.test_sf_793826.<locals>.mutatingtupleD
  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>.fS
  s    AAwE!Hr   r   )r   r   r   )r!   r  r   )r   r  r   secondr  s       @r   test_sf_793826zRegressionTests.test_sf_793826A
  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>.gen1b
  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>.gen2i
  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//r  i )r   r   r=   r   rI   r   r   s     r   "test_long_chain_of_empty_iterablesz2RegressionTests.test_long_chain_of_empty_iterablesz
  s?        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   r  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
  sE    	 	 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  ?
  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   rm  r  r   r   r   r   12)rh  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   r{  rV   ru  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- 2 #" "+ "+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- #" "+% 2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                 V    |j                  t        j                  t                     |S r    )addTestdoctestDocTestSuiter  )loadertestspatterns      r   
load_testsr4  
  s    	MM'&&y12Lr   __main__)Fr/  unittestr  testr   test.supportr   r   r  decimalr   	fractionsr   rV   rZ  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  r0  rJ  rv  r   r<  r  r  r  r   r  r  r  r  r  r  r  r  r  r4  rL   main)ro   s   0r   <module>r@     s1       8          
   	 & 
 
 (1*
  -
 $F$;$;a$?@B@U "'L@Br"8$$ r"j7mM8$$ mM`fX%6%6 fRk9X k9Z
   	 	    2
qEh// qEfJ** JZh'' Zz4.X.. 4.n 	#?"" #? #?L
 zHMMO sTBs   :H