
    <e                       d dl Z d dlZd dlmZ d dlmZ d dlT 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ej        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'd  e(ej)        dz             D             Z* G d dej+                  Z, G d dej+                  Z- G d dej+                  Z. G d  d!ej+                  Z/d" Z0 G d# d$          Z1 G d% d&          Z2 G d' d(          Z3 G d) d*          Z4 G d+ d,          Z5 G d- d.          Z6 G d/ d0          Z7d1 Z8 G d2 d3ej+                  Z9 G d4 d5ej+                  Z: G d6 d7ej+                  Z; G d8 d9ej+                  Z<ej=         G d: d;ej+                              Z>d< Z?e@d=k    r ejA                     dS dS )>    N)support)threading_helper)*)Decimal)Fraction)reduce   c                  .    t          t          |            S N)listzipargss    */usr/lib/python3.11/test/test_itertools.pylzipr      s    T
    c                     d| z  S )zTest function of one argument    xs    r   oneargr      s    Q3Jr   c                      t           )z"Test function that raises an error)
ValueErrorr   s    r   errfuncr      s    
r   c               #      K   dD ]} | V  dS )zNon-restartable source sequencer   r	   r   Nr   )is    r   gen3r   !   s*         r   c                     | dz  dk    S )Test predicater   r   r   r   s    r   isEvenr"   &       Q36Mr   c                     | dz  dk    S )r!   r   r	   r   r   s    r   isOddr%   *   r#   r   c                      | S r   r   r   s    r   tupleizer'   .   s    Kr   c              #   6   K   t          |           D ]}|V  d S r   range)nr   s     r   iranger,   1   s0      1XX   r   c                       e Zd ZdZd Zd ZdS )StopNowz"Class emulating an empty iterable.c                     | S r   r   selfs    r   __iter__zStopNow.__iter__7       r   c                     t           r   StopIterationr0   s    r   __next__zStopNow.__next__9       r   N)__name__
__module____qualname____doc__r2   r7   r   r   r   r.   r.   5   s8        ((      r   r.   c                 <    t          t          ||                     S )zHConvenience function for partially consuming a long of infinite iterabler   islice)r+   seqs     r   takerA   <   s    sAr   c                 8    t          t          j        | d          S Nr	   )r   operatormuliterables    r   prodrH   @   s    (,!,,,r   c                 B    t          t          d| dz                       S )	Factorialr	   )rH   r*   )r+   s    r   factrK   C   s    a1r   c                     | d         S Nr   r   rs    r   testRrP   H       Q4Kr   c                     | d         S Nr   r   rN   s    r   testR2rT   K   rQ   r   c                     | dk     S )N
   r   r   s    r   undertenrW   N   s    R4Kr   c                     g | ]}|fd S )c                 P    t          j        t          j        | |                    S r   )pickleloadsdumps)sprotos     r   <lambda>z<listcomp>.<lambda>Q   s    V\!U5K5K(L(L r   r   ).0r^   s     r   
<listcomp>ra   Q   s7     B B B "'LLL B B Br   c                   |   e Zd Zd=dZd Zd Zd Zd Zd	 Zd
 Z	e
j        d             Z e
j        d          d             Zd Ze
j        d             Z e
j        d          d             Zd Ze
j        d             Z e
j        d          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  e
j        d          d              Z!d! Z" e
j        d          d"             Z#d# Z$d$ Z%d% Z&d& Z'd' Z(e
j        d(             Z) e
j        d          d)             Z*d* Z+d+ Z,d, Z-d- Z.d. Z/d/ Z0d0 Z1d1 Z2d2 Z3d3 Z4d4 Z5d5 Z6 e7j8                    d6             Z9d7 Z:e
j;        d8             Z<e
j;        d9             Z=e
j;        d:             Z>e
j;        d;             Z?e
j;        d<             Z@dS )>TestBasicOps   r	   Nc                    dfd	t          j        ||          }t          j        |          }|                     t	          |          t	          |                      |           |          }	}|                     ||	           |r! |          }
|                     ||
           t          j        |          }d}	 t          |          D ]}t          |           |dz  }n# t          $ r Y nw xY wt          j        ||          }t          j        |          } |           |          }	}|                     ||	           |r+ ||d                   }
|                     ||
           dS dS )zITest that an iterator is the same after pickling, also when part-consumedr   c                     dk    rt          d          t          | t                    r| S 	 t          t	          |                     }n# t
          $ r | cY S w xY wfd|D             S )NrV   zinfinite recursion encounteredc                 .    g | ]} |d z             S )r	   r   )r`   eexpandr   s     r   ra   z;TestBasicOps.pickletest.<locals>.expand.<locals>.<listcomp>b   s'    ...qFF1acNN...r   )RuntimeError
isinstancestrr   r?   	TypeError)itr   lri   stops    ` r   ri   z'TestBasicOps.pickletest.<locals>.expandX   s    2vv"#CDDD"c"" 	D))**   			.....A....s   A AAr	   Nr   )rZ   r\   r[   assertEqualtyper*   nextr6   )r1   protocolrn   rp   rA   comparedumpi2abci3tookr   i4ri   s      `           @r   
pickletestzTestBasicOps.pickletestV   s   
	/ 
	/ 
	/ 
	/ 
	/ 
	/ 
	/ |B))\$b488,,,vbzz66"::1A 	#wAQ""" \$	4[[  R	  	 	 	D	|B))\$vbzz66"::1A 	$wtuu~&&AQ"""""	$ 	$s   	&C0 0
C=<C=c                 	   |                      t          t          t          d                              g d           |                      t          t          t          d                              g d           t          t
          t          t          fD ]j}|                      t          t          t          |t          d                                        t          t          |g d                               k|                      t          t          d                    g d           |                      t          t          g                     g            |                      t          t          dg                    dg           | 	                    t          t          t          d          dd           | 	                    t          t                     | 	                    t          t          t          d          	           | 	                    t          t          t          d
g g                     g d}|                      t          t          |t                              g d           |                      t          t          |t                              g d           |                      t          t          |t          j                            g d           | 	                    t                    5  t          t          |t                               d d d            n# 1 swxY w Y   t          t           j        d
z             D ]d}|                     |t          t          d                               |                     |t          t          d          d                     e|                      t          t          g dd                     g d           |                      t          t          g dd                    g d           |                      t          t          g d                    dg           | 	                    t                    5  t          t          ddgd                     d d d            d S # 1 swxY w Y   d S )NrV   )
r   r	         rV            $   -   rF   abc)ry   abr         r   r   r	   )
r      	   r   r   r   r   rd   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)rV   r   r	   )rV   r   r   d   )r   n   s   t      )rr   r   
accumulater*   intcomplexr   r   mapassertRaisesrm   minmaxrD   rE   chrrZ   HIGHEST_PROTOCOLr   )r1   typr]   r^   s       r   test_accumulatezTestBasicOps.test_accumulate   s   jr3344>>>	@ 	@ 	@j%))<<<==>>>	@ 	@ 	@(2 	F 	FCZCr 3 34455SBBBCCDDF F F F 	j//002D2D2DEEEjnn--r222j!oo..444)ZrAqAAA)Z000)Z599===)T:q"g+>+>???***jC0011777	9 	9 	9jC0011777	9 	9 	9jHL99::???	A 	A 	Ay)) 	% 	%As##$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%62Q677 	E 	EEOOE:eBii#8#8999OOE:eBii#C#C#CDDDDjTBBBCC\\\RRRjSAAABBDXDXDXYYYjS999::SEBBBy)) 	, 	,RHc**+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s$   #MM	M R44R8;R8c           
      2   d }t           |fD ]}|                     t           |dd                    t          d                     |                     t           |d                    t          d                     |                     t           |d                    g            |                     t          d |dd                    t          d                     |                     t
          t           |dd	                     
d S )
Nc               7   &   K   | D ]}|D ]}|V  dS )zPure python version in the docsNr   )	iterablesrn   elements      r   chain2z'TestBasicOps.test_chain.<locals>.chain2   s>       " "! " "G!MMMM"" "r   r   defabcdef rd   abcdr   r   )chainrr   r   rA   r   rm   )r1   r   r{   s      r   
test_chainzTestBasicOps.test_chain   s   	" 	" 	"  	7 	7AT!!E5//22DNNCCCT!!E((^^T%[[999T!!B%%[["---T!QQue__55tF||DDDiaa1gg6666	7 	7r   c           	         |                      t          t                              ddg                    t          d                     |                      t          t                              dg                    t          d                     |                      t          t                              dg                    g            |                      t	          dt                              ddg                    t          d                     |                     t          t          t                              ddg                     d S )	Nr   r   r   r   rd   r   r   r   )rr   r   r   from_iterablerA   r   rm   r0   s    r   test_chain_from_iterablez%TestBasicOps.test_chain_from_iterable   s   e115%.AABBDNNSSSe115'::;;T%[[IIIe112$7788"===a!4!4eU^!D!DEEtF||TTT)T5+>+>1v+F+FGGGGGr   c                    t           j        gt          z   D ]a}t          dd          }|                     t           ||                    t          d                     |                     t          |          d           |                     t           ||                    t          d                     |                     t           |t          d                              g            |                     t          d |t          dd                              t          d                     |                     t          t
           |t          d	d
                               ct          t          j        dz             D ]5}|                     |t          dd          t          d                     6d S )Nr   r   r   ry   bcdefr   rd   r   r   r   r	   rv   )copydeepcopypicklecopiersr   rr   r   rt   rA   r   rm   r*   rZ   r   r   )r1   operrn   r^   s       r   test_chain_reduciblez!TestBasicOps.test_chain_reducible   s   ]Om3 	B 	BDue$$BT$$r((^^T(^^<<<T"XXs+++T$$r((^^T']];;;T$$uRyy//22B777T!TT%u*=*=%>%>??fNNNittE!QKK/@/@AAAA62Q677 	P 	PEOOE5#6#6XOOOOO	P 	Pr   c                 f   |                      t          t                      j        d           |                      t          t                      j        g            |                      t          t                      j        d           |                      t          t                      j        g f           |                      t          t                      j        t	          g           g f           t                      }|                    t	          ddg          f           |                     t          |          g d           t                      }|                    t	          ddg          t	          dg          f           |                     t          |          g d           d S )Nr   r   r   r   )ry   rz   r{   drh   fghi)r   ry   rz   r{   r   rh   r   )r   rm   r   __setstate__iterrr   r   r1   rn   s     r   test_chain_setstatez TestBasicOps.test_chain_setstate   sS   )UWW%92>>>)UWW%92>>>)UWW%91===)UWW%9B5AAA)UWW%9DHHb>JJJWW
uen--/000b#A#A#ABBBWW
uen--tUG}}=>>>b#H#H#HIIIIIr   c                 	  
 |                      t          t          d           |                      t          t          ddd           |                      t          t          d            |                      t          t          dd           d gt          z   D ]i}|                     t           |t          dd                              g            |                     t           |t          dd                              g d           t          dd          }t          |           |                     t           ||                    g d	           |                     t           |t          t          d
          d                              g d           t          t          d
          d          }t          |           |                     t           ||                    g d           kd }d }d }t          d          D ]}d t          |          D             t          |dz             D ]}t          t          |                    }|                     t          |          ||k    rdn1t          |          t          |          z  t          ||z
            z             |                     t          |          t          t          |                               |                     |t          |                     |D ]
|                     t          
          |           |                     t          t          
                    |           |                     t          
          t          
                     |                     t          fd
D                                  |                     t          
          
fdD                        |                     |t           ||                               |                     |t           ||                               |                     |t           ||                               t          t          j        dz             D ]&}	|                     |	t          |                     'd S )Nr   r   r	   c                     | S r   r   ry   s    r   r_   z0TestBasicOps.test_combinations.<locals>.<lambda>       A r       ABCDABr   Cr   Dr   r   r   r   r   r   )r   r   r   r   r   rd   r   r   r   r	   r   r   r   r   r	   r   r   )r   r   r   c              3     K   t          |           t                    }||k    rdS t          t          |                    }t          fd|D                       V  	 t	          t          |                    D ]}||         ||z   |z
  k    r ndS ||xx         dz  cc<   t          |dz   |          D ]}||dz
           dz   ||<   t          fd|D                       V  )%Pure python version shown in the docsNc              3   (   K   | ]}|         V  d S r   r   r`   r   pools     r   	<genexpr>zHTestBasicOps.test_combinations.<locals>.combinations1.<locals>.<genexpr>   '      11AQ111111r   r	   c              3   (   K   | ]}|         V  d S r   r   r   s     r   r   zHTestBasicOps.test_combinations.<locals>.combinations1.<locals>.<genexpr>   '      55DG555555r   tuplelenr   r*   reversed)rG   rO   r+   indicesr   jr   s         @r   combinations1z5TestBasicOps.test_combinations.<locals>.combinations1   s%     ??DD		A1uu588nnG111111111111	6!%((++  AqzQUQY.. / F


a


qsA 2 2A!(1!1GAJJ5555W55555555	6r   c              3     K   t          |           t                    }t          t          |          |          D ]?}t	          |          t          |          k    rt          fd|D                       V  @dS )r   c              3   (   K   | ]}|         V  d S r   r   r   s     r   r   zHTestBasicOps.test_combinations.<locals>.combinations2.<locals>.<genexpr>  '      99AQ999999r   N)r   r   permutationsr*   sortedr   rG   rO   r+   r   r   s       @r   combinations2z5TestBasicOps.test_combinations.<locals>.combinations2   s      ??DD		A'a!44 : :'??d7mm33999999999999: :r   c              3     K   t          |           t                    }t          t          |          |          D ]?}t          t	          |                    |k    rt          fd|D                       V  @dS )zPure python version from cwr()c              3   (   K   | ]}|         V  d S r   r   r   s     r   r   zHTestBasicOps.test_combinations.<locals>.combinations3.<locals>.<genexpr>  r   r   N)r   r   combinations_with_replacementr*   setr   s       @r   combinations3z5TestBasicOps.test_combinations.<locals>.combinations3  s      ??DD		A8q1EE : :s7||$$))999999999999: :r   r   c                     g | ]
}d |z  dz
  S r      r   r`   r   s     r   ra   z2TestBasicOps.test_combinations.<locals>.<listcomp>       ///ac"f///r   r   c              3       K   | ]}|v V  	d S r   r   r`   rh   valuess     r   r   z1TestBasicOps.test_combinations.<locals>.<genexpr>  '      '?'?V'?'?'?'?'?'?r   c                     g | ]}|v |	S r   r   r`   rh   r{   s     r   ra   z2TestBasicOps.test_combinations.<locals>.<listcomp>      %B%B%BA166a666r   )r   rm   combinationsr   r   rr   r   rt   r*   r   rK   r   r   
assertTrueallrZ   r   r   )r1   optestIntermediater   r   r   r+   rO   resultr^   r{   r   s             @@r   test_combinationszTestBasicOps.test_combinations   s   )\5999)\5!Q???)\4888*lE2>>>:,. 	: 	:BT""\%%<%<"="=>>CCCT""\&!%<%<"="=>>___a a a+FA66!"""T""%5"6"677TTTV V V T""\%((A%>%>"?"?@@AAAC C C+E!HHa88!"""T""%5"6"677888: : : :	6 	6 	6&	: 	: 	:	: 	: 	: q 	D 	DA//eAhh///F1Q3ZZ D Dl615566  V1Q33aaDGGd1gg<MPTUVWXUXPYPY<YZZZ  Vc#f++.>.>???  888 D DA$$SVVQ///$$SQ[[!444$$T!WWfQii888OOC'?'?'?'?Q'?'?'?$?$?@@@$$T!WW%B%B%B%B%B%B%BD D D D  mmFA.F.F)G)GHHH  mmFA.F.F)G)GHHH  mmFA.F.F)G)GHHH"6#:Q#>?? D DEOOE<+B+BCCCCD!D	D 	Dr   c                     |                      t          t          f          5  t          dd           d d d            d S # 1 swxY w Y   d S )NAAi    )r   OverflowErrorMemoryErrorr   r0   s    r   test_combinations_overflowz'TestBasicOps.test_combinations_overflow"  s    {;<< 	& 	&u%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&   A  AAz"tuple reuse is specific to CPythonc                 d   |                      t          t          t          t          t          dd                                        d           |                     t          t          t          t          t          t          dd                                                  d           d S Nabcder   r	   )rr   r   r   r   idr   assertNotEqualr   r0   s    r   test_combinations_tuple_reusez*TestBasicOps.test_combinations_tuple_reuse(      SRgq)A)A!B!BCCDDaHHHCCDgq1I1I,J,J$K$K L LMMqQQQQQr   c                    t           }|                     t          |d           |                     t          |ddd           |                     t          |d            |                     t          |dd           d gt          z   D ]}|                     t           | |dd                              g d            |dd          }t          |           |                     t           ||                    g d           d	 }d
 }d }t          d          D ]}d t          |          D             t          |dz             D ]}t           ||                    }	|                     t          |	           |||                     |                     t          |	          t          t          |	                               |                     |	t          |	                     t          t          |                    }
|dk    s|dk    r|                     |	|
           n3|                     t          |	          t          |
          k               |	D ]|                     t                    |           d t                    D             }|                     t          |          t          t          |                               |                     t                    t                               |                     t          fdD                                  |                     |fdD                        |                     |	t           ||                               |                     |	t           ||                               t          t           j        dz             D ]"}|                     | ||                     #d S )Nr   r   r	   r   c                     | S r   r   r   s    r   r_   zATestBasicOps.test_combinations_with_replacement.<locals>.<lambda>4  r   r   ABC)r   r   r   r   r   r   r   r   r   )r   r   r  r   r  c              3   f  K   t          |           t                    }|s|rdS dg|z  }t          fd|D                       V  	 t          t          |                    D ]}||         |dz
  k    r ndS ||         dz   g||z
  z  ||d<   t          fd|D                       V  g)r   Nr   c              3   (   K   | ]}|         V  d S r   r   r   s     r   r   zPTestBasicOps.test_combinations_with_replacement.<locals>.cwr1.<locals>.<genexpr>E  r   r   r	   c              3   (   K   | ]}|         V  d S r   r   r   s     r   r   zPTestBasicOps.test_combinations_with_replacement.<locals>.cwr1.<locals>.<genexpr>M  r   r   )r   r   r   r*   )rG   rO   r+   r   r   r   s        @r   cwr1z=TestBasicOps.test_combinations_with_replacement.<locals>.cwr1=  s       ??DD		A  cAgG1111111111116!%((++  AqzQU** + F&qzA~.!a%85555W555555556r   c              3     K   t          |           t                    }t          t          |          |          D ]?}t	          |          t          |          k    rt          fd|D                       V  @dS )r   repeatc              3   (   K   | ]}|         V  d S r   r   r   s     r   r   zPTestBasicOps.test_combinations_with_replacement.<locals>.cwr2.<locals>.<genexpr>U  r   r   N)r   r   productr*   r   r   r   s       @r   cwr2z=TestBasicOps.test_combinations_with_replacement.<locals>.cwr2O  s      ??DD		A"588A666 : :'??d7mm33999999999999: :r   c                     | s|rdndS t          | |z   dz
            t          |          z  t          | dz
            z  S Nr   r	   )rK   )r+   rO   s     r   numcombszATestBasicOps.test_combinations_with_replacement.<locals>.numcombsW  sF     %}qq1$!A;;a($qs))33r   r   c                     g | ]
}d |z  dz
  S r   r   r   s     r   ra   zCTestBasicOps.test_combinations_with_replacement.<locals>.<listcomp>]  r   r   r   c                     g | ]\  }}|S r   r   )r`   kvs      r   ra   zCTestBasicOps.test_combinations_with_replacement.<locals>.<listcomp>m  s    666CAaa666r   c              3       K   | ]}|v V  	d S r   r   r   s     r   r   zBTestBasicOps.test_combinations_with_replacement.<locals>.<genexpr>p  r   r   c                     g | ]}|v |	S r   r   r   s     r   ra   zCTestBasicOps.test_combinations_with_replacement.<locals>.<listcomp>r  r   r   )r   r   rm   r   r   rr   r   rt   r*   r   r   r   r   r   groupbyr   rZ   r   r   )r1   cwrr   r  r  r   r#  r+   rO   r  regular_combsnorunsr^   r{   r   s                @@r   "test_combinations_with_replacementz/TestBasicOps.test_combinations_with_replacement-  s'   +)S%000)S%A666)S$///*c5"555:,. 	V 	VBT""SS]]"3"344___a a a"s5!}}!"""T""%5"6"677TTTV V V V	6 	6 	6$	: 	: 	:	4 	4 	4
 q 	: 	:A//eAhh///F1Q3ZZ : :cc&!nn--  Vhhq!nn===  Vc#f++.>.>???  888 $\&!%<%< = =66Q!VV$$V];;;;OOCKK3}3E3E$EFFF D DA$$SVVQ///6671::666F$$S[[#c&kk2B2BCCC$$T!WWfQii888OOC'?'?'?'?Q'?'?'?$?$?@@@$$V%B%B%B%B%B%B%BD D D D  dd61oo)>)>???  dd61oo)>)>???"6#:Q#>?? : :EOOE33va==9999:1:	: 	:r   c                     |                      t          t          f          5  t          dd           d d d            d S # 1 swxY w Y   d S )Nr     @)r   r  r  r   r0   s    r   +test_combinations_with_replacement_overflowz8TestBasicOps.test_combinations_with_replacement_overflowy  s    {;<< 	7 	7)$666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7r	  c                 b   t           }|                     t          t          t	          t
           |dd                                        d           |                     t          t          t	          t
          t           |dd                                                  d           d S r  )r   rr   r   r   r   r  r  r   )r1   r+  s     r   .test_combinations_with_replacement_tuple_reusez;TestBasicOps.test_combinations_with_replacement_tuple_reuse  s    +SRWa!9!9::;;Q???CCDWa,A,A$B$B C CDDaHHHHHr   c                 v   |                      t          t                     |                      t          t          ddd           |                      t          t          d            |                      t          t          dd           |                     t          t          dd                    g            |                      t          t          dd           |                     t          t          t          d          d                    g d           dd	}dd
}t          d          D ]}d t          |          D             t          |dz             D ]U}t          t          |                    }|                     t          |          ||k    rdn!t          |          t          ||z
            z             |                     t          |          t          t          |                               |                     |t          |                     |D ]}|                     t          |          |           |                     t          t          |                    |           |                     t          fd|D                                  |                     |t           ||                               |                     |t           ||                               ||k    ra|                     |t          t          d                                |                     |t          t                                         t          t          j        dz             D ]&}|                     |t          |                     'Wd S )Nr   r   r	   r   r   r]   r   )r   r	   r   r   r	   r   r	   r   )r   r   )r   r	   c              3     K   t          |           t                    }||n|}||k    rdS t          t          |                    }t          t          ||z
  dz   |dz                       ddd         }t          fd|d|         D                       V  |rt	          t          |                    D ]}||xx         dz  cc<   ||         dk    r)||dz   d         |||dz            z   ||d<   ||z
  ||<   G||         }||          ||         c||<   || <   t          fd|d|         D                       V   ndS |dS dS )r   Nr	   c              3   (   K   | ]}|         V  d S r   r   r   s     r   r   zHTestBasicOps.test_permutations.<locals>.permutations1.<locals>.<genexpr>  s'      55AQ555555r   r   c              3   (   K   | ]}|         V  d S r   r   r   s     r   r   zHTestBasicOps.test_permutations.<locals>.permutations1.<locals>.<genexpr>  s'      #A#ADG#A#A#A#A#A#Ar   r   )rG   rO   r+   r   cyclesr   r   r   s          @r   permutations1z5TestBasicOps.test_permutations.<locals>.permutations1  s     ??DD		AYAA1uu588nnG%!Aqs++,,TTrT2F5555!55555555 !%((++  A1IIINIIIayA~~&-acddmga!en&D$%Eq		"1I291"+wqz/
GQBK##A#A#A#AWRaR[#A#A#AAAAAAF      r   c              3     K   t          |           t                    }||n|}t          t          |          |          D ]?}t          t	          |                    |k    rt          fd|D                       V  @dS )r   Nr  c              3   (   K   | ]}|         V  d S 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88A666 : :s7||$$))999999999999: :r   r   c                     g | ]
}d |z  dz
  S r   r   r   s     r   ra   z2TestBasicOps.test_permutations.<locals>.<listcomp>  r   r   r   c              3       K   | ]}|v V  	d S r   r   r   s     r   r   z1TestBasicOps.test_permutations.<locals>.<genexpr>  r   r   r   )r   rm   r   r   rr   r   r*   r   rK   r   r   r   r   rZ   r   r   )	r1   r>  rA  r+   rO   r  pr^   r   s	           @r   test_permutationszTestBasicOps.test_permutations  s|   )\222)\5!Q???)\4888*lE2>>>l5"5566;;;)\5#>>>l588Q7788+U+U+U	W 	W 	W	 	 	 	0	: 	: 	: 	: q 	D 	DA//eAhh///F1Q3ZZ D Dl615566  V1Q33aaDGGd1Q3ii<OPPP  Vc#f++.>.>???  888 A AA$$SVVQ///$$SQ[[!444OOC'?'?'?'?Q'?'?'?$?$?@@@@  mmFA.F.F)G)GHHH  mmFA.F.F)G)GHHH66$$VT,vt2L2L-M-MNNN$$VT,v2F2F-G-GHHH"6#:Q#>?? D DEOOE<+B+BCCCCDD	D 	Dr   c                     |                      t          t          f          5  t          dd           d d d            d S # 1 swxY w Y   d S )Nr   r0  )r   r  r  r   r0   s    r   test_permutations_overflowz'TestBasicOps.test_permutations_overflow  s    {;<< 	% 	%e$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%r	  c                 d   |                      t          t          t          t          t          dd                                        d           |                     t          t          t          t          t          t          dd                                                  d           d S r  )rr   r   r   r   r  r   r  r   r0   s    r   test_permutations_tuple_reusez*TestBasicOps.test_permutations_tuple_reuse  r  r   c                    t          d          D ]}dd |         }t          d          D ]t          t          |                    }t          t          |                    }t          t	          |                    }t          t          |                    }|                     t          |          |z             |                     t          |          |r8t          |z   dz
            t                    z  t          |dz
            z  n            |                     t          |          |k    rdn!t          |          t          |z
            z             |                     t          |          |k    rdn1t          |          t                    z  t          |z
            z             |                     |t          t          |                               |                     |t          t          |                               |                     |t          t          |                               |                     |t          t          |                               |                     |d |D                        |                     |fd|D                        |                     |d	 |D                        |                     |fd
|D                        |                     |t          t          t          |          j        |                               |                     |t          t          t          |          j        |                               |                     |t          t          |          t          |          z                       d S )Nr   ABCDEFGr   r  r	   r   c                 R    g | ]$}t          |          t          |          k    "|%S r   r   r   r`   ts     r   ra   z3TestBasicOps.test_combinatorics.<locals>.<listcomp>  s.    &M&M&MQ&))T!WW:L:Lq:L:L:Lr   c                 T    g | ]$}t          t          |                    k    "|%S r   r   r   r`   rO  rO   s     r   ra   z3TestBasicOps.test_combinatorics.<locals>.<listcomp>  s*    'J'J'Ja3s1vv;;>>>>>r   c                 R    g | ]$}t          |          t          |          k    "|%S r   rM  rN  s     r   ra   z3TestBasicOps.test_combinatorics.<locals>.<listcomp>  s.    'N'N'Na6!99d1gg;M;M;M;M;Mr   c                 T    g | ]$}t          t          |                    k    "|%S r   rQ  rR  s     r   ra   z3TestBasicOps.test_combinatorics.<locals>.<listcomp>  s*    'I'I'Ia#c!ff++q.....r   )r*   r   r  r   r   r   rr   r   rK   r   r   filter__contains__)r1   r+   r]   rH   r+  permcombrO   s          @r   test_combinatoricszTestBasicOps.test_combinatorics  sw    q 	E 	EA"1"A1XX E EGAa000118A>>??LA..//LA..//   TAqD111  SQR+_D1QKK$q'',A4!99,L,L]^Y^```  T1AA$q''D1II:MNNN  T1AA$q''DGG:KdSTUVSVii:WXXX   vc$ii'8'8999  fSXX&6&6777  vc$ii'8'8999  vc$ii'8'8999   &M&M$&M&M&MNNN  'J'J'J'J4'J'J'JKKK  'N'N4'N'N'NOOO  'I'I'I'I3'I'I'IJJJ  tF3s883H$,O,O'P'PQQQ  tF3t993I3,O,O'P'PQQQ  vc#hhT.B'C'CDDDD3E	E 	Er   c                    |                      t          t          dg d                    t          d                     |                      t          t          dg d                    t          d                     |                      t          t          dg d                    t          d                     |                      t          t          dg d                    t          d                     |                      t          t          dg d                    t          d	                     |                      t          t          d
g d                    t          d                     d}t                              t          t          d          |                    }t                              t          d                    }|                      t          t          ||                    g d|z             |                     t          t          d t          d                     |                     t          t          t          d          d            |                     t          t          t          d                     |                     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 ]\  }}}}|                      t           |t          ||                              t          |                     |                      t           |t          ||                              t          |                     t          ||          }|rHt          |           |                      t           ||                    t          |                     d S )NABCDEFr	   r   r	   r   r	   r	   )data	selectorsACEF)r   r   r   r   r   r   r   )r	   r	   r	   r	   r	   r	   r	   r   r	   ACr  )r   r	   r	   r	   r	   r	   BC'  r   r5  r	   r   r   c                 *    t          j         |           S r   )r   r   s    r   r_   z,TestBasicOps.test_compress.<locals>.<lambda>   s    DIaLL r   c                 *    t          j        |           S r   )r   r   r   s    r   r_   z,TestBasicOps.test_compress.<locals>.<lambda>   s    4=3C3C r   CEFBCDEFr   )rr   r   compressr   r   r  r*   r   rm   r   rt   )r1   r+   r]  r^  r   result1result2r  s           r   test_compresszTestBasicOps.test_compress  s   hHNNNOOQUV\Q]Q]^^^hx??@@$v,,OOOhx??@@$r((KKKhx??@@$x..QQQhx99::DJJGGGhummm<<==tDzzJJJ""6%((A#6#677''v77	htY7788'''A+FFF)XtU1XX>>>)XuQxx>>>)XuQxx888)XuQxx>>> )(*C*CD}T 	P 	PB===&%8==="b1===(G<777D#.tS16 P P1i'   bbty)Q)Q)Q&R&R!S!SUYZaUbUbccc  bb$	)B)B&C&C!D!Dd7mmTTT#+D)#<#<  P)***$$T""-=*>*>%?%?gOOOP	P 	Pr   c                 L   |                      t          dt                                g d           |                      t          dt          d                    g d           |                      t          dt          dt          d                              ddg           |                      t          dt	          dt          d                              d	d
g           |                      t          dt	          dt          d                              ddg           |                     t          t          ddd           |                     t          t          d           |                      t          dt          t          dz
                      t          t          t          dz
  t          dz                                  |                      t          dt          t           dz
                      t          t          t           dz
  t           dz                                  |                      t          dt          d                    g d           |                      t          dt          d                    g d           |                      t          dt          t          d                              t          d          t          d          t          d          g           |                      t          dt          t          dd                              t          dd          t          dd          t          dd          g           ddz  }|                      t          dt          |                    ||dz   |dz   g           t          d          }|                      t          |          d           t          |           |                      t          |          d           t          d          }|                      t          |          d           t          |           |                      t          |          d            |                      t          t          d!                    d"           |                      t          t          d#                    d$           |                      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 ]I}t          t          |                    }d'                    |          }|                      ||           Jddt          dz
  t          dz   fD ]}t          |          }|                      t          t%          j        |                    |           |                      t          t%          j        |                    |           t          t(          j        dz             D ]%}|                     |t          |                     &t          dt          dz              t!          j                     d S )(Nr   ry   r   rz   r	   r{   r   r   )ry   r   rz   rd   )r{   r   r   rr  rs  r:  )ry   r:  )rz   r   )ry   rt  )rz   r   rd   ry   rV   r         
@)ru  g      @g      @      
@      )rv  y      @            @      1.1z2.1z3.1r   r	     zcount(3)zcount(4)z	count(-9)ig     $@zcount(10.25)g      $@zcount(10.0)r   	count(%r))rr   r   countrA   r   r   rm   maxsizer   r*   r   r   reprrt   rs   floatsys__mod__r   r   rZ   r   r   exc_info)r1   BIGINTr{   r   r1r2valuer^   s           r   
test_countzTestBasicOps.test_count  s|   eEGG,,.L.L.LMMMeE!HH--/M/M/MNNNaeE!HH!5!56688LMMMaU599!5!566H8MNNNaU599!5!566I8NOOO)UAq!444)UC000b%	"2"233eGAIwqy99::	< 	< 	<b%
"3"344eWHQJ
;;<<	> 	> 	>at--/A/A/ABBBaw002M2M2MNNNawu~~!6!677!%..'%..'%..I	K 	K 	Kax1~~!6!677"1a..(1a..(1a..I	K 	K 	KDav//&&(F1H1MNNN!HHa*---Qa*---"IIa+...Qa"%%%eEll++^<<<eDkk**M:::d5;;//00%888;,q.3;,q.#r1b#+a-QTQ\]^Q^_ 	% 	%AeAhhB$$Q''BR$$$$ GAIwqy0 	5 	5EeAT$)A,,//777T$-"2"233U;;;v6:;; 5 5uU||44445 	aS\^^^^^r   c                 B   |                      t          dt          dd                    g d           |                      t          dt          dd                    g d           |                      t          dt          d                    g d           |                     t          t          d	d
           |                      t          dt          dd                    g d           |                      t          dt          dd                    g d           |                      t          dt          dd                    g d           |                      t          dt          t          dz
  d                    t          dt          t          dz
  t          dz   d                               |                      t          dt          t           dz
  d                    t          dt          t           dz
  t           dz   d                               |                      t          dt          dt          dz                       t          t          dddt          dz   z  z   t          dz                                  |                      t          dt          dd                    g d           |                      t          dt          dd                    g d           |                      t          dt          t          d          t          d                              t          d          t          d          t          d          g           |                      t          dt          t          dd          t          dd                              t          dd          t          dd          t          dd          g           ddz  }|                      t          dt          |                    d|d|z  g           |                      t          t          dt          dd                               t          g d!                     t          dd          }|                      t          |          d"           t          |           |                      t          |          d#           t          d$d          }|                      t          |          d%           t          |           |                      t          |          d%           t          d$d&          }|                      t          |          d'           t          |           |                      t          |          d(           |                      t          |          d(           |                      t          t          d)d                    d*           |                      t          t          d)d                    d+           |                      t          t          d)d,                    d-           |                      t          t          dd,                    d.           t          dd,          }|                      t          t          |                    t                     |                      t          t          |                    t                     t           j         dz
  t           j         dz   d/dddt           j        dz
  t           j        dz   fD ]}t           j         dz
  t           j         dz   d/ddddt           j        dz
  t           j        dz   f	D ]}t          t          ||                    }|dk    rd0|z  }n	d1|d2|d3}|                      ||           t          t"          j        dz             D ]&}|                     |t          ||                     'd S )4Nr   r   r   )ry   r   )rz   r   )r{   r   )startstepr:  )r  )ro  )rz   r:  )r{   r   ry   rz   r   )r  )rz   r   rq  r	   )r  )rz   r   )r{   rd   r   r   r   rV   r   g      ?)r   ru  g      @rv  )r   rw  y      !@       rx  z.1z1.2z1.3r      r   ry  g      @)rV   g      )@g      .@zcount(3, 5)zcount(8, 5)rz  zcount(-9, 0)rt  zcount(-9, -3)zcount(-12, -3)g      %@zcount(10.5, 1.25)zcount(10.5)g      ?zcount(10.5, 1.0)zcount(10, 1.0)r{  r|  zcount(z, ))rr   r   r}  r   rm   rA   r~  r*   r   r   r   r  rt   rs   r   r  r  rZ   r   r   )r1   r  r{   r   r   r  r  r^   s           r   test_count_with_stridez#TestBasicOps.test_count_with_strideA  s   eE!AJJ//1O1O1OPPPeEq$9$9$9::777	9 	9 	9eErNNN33999	; 	; 	;)UC555eE!AJJ//1O1O1OPPPeE!AJJ//1O1O1OPPPeE!AJJ//1O1O1OPPPb%
A"6"677b%PR
T[\_T_abBcBc9d9deeeb%Q"7"788$r5'RTV]U]^aUacdCeCe:f:fgggar719!5!566eB1gai=(8'!)DDEE	G 	G 	Gaq$00...AAAaq'!2!2335I5I5IJJJawu~~wt}}!E!EFF!%..'%..'%..I	K 	K 	Kax!}}hqmm!D!DEE"1Q--"R(2b//J	L 	L 	LDaF!3!3!344q&!F(6KLLLd1eBnn5566=M=M=M8N8NOOO!QKKa-000Qa-000"aLLa.111Qa.111"bMMa/222Qa"2333a"2333eD$//002EFFFeD!nn--}===eD$//002DEEEeBoo..0@AAA"cNNd1gg,,,d1gg...;,q.3;,q.#r1b#+a-QTQ\]^Q^_ 
	8 
	8A|A~|A~sB1b#+VW-Y\YdefYfg 	8 	8%1++&&66%/BB  ./QQ2B  R((("6#:Q#>?? 8 8EOOE5A;;77778	8
	8 
	8r   c           
         |                      t          dt          d                    t          d                     |                      t          t          d                    g            |                     t
          t                     |                     t
          t          d           |                      t          t          t          t                                d                    g d           d S )NrV   r   
abcabcabcar   r   )
r   r	   r   r   r	   r   r   r	   r   r   )rr   rA   cycler   r   rm   r?   r   r0   s    r   
test_cyclezTestBasicOps.test_cyclex  s    b%,,//l1C1CDDDeBii"---)U+++)UA...fU466]]266779N9N9NOOOOOr   c                    t          d          |                     t                    d           |                     t          dt	          j                            t          d                     t          t          j	        dz             D ]}|                     t          dt          j
        t          j        |                              t          d                     t                     |                     t          dt          j
        t          j        |                              t          d                     t                     t                     t          t          j	        dz             D ]%}|                     |t          d                     &t          t          j	        dz             D ])}t          d          }t          |          fdt          d	          D             }t          j        |          }t          j
        |          }|                     t          d
|          t          d                     t          d          }t          |          fdt          d          D             }t          j        |          }t          j
        |          }|                     t          d
|          t          d                     +d S )Nr   ry   rV   
bcabcabcabr	   
cabcabcabcr  c                 .    g | ]}t                    S r   rt   r`   r   r{   s     r   ra   z7TestBasicOps.test_cycle_copy_pickle.<locals>.<listcomp>      +++Qa+++r   r   r   cdeabcdeabcdeabcdeabc                 .    g | ]}t                    S r   r  r  s     r   ra   z7TestBasicOps.test_cycle_copy_pickle.<locals>.<listcomp>  r  r   r   )r  rr   rt   rA   r   r   r   r*   rZ   r   r[   r\   r   r   )r1   r^   rn   _rD  r   r{   s         @r   test_cycle_copy_picklez#TestBasicOps.test_cycle_copy_pickle  s   %LLa#&&& 	b$-"2"233T,5G5GHHH62Q677 	 	ET"fl6<53I3I&J&JKK!,//1 1 1GGGT"fl6<53I3I&J&JKK!,//1 1 1GGGGGGG62Q677 	1 	1EOOE5<<000062Q677 	H 	HEgBb		A++++%((+++AQ&&AQAT"a[[$/E*F*FGGG gBb		A++++%((+++AQ&&AQAT"a[[$/E*F*FGGGG	H 	Hr   c                     g d}t          |          dk    sJ |D ]<}t          j        |          }|                     t	          d|          g d           =d S )N)sH   citertools
cycle
(c__builtin__
iter
((lI1
aI2
aI3
atRI1
btR((lI1
aI0
tb.s?   citertools
cycle
(c__builtin__
iter
(](KKKetRKbtR(]KaK tb.s>   citertools
cycle
c__builtin__
iter
](KKKeRKbR]KaK b.s;   citertools
cycle
cbuiltins
iter
](KKKeRKbR]KaK b.sH   =       	itertoolscyclebuiltinsiter](KKKeRKbR]KaK b.sH   citertools
cycle
(c__builtin__
iter
((lp0
I1
aI2
aI3
atRI1
btR(g0
I1
tb.s?   citertools
cycle
(c__builtin__
iter
(]q (KKKetRKbtR(h Ktb.s>   citertools
cycle
c__builtin__
iter
]q (KKKeRKbRh Kb.s;   citertools
cycle
cbuiltins
iter
]q (KKKeRKbRh Kb.sG   <       	itertoolscyclebuiltinsiter](KKKeRKbRh Kb.sI   citertools
cycle
(c__builtin__
iter
((lI1
aI2
aI3
atRI1
btR((lI1
aI00
tb.sA   citertools
cycle
(c__builtin__
iter
(](KKKetRKbtR(]KaI00
tb.s=   citertools
cycle
c__builtin__
iter
](KKKeRKbR]Kab.s:   citertools
cycle
cbuiltins
iter
](KKKeRKbR]Kab.sG   <       	itertoolscyclebuiltinsiter](KKKeRKbR]Kab.sI   citertools
cycle
(c__builtin__
iter
((lp0
I1
aI2
aI3
atRI1
btR(g0
I01
tb.sA   citertools
cycle
(c__builtin__
iter
(]q (KKKetRKbtR(h I01
tb.s=   citertools
cycle
c__builtin__
iter
]q (KKKeRKbRh b.s:   citertools
cycle
cbuiltins
iter
]q (KKKeRKbRh b.sF   ;       	itertoolscyclebuiltinsiter](KKKeRKbRh b.r   rV   )
r   r   r	   r   r   r	   r   r   r	   r   )r   rZ   r[   rr   rA   )r1   	testcasesrO  rn   s       r   test_cycle_unpickle_compatz'TestBasicOps.test_cycle_unpickle_compat  s~    
 
 
	2 9~~#### 	K 	KAaBT"b\\+I+I+IJJJJ	K 	Kr   c                    t          d          }|                    t          d          df           |                     t	          d|          t          d                     t          d          }|                    t          d          df           |                     t	          d|          t          d                     |                     t                    5  t          d                              t          d          dg           d d d            n# 1 swxY w Y   |                     t                    5  t          d          }|                    t          d          df           d d d            n# 1 swxY w Y   t	          d|           |                     t                    5  t          d                              t          d          df           d d d            n# 1 swxY w Y   |                     t          t          d	          j        d
           |                     t          t          d	          j        g f           d S )Ndefgr   r   r   defgabcdefgabcdefgababcdefgr	   r   r   r   )r  r   r   rr   rA   r   rm   r   )r1   r{   s     r   test_cycle_setstatez TestBasicOps.test_cycle_setstate  s    &MM	UQ'(((b!d+A&B&BCCC &MM	Y+,,,b!d+A&B&BCCC y)) 	= 	=&MM&&Y';<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= y)) 	/ 	/fANNE&MM1-...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	R y)) 	? 	?&MM&&Y'=>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	)U2YY%;R@@@)U2YY%;bUCCCCCs6   #2D!!D%(D%4FF
F
;2G99G= G=c                    |                      g t          t          g                                |                      g t          t          g t                                         |                     t
          t          t          dg                      |                     t
          t          d            |                     t
          t          dd d           g d}g }t          |d           D ];\  }}|D ]3}|                      ||d                    |                    |           4<|                      ||           t          t          j	        dz             D ]}g }t          j
        t          j        t          |t                    |                    D ];\  }}|D ]3}|                      ||d                    |                    |           4<|                      ||           g }t          |t                    D ]r\  }}t          |t                    D ]W\  }}|D ]O}|                      ||d                    |                      ||d	                    |                    |           PXs|                      ||           t          t          j	        dz             D ]}g }t          j
        t          j        t          |t                    |                    D ]\  }}t          j
        t          j        t          |t                    |                    D ]W\  }}|D ]O}|                      ||d                    |                      ||d	                    |                    |           PX|                      ||           d
 t          |t                    D             }	t          d |D                       }
|                      t          |	          |
           |                      t          |	          t          |
                     t          t!          dt          d                              }t          |t                    }t#          |          \  }}t#          |          \  }}t#          |          \  }}|                      t          |          g            |                      t          |          g            |                      t#          |          d           t          |           |                      t          |          g            t          t          j	        dz             D ]}t          |t                    }t#          |          \  }}t#          |           t#          |           |                      t          t          j
        t          j        ||                              g            d}d t          t%          |                    D             }|                      |g d           d t          t%          |                    D             }|                      |g d           d t          t%          |                    D             }|                      |g d           t%          d t          t%          |                    D             d          d d         }|                      |g d            G d dt&                    d#fd	}d t          fd}|                     | |d                     |                     | |d                      G fdd           } |             |            d g}|                     ||t          !           |                     ||           fd"d_        |                     |d g           d_        |                     |d d g           d S )$Nkeyr   c                     | S r   r   r   s    r   r_   z+TestBasicOps.test_groupby.<locals>.<lambda>      a r   rV   ))r   rV   r   )r      r   )r   r   r   )r	      r   )r	         )r   r   r  )r   r      )r   r  r  c                     | d         S rM   r   rN   s    r   r_   z+TestBasicOps.test_groupby.<locals>.<lambda>  s
    ! r   r   r	   r   c                     g | ]\  }}|S r   r   r`   r&  gs      r   ra   z-TestBasicOps.test_groupby.<locals>.<listcomp>  s    000da000r   c                     g | ]
}|d          S rq   r   )r`   rO   s     r   ra   z-TestBasicOps.test_groupby.<locals>.<listcomp>  s    ,,,QAaD,,,r   	AABBBAAAAr   )r   r   abracadabrac                     g | ]\  }}|S r   r   r  s      r   ra   z-TestBasicOps.test_groupby.<locals>.<listcomp>4  s    ...41aQ...r   )ry   rz   r{   r   rO   c           	      T    g | ]%\  }}t          t          |d d                    #|&S r8  r>   r  s      r   ra   z-TestBasicOps.test_groupby.<locals>.<listcomp>7  s3    EEE41afQqmm1D1DEQEEEr   )ry   rz   rO   c                 P    g | ]#\  }}t          t          |                    |f$S r   r   r   r  s      r   ra   z-TestBasicOps.test_groupby.<locals>.<listcomp>:  s-    >>>41ac$q''llA>>>r   )r   ry   r   rz   )r	   r{   )r	   r   r   rO   c                 P    g | ]#\  }}t          t          |                    |f$S r   r  r  s      r   ra   z-TestBasicOps.test_groupby.<locals>.<listcomp>=  s-    FFF41aSa\\A&FFFr   T)reverser   )r  r  r  c                       e Zd ZdS )0TestBasicOps.test_groupby.<locals>.ExpectedErrorNr9   r:   r;   r   r   r   ExpectedErrorr  A  s        Dr   r  c              3   8   K   t          |           D ]}dV  )Nyor)   )r+   r   r  s     r   delayed_raisez0TestBasicOps.test_groupby.<locals>.delayed_raiseC  s-      1XX  



r   c                 <    fdt          | |          D             S )Nc                 ,    g | ]\  }} |          S r   r   )r`   r&  r  funcs      r   ra   z;TestBasicOps.test_groupby.<locals>.gulp.<locals>.<listcomp>H  s%    @@@1DDGG@@@r   )r*  )rG   keypr  s     `r   gulpz'TestBasicOps.test_groupby.<locals>.gulpG  s'    @@@@$(?(?@@@@r   c                       e Zd Z fdZdS )+TestBasicOps.test_groupby.<locals>.DummyCmpc                     r   r   )r1   dstr  s     r   __eq__z2TestBasicOps.test_groupby.<locals>.DummyCmp.__eq__Q  s	    ##r   N)r9   r:   r;   r  )r  s   r   DummyCmpr  P  s.        $ $ $ $ $ $ $r   r  )r  c                 B    j         dk    rxj         dz  c_         | S r"  )skip)objr  keyfuncs    r   r  z*TestBasicOps.test_groupby.<locals>.keyfunc[  s+    |a!
##r   rq   )rr   r   r*  r  r   rm   appendr*   rZ   r   r[   r\   rP   rT   r   r   r   rt   r   	Exceptionr  )r1   r]   dupr&  r  elemr^   ikigkeysexpectedkeysrn   r  g1g2g3rO   r  r  r  r  r  s                       @@r   test_groupbyzTestBasicOps.test_groupby  sH   T'"++..///T'"""5"5"566777)T75"+=+=>>>)Wd333)WeZZDDD. . .A}}-- 	! 	!DAq ! !  DG,,,

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

4(((())
 Q$$$$ 10ga//000,,!,,,--TL111TC$5$5666 [%((++,,QR2R2R2b2&&&b2&&&b8,,,Rb2&&&62Q677 	M 	MEE""B88DAqHHHHHHT&,v|Au/E/E"F"FGGLLLL ..76!99--...555666EE76!99--EEEOOO,,,>>76!99+=+=>>>NNNOOOFF76!993E3EFFFPTUUUVXWXVXY:::;;;	 	 	 	 	I 	 	 		  	  	  	  	  	  !%4 	A 	A 	A 	A 	-}}Q/?/?@@@-}}Q/?/?@@@	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ XZZT* 	-qr:::-q111	$ 	$ 	$ 	$ 	$ 	$ -vw???-d|WEEEEEr   c                    |                      t          t          t          t	          d                              g d           |                      t          t          d g d                    ddg           |                      t          t          t
          g d                    ddg           |                      t          dt          t          t                                          g d           |                     t          t                     |                     t          t          d            |                     t          t          d	 t	          d          d
           |                     t          t          t          d           |                     t          t          t          t	          d          t	          d                               g d}t          t          t	          d                    }|                      t          t          j        |                    |           t          t          t	          d                    }|                      t          t          j        |                    |           t	          t          j        dz             D ]}t          t          t	          d                    }|                      t          t          j        t          j        ||                              |           t          |           |                      t          t          j        t          j        ||                              |dd                     t	          t          j        dz             D ]:}t          t          t	          d                    }|                     ||           ;d S )Nr   )r   r   rd   r   r	   r   r   r   r	   r   rd   )r   r   rd   r   c                     | S r   r   r   s    r   r_   z*TestBasicOps.test_filter.<locals>.<lambda>n      a r   c                     | S r   r   r   s    r   r_   z*TestBasicOps.test_filter.<locals>.<lambda>o  r  r   r   r   )rr   r   rU  r"   r*   boolrA   r}  r   rm   rt   r   r   rZ   r   r[   r\   r   r1   ansr{   r^   s       r   test_filterzTestBasicOps.test_filterh  s   fVU1XX6677AAAfT;;;77881Q%@@@fT;;;77881Q%@@@a!8!899999EEE)V,,,)VZZ888)VZZq1EEE)VVQ777)T6%((E!HH+E+EFFF gg6588$$dill++S1116588$$dmA..//55562Q677 	R 	REvuQxx((AT&,v|Au/E/E"F"FGGMMMGGGT&,v|Au/E/E"F"FGGQRRQQQQ62Q677 	& 	&EvuQxx((AOOE1%%%%	& 	&r   c           
      h   |                      t          t          t          t	          d                              g d           |                      t          t          d g d                    g d           |                      t          t          t
          g d                    g d           |                      t          dt          t          t                                          g d           |                     t          t                     |                     t          t          d            |                     t          t          d t	          d          d	           |                     t          t          t          d
           |                     t          t          t          t	          d          t	          d                               t	          t          j        dz             D ]8}|                     |t          t          t	          d                               9d S )Nr   rd  r  r   r   r   rd   )r	   r   r   r   c                     | S r   r   r   s    r   r_   z/TestBasicOps.test_filterfalse.<locals>.<lambda>      1 r   c                     | S r   r   r   s    r   r_   z/TestBasicOps.test_filterfalse.<locals>.<lambda>  r  r   r   r   r	   )rr   r   filterfalser"   r*   r  rA   r}  r   rm   rt   rZ   r   r   r1   r^   s     r   test_filterfalsezTestBasicOps.test_filterfalse  s   k&%((;;<<gggFFFk$<<==wwwGGGk$<<==wwwGGGaVUWW!=!=>>			JJJ)[111)[**===)[**eAhhJJJ)[&!<<<)T;uQxxq+J+JKKK62Q677 	B 	BEOOE;vuQxx#@#@AAAA	B 	Br   c           
         d t          dt                                D             }|                     |g d           |                     t          t          dt	          d                              t          dt	          d                               |                     t          t          dt	          d                              t          dt	          d                               |                     t          dt          dt                                          t          dt	          d                               |                     t          t          d                    t          d                     |                     t          t                                t                                 |                     t          t           d           |                     t          t           t	          d          d           |                     d t          dd          D             t          dd                     |                     d	 t          dd          D             t          dd                     d S )
Nc                     g | ]	\  }}||f
S r   r   r`   r   ys      r   ra   z)TestBasicOps.test_zip.<locals>.<listcomp>  s     444A!u444r   r   rn  r   r   r   c                 F    g | ]}t          t          |                    S r   r   r   r`   pairs     r   ra   z)TestBasicOps.test_zip.<locals>.<listcomp>  s&    JJJ%T

++JJJr   r   c                     g | ]}|S r   r   r  s     r   ra   z)TestBasicOps.test_zip.<locals>.<listcomp>  s    ===4$===r   )	r   r}  rr   r   r*   r   rA   r   rm   )r1   r  s     r   test_zipzTestBasicOps.test_zip  s
   44U577!3!3444<<<===c%q2233T%q5J5JKKKc(E!HH5566XuQxx8P8PQQQaHegg 6 677ha9Q9QRRRc(mm,,d8nn===ceedff---)S!,,,)S%((A666JJE58I8IJJJeU++	- 	- 	-==3ue+<+<===eU++	- 	- 	- 	- 	-r   c                    t          t          t          t          dd                              }|                     t          |          t          |                     t          t          t          t          t          dd                                        }|                     t          t          	                    |                    t          |                     d t          j
        t          dt                                          D             }|                     |g d           d t          j        t          dt                                          D             }|                     |g d           t          t          j        dz             D ]e}d t          j        t          j        t          dt                                |                    D             }|                     |g d           ft          t          j        dz             D ]v}t          dt                                }t%          |           d t          j        t          j        ||                    D             }|                     |d	d
g           wt          t          j        dz             D ]2}|                     |t          dt                                           3d S )Nr   r   c                     g | ]	\  }}||f
S r   r   r  s      r   ra   z5TestBasicOps.test_zip_tuple_reuse.<locals>.<listcomp>  s     ???A!u???r   rn  c                     g | ]	\  }}||f
S r   r   r  s      r   ra   z5TestBasicOps.test_zip_tuple_reuse.<locals>.<listcomp>  s     CCCA!uCCCr   r	   c                     g | ]	\  }}||f
S r   r   r  s      r   ra   z5TestBasicOps.test_zip_tuple_reuse.<locals>.<listcomp>  s     [[[TQAa5[[[r   c                     g | ]	\  }}||f
S r   r   r  s      r   ra   z5TestBasicOps.test_zip_tuple_reuse.<locals>.<listcomp>  s     YYYTQAa5YYYr   rp  rq  )r   r   r  r   rr   r   r   r   dictfromkeysr   r}  r   r*   rZ   r   r[   r\   rt   r   )r1   idsr  r^   r  s        r   test_zip_tuple_reusez!TestBasicOps.test_zip_tuple_reuse  s   3r3ue,,--..S3s88,,,3r4E5 1 1223344T]]3//00#c((;;; @?3uUWW+=+=!>!>???<<<===CCs5/A/A!B!BCCC<<<===62Q677 	B 	BE[[V\&,s5?Q?QSX2Y2Y%Z%Z[[[CS"@"@"@AAAA62Q677 	8 	8E"511!"""YYV\&,?OQV2W2W%X%XYYYCS8X"6777762Q677 	8 	8EOOE3uegg#6#67777	8 	8r   c                 B	   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 ]ۊfdt          t          t          t                                        D             }|                     t          t                     |           |                     t          t          i i           |           d |D             }|                     t          t          i t          d                    |           |                     t          dt          dt                                          t          t          dt          d                                         |                     t          t                                t          t                                           |                     t          t          g                     t          t          g                                |                     t          t          d                    t          t          d                               |                     t          t          di i           t          t          t          d          d gz   d                               |                     t          t          d           |                     t          t          t          d          d           dD ]T}	 t          |t                      t                                 |                     d|z              E# t          $ r Y Qw xY w|                     d t          dd          D             t          t          dd                               |                     d t          dd          D             t          t          dd                               d S )Nr   r   ry    i4  i  i  r   i  i  c                 H    g | ]t          fd D                       S )c                 J    g | ]}t          |          k     r|         nd  S r   r   )r`   argr   s     r   ra   z;TestBasicOps.test_ziplongest.<locals>.<listcomp>.<listcomp>  s/    NNN#q3s88||SVVNNNr   r   )r`   r   r   s    @r   ra   z0TestBasicOps.test_ziplongest.<locals>.<listcomp>  sG     ; ; ; NNNNNNNOO ; ; ;r   c                 @    g | ]}t          d  |D                       S )c              3   &   K   | ]}|d u rdp|V  d S )NXr   )r`   rh   s     r   r   z:TestBasicOps.test_ziplongest.<locals>.<listcomp>.<genexpr>  s0      @@Q$Y.33!@@@@@@r   r  rN  s     r   ra   z0TestBasicOps.test_ziplongest.<locals>.<listcomp>  s/    QQQQe@@a@@@@@QQQr   r  	fillvaluer   r   r  )zzip_longest('abc', fv=1)z3zip_longest('abc', fillvalue=1, bogus_keyword=None)zDid not raise Type in:  c                 F    g | ]}t          t          |                    S r   r  r  s     r   ra   z0TestBasicOps.test_ziplongest.<locals>.<listcomp>  s&    RRR%T

++RRRr   r   c                     g | ]}|S r   r   r  s     r   ra   z0TestBasicOps.test_ziplongest.<locals>.<listcomp>  s    EEE4$EEEr   )r   r  )r*   r   r   r   rr   r   zip_longestr  rA   r}  r   r   rm   evalglobalslocalsfail)r1   targetstmtr   s      @r   test_ziplongestzTestBasicOps.test_ziplongest  s   a!q5!teD..d40@0@AteAhhd4(8(8%++uT{{SteAhhd4(8(8%++uT{{TYZ[T\T\] 	V 	VD; ; ; ;$SS$%8%899; ; ;FT+t"455v>>>T+t":r":":;;VDDDQQ&QQQFT+t"Ktc7J7J7J"K"KLLfUUUUaHegg > >??c(TYZ[T\T\F]F]A^A^___kmm,,d355kk:::k"oo..SWW>>>k(3344d3x==6I6IJJJk>>2>>??c$u++tf"4f==>>	@ 	@ 	@)[!444)[%((A>>>
 		= 		=D=T799fhh/// 		4t;<<<<    
 	RRE58Q8QRRRc%//00	2 	2 	2EE;ue+D+DEEEc%//00	2 	2 	2 	2 	2s   ;)O==
P
	P
c                    t          t          t          t          dd                              }|                     t          |          t          |                     t          t          t          t          t          dd                                        }|                     t          t          	                    |                    t          |                     d S )Nr   r   )
r   r   r  r  rr   r   r   r   r  r  )r1   r  s     r   test_zip_longest_tuple_reusez)TestBasicOps.test_zip_longest_tuple_reuse  s    3r;ue445566S3s88,,,3r4E5 9 9::;;<<T]]3//00#c((;;;;;r   c           	      h   t          t          j        dz             D ]}|                     |t	          dd                     |                     |t	          dd                     |                     |t	          ddd                     |                     |t	          dd                     d S )Nr	   r   r   defghr  r   )r*   rZ   r   r   r  r  s     r   test_zip_longest_picklingz&TestBasicOps.test_zip_longest_pickling  s    62Q677 	= 	=EOOE;ue#<#<===OOE;ug#>#>???OOE;ug#K#K#KLLLOOE;r7#;#;<<<<		= 	=r   c                 
   t                       G fdd          }|                     t                     5 }t           |                       d d d            n# 1 swxY w Y   |                     |j                   d S )Nc                       e Zd Z fdZdS )?TestBasicOps.test_zip_longest_bad_iterable.<locals>.BadIterablec                     r   r   )r1   	exceptions    r   r2   zHTestBasicOps.test_zip_longest_bad_iterable.<locals>.BadIterable.__iter__  s    r   N)r9   r:   r;   r2   )r&  s   r   BadIterabler$    s.                     r   r'  )rm   r   r  assertIsr&  )r1   r'  cmr&  s      @r   test_zip_longest_bad_iterablez*TestBasicOps.test_zip_longest_bad_iterable  s    KK		  	  	  	  	  	  	  	  	  	  y)) 	'R&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	blI.....s   AA!$A!c                 2    G d d          } |ddt                     } |ddt                     }d }|                      |||          g d            |ddt                    } |ddt                     }t          ||d	
          }|                     t	          |          d           |                     t	          |          d           |                     t	          |          d           |                     t          t          |           d S )Nc                        e Zd Zd Zd Zd ZdS ),TestBasicOps.test_bug_7244.<locals>.Repeaterc                 J    || _         t          |          | _        || _        d S r   )or   rO  rh   )r1   r/  rO  rh   s       r   __init__z5TestBasicOps.test_bug_7244.<locals>.Repeater.__init__  s!    Qr   c                     | S r   r   r0   s    r   r2   z5TestBasicOps.test_bug_7244.<locals>.Repeater.__iter__      r   c                 T    | j         dk    r| xj         dz  c_         | j        S | j        r"  )rO  r/  rh   r0   s    r   r7   z5TestBasicOps.test_bug_7244.<locals>.Repeater.__next__	  s*    6A::FFaKFF6M&Lr   N)r9   r:   r;   r0  r2   r7   r   r   r   Repeaterr-    sA            ! ! ! ! !r   r4  r	   r   r   rd   c                     g }t          | |d          D ]Y\  }}t          j        d          5  t          ||f           d d d            n# 1 swxY w Y   |                    ||f           Z|S )Nr   r  stdout)r  r   captured_outputprintr  )r  r  r  r   r   s        r   runz'TestBasicOps.test_bug_7244.<locals>.run  s    F#Ba888 & &1,X66 " "1a&MMM" " " " " " " " " " " " " " "q!f%%%%Ms   AA	A	)r8  r8  r8  r6  r   r  r8  )r6   rr   rj   r  rt   r   )r1   r4  r  r  r9  rn   s         r   test_bug_7244zTestBasicOps.test_bug_7244  s8   	! 	! 	! 	! 	! 	! 	! 	!" XaM**XaM**	 	 	 	R&B&B&BCCC XaL))XaM**R1---b6***b6***b6***,b11111r   c                    |                      t          t          d                    g            |                      t          t          d                    g            |                      t          t          d                    dg          f |                      t          t          d                    g d           |                      t          t          t          d                              t          t	          t          d          t          dd                                         |                     t                    5  t                       d d d            n# 1 swxY w Y   |                     t                    5  t          d	d
           d d d            n# 1 swxY w Y   |                     t                    5  t          d	           d d d            n# 1 swxY w Y   |                     t                    5  t          d            d d d            d S # 1 swxY w Y   d S )Nr   ry   r   ry   rz   r  )r<  )rz   r{   )r{   r   )r   rh   rc  r	   r   rV   rF   )rr   r   pairwiser*   r   r   rm   r0   s    r   test_pairwisezTestBasicOps.test_pairwise'  s   hrll++R000hsmm,,b111htnn--)l	, 	, 	- 	-hw//00NNN	P 	P 	PhuV}}5566c%--q&1A1ABBCC	E 	E 	E y)) 	 	JJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	  	 UB	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 y)) 	% 	%e$$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%y)) 	 	TNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sH   E--E14E1F//F36F3G11G58G5H33H7:H7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 ]\  }}|                     t          t          |           |           t          d	          D ]T}|                     t          t          ||z             t          t          |i t	          |
                               U|                     t          t          t          t          d          gdz                       d           |                     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 ]I}fdt          t          j        d                    D             }t          t          t
          |                    }|                     t          t          t          |                     |           |                     t          t          |           t           ||                      |                     t          t          |           t           ||                      t          t          |          }|                     t          t          t          |                     |           Kd S )Nr   r   r   rz   r   r   )r   r   r5  r6  r7  )r	   r	   r8  r   rd   r  r   r   i c               ?   x  K   t          t          t          |                     |                    dd          z  }t	          |          }|dk    rdV  d S t          d |D                       rd S dg|z  }t          d t          ||          D                       V  	 t          t          |                    D ]z}||         t	          ||                   dz
  k    r%||xx         dz  cc<   t          |dz   |          D ]}d||<   t          d t          ||          D                       V   nd S )Nr  r	   r   r   c              3   <   K   | ]}t          |          d k    V  dS )r   Nr  )r`   r   s     r   r   z>TestBasicOps.test_product.<locals>.product1.<locals>.<genexpr>P  s,      44d3t99>444444r   c              3   ,   K   | ]\  }}||         V  d S r   r   r`   r   r   s      r   r   z>TestBasicOps.test_product.<locals>.product1.<locals>.<genexpr>S  s*      CCGD!QCCCCCCr   c              3   ,   K   | ]\  }}||         V  d S r   r   rE  s      r   r   z>TestBasicOps.test_product.<locals>.product1.<locals>.<genexpr>[  s*      KKGD!QKKKKKKr   )	r   r   r   getr   anyr   r   r*   )r   kwdspoolsr+   r   r   r   s          r   product1z+TestBasicOps.test_product.<locals>.product1J  sh     UD))**TXXh-B-BBEE

AAvv44e44444 cAgGCCs5'/B/BCCCCCCCC
!%((++ 	 	AqzSq]]Q%666 AJJJ!OJJJ"1Q3]] ' '%&

KKs5'7J7JKKKKKKKKEF
r   c               ?      K   t          t          t          |                     |                    dd          z  }g g}|D ]fd|D             }|D ]}t          |          V  dS )z Pure python version used in docsr  r	   c                 &    g | ]}D ]}||gz   	S r   r   )r`   r   r  r   s      r   ra   z?TestBasicOps.test_product.<locals>.product2.<locals>.<listcomp>e  s,    >>>A>>A!QC%>>>>r   N)r   r   r   rG  )r   rI  rJ  r  rH   r   s        @r   product2z+TestBasicOps.test_product.<locals>.product2`  s      UD))**TXXh-B-BBETF ? ?>>>>>>> " "Dkk!!!!" "r   r   r   r	   )ry   rz   r{   r  r  r  r   c                 8    g | ]}t          j                  S r   )randomchoice)r`   r   argtypess     r   ra   z-TestBasicOps.test_product.<locals>.<listcomp>l  s#    PPPFM(++PPPr   r   )r*   rr   r   r  r  r   r   rm   r   r   rP  	randrangerH   r   r   )	r1   r   r  rO   rK  rN  r   expected_lenrR  s	           @r   test_productzTestBasicOps.test_product:  s<   "JVff%&Ahha!#M#M#MNAhha%((+R0Ahha%((+R0Ahha%((+R0 	I 	ILD& T'4.116:::1XX I I  gQ&8!9!9!%gt&Ft1~~~&F&F!G!GI I I II 	T'E!HH:a<"899::DAAA)WeAhh===	 	 	,	" 	" 	" r588U1XXta17J7J7J	NNE"IIuU2YY/?/?As 	F 	FAPPPPU6;KA;N;N5O5OPPPDC//LSgtn!5!566EEET'4.114$3H3HIIIT'4.114$3H3HIIItT??DSgtn!5!566EEEE	F 	Fr   c                     |                      t          t          f          5  t          dgdz  ddi d d d            d S # 1 swxY w Y   d S )Nr   r   r  i   )r   r  r  r  r0   s    r   test_product_overflowz"TestBasicOps.test_product_overflowt  s    {;<< 	2 	2tfTk15111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2r	  c                 d   |                      t          t          t          t          t          dd                                        d           |                     t          t          t          t          t          t          dd                                                  d           d S )Nr   r   r	   )rr   r   r   r   r  r  r  r   r0   s    r   test_product_tuple_reusez%TestBasicOps.test_product_tuple_reusey  s    SR)>)>!?!?@@AA1EEECCD1F1F,G,G$H$H I IJJANNNNNr   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 ]\  }}|                     t          t          j        t	          |                     |           |                     t          t          j        t	          |                     |           t          t          j        d	z             D ]}|                     |t	          |             d S )
Nr   r   r   r@  r   r   rA  r   r	   )	r*   rr   r   r   r  r   rZ   r   r   )r1   r   r  r^   s       r   test_product_picklingz"TestBasicOps.test_product_pickling~  sW    "JVff%&Ahha!#M#M#MNAhha%((+R0Ahha%((+R0Ahha%((+R0 	7 	7LD& T$)GTN";";<<fEEET$-"?"?@@&IIIv6:;; 7 7w~66667	7 	7r   c                 $   t          dd          }|                    d           |                     t          |          d           t          ddd          }|                    d           |                     t
          t          |           d S )Nr8  )r   )r      r   r   r   )r   r   r]  )r  r   rr   rt   r   r6   )r1   rD  s     r   test_product_issue_25021z%TestBasicOps.test_product_issue_25021  s    F4  	{###a&)))FB%%	~&&&-q11111r   c                 r   |                      t          t          dd                    g d           |                      t          t	          d          t          d                    g d           |                      t          t          dd                    g d           |                      t          dt          d                    g d           |                      t          t          dd                    g            |                      t          t          dd                    g            |                     t          t                     |                     t          t          d dd           |                     t          t          d d           t          d	          }|                      t          |          d
           t          d	d          }|                      t          |          d           t          |           |                      t          |          d           t          dd          }|                      t          |          d           |                      t          dt          j
        |                    t          d                     |                      t          dt          j        |                    t          d                     t	          t          j        dz             D ]'}|                     |t          dd                     (d S )Nry   r   )objecttimes)ry   ry   ry   ))r   ry   r	   ry   )r   ry   r   rt  rd   y      ?        zrepeat((1+0j))r   zrepeat((1+0j), 5)zrepeat((1+0j), 0)rV   r   aar	   )rr   r   r  r   r*   rA   r   rm   r  rt   r   r   rZ   r   r   )r1   rO   r{   r^   s       r   test_repeatzTestBasicOps.test_repeat  s   fCq999::OOOLLLeAhhvc{{33777	9 	9 	9fS!nn--???a--???fS!nn--r222fS"oo..333)V,,,)VT1a888)VT37774LLa"23334OOa"5666Qa"5666 #R(((a#&&&a1..W>>>aq!1!122DMMBBB62Q677 	A 	AEOOE6B#?#?#?@@@@	A 	Ar   c                    |                      t          t          dd                    d           |                      t          t          dd                    d           |                      t          t          dd                    d           |                      t          t          dd                    d           d S )Nry   r:  zrepeat('a', 0)r   rb  )rr   r  r  r0   s    r   test_repeat_with_negative_timesz,TestBasicOps.test_repeat_with_negative_times  s    fS"oo..0@AAAfS"oo..0@AAAfS333446FGGGfS333446FGGGGGr   c                 `   |                      t          t          t          j        t          d          t          dd                              g d           |                      t          t          t          dt          d                              g d           |                      t          t          t          dt                                          g d           |                      t          dt          t          dt                                          d	d
g           |                      t          t          t          j        g                     g            | 	                    t          t                     | 	                    t          t          t          d t          d          t          d                               | 	                    t          t          t          j                   | 	                    t          t          t          dt          d                               | 	                    t          t          t          t          dgdg                     | 	                    t          t          t          t          dgdg                     g d}t          t          dt                                }|                      t          t!          j        |                    |           t          t          dt                                }|                      t          t!          j        |                    |           t          t$          j        dz             D ]:}t          t          dt                                }|                     ||           ;d S )Nr   r	   r   r   r	   r   r   r   rn  r   ro  rp  rV   rd   )rr   r   r   rD   powr*   r'   r}  rA   r   rm   negrt   r   r   r   r   r   rZ   r   r   r  s       r   test_mapzTestBasicOps.test_map  s   c(,a%!**EEFF+++	- 	- 	-c(E588<<==222	4 	4 	4c(E577;;<<222	4 	4 	4aHeUWW = =>>!'*	, 	, 	,c(,3344b999)S))))T3tU1XXuQxx+H+HIII)S(,777)T3r588+<+<===*dC!qc,B,BCCC)T3vsQC+@+@AAA (''%))dill++S111%))dmA..//55562Q677 	& 	&EHeUWW--AOOE1%%%%	& 	&r   c                    |                      t          t          t          j        t          t          d          t          dd                                        g d           |                      t          dt          t          j        t          t                      t          d                                        g d           |                      t          t          t          j        g                     g            |                      t          t          t          j        t          ddg          g                    dg           | 
                    t          t          t          t          j        d g                     | 
                    t          t                     | 
                    t          t          t          j        dgd	           | 
                    t          t          t          d
dg                     | 
                    t          t          t          t          dg                     | 
                    t          t          t          t          dg                     g d}t          t          j        t          t          d          t          dd                              }|                      t          t!          j        |                    |           t          t          j        t          t          d          t          dd                              }|                      t          t!          j        |                    |           t          t$          j        dz             D ][}t          t          j        t          t          d          t          dd                              }|                     ||           \d S )Nr   r	   r   rj  rd   r   i   rd   r   extrarV   )rr   r   starmaprD   rk  r   r*   rA   r}  r   r   rm   rt   r   r   r   r   r   rZ   r   r   r  s       r   test_starmapzTestBasicOps.test_starmap  s   ghlCa%!**4M4MNNOO+++	- 	- 	-as577E!HH7M7M!N!NOO+++	- 	- 	-ghlB7788"===ghlT1Q%[[MBBCCdVLLL)T78<$+H+HIII)W---)WhlUGWMMM)T72w+?+?@@@*dGGeW,E,EFFF)T76E7+C+CDDD !  HL#eAhha

";";<<dill++S111HL#eAhha

";";<<dmA..//55562Q677 	& 	&Ec%((E!AJJ&?&?@@AOOE1%%%%	& 	&r   c                    dD ]Q}|                      t          t          t          d          g|R            t          t          |                      RdD ]T\  }}|                      t          t          t          d          g|R            t          t          |                      U|                      t          t          t          d          d                     t          t          d                               |                      t          t          t          d          d d                     t          t          d                               |                      t          t          t          d          d d d                     t          t          d                               |                      t          t          t          d          dd                     t          t          dd                               |                      t          t          t          d          dd d                    t          t          ddd                               t	          t          d                    }|                      t          t          |d                    t          t          d                               |                      t          |          t          t          dd                               t	          t          d                    }|                      t          t          |dd                    g            |                      t          |          t          t          dd                               t          d          }|                     t          t          |           |                     t          t          |dddd           |                     t          t          |d	dd           |                     t          t          |dd	d
           |                     t          t          |ddd
           |                     t          t          |ddd           |                     t          t          |d           |                     t          t          |dd           |                     t          t          |dd           |                     t          t          |ddd           |                     t          t          |ddd           |                      t          t          t          t                      ddt                                        d           t                      }|                      t          t          |ddd                    dg           |                      t          |          d           dD ]}|                      t          t          j        t          t          d          g|R                      t          t          |                      |                      t          t          j        t          t          d          g|R                      t          t          |                      t          t          j        dz             D ]0}|                     |t          t          d          g|R             1d dD             }t#          j        |          }t          |d          }|                      |                       t          |           t)          j                     |                      |                        G d dt.                    }|                      t          t          t          d           |d                              t          t          d                               |                      t          t          t          d           |d           |d                              t          t          dd                               |                      t          t          t          d           |d           |d           |d                              t          t          ddd                               d S )N)rV   r   r   rV   r   r   rV   r   )rV   rV   rV   r   r   r   )))rV   r   r   )rV   r   r   ))rV   r   )rV   r   ))r   )r   rV   r   r	   r   rd   r:  r   ry   2   )rt  ru  rv  rw  rx  c              3      K   | ]}|V  d S r   r   r   s     r   r   z+TestBasicOps.test_islice.<locals>.<genexpr>9  s"        Aa      r   r8  c                       e Zd Zd Zd ZdS ))TestBasicOps.test_islice.<locals>.IntLikec                     || _         d S r   valr1   r  s     r   r0  z2TestBasicOps.test_islice.<locals>.IntLike.__init__D  s    r   c                     | j         S r   r  r0   s    r   	__index__z3TestBasicOps.test_islice.<locals>.IntLike.__index__F  s	    xr   N)r9   r:   r;   r0  r  r   r   r   IntLiker}  C  s2                   r   r  r   )rr   r   r?   r*   r   r   rm   r   r   r}  r~  rt   r   r   rZ   r   r   weakrefrefassertIsNotNoner   
gc_collectassertIsNonera  )	r1   r   tgtargsrn   rar{   r^   wrr  s	            r   test_islicezTestBasicOps.test_islice  sj    		1 		1D T&s";d";";";<<!%,//1 1 1 1 	4 	4MD'
 T&s";d";";";<<!%/224 4 4 4 	fU2YY5566U2YYHHHfU2YYd;;<<d599ooNNNfU2YYdDAABBDrOOTTTfU2YY488994a;M;MNNNfU2YY4;;<<d5BPQ??>S>STTT %))__fRmm,,d588nn===b4a#5#5666%))__fRA..//444b4a#5#5666 2YY)VR000)VRAq!<<<*fb"b!<<<*fb!R<<<*fb!R<<<*fb!R;;;*fb#666*fb#q999*fb!S999*fb#q!<<<*fb!S!<<<T&!R"A"ABBCCQGGG GGfQ1b1122QC888a!$$$ 	B 	BD T$)F5::,E,E,E,E"F"FGG!%,//1 1 1T$-uSzz0ID0I0I0I"J"JKK!%,//1 1 1v6:;; B BveCjj'@4'@'@'@AAAAB
 !    [__B]]RRTT"""R""$$	  	  	  	  	 f 	  	  	 
 	fU3ZZ==>>U2YYPPPfU3ZZggbkkJJKKeBmm,,	. 	. 	.fU3ZZggbkk77ST::VVWWeBr!nn--	/ 	/ 	/ 	/ 	/r   c           
         g d}|                      t          t          t          |                    g d           |                      t          t          t          g                     g            |                     t
          t                     |                     t
          t          t          j                   |                     t
          t          t          j        dgd           |                     t
          t          t          ddg                     |                     t          t          t          t          dg                     t          t          g d          }|                      t          |          g d           |                     t          t          |           |                      t          t          j        t          t          |                              g d           |                      t          t          j        t          t          |                              g d           t          t           j        dz             D ]+}|                     |t          t          |                     ,d S )	Nr	   r   r   r   r   rd   r   r   rd  ro  rp  rV   )r	   r	   r	   r   r   r   r	   r	   r	   r	   )rr   r   	takewhilerW   r   rm   rD   rk  rt   r   r   r  r6   r   r   r*   rZ   r   r   )r1   r]  rO  r^   s       r   test_takewhilezTestBasicOps.test_takewhileN  s   (((i$7788)))DDDi"5566;;;)Y///)Y===)YugwOOO)T9R%+A+ABBB*dIgw,G,GHHHd...//a))),,,-q111 	di	(D(A(ABBCCYYYOOOdmIh,E,EFFGG!			# 	# 	#62Q677 	> 	>EOOE9Xt#<#<====	> 	>r   c           
      ^   g d}|                      t          t          t          |                    g d           |                      t          t          t          g                     g            |                     t
          t                     |                     t
          t          t          j                   |                     t
          t          t          j        dgd           |                     t
          t          t          ddg                     |                     t          t          t          t          dg                     |                      t          t          j        t          t          |                              g d           |                      t          t          j        t          t          |                              g d           t          t          j        dz             D ]+}|                     |t          t          |                     ,d S )Nr  )r   r   rd   r   r   ro  rp  rV   r	   )rr   r   	dropwhilerW   r   rm   rD   rk  rt   r   r   r   r   r*   rZ   r   r   )r1   r]  r^   s      r   test_dropwhilezTestBasicOps.test_dropwhileb  s   (((i$7788:J:J:JKKKi"5566;;;)Y///)Y===)YugwOOO)T9R%+A+ABBB*dIgw,G,GHHH 	di	(D(A(ABBCCEUEUEUVVVdmIh,E,EFFGG(((	* 	* 	*62Q677 	> 	>EOOE9Xt#<#<====	> 	>r   c           	      d   d}t          g           \  }}|                     t          |          g            |                     t          |          g            t          t          |                    \  }}|                     t	          ||          t	          t          |          t          |                               t          t          |                    \  }}|                     t          |          t          t          |                               |                     t          |          t          t          |                               t          t          |                    \  }}t          d          D ]%}|                     t          |          |           &~|                     t          |          t          t          |                               t          t          |                    \  }}t          d          D ]%}|                     t          |          |           &~|                     t          |          t          t          d|                               t          d          D ]}dg|z  dg|z  z   }t          j        |           g g f}t          t          |                    }|D ]2}t          ||                   }	||         	                    |	           3|                     |d         t          t          |                               |                     |d         t          t          |                               | 
                    t          t                      | 
                    t          t           d           | 
                    t          t           ddgd           | 
                    t          t           ddgdd           t          d	          \  }} t          |          d
          }
|                     t          |
          t          d
                     t          t          d          d          \  }}}
t          d          D ]%}|                     t          |          |           &|                     t          |          t          t          d                               |                     t          |
          t          |
          gt          t          d                               |                     t          |          t          t          dd                               |                     t          |
          t          t          dd                               | 
                    t          t           d	d           | 
                    t          t           g d           t          d          D ]}t          d	|          }|                     t          |          t                     |                     t          |          |           |                     d |D             t          d	          g|z             t          d	          \  }}t          |          \  }
}|                     ||
u            t          d	          \  }}t          |          }| 
                    t          |           | 
                    t          |d            ||          }|                     t          |          t          |          cxk    o&t          |          cxk    ot          d	          k    nc            t          t          d                    \  }}t#          j        |          }|                     t'          |d          t          |                     ~t)          j                     | 
                    t,          t&          |d           t          d	          }t          t          d                    }t          d	          \  }}|                     t          t/          j        |                    |           |                     t          t/          j        |                    |           t          t          t          d                              \  }}|                     t          t/          j        |                    |           |                     t          t/          j        |                    |           t          d	          \  }}t1          d|           t1          d|           |                     t          t/          j        |                    |dd                     |                     t          t/          j        |                    |dd                     |                     t          |          |dd                     |                     t          |          |dd                     t          t          d                    \  }}t1          d|           t1          d|           |                     t          t/          j        |                    |dd                     |                     t          t/          j        |                    |dd                     |                     t          |          |dd                     |                     t          |          |dd                     t          d	          \  }}|                     t          t/          j        |                    |           |                     t          t/          j        |                    |           |                     t          |          |           |                     t          |          |           t          t          d                    \  }}|                     t          t/          j        |                    |           |                     t          t/          j        |                    |           |                     t          |          |           |                     t          |          |           t          d	          \  }}t1          d|           t1          d|           |                     t          t/          j        |                    |dd                     |                     t          t/          j        |                    |dd                     |                     t          |          |dd                     |                     t          |          |dd                     t          t          d                    \  }}t1          d|           t1          d|           |                     t          t/          j        |                    |dd                     |                     t          t/          j        |                    |dd                     |                     t          |          |dd                     |                     t          |          |dd                     t          t4          j        dz             D ]t}|                     |t;          t          d	                               t          d	          \  }}|                     |||           |                     |||           ud S )N   r   r   r   r	   r   r   r   r   r   r  invalidr:  c                 ,    g | ]}t          |          S r   r   r   s     r   ra   z)TestBasicOps.test_tee.<locals>.<listcomp>  s    666!d1gg666r   rV   	__class__rc  <   r   )teerr   r   r,   r   r*   rt   rP  shuffler  r   rm   rs   r   r   r   r   r  proxygetattrr   r  ReferenceErrorr   rA   r   rZ   r   r   r   )r1   r+   ry   rz   r   r   orderlistsitsr  r{   r  r   t1t2tnewt3rD  r  long_ansr^   s                        r   test_teezTestBasicOps.test_tees  s   2ww1a"%%%a"%%%6!99~~1aDq588$<$<===6!99~~1a$uQxx..111a$uQxx..1116!99~~1s 	) 	)AT!WWa((((a$uQxx..1116!99~~1s 	) 	)AT!WWa((((a$uS!}}"5"5666q 		7 		7ACEQCEMEN5!!!HEfQii..C ' 'SVa&&&&U1XtE!HH~~666U1XtE!HH~~6666 	)S))))S!,,,)S1Q%555)S1Q%C888 5zz1DGGENNa$u++... eDkk1%%1as 	) 	)AT!WWa((((a$uT{{"3"3444$q''477+T%((^^<<<a$uS"7"7888a$uQt}}"5"5666 	)S%;;;*c2r222q 	I 	IA]]FT&\\5111S[[!,,,66v666eaHHHH 5zz11vv1Q UBBxx)T***)T2...T"XXRDHHGGGGRGGGGDKKGGGGHHH 599~~1M!K00$q'':::.'1kBBB5kke%% 5zz1dill++S111dill++S1114e%%&&1dill++X666dill++X666 5zz1Q


Q


dill++SW555dill++SW555a#abb'***a#abb'***5<<  1S!Rdill++Xcdd^<<<dill++Xbcc];;;a(344.111a(233-000 5zz1dmA..//555dmA..//555a#&&&a#&&&5<<  1dmA..//:::dmA..//:::a(+++a(+++ 5zz1Q


Q


dmA..//QRR999dmA..//QRR999a#abb'***a#abb'***5<<  1S!RdmA..//#$$@@@dmA..//"##???a(344.111a(233-000 62Q677 	3 	3EOOE4E

#3#3444u::DAqOOE1cO222OOE1cO2222		3 	3r   c                 x    t          t          d d                    \  }}	 t          |           ~d S #  ~~ xY w)Ni -1)r  r  rH  )r1   forwardbackwards      r   test_tee_del_backwardz"TestBasicOps.test_tee_del_backward	  sF    tX 6 677	LLL	s   4 9c                      G fdd          }t           |                      \  }|                     t          d          5  t          |           d d d            d S # 1 swxY w Y   d S )Nc                   $    e Zd ZdZd Z fdZdS )(TestBasicOps.test_tee_reenter.<locals>.ITc                     | S r   r   r0   s    r   r2   z1TestBasicOps.test_tee_reenter.<locals>.I.__iter__  r2  r   c                 F    | j         }d| _         |rt                    S d S NF)firstrt   )r1   r  rz   s     r   r7   z1TestBasicOps.test_tee_reenter.<locals>.I.__next__  s.    
"
 #77N# #r   N)r9   r:   r;   r  r2   r7   r@  s   r   Ir    sB        E  # # # # # # #r   r  r  )r  assertRaisesRegexrj   rt   )r1   r  ry   rz   s      @r   test_tee_reenterzTestBasicOps.test_tee_reenter  s    	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 1133xx1##L%88 	 	GGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A##A'*A'c                 b   t          j                    t          j                     G fdd          }t           |                      \  }}t          j        t          |g          }|                                 	                                  |                     t          d          5  t	          |           d d d            n# 1 swxY w Y   	                                 |
                                 d S # 	                                 |
                                 w xY w)Nc                   "    e Zd Zd Z fdZdS )+TestBasicOps.test_tee_concurrent.<locals>.Ic                     | S r   r   r0   s    r   r2   z4TestBasicOps.test_tee_concurrent.<locals>.I.__iter__&  r2  r   c                 X                                                                       d S r   )r   wait)r1   finishr  s    r   r7   z4TestBasicOps.test_tee_concurrent.<locals>.I.__next__(  s!    		r   N)r9   r:   r;   r2   r7   )r  r  s   r   r  r  %  sB                 r   r  )r  r   r  )	threadingEventr  Threadrt   r  r  r  rj   r   join)r1   r  ry   rz   threadr  r  s        @@r   test_tee_concurrentz TestBasicOps.test_tee_concurrent!  sZ   !!""	 	 	 	 	 	 	 	 	 	 	 1133xx1!QC888	JJLLL''e<<  Q               JJLLLKKMMMMM JJLLLKKMMMMs0   /D 3CD CD CD *D.c           
         |                      t          t          t                                 t          t
          t          t          fD ]b}|                      t          t           |g                      |                      t          t           |t                                           c|                      t          t          t          g d                      |                      t          t          t          t                      d                      t          g           \  }}|                      t          t          |           |                      t          t          |           t          t                                \  }}|                      t          t          |           |                      t          t          |           |                      t          t          t          d d                     t          t          t          t          t          t           fD ]f}|                      t          t           |d g                      |                      t          t           |d t                                           gd S )Nr   c                     | S r   r   r   s    r   r_   z1TestBasicOps.test_StopIteration.<locals>.<lambda>K  r  r   c                     | S r   r   r   s    r   r_   z1TestBasicOps.test_StopIteration.<locals>.<lambda>L  r  r   )r   r6   rt   r   r   r  r*  r.   r?   r  r  rU  r  r   r  r  rq  )r1   r   rD  qs       r   test_StopIterationzTestBasicOps.test_StopIteration7  s   -suu555W- 	A 	AAmT11R55999mT11WYY<<@@@@-vb$/?/?@@@-vgii/F/FGGG2ww1-q111-q111799~~1-q111-q111-vdA???+sIy'J 	M 	MAmT11ZZ3D3DEEEmT11ZZ3K3KLLLL	M 	Mr   c                     t          d g gd          }t          |           t          j                     |                     t          j        t          |                               d S rC   )r   rt   gccollectr   
is_trackedr   s     r   test_combinations_result_gcz(TestBasicOps.test_combinations_result_gcN  sW    
 4*a((R

 	d2hh//00000r   c                     t          d g gd          }t          |           t          j                     |                     t          j        t          |                               d S rC   )r   rt   r  r  r   r  r   s     r   ,test_combinations_with_replacement_result_gcz9TestBasicOps.test_combinations_with_replacement_result_gc[  sU     +D":q99R

d2hh//00000r   c                     t          d g gd          }t          |           t          j                     |                     t          j        t          |                               d S rC   )r   rt   r  r  r   r  r   s     r   test_permutations_result_gcz(TestBasicOps.test_permutations_result_gcc  sU     4*a((R

d2hh//00000r   c                     t          d g g          }t          |           t          j                     |                     t          j        t          |                               d S r   )r  rt   r  r  r   r  r   s     r   test_product_result_gcz#TestBasicOps.test_product_result_gck  sS     dBZ  R

d2hh//00000r   c                     t          g g          }t          j                     |                     t          j        t          |                               d S r   )r  r  r  r   r  rt   r   s     r   test_zip_longest_result_gcz'TestBasicOps.test_zip_longest_result_gcs  sF     "

d2hh//00000r   )rd   r	   N)Ar9   r:   r;   r   r   r   r   r   r   r  r   bigaddrspacetestr  impl_detailr  r.  r1  r3  rE  rG  rI  rY  rl  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r*  r:  r>  rU  rW  rY  r[  r_  re  rh  rm  rr  r  r  r  r  r  r  r   requires_working_threadingr  r  cpython_onlyr  r  r  r  r  r   r   r   rc   rc   T   s       '$ '$ '$ '$R!, !, !,F7 7 7H H HP P PJ J JND ND ND` & & &
 W=>>R R ?>RJ: J: J:X 7 7 7
 W=>>I I ?>I
=D =D =D~ % % % W=>>R R ?>RE E EBP P PD., ., .,`58 58 58nP P P"H "H "HHK K K>"D "D "DH@F @F @FD& & &6B B B- - -  W=>>8 8 ?>84(2 (2 (2T W=>>< < ?><= = =
/ 
/ 
/&2 &2 &2P  &8F 8F 8Ft 2 2 2 W=>>O O ?>O7 7 72 2 2A A A4H H H& & &<& & &6\/ \/ \/|> > >(> > >"S3 S3 S3l     1022  32*M M M. 
1 
1 
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1r   rc   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S )TestExamplesc                 n    |                      t          t          g d                    g d           d S Nr	   r   r   rd   r   r	   r   r   rV   r   )rr   r   r   r0   s    r   r   zTestExamples.test_accumulate}  s9    j55668I8I8IJJJJJr   c                 P   g d}g d}t          t          j        dz             D ]}t          |          }|                     t          t          j        t          j        ||                              |d d                     |                     t          |          d           |                     t          t          j        t          j        ||                              |dd                     t          |          }|                     t          |          d           |                     t          t          j
        |                    |dd                     |                     t          t          j	        |                    |dd                     d S )Nr  r  r	   )r*   rZ   r   r   rr   r   r[   r\   rt   r   r   )r1   r]  accumulatedr^   rn   s        r   test_accumulate_reduciblez&TestExamples.test_accumulate_reducible  sn   '''62Q677 	[ 	[ED!!BT&,v|B/F/F"G"GHH+VWVWVW.YYYT"XXq)))T&,v|B/F/F"G"GHH+VWVXVX/ZZZZb1%%%dmB//00+abb/BBBdimm,,k!""o>>>>>r   c                 6   t          g dt          j                  }|                     t	          |          d            t          t          j        dz             D ]N}t          j        t          j	        ||                    }|                     t          |          ddg           O|                     t          t          j        |                    ddg           |                     t          t          j        |                    ddg           d S )N)NNNr	   TF)r   rD   is_rr   rt   r*   rZ   r   r[   r\   r   r   r   )r1   rn   r^   it_copys       r   test_accumulate_reducible_nonez+TestExamples.test_accumulate_reducible_none  s    ***HL99b4(((62Q677 	; 	;El6<E#:#:;;GT']]T5M::::dmB//004-@@@dimm,,tUm<<<<<r   c                 t    |                      d                    t          dd                    d           d S Nr   r  DEFr[  )rr   r  r   r0   s    r   r   zTestExamples.test_chain  s4    ue!4!455x@@@@@r   c                     |                      d                    t                              ddg                    d           d S r  )rr   r  r   r   r0   s    r   r   z%TestExamples.test_chain_from_iterable  s<    !4!4eU^!D!DEExPPPPPr   c           	          |                      t          t          dd                    g d           |                      t          t          t          d          d                    g d           d S )Nr   r   r   rd   r   r   )rr   r   r   r*   r0   s    r   r  zTestExamples.test_combinations  s    l615566[[[	] 	] 	]l588Q7788===	? 	? 	? 	? 	?r   c                 l    |                      t          t          dd                    g d           d S )Nr  r   r  )rr   r   r   r0   s    r   r.  z/TestExamples.test_combinations_with_replacement  sG    ;E1EEFF[[[	] 	] 	] 	] 	]r   c           	          |                      t          t          dg d                    t          d                     d S )Nr[  r\  r_  )rr   r   ri  r0   s    r   rl  zTestExamples.test_compress  s:    hx??@@$v,,OOOOOr   c           	          |                      t          t          t          d          d                    g d           d S )NrV   r   )rV   r  r   r  r  )rr   r   r?   r}  r0   s    r   r  zTestExamples.test_count  s=    fU2YY22335I5I5IJJJJJr   c           	          |                      t          t          t          d          d                    t          d                     d S )Nr   r   ABCDABCDABCD)rr   r   r?   r  r0   s    r   r  zTestExamples.test_cycle  s>    fU6]]B7788$~:N:NOOOOOr   c           	      r    |                      t          t          d g d                    g d           d S )Nc                     | dk     S Nr   r   r   s    r   r_   z-TestExamples.test_dropwhile.<locals>.<lambda>  
    !A# r   r	   rd   r   rd   r	   )r   rd   r	   )rr   r   r  r0   s    r   r  zTestExamples.test_dropwhile  s:    i{{{CCDDgggNNNNNr   c           	      D   |                      d t          d          D             t          d                     |                      d t          d          D             t          d          t          d          t          d          t          d	          g           d S )
Nc                     g | ]\  }}|S r   r   r  s      r   ra   z-TestExamples.test_groupby.<locals>.<listcomp>  s    CCC1!CCCr   AAAABBBCCDAABBBABCDABc                 2    g | ]\  }}t          |          S r   r  r  s      r   ra   z-TestExamples.test_groupby.<locals>.<listcomp>  s"    FFF1477FFFr   
AAAABBBCCDAAAABBBCCr   )rr   r*  r   r0   s    r   r  zTestExamples.test_groupby  s    CC0A(B(BCCCh	) 	) 	)FF0E0EFFFv,,UT$ZZcK	M 	M 	M 	M 	Mr   c           
          |                      t          t          d t          d                              g d           d S )Nc                     | dz  S rS   r   r   s    r   r_   z*TestExamples.test_filter.<locals>.<lambda>  s
    qs r   rV   )r	   r   r   r   r   )rr   r   rU  r*   r0   s    r   r  zTestExamples.test_filter  s<    f]]E"II>>??MMMMMr   c           
          |                      t          t          d t          d                              g d           d S )Nc                     | dz  S rS   r   r   s    r   r_   z/TestExamples.test_filterfalse.<locals>.<lambda>  s
    AaC r   rV   )r   r   rd   r   r   )rr   r   r  r*   r0   s    r   r  zTestExamples.test_filterfalse  s<    k--rCCDDkkkRRRRRr   c           	      x    |                      t          t          t          dd                    g d           d S )N)r   r   rV   )r   r   r   r   r   ry  )rr   r   r   rk  r0   s    r   rm  zTestExamples.test_map  s6    c#x99::MMMJJJJJr   c           
         |                      t          t          dd                    t          d                     |                      t          t          ddd                    t          d                     |                      t          t          ddd                     t          d                     |                      t          t          ddd d                    t          d                     d S )	NrK  r   ABrd   CDCDEFGr   ACEG)rr   r   r?   r0   s    r   r  zTestExamples.test_islice  s    fY2233T$ZZ@@@fY15566T

CCCfY488994==IIIfY4;;<<d6llKKKKKr   c                 l    |                      t          t          dd                    ddg           d S )Nr   xyr   r   r   r  )rr   r   r   r0   s    r   r  zTestExamples.test_zip  s5    c&$//00:z2JKKKKKr   c           	      p    |                      t          t          ddd                    g d           d S )Nr   r  -r  )r  r  )r   r  )r   r  )rr   r   r  r0   s    r   test_zip_longestzTestExamples.test_zip_longest  sK    k&$#FFFGGIII	K 	K 	K 	K 	Kr   c           
      J   |                      t          t          dd                    t          t          t          d                                                               |                      t          t          t          d                              g d           d S )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   )rr   r   r   r   r   splitr*   r0   s    r   rE  zTestExamples.test_permutations  s    l615566c%)N)T)T)V)VWWXX	Z 	Z 	Zl5884455OOO	Q 	Q 	Q 	Q 	Qr   c           
      N   |                      t          t          dd                    t          t          t          d                                                               |                      t          t          t          d          d                    g d           d S )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   r`  )r	   r	   r   r  )rr   r   r  r   r   r  r*   r0   s    r   rU  zTestExamples.test_product  s    gfd3344c%)B)H)H)J)JKKLL	N 	N 	NgeAhhq999::= = =	> 	> 	> 	> 	>r   c                 l    |                      t          t          dd                    g d           d S )NrV   r   )rV   rV   rV   )rr   r   r  r0   s    r   re  zTestExamples.test_repeat  s2    fRmm,,lll;;;;;r   c           	      z    |                      t          t          t          g d                    g d           d S )N))r   r   r   r   rw  r  )rr   r   rq  rk  r0   s    r   test_stapmapzTestExamples.test_stapmap  sF    gc+A+A+ABBCC&	( 	( 	( 	( 	(r   c           	      r    |                      t          t          d g d                    ddg           d S )Nc                     | dk     S r  r   r   s    r   r_   z-TestExamples.test_takewhile.<locals>.<lambda>  r  r   r  r	   rd   )rr   r   r  r0   s    r   r  zTestExamples.test_takewhile  s:    i{{{CCDDqeLLLLLr   N)r9   r:   r;   r   r  r  r   r   r  r.  rl  r  r  r  r  r  r  rm  r  r  r  rE  rU  re  r  r  r   r   r   r  r  {  s       K K K? ? ?= = =A A AQ Q Q? ? ?] ] ]P P PK K KP P PO O OM M MN N NS S SK K KL L LL L LK K KQ Q Q> > >< < <( ( (M M M M Mr   r  c                   *    e Zd Zed             Zd ZdS )TestPurePythonRoughEquivalentsc              '     K   t          | }|j        pd|j        pt          j        |j        pd}}}t          t          |||                    }	 t          |          }n4# t          $ r' t          t          |          |           D ]\  }}	Y d S w xY w	 t          |           D ]\  }}	||k    r|	V  t          |          }d S # t          $ r+ t          t          |dz   |          |           D ]\  }}	Y d S w xY wr"  )slicer  rp   r  r~  r  r   r*   rt   r6   r   	enumerate)
rG   r   r]   r  rp   r  rn   nextir   r   s
             r   r?   z%TestPurePythonRoughEquivalents.islice  sF     4LGLq!&*?CK1Tt%tT**++	HHEE 	 	 	!%,,99  
7FF		
	'11 % %
7::!MMM HHE% %  	 	 	!%At"4"4h??  
7  	s$   A   -BB.C 1C:9C:c           
      ~   |                      t          |                     dd                    t          d                     |                      t          |                     ddd                    t          d                     |                      t          |                     ddd                     t          d                     |                      t          |                     ddd d                    t          d                     t          t	          d	                    }|                      t          |                     |d
                    t          t	          d
                               |                      t          |          t          t	          d
d	                               t          t	          d	                    }|                      t          |                     |d
d
                    g            |                      t          |          t          t	          d
d	                               t                      }|                      t          |                     |dd
d                    dg           |                      t          |          d
           d S )NrK  r   r  rd   r	  r
  r   r  rV   r   r	   rz  )rr   r   r?   r   r*   r}  rt   )r1   rn   r{   s      r   test_islice_recipez1TestPurePythonRoughEquivalents.test_islice_recipe  s   dkk)Q7788$t**EEEdkk)Q::;;T$ZZHHHdkk)Q==>>WNNNdkk)Qa@@AA4<<PPP%))__dkk"a00114a>>BBBb4a#5#5666%))__dkk"a3344b999b4a#5#5666GGdkk!Q26677!===a!$$$$$r   N)r9   r:   r;   staticmethodr?   r#  r   r   r   r  r    s<          \*% % % % %r   r  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )TestGCc                 R    |                     |           t          |           ~~d S r   )r  rt   )r1   iterator	containers      r   	makecyclezTestGC.makecycle  s*    """Xxxxr   c                 X    g }|                      t          dd|dg          |           d S Nr	   r   r   )r*  r   r1   ry   s     r   r   zTestGC.test_accumulate  s1    z1Qq),,a00000r   c                 P    g }|                      t          |          |           d S r   )r*  r   r-  s     r   r   zTestGC.test_chain  s'    uQxx#####r   c                 h    g }|                      t                              |g          |           d S r   )r*  r   r   r-  s     r   r   zTestGC.test_chain_from_iterable"  s1    u**A3//33333r   c                 Z    g }|                      t          dd|dgd          |           d S r,  )r*  r   r-  s     r   r  zTestGC.test_combinations&  3    |Qq1Iq11155555r   c                 Z    g }|                      t          dd|dgd          |           d S r,  )r*  r   r-  s     r   r.  z)TestGC.test_combinations_with_replacement*  s4    4a!AYBBAFFFFFr   c                 V    g }|                      t          dg d          |           d S )Nr[  )r	   r   r	   r   r	   r   )r*  ri  r-  s     r   rl  zTestGC.test_compress.  s/    x---88!<<<<<r   c                     g }t          dt          ft          |                    }|                     t	           |d           |d                    |           d S )NIntr   r   r	   )rs   r   r  r*  r}  )r1   ry   r5  s      r   r  zTestGC.test_count2  sV    53&$))),,uSSVVSSVV,,a00000r   c                 X    g }|                      t          |gdz            |           d S rS   )r*  r  r-  s     r   r  zTestGC.test_cycle7  s-    uaSU||Q'''''r   c                 b    g }|                      t          t          d||g          |           d S rM   )r*  r  r  r-  s     r   r  zTestGC.test_dropwhile;  s1    y1ay11155555r   c                 \    g }|                      t          |gdz  d           |           d S )Nr   c                     | S r   r   r   s    r   r_   z%TestGC.test_groupby.<locals>.<lambda>A  s    q r   )r*  r*  r-  s     r   r  zTestGC.test_groupby?  s3    ws1ujj11155555r   c                     d}d }t          t          |          |          D ]3\  }}|j                            dg                               |           4d S )NrV   c                     | S r   r   r   s    r   r_   z'TestGC.test_issue2246.<locals>.<lambda>F  r   r   r  r   )r*  r*   __dict__
setdefaultr  )r1   r+   r  r   r   s        r   test_issue2246zTestGC.test_issue2246C  sh    +E!HH'222 	: 	:DAq''B//66q9999	: 	:r   c                 \    g }|                      t          d |gdz            |           d S )Nc                     dS )NTr   r   s    r   r_   z$TestGC.test_filter.<locals>.<lambda>L  s    t r   r   )r*  rU  r-  s     r   r  zTestGC.test_filterJ  s3    vmmaSU33Q77777r   c                 T    g }|                      t          d |          |           d S )Nc                     dS r  r   r   s    r   r_   z)TestGC.test_filterfalse.<locals>.<lambda>P  s    E r   )r*  r  r-  s     r   r  zTestGC.test_filterfalseN  s-    {>>155q99999r   c                 b    g }|                      t          |gdz  |gdz            |           d S )Nr   r   )r*  r   r-  s     r   r  zTestGC.test_zipR  s7    sA3q51#a%((!,,,,,r   c                     g }|                      t          |gdz  |gdz            |           |d g}|                      t          |gdz  |gdz  |          |           d S )Nr   r   r  )r*  r  )r1   ry   rz   s      r   r  zTestGC.test_zip_longestV  so    {A3q51#a%00!444I{A3q51#a%1===qAAAAAr   c                 \    g }|                      t          d |gdz            |           d S )Nc                     | S r   r   r   s    r   r_   z!TestGC.test_map.<locals>.<lambda>^  s    A r   r   )r*  r   r-  s     r   rm  zTestGC.test_map\  s3    s::s1u--q11111r   c                 Z    g }|                      t          |gdz  d           |           d S rS   )r*  r?   r-  s     r   r  zTestGC.test_islice`  s1    vqc!eT**A.....r   c                 X    g }|                      t          |gdz            |           d S r  )r*  r=  r-  s     r   r>  zTestGC.test_pairwised  s-    xA*****r   c                 Z    g }|                      t          dd|dgd          |           d S r,  )r*  r   r-  s     r   rE  zTestGC.test_permutationsh  r1  r   c                 \    g }|                      t          dd|dgd          |           d S )Nr	   r   r   r  )r*  r  r-  s     r   rU  zTestGC.test_productl  s6    w!Aay333Q77777r   c                 P    g }|                      t          |          |           d S r   )r*  r  r-  s     r   re  zTestGC.test_repeatp  s'    vayy!$$$$$r   c                 `    g }|                      t          d ||fgdz            |           d S )Nc                      | S r   r   )rO  s    r   r_   z%TestGC.test_starmap.<locals>.<lambda>v  s    ! r   r   )r*  rq  r-  s     r   rr  zTestGC.test_starmapt  s7    w||qeWQY77;;;;;r   c           	      d    g }|                      t          t          dd||g          |           d S )Nr	   r   )r*  r  r  r-  s     r   r  zTestGC.test_takewhilex  s3    y1a|44a88888r   N)r9   r:   r;   r*  r   r   r   r  r.  rl  r  r  r  r  r>  r  r  r  r  rm  r  r>  rE  rU  re  rr  r  r   r   r   r&  r&    s            
1 1 1$ $ $4 4 46 6 6G G G= = =1 1 1
( ( (6 6 66 6 6: : :8 8 8: : :- - -B B B2 2 2/ / /+ + +6 6 68 8 8% % %< < <9 9 9 9 9r   r&  c              #      K   | D ]}|V  dS )zRegular generatorNr   seqnr   s     r   RrR  |  s*         r   c                       e Zd ZdZd Zd ZdS )GzSequence using __getitem__c                     || _         d S r   rQ  r1   rQ  s     r   r0  z
G.__init__  s    			r   c                     | j         |         S r   rV  )r1   r   s     r   __getitem__zG.__getitem__  s    y|r   N)r9   r:   r;   r<   r0  rY  r   r   r   rT  rT    s8                r   rT  c                   $    e Zd ZdZd Zd Zd ZdS )r  z Sequence using iterator protocolc                 "    || _         d| _        d S rM   rP  rW  s     r   r0  z
I.__init__      	r   c                     | S r   r   r0   s    r   r2   z
I.__iter__  r3   r   c                     | j         t          | j                  k    rt          | j        | j                  }| xj         dz  c_         |S rC   r   r   rQ  r6   r1   r'  s     r   r7   z
I.__next__  >    6S^^##=%8Idf!r   Nr9   r:   r;   r<   r0  r2   r7   r   r   r   r  r    sG        &&        r   r  c                       e Zd ZdZd Zd ZdS )Igz9Sequence using iterator protocol defined with a generatorc                 "    || _         d| _        d S rM   rP  rW  s     r   r0  zIg.__init__  r\  r   c              #   &   K   | j         D ]}|V  d S r   rV  r  s     r   r2   zIg.__iter__  s,      9 	 	CIIII	 	r   Nr9   r:   r;   r<   r0  r2   r   r   r   rd  rd    s8        ??      r   rd  c                       e Zd ZdZd Zd ZdS )r  z Missing __getitem__ and __iter__c                 "    || _         d| _        d S rM   rP  rW  s     r   r0  z
X.__init__  r\  r   c                     | j         t          | j                  k    rt          | j        | j                  }| xj         dz  c_         |S rC   r_  r`  s     r   r7   z
X.__next__  ra  r   N)r9   r:   r;   r<   r0  r7   r   r   r   r  r    s8        &&      r   r  c                       e Zd ZdZd Zd ZdS )NzIterator missing __next__()c                 "    || _         d| _        d S rM   rP  rW  s     r   r0  z
N.__init__  r\  r   c                     | S r   r   r0   s    r   r2   z
N.__iter__  r3   r   Nrg  r   r   r   rl  rl    s8        !!      r   rl  c                   $    e Zd ZdZd Zd Zd ZdS )EzTest propagation of exceptionsc                 "    || _         d| _        d S rM   rP  rW  s     r   r0  z
E.__init__  r\  r   c                     | S r   r   r0   s    r   r2   z
E.__iter__  r3   r   c                     ddz   d S )Nr   r   r   r0   s    r   r7   z
E.__next__  s    	Qr   Nrb  r   r   r   rp  rp    sG        $$        r   rp  c                   $    e Zd ZdZd Zd Zd ZdS )SzTest immediate stopc                     d S r   r   rW  s     r   r0  z
S.__init__  s    r   c                     | S r   r   r0   s    r   r2   z
S.__iter__  r3   r   c                     t           r   r5   r0   s    r   r7   z
S.__next__  r8   r   Nrb  r   r   r   ru  ru    sG                r   ru  c                     t          t          d t          t          t	          |                                                   S )z Test multiple tiers of iteratorsc                     | S r   r   r   s    r   r_   zL.<locals>.<lambda>  s    a r   )r   r   rR  rd  rT  rV  s    r   Lr{    s.    ZZ2agg;;00111r   c                   t    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S )TestVariousIteratorArgsc           
         g d}g d}t          |          }t          t          t          t          t
          fD ];}|                     t          t           ||                              |           <|                     t          t          t          |                              g            | 
                    t          t          t          |                     | 
                    t          t          t          |                     | 
                    t          t          t          t          |                               d S r  )r   rT  r  rd  r{  rR  rr   r   r   ru  r   rm   r  rl  ZeroDivisionErrorrp  )r1   r]   rO   r+   r  s        r   r   z'TestVariousIteratorArgs.test_accumulate  s    KKMMFFQAq! 	8 	8AT*QQqTT"2"233Q7777j1..//444)Z1666)Z1666+T:add3C3CDDDDDr   c                    ddt          d          dt          ddd          fD ]}t          t          t          t          t
          t          fD ]}|                     t          t           ||                              t           ||                               |                     t          t           ||           ||                              t           ||                    t           ||                    z              | 
                    t          t          t          t          |                               | 
                    t          t          t          t          |                               | 
                    t          t          t          t          |                               d S N123r   ry  dog333333?r    r   )r*   rT  r  rd  ru  r{  rR  rr   r   r   r   rm   r  rl  r  rp  r1   r]   r  s      r   r   z"TestVariousIteratorArgs.test_chain  s`   U4[[+uT$q7I7IJ 	D 	DAB1a( Q Q  eAAaDDkk!2!2D1JJ???  eAAaDD!!A$$&7&7!8!8$qqtt**T!!A$$ZZ:OPPPPiuQqTT{{;;;iuQqTT{{;;;/uQqTT{{CCCC	D 	Dr   c                    ddt          d          dt          ddd          fD ]Y}t          |          }t          t          t          t
          t          t          fD ]_}|                     t          t           ||          t          d                              t           ||                               `|                     t          t          t          |          t          d                     |                     t          t          t          |          t          d                     |                     t           t          t          t#          |          t          d                               [d S 	Nr  r   ry  r  r  r  r   r	   )r*   r   rT  r  rd  ru  r{  rR  rr   r   ri  r  r   rm   r  rl  r  rp  )r1   r]   r+   r  s       r   rl  z%TestVariousIteratorArgs.test_compress  s*   U4[[+uT$q7I7IJ 	R 	RAAAB1a( N N  hqqttVAYY&?&?!@!@$qqtt**MMMMi1Q44CCCi1Q44CCC/x!fQii7P7PQQQQ	R 	Rr   c           	      f   ddt          d          dt          ddd          fD ]}|                     t          t          t	          |                     |                     t          t          t          |                     |                     t          t          t          |                     d S r  )r*   r   rm   r  r  rl  r  rp  )r1   r]   s     r   rU  z$TestVariousIteratorArgs.test_product  s    U4[[+uT$q7I7IJ 	@ 	@Ai!A$$777i!A$$777/!A$$????	@ 	@r   c                    ddt          d          dt          ddd          fD ]9}t          t          t          t          t
          t          fD ]x}t          |          dz  }t           ||                    dz  }t          t          t           ||                    |                    }|                     ||           y|                     t          t          t          |                     |                     t          t          t          |                     |                     t           t          t          t#          |                               ;d S )	Nr  r   ry  r  r  r  r   r   )r*   rT  r  rd  ru  r{  rR  r   r   r?   r  rr   r   rm   r  rl  r  rp  )r1   r]   r  tgtlenexpectedactuals         r   r  z"TestVariousIteratorArgs.test_cycle  s    U4[[+uT$q7I7IJ 	D 	DAB1a( 3 3Q!!::a<fU11Q44[[&99::  2222i!555i!555/uQqTT{{CCCC	D 	Dr   c           
         t          d          t          d          t          d          dt          ddd          fD ]}t          t          t          t          t
          t          fD ]N}|                     d t           ||                    D             t           ||                               O| 
                    t          t          t          |                     | 
                    t          t          t          |                     | 
                    t          t          t          t          |                               d S )	NrV   r   ry  r   r  r  r  r   c                     g | ]\  }}|S r   r   )r`   r&  sbs      r   ra   z8TestVariousIteratorArgs.test_groupby.<locals>.<listcomp>  s    !?!?!?2!!?!?!?r   )r*   rT  r  rd  ru  r{  rR  rr   r*  r   r   rm   r  rl  r  rp  r  s      r   r  z$TestVariousIteratorArgs.test_groupby  s   ))U1XXuT{{FE$tA<N<NO 	F 	FAB1a( M M  !?!?1!?!?!?aaddLLLLi!A$$777i!A$$777/wqtt}}EEEE	F 	Fr   c                    t          d          t          d          t          d          dt          ddd          fD ]'}t          t          t          t          t
          t          fD ]T}|                     t          t          t           ||                              d  ||          D                        U|                     t          t          t          t          |                     |                     t          t          t          t          |                     |                     t          t          t          t          t!          |                               )d S )	NrV   r   ry  r  r  r  r   c                 0    g | ]}t          |          |S r   )r"   r   s     r   ra   z7TestVariousIteratorArgs.test_filter.<locals>.<listcomp>  s#    !?!?!?VAYY!?!!?!?!?r   )r*   rT  r  rd  ru  r{  rR  rr   r   rU  r"   r   rm   r  rl  r  rp  r  s      r   r  z#TestVariousIteratorArgs.test_filter  s(   ))U1XXuT{{FE$tA<N<NO 	M 	MAB1a( A A  fVQQqTT&:&:!;!;!?!?QQqTT!?!?!?A A A Ai1>>>i1>>>/vfadd7K7KLLLL	M 	Mr   c                    t          d          t          d          t          d          dt          ddd          fD ]'}t          t          t          t          t
          t          fD ]T}|                     t          t          t           ||                              d  ||          D                        U|                     t          t          t          t          |                     |                     t          t          t          t          |                     |                     t          t          t          t          t!          |                               )d S )	NrV   r   ry  r  r  r  r   c                 0    g | ]}t          |          |S r   )r%   r   s     r   ra   z<TestVariousIteratorArgs.test_filterfalse.<locals>.<listcomp>  s#    !>!>!>U1XX!>!!>!>!>r   )r*   rT  r  rd  ru  r{  rR  rr   r   r  r"   r   rm   r  rl  r  rp  r  s      r   r  z(TestVariousIteratorArgs.test_filterfalse
  s(   ))U1XXuT{{FE$tA<N<NO 	R 	RAB1a( @ @  k&!!A$$&?&?!@!@!>!>QQqTT!>!>!>@ @ @ @ifaddCCCifaddCCC/{61Q447P7PQQQQ	R 	Rr   c                 :   ddt          d          dt          ddd          fD ]u}t          t          t          t          t
          t          fD ]}|                     t          t           ||                              t           ||                               |                     t          t           ||           ||                              t           ||           ||                               |                     t          t          t          |                     |                     t          t          t          |                     |                     t          t          t          t!          |                               wd S r  )r*   rT  r  rd  ru  r{  rR  rr   r   r   r   r   rm   r  rl  r  rp  r  s      r   r  z TestVariousIteratorArgs.test_zip  sI   U4[[+uT$q7I7IJ 	B 	BAB1a( J J  c!!A$$ii$qqtt**===  c!!A$$!oo!6!6QQqTT11Q448H8HIIIIiadd333iadd333/s1Q44yyAAAA	B 	Br   c                 n   ddt          d          dt          ddd          fD ]}t          t          t          t          t
          t          fD ]}|                     t          t           ||                              t          t           ||                                         |                     t          t           ||           ||                              t          t           ||           ||                                         |                     t          t          t          |                     |                     t          t          t          |                     |                     t          t          t          t!          |                               d S r  )r*   rT  r  rd  ru  r{  rR  rr   r   r  r   r   rm   r  rl  r  rp  r  s      r   r  z'TestVariousIteratorArgs.test_ziplongest  s^   U4[[+uT$q7I7IJ 	J 	JAB1a( W W  k!!A$$&7&7!8!8$s11Q44yy//JJJ  k!!A$$!&=&=!>!>S1qqQRtt__@U@UVVVViadd;;;iadd;;;/{1Q447H7HIIII	J 	Jr   c                    t          d          t          d          t          d          dt          ddd          fD ]}t          t          t          t          t
          t          fD ]}|                     t          t          t           ||                              d  ||          D                        |                     t          t          t          j         ||           ||                              d	  ||          D                        |                     t          t          t          t          |                     |                     t          t          t          t!          |                     |                     t"          t          t          t          t%          |                               d S )
NrV   r   r   r  r   rz  r   c                 ,    g | ]}t          |          S r   )r   r   s     r   ra   z4TestVariousIteratorArgs.test_map.<locals>.<listcomp>)  s    !:!:!:&))!:!:!:r   c                     g | ]}||z  S r   r   r   s     r   ra   z4TestVariousIteratorArgs.test_map.<locals>.<listcomp>+      !5!5!51!Q$!5!5!5r   )r*   rT  r  rd  ru  r{  rR  rr   r   r   r   rD   rk  r   rm   r  rl  r  rp  r  s      r   rm  z TestVariousIteratorArgs.test_map%  sy   ))U1XXuSzz65Bq>>J 	J 	JAB1a( 7 7  c&!!A$$&7&7!8!8!:!:QQqTT!:!:!:< < <  c(,!aadd&C&C!D!D!5!5!!5!5!57 7 7 7ifadd;;;ifadd;;;/s61Q447H7HIIII	J 	Jr   c                    ddt          d          dt          ddd          fD ]!}t          t          t          t          t
          t          fD ]]}|                     t          t           ||          dd d	                    t           ||                    dd d	                    ^| 
                    t          t          t          |          d
           | 
                    t          t          t          |          d
           | 
                    t          t          t          t          |          d
                     #d S )N12345r   ry  r  r  r  r   r	   r   rV   )r*   rT  r  rd  ru  r{  rR  rr   r   r?   r   rm   r  rl  r  rp  r  s      r   r  z#TestVariousIteratorArgs.test_islice0  s   2uT{{KtD9K9KL 	I 	IAB1a( P P  fQQqTT!D&;&;!<!<d11Q44jjA>NOOOOi1r:::i1r:::/vaddB7G7GHHHH	I 	Ir   c           
         ddt          d          dt          ddd          fD ];}t          t          t          t          t
          t          fD ]z}t           ||                    }t          t          ||dd                              }t          t           ||                              }| 
                    ||           {|                     t          t          t          |                     |                     t          t          t          |                     |                     t          t          t          t!          |                               =d S r  )r*   rT  r  rd  ru  r{  rR  r   r   r=  rr   r   rm   r  rl  r  rp  )r1   r]   r  r@   r  r  s         r   r>  z%TestVariousIteratorArgs.test_pairwise8  s"   U4[[+uT$q7I7IJ 	G 	GAB1a( 3 311Q44jjCQRR 1 122hqqttnn--  2222i1Q44888i1Q44888/x!~~FFFF	G 	Gr   c                    t          d          t          d          t          d          dt          ddd          fD ]K}t          t          t          t          t
          t          fD ]i}t          ||          }|                     t          t          t          j         ||                              d  ||          D                        j|                     t          t          t          j        t          |                     |                     t          t          t          j        t!          |                     |                     t"          t          t          t          j        t%          |                               Md S )	NrV   r   r   r  r   rz  r   c                     g | ]}||z  S r   r   r   s     r   ra   z8TestVariousIteratorArgs.test_starmap.<locals>.<listcomp>H  r  r   )r*   rT  r  rd  ru  r{  rR  r   rr   r   rq  rD   rk  r   rm   r  rl  r  rp  )r1   r]   r  sss       r   rr  z$TestVariousIteratorArgs.test_starmapC  s5   ))U1XXuSzz65Bq>>J 	U 	UAB1a( 7 7!QZZ  ghlAAbEE&B&B!C!C!5!5!!5!5!57 7 7 7i(,"FFFi(,"FFF/wx|QrUU7S7STTTT	U 	Ur   c                    t          d          t          d          t          d          dt          ddd          fD ]J}t          t          t          t          t
          t          fD ]w}g } ||          D ](}t          |          s n|                    |           )| 	                    t          t          t           ||                              |           x|                     t          t          t          t          |                     |                     t          t          t          t          |                     |                     t           t          t          t          t#          |                               Ld S NrV   r   ry  r  r  r  r   )r*   rT  r  rd  ru  r{  rR  r"   r  rr   r   r  r   rm   r  rl  r  rp  r1   r]   r  tgtr  s        r   r  z&TestVariousIteratorArgs.test_takewhileM  sF   ))U1XXuT{{FE$tA<N<NO 		P 		PAB1a( E EAaDD % %D!$<<.JJt$$$$  i!&=&=!>!>DDDDiFAaDDAAAiFAaDDAAA/y17N7NOOOO		P 		Pr   c                    t          d          t          d          t          d          dt          ddd          fD ]K}t          t          t          t          t
          t          fD ]x}g } ||          D ])}|st          |          r|                    |           *| 	                    t          t          t           ||                              |           y|                     t          t          t          t          |                     |                     t          t          t          t          |                     |                     t           t          t          t          t#          |                               Md S r  )r*   rT  r  rd  ru  r{  rR  r%   r  rr   r   r  r   rm   r  rl  r  rp  r  s        r   r  z&TestVariousIteratorArgs.test_dropwhileY  sI   ))U1XXuT{{FE$tA<N<NO 		O 		OAB1a( D DAaDD % %D85;;8JJt$$$$  iqqtt&<&<!=!=sCCCCiE1Q44@@@iE1Q44@@@/y!7M7MNNNN		O 		Or   c           
         ddt          d          dt          ddd          fD ]V}t          t          t          t          t
          t          fD ]}t           ||                    \  }}|                     t          |          t           ||                               |                     t          |          t           ||                               | 
                    t          t          t          |                     | 
                    t          t          t          |                     | 
                    t          t          t          t          |                    d                    Xd S )	Nr  r   ry  r  r  r  r   r   )r*   rT  r  rd  ru  r{  rR  r  rr   r   r   rm   r  rl  r  rp  )r1   r]   r  it1it2s        r   r  z TestVariousIteratorArgs.test_teee  s.   U4[[+uT$q7I7IJ 	E 	EAB1a( 8 8qqtt99S  cD1JJ777  cD1JJ7777iadd333iadd333/s1Q44yy|DDDD	E 	Er   N)r9   r:   r;   r   r   rl  rU  r  r  r  r  r  r  rm  r  r>  rr  r  r  r  r   r   r   r}  r}    sH       	E 	E 	ED D DR R R@ @ @	D 	D 	DF F FM M MR R RB B BJ J J	J 	J 	JI I I	G 	G 	GU U U
P 
P 
P
O 
O 
OE E E E Er   r}  c                       e Zd Zd Zd ZdS )LengthTransparencyc                 J   |                      t          j        t          d d                    d           |                      t          j        t          d d                    d           |                      t          j        t          d           d          d           d S )Nrz  r   r   rr   rD   length_hintr  r0   s    r   re  zLengthTransparency.test_repeatq  s    -fT2.>.>??DDD-fT1oo>>BBB-fTllB??DDDDDr   c                    |                      t          j        t          d d                    d           |                      t          j        t          d d                    d           |                      t          j        t          d d                    d           |                      t          j        t          d d                    d           d S )Nr:  r   r   rg  r  r0   s    r   rh  z2LengthTransparency.test_repeat_with_negative_timesv  s    -fT2.>.>??CCC-fT2.>.>??CCC-fT.D.D.DEEqIII-fT.D.D.DEEqIIIIIr   N)r9   r:   r;   re  rh  r   r   r   r  r  o  s:        E E E
J J J J Jr   r  c                   F    e Zd Zd Zd Zej        d             Zd Zd Z	dS )RegressionTestsc                     d }fd}g  |d|d           t          t                    }|                     |           d S )Nc                     dgffd	}t          |          }t          |           |dd<   t          ||          }t          |gt          |           z   t	                     d S )Nr	   c                 F    |r|d d =  t                               | S r   r  )r  r  r   zs     r   r  z@RegressionTests.test_sf_793826.<locals>.mutatingtuple.<locals>.g  s.     aaaAd1ggJJJr   )r   r   r   r   rt   )tuple1r   tuple2r  itemsgenr  s    `    @r   mutatingtuplez5RegressionTests.test_sf_793826.<locals>.mutatingtuple  s     !"s       
 LLEfE!A#Ja--CcU3v;;&'AGGGGGr   c                 >    | a t          t                     d d <   d S r   )Tr   )rO  r  s    r   r   z)RegressionTests.test_sf_793826.<locals>.f  s    AAwwE!!!HHHr   r   )rd   r   r   )r   r  rr   )r1   r  r   secondr  s       @r   test_sf_793826zRegressionTests.test_sf_793826~  sm    	 	 		 	 	 	 	
 gq'***a'''''r   c           
      $   fd}fd}g |                      t          t          t           |             |d                               |                     ddg           g |                      t          t          t           |             |d                               |                     ddg           g |                      t          t          t           |                                 |                     ddg           d S )Nc               3   r   K                         d           dV                        d           t          r"  )r  AssertionError)hists   r   gen1z,RegressionTests.test_sf_950057.<locals>.gen1  s4      KKNNNGGGKKNNN  r   c              3   h   K                        d           dV                       d           d S )Nr   r   rd   )r  )r   r  s    r   gen2z,RegressionTests.test_sf_950057.<locals>.gen2  s2      KKNNNGGGKKNNNNNr   Fr   r	   T)r   r  r   r   rr   r  )r1   r  r  r  s      @r   test_sf_950057zRegressionTests.test_sf_950057  s   	 	 	 	 		 	 	 	 	
 .$ddffdd5kk0J0JKKK!u%%%.$ddffdd4jj0I0IJJJ!u%%%.$ddff>>>!u%%%%%r   c                     t                               d t          d          D                       }|                     t                    5  t          |           d d d            d S # 1 swxY w Y   d S )Nc              3      K   | ]}d V  dS )r   Nr   )r`   unuseds     r   r   zERegressionTests.test_long_chain_of_empty_iterables.<locals>.<genexpr>  s"       B B B B B B B Br   i )r   r   r*   r   r6   rt   r   s     r   "test_long_chain_of_empty_iterablesz2RegressionTests.test_long_chain_of_empty_iterables  s    
    B B%// B B BBB}-- 	 	HHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A))A-0A-c                 v    fd}t          t          d          |          D ]\  }t                     d S )Nc                 :    | dk    rt                     | dk    S )Nr   r   r  )r+   rz   s    r   r   z,RegressionTests.test_issue30347_1.<locals>.f  s     AvvQ6Mr   rV   )r*  r*   r   )r1   r   r&  rz   s      @r   test_issue30347_1z!RegressionTests.test_issue30347_1  sX    	 	 	 	 	 eBii++ 	 	FQGGGG	 	r   c                      G fdd          }dt          t          t          d          |                    d         t          d          D ]}t          d            d S )Nc                   "    e Zd Zd Z fdZdS ),RegressionTests.test_issue30347_2.<locals>.Kc                     d S r   r   r`  s     r   r0  z5RegressionTests.test_issue30347_2.<locals>.K.__init__  s    r   c                 >    dz  dk    rt          d            dS )Nr	   Tr  )r1   otherr  r   s     r   r  z3RegressionTests.test_issue30347_2.<locals>.K.__eq__  s'    Q66DMMMtr   N)r9   r:   r;   r0  r  )r  r   s   r   Kr    sB                 r   r  r   rV   r	   r   )rt   r*  r*   )r1   r  r   r  r   s      @@r   test_issue30347_2z!RegressionTests.test_issue30347_2  s    	 	 	 	 	 	 	 	 	 	 	 rA&&''*q 	 	ADMMMM	 	r   N)
r9   r:   r;   r  r  r   skip_if_pgo_taskr  r  r  r   r   r   r  r  |  so        ( ( (:& & &8         r   r  c                       e Zd Zd ZdS )SubclassWithKwargsTestc                 d   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 ]\  }}}|                     |          5   G d d|          } || }|                     t%          |          |           |                     t)          t          |dd                    |           |                     t,                    5   ||ddi d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |D ]\  }}}|t           t          t          fv r|                     |          5   G d d|          } ||ddi}|                     t%          |          |           |                     t)          t          |dd                    |           |                     |j        d           d d d            n# 1 swxY w Y   |D ]\  }}}|                     |          5   G d d|          } ||ddi}|                     t%          |          |           |                     t)          t          |dd                    |           |                     |j        d           d d d            n# 1 swxY w Y   d S )Nr8  r	   r   r   rc  r  r   r   rd   r   12)r^  r  r   r   )r	   r   r   rd   )r   r   rd   )r	   r   r	   r  r`  r   r   c                       e Zd ZdS )BSubclassWithKwargsTest.test_keywords_in_subclass.<locals>.subclassNr  r   r   r   subclassr    s        Dr   r  newargc                       e Zd ZdddZdS )LSubclassWithKwargsTest.test_keywords_in_subclass.<locals>.subclass_with_initNr  c                    || _         d S r   r  )r1   r  r   s      r   r0  zUSubclassWithKwargsTest.test_keywords_in_subclass.<locals>.subclass_with_init.__init__  s    &,r   )r9   r:   r;   r0  r   r   r   subclass_with_initr    s0        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                J     t                      j        | g|R  }||_        |S r   )super__new__r  )clsr  r   r1   r  s       r   r  zSSubclassWithKwargsTest.test_keywords_in_subclass.<locals>.subclass_with_new.__new__	  s,    .uwws:T:::&,#r   )r9   r:   r;   r  __classcell__)r  s   @r   subclass_with_newr  	  sE        37 $ $ $ $ $ $ $ $ $ $ $r   r  )r  r   rU  r  r   r   rl   rq  rD   rk  r?   r  r"   r  r  ri  subTestr(  rs   rr   r   r   rm   r  )	r1   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$iii03A-#s,x|%56A?lllAq)Aq62+aS1+aV4aVIyyy)yyy)C:6
	 "+ 	. 	.Cvc"" . .    s   HdOd1ggx000  fQ1oo!6!6???&&y11 . .Hd-1---. . . . . . . . . . . . . . .. . . . . . . . . . . . . . . "+ 	. 	.Cv vsH---c"" . .- - - - - - - - '&7Q77d1gg'9:::  fQ1oo!6!6???  1---. . . . . . . . . . . . . . . "+ 
	. 
	.Cvc"" 	. 	.$ $ $ $ $ $ $ $
 &%t6A66d1gg'8999  fQ1oo!6!6???  1---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.
	. 
	.s]   &BF)	E>2F>FFFFF	F	BI((I,	/I,	BL$$L(	+L(	N)r9   r:   r;   r  r   r   r   r  r    s#        3. 3. 3. 3. 3.r   r  c                   :    e Zd Zd Zej        Zd Zd Zd Zd Z	dS )
SizeofTestc                 8    t          j        d          | _        d S )Nr+   )structcalcsizessize_tr0   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              d S )N3Pir   12r   )
r   r   r   r   r   r   r   r   r   r   rV   )r   calcobjsizecheck_sizeofr  r  r1   basesizechecks      r   test_product_sizeofzSizeofTest.test_product_sizeof	  sk    &u--!gdD!!8a$,.>#>???g'B4E)EFFFFFr   c                     t          j        d          }| j        } |t          dd          |d| j        z  z               |t          t          d          d          |d| j        z  z              d S N3Pnir   r   rV   rd   )r   r  r  r   r  r*   r  s      r   test_combinations_sizeofz#SizeofTest.test_combinations_sizeof	  sv    &v..!l61%%x!dl2B'BCCCl599a(((Q5E*EFFFFFr   c                     t           }t          j        d          }| j        } | |dd          |d| j        z  z               | |t          d          d          |d| j        z  z              d S r  )r   r   r  r  r  r*   )r1   r+  r  r  s       r   )test_combinations_with_replacement_sizeofz4SizeofTest.test_combinations_with_replacement_sizeof"	  s}    +&v..!cc&!nnhT\)99:::cc%))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              d S )N4Pnir   rd   r   r  r   rV   )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99a((dl**Q-==	? 	? 	? 	? 	?r   N)
r9   r:   r;   r  r   r  r  r  r  r  r   r   r   r  r  	  so        , , , 'LG G GG G G> > >
? 
? 
? 
? 
?r   r  c                 R    |                     t          j                               |S r   )addTestdoctestDocTestSuite)loadertestspatterns      r   
load_testsr  6	  s"    	MM'&(()))Lr   __main__)Br  unittesttestr   test.supportr   	itertoolsr  decimalr   	fractionsr   rD   rP  r   rZ   	functoolsr   r  r  r  r  MAX_Py_ssize_tr~  minsizer   r   r   r   r"   r%   r'   r,   r.   rA   rH   rK   rP   rT   rW   r*   r   r   TestCaserc   r  r  r&  rR  rT  r  rd  r  rl  rp  ru  r{  r}  r  r  r  r  r  r  r9   mainr   r   r   <module>r     sk           ) ) ) ) ) )                            



      				

 (1*        
                    - - -  
      B B#eF$;a$?@@B B Bd1 d1 d1 d1 d18$ d1 d1 d1N1kM kM kM kM kM8$ kM kM kM\'% '% '% '% '%X%6 '% '% '%Tg9 g9 g9 g9 g9X g9 g9 g9R  
                     	 	 	 	 	 	 	 	                     2 2 2
dE dE dE dE dEh/ dE dE dELJ J J J J* J J JY Y Y Y Yh' Y Y Yx4. 4. 4. 4. 4.X. 4. 4. 4.n 	#? #? #? #? #?" #? #? #?L  
 zHMOOOOO r   