mò
­fIc           @   så  d  k  Z  d k l Z d k Td k l Z d  k Z d  k Z d  k Z d „  Z	 d „  Z
 d „  Z d „  Z d „  Z d	 f  d
 „  ƒ  YZ d „  Z d e  i f d „  ƒ  YZ d e  i f d „  ƒ  YZ d „  Z d f  d „  ƒ  YZ d f  d „  ƒ  YZ d f  d „  ƒ  YZ d f  d „  ƒ  YZ d f  d „  ƒ  YZ d f  d „  ƒ  YZ d f  d „  ƒ  YZ d „  Z d  e  i f d! „  ƒ  YZ d" e  i f d# „  ƒ  YZ d$ e  i f d% „  ƒ  YZ d& Z h  d' e <Z  e! d( „ Z" e# d) j o e" d* e$ ƒ n d  S(+   N(   s   test_support(   t   *(   s   proxyc         C   s   d |  S(   s   Test function of one argumenti   N(   t   x(   R   (    (    t0   /mit/python/lib/python2.4/test/test_itertools.pyt   onearg	   s     c          G   s
   t  ‚ d S(   s"   Test function that raises an errorN(   t
   ValueError(   t   args(    (    R   t   errfunc   s     c          c   s   x d D]
 }  |  Vq Wd S(   s   Non-restartable source sequencei    i   i   N(   i    i   i   (   t   i(   R   (    (    R   t   gen3   s      c         C   s   |  d d j S(   s   Test predicatei   i    N(   R   (   R   (    (    R   t   isEven   s     c         C   s   |  d d j S(   s   Test predicatei   i   N(   R   (   R   (    (    R   t   isOdd   s     t   StopNowc           B   s    t  Z d  Z d „  Z d „  Z RS(   s"   Class emulating an empty iterable.c         C   s   |  S(   N(   t   self(   R   (    (    R   t   __iter__    s    c         C   s
   t  ‚ d  S(   N(   t   StopIteration(   R   (    (    R   t   next"   s    (   t   __name__t
   __module__t   __doc__R   R   (    (    (    R   R      s    	c         C   s   t  t | |  ƒ ƒ S(   sH   Convenience function for partially consuming a long of infinite iterableN(   t   listt   islicet   seqt   n(   R   R   (    (    R   t   take%   s     t   TestBasicOpsc           B   s   t  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 RS(   Nc         C   s¥   |  i t t d d ƒ ƒ t d ƒ ƒ |  i t t d ƒ ƒ t d ƒ ƒ |  i t t d ƒ ƒ g  ƒ |  i t d t d d ƒ ƒ t d ƒ ƒ |  i t t d d ƒ d  S(	   Nt   abct   deft   abcdeft    i   t   abcdi   i   (   R   t   assertEqualR   t   chainR   t   assertRaisest	   TypeError(   R   (    (    R   t
   test_chain*   s
    %"(c         C   s/  |  i t d t ƒ  ƒ d d d g ƒ |  i t d t d ƒ ƒ d d d g ƒ |  i t d t d t d ƒ ƒ ƒ d d g ƒ |  i t t d d ƒ |  i t t d ƒ t t i d ƒ } | i
 ƒ  | i
 ƒ  | i
 ƒ  | i
 ƒ  | i
 ƒ  t d ƒ } |  i t | ƒ d ƒ | i
 ƒ  |  i t | ƒ d ƒ d  S(   NR   t   ai    t   bi   t   ci   i   i   i   s   count(3)s   count(4)(   R#   i    (   R$   i   (   R%   i   (   R#   i   (   R$   i   (   R%   i   (   R#   i   (   R$   i   (   R   R   t   zipt   countR   R    R!   t   syst   maxintR%   R   t   repr(   R   R%   (    (    R   t
   test_count1   s    %(.2
c         C   s®   |  i t d t d ƒ ƒ t d ƒ ƒ |  i t t d ƒ ƒ g  ƒ |  i t t ƒ |  i t t d ƒ |  i t t t t ƒ  ƒ d ƒ ƒ d d d d d d d d d d g
 ƒ d  S(	   Ni
   R   t
   abcabcabcaR   i   i    i   i   (	   R   R   R   t   cycleR   R    R!   R   R   (   R   (    (    R   t
   test_cycle>   s
    %c      
      sî  |  i g  t t g  ƒ ƒ ƒ |  i g  t t g  d t ƒƒ ƒ |  i t t t d g  ƒ ƒ |  i t t d  ƒ |  i t t d d „  d ƒ d( d) d* d+ d, d- d. d/ g } g  } xR t | d „  ƒ D]> \ } }
 x/ |
 D]' } |  i | | d ƒ | i | ƒ qÓ WqÀ W|  i | | ƒ g  } x‰ t | d „  ƒ D]u \ } }
 xf t |
 d „  ƒ D]R \ } } xC | D]; } |  i | | d ƒ |  i | | d ƒ | i | ƒ q]WqJWq+W|  i | | ƒ g  } t | d „  ƒ D] \ } }
 | | qË~ }	 t g  } | D] } | | d qõ~ ƒ } |  i t |	 ƒ | ƒ |  i t |	 ƒ t | ƒ ƒ d } g  } t t | ƒ ƒ D] \ } }
 | | qa~ } |  i | d d d d d g ƒ g  } t t | ƒ ƒ D]0 \ } }
 t t |
 d
 d ƒ ƒ o | | q³q³~ } |  i | d d d g ƒ g  } t t | ƒ ƒ D]% \ } }
 | t t |
 ƒ ƒ | f q~ } |  i | d0 d1 d2 d3 d4 g ƒ t g  } t t | ƒ ƒ D]% \ } }
 | t t |
 ƒ ƒ | f qƒ~ d t ƒd  } |  i | d5 d6 d7 g ƒ d  t f d! „  ƒ  Y‰ d ‡ d" † } d  t d# „ } |  i ˆ | | d ƒ ƒ |  i ˆ | | d
 ƒ ƒ d$ f  ‡ d% †  ƒ  Y} | ƒ  | ƒ  d  g } |  i ˆ | | d& t ƒ|  i ˆ | | ƒ ‡  ‡ d' †  ‰  d ˆ  _ |  i ˆ | d  g ˆ  ƒ d
 ˆ  _ |  i ˆ | d  d  g ˆ  ƒ d  S(8   Nt   keyR   c         C   s   |  S(   N(   R   (   R   (    (    R   t   <lambda>K   s    i
   i    i   i   i   i   i   i   i   i   i   i   i   i   i   i   c         C   s   |  d S(   Ni    (   t   r(   R1   (    (    R   R0   Q   s    c         C   s   |  d S(   Ni    (   R1   (   R1   (    (    R   R0   Y   s    c         C   s   |  d S(   Ni   (   R1   (   R1   (    (    R   R0   Z   s    c         C   s   |  d S(   Ni    (   R1   (   R1   (    (    R   R0   b   s    t   abracadabraR#   R$   R%   t   dR1   i   t   reverset   ExpectedErrorc           B   s   t  Z RS(   N(   R   R   (    (    (    R   R5   w   s   c         #   s%   x t  |  ƒ D]
 } d Vq Wˆ  ‚ d  S(   Nt   yo(   t   rangeR   R   R5   (   R   R   (   R5   (    R   t   delayed_raisey   s     c         C   s4   g  } t |  | ƒ D] \ } } | | | ƒ q ~ S(   N(   t   _[1]t   groupbyt   iterablet   keypt   kt   gt   func(   R;   R<   R?   R>   R=   R9   (    (    R   t   gulp}   s    t   DummyCmpc              s   t  Z ‡  d †  Z RS(   Nc            s
   ˆ  ‚ d  S(   N(   R5   (   R   t   dst(   R5   (    R   t   __cmp__‡   s    (   R   R   RC   (    (   R5   (    R   RA   †   s   R?   c            s1   ˆ  i d j o ˆ  i d 8_ |  Sn ˆ ‚ d  S(   Ni    i   (   t   keyfunct   skipt   objR5   (   RF   (   RD   R5   (    R   RD   ‘   s    (   i    i
   i   (   i    i   i   (   i    i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   R#   (   i   R$   (   i   R%   (   i   R3   (   i   R1   (   i   R#   (   i   R1   (   i   R$   (    R   R   R   R:   t   idR    R!   t   Nonet   st   dupR=   R>   t   elemt   appendt   ikt   igR9   t   keyst   setR1   t   expectedkeyst   lent   sortedR   t   Truet	   ExceptionR5   R8   R@   RA   RD   RE   (   R   R8   RM   RD   RN   R@   R5   RQ   RJ   RO   R>   R=   RK   R9   RI   R1   RA   (    (   RD   R5   R   t   test_groupbyE   sh    "     3+3PEU		c      	   C   s  |  i t t t t d ƒ ƒ ƒ d d d g ƒ |  i t t d  d d d d d g ƒ ƒ d d g ƒ |  i t d t t t ƒ  ƒ ƒ d d d d g ƒ |  i	 t
 t ƒ |  i	 t
 t d „  ƒ |  i	 t
 t d „  t d ƒ d ƒ |  i	 t
 t t d	 ƒ |  i	 t
 t t d ƒ t d ƒ ƒ i ƒ d  S(
   Ni   i    i   i   i   c         C   s   |  S(   N(   R   (   R   (    (    R   R0   £   s    c         C   s   |  S(   N(   R   (   R   (    (    R   R0   ¤   s    i   i   (   R   R   R   t   ifilterR	   R7   RH   R   R'   R    R!   R   (   R   (    (    R   t   test_ifilterž   s    .41"c      	   C   s   |  i t t t t d ƒ ƒ ƒ d d d g ƒ |  i t t d  d d d d d g ƒ ƒ d d d g ƒ |  i t d t t t ƒ  ƒ ƒ d d d d g ƒ |  i	 t
 t ƒ |  i	 t
 t d	 „  ƒ |  i	 t
 t d
 „  t d ƒ d ƒ |  i	 t
 t t d ƒ |  i	 t
 t t d ƒ t d ƒ ƒ i ƒ d  S(   Ni   i   i   i   i    i   i   i   c         C   s   |  S(   N(   R   (   R   (    (    R   R0   ­   s    c         C   s   |  S(   N(   R   (   R   (    (    R   R0   ®   s    (   R   R   R   t   ifilterfalseR	   R7   RH   R   R'   R    R!   R   (   R   (    (    R   t   test_ifilterfalse¨   s    .71"c         C   s\  g  } t d t ƒ  ƒ D] \ } } | | | f q ~ } |  i | d d d g ƒ |  i t t d t	 d ƒ ƒ ƒ t
 d t	 d ƒ ƒ ƒ |  i t t d	 t	 d
 ƒ ƒ ƒ t
 d	 t	 d
 ƒ ƒ ƒ |  i t d
 t d	 t ƒ  ƒ ƒ t
 d	 t	 d
 ƒ ƒ ƒ |  i t t d	 ƒ ƒ t
 d	 ƒ ƒ |  i t t ƒ  ƒ t
 ƒ  ƒ |  i t t d
 ƒ |  i t t t	 d
 ƒ d
 ƒ |  i g  } t d d ƒ D] } | t t | ƒ ƒ qu~ t
 d d ƒ ƒ |  i g  } t d d ƒ D] } | | q¾~ t
 d d ƒ ƒ t t t d d ƒ ƒ } |  i t | ƒ t | ƒ ƒ t t t t d d ƒ ƒ ƒ } |  i t t i | ƒ ƒ t | ƒ ƒ d  S(   NR   R#   i    R$   i   R%   i   i   R   i   R   (   R#   i    (   R$   i   (   R%   i   (   R9   t   izipR'   R   t   yt   ansR   R   R   R7   R&   R   R    R!   t   pairt   tuplet   mapRG   t   idst   mint   maxRR   t   dictt   fromkeys(   R   Ra   R9   R^   R]   R\   R   (    (    R   t	   test_izip²   s"    9444"9-c         C   sn  |  i t t d ƒ t d ƒ ƒ d d d g ƒ |  i t t d d ƒ ƒ d d d g ƒ |  i t d t d ƒ ƒ d d d g ƒ |  i t t d d ƒ ƒ g  ƒ |  i t t d d ƒ ƒ g  ƒ |  i t t ƒ |  i t t d  d d ƒ |  i t t d  d ƒ t d d ƒ } |  i t | ƒ d	 ƒ t d d d
 ƒ } |  i t | ƒ d ƒ t | ƒ |  i t | ƒ d ƒ d  S(   Ni   R#   i    i   i   iýÿÿÿi   x0.00.0s   repeat((1+0j))i   s   repeat((1+0j), 5)s   repeat((1+0j), 0)(   i    R#   (   i   R#   (   i   R#   (   R   R   R&   t   xranget   repeatR   R   R    R!   RH   R1   R*   (   R   R1   (    (    R   t   test_repeatÆ   s    ((
c         C   sŽ  |  i t t t i t d ƒ t d d ƒ ƒ ƒ d d d d d d g ƒ |  i t t d  d t d ƒ ƒ ƒ d d d g ƒ |  i t t d  d t ƒ  ƒ ƒ d d d g ƒ |  i t	 d t d  d t ƒ  ƒ ƒ d d g ƒ |  i t t t i g  ƒ ƒ g  ƒ |  i
 t t ƒ |  i
 t t t i ƒ |  i
 t t d t d ƒ ƒ i ƒ |  i
 t t t d g d g ƒ i ƒ |  i
 t t t d g d g ƒ i ƒ d  S(   Ni   i   i   i    i   R   i   R#   R$   R%   i
   i   (   R#   i    (   R$   i   (   R%   i   (   R#   i    (   R$   i   (   R%   i   (   R#   i    (   R$   i   (   R   R   R   t   imapt   operatort   powR7   RH   R'   R   R    R!   t   negR   R   R   R   (   R   (    (    R   t	   test_imap×   s    -!!""%c      	   C   su  |  i t t t i t t d ƒ t d d ƒ ƒ ƒ ƒ d d d d d d g ƒ |  i t d t t i t	 t
 ƒ  t
 d ƒ ƒ ƒ ƒ d d d d d d g ƒ |  i t t t i g  ƒ ƒ g  ƒ |  i t t t t i d d g g ƒ ƒ |  i t t ƒ |  i t t t i d
 g d ƒ |  i t t d	 d g ƒ i ƒ |  i t t t d g ƒ i ƒ |  i t t t d g ƒ i ƒ d  S(   Ni   i   i   i    i   i   i   t   extrai
   (   i   i   (   i   i   (   i   i   (   i   i   (   R   R   R   t   starmapRk   Rl   R&   R7   R   R[   R'   R    R!   R   R   R   R   (   R   (    (    R   t   test_starmapç   s    30"(c         C   sÔ  xH d d d d d g D]1 } |  i t t t d ƒ | Œ ƒ t | Œ  ƒ q WxZ d d f d d f d d f g D]7 \ } } |  i t t t d ƒ | Œ ƒ t | Œ  ƒ qm W|  i t t t d ƒ d  ƒ ƒ t d ƒ ƒ |  i t t t d ƒ d d  ƒ ƒ t d d ƒ ƒ |  i t t t d ƒ d d  d ƒ ƒ t d d d ƒ ƒ |  i	 t
 t t d ƒ ƒ |  i	 t
 t t d ƒ d d d d ƒ |  i	 t t t d ƒ d	 d d ƒ |  i	 t t t d ƒ d d	 d
 ƒ |  i	 t t t d ƒ d d d
 ƒ |  i	 t t t d ƒ d d d ƒ |  i	 t t t d ƒ d ƒ |  i	 t t t d ƒ d d ƒ |  i	 t t t d ƒ d d ƒ |  i	 t t t d ƒ d d d ƒ |  i	 t t t d ƒ d d d ƒ |  i t t t t ƒ  d d t i ƒ ƒ ƒ d ƒ d  S(   Ni
   i   i   id   in   i   i   i   iûÿÿÿiÿÿÿÿi    R#   (   i
   i   i   (   i
   i   i   (   i
   i   (   i
   i   (   i   (   i
   in   i   (   i
   id   i   (   i
   in   (   i
   id   (   in   (   id   (   R   R   R   R   R   Rg   R7   t   tgtargsRH   R    R!   R   RR   R'   R(   R)   (   R   R   Rr   (    (    R   t   test_isliceô   s*     /" /+17%""""""c         C   sH  d d d d d d d d g } d	 „  } |  i t t | | ƒ ƒ d d d g ƒ |  i t t | g  ƒ ƒ g  ƒ |  i t t ƒ |  i t t t i	 ƒ |  i t t t i	 d g d
 ƒ |  i t t d d g ƒ i
 ƒ |  i t t t d g ƒ i
 ƒ t t d d d d d d g ƒ } |  i t | ƒ d d d g ƒ |  i t | i
 ƒ d  S(   Ni   i   i   i   i   i   i   i   c         C   s
   |  d j  S(   Ni
   (   R   (   R   (    (    R   R0     s    Ro   i
   i    (   i   i   (   i   i   (   i   i   (   t   datat   undertenR   R   R   t	   takewhileR    R!   Rk   Rl   R   R   R   t   boolt   tR   (   R   Ru   Rx   Rt   (    (    R   t   test_takewhile  s    	(!c         C   sû   d d d d d d d d g } d	 „  } |  i t t | | ƒ ƒ d d d d d g ƒ |  i t t | g  ƒ ƒ g  ƒ |  i t t ƒ |  i t t t i	 ƒ |  i t t t i	 d g d
 ƒ |  i t t d d g ƒ i
 ƒ |  i t t t d g ƒ i
 ƒ d  S(   Ni   i   i   i   i   i   i   i   c         C   s
   |  d j  S(   Ni
   (   R   (   R   (    (    R   R0   (  s    Ro   i
   (   i   i   (   i   i   (   i   i   (   Rt   Ru   R   R   R   t	   dropwhileR    R!   Rk   Rl   R   R   R   (   R   Ru   Rt   (    (    R   t   test_dropwhile&  s    	.c         C   s“  d } d „  } t g  ƒ \ } }	 |  i t | ƒ g  ƒ |  i t |	 ƒ g  ƒ t | | ƒ ƒ \ } }	 |  i t | |	 ƒ t t	 | ƒ t	 | ƒ ƒ ƒ t | | ƒ ƒ \ } }	 |  i t | ƒ t	 | ƒ ƒ |  i t |	 ƒ t	 | ƒ ƒ t | | ƒ ƒ \ } }	 x* t
 d ƒ D] } |  i | i ƒ  | ƒ qW~ |  i t |	 ƒ t	 | ƒ ƒ t | | ƒ ƒ \ } }	 x* t
 d ƒ D] } |  i | i ƒ  | ƒ qlW~	 |  i t | ƒ t	 d | ƒ ƒ x½ t
 d ƒ D]¯ } d g | d g | } t i | ƒ g  g  f } t | | ƒ ƒ } x/ | D]' } | | i ƒ  } | | i | ƒ qW|  i | d t	 | ƒ ƒ |  i | d t	 | ƒ ƒ q»W|  i t t ƒ |  i t t d ƒ |  i t t d d g d	 ƒ |  i t t d d g d d	 ƒ t d
 ƒ \ } }	 t | ƒ d ƒ } |  i t | ƒ t d ƒ ƒ t t
 d ƒ d ƒ \ } }	 } x* t
 d ƒ D] } |  i | i ƒ  | ƒ q7W|  i t |	 ƒ t	 d ƒ ƒ |  i | i ƒ  | i ƒ  g t	 d ƒ ƒ |  i t | ƒ t	 d d ƒ ƒ |  i t | ƒ t	 d d ƒ ƒ |  i t t d
 d ƒ xu t
 d ƒ D]g } t d
 | ƒ } |  i t | ƒ t ƒ |  i t | ƒ | ƒ |  i t t | ƒ t d
 ƒ g | ƒ qüWt d
 ƒ \ } }	 t | ƒ \ } }
 |  i | | j ƒ t d
 ƒ \ } } t | ƒ } |  i t | ƒ |  i t | d ƒ | | ƒ } |  i t | ƒ t | ƒ j o" t | ƒ j o t d
 ƒ j n ƒ t t
 d ƒ ƒ \ } }	 t# | ƒ } |  i t% | d ƒ t |	 ƒ ƒ ~ |  i t& t% | d ƒ d  S(   NiÈ   c         c   s   x t  |  ƒ D]
 } | Vq Wd  S(   N(   Rg   R   R   (   R   R   (    (    R   t   irange3  s     id   i   i    i   i   i   R   R   R   iÐ  t   invalidi
   t	   __class__('   R   R|   t   teeR#   R$   R   R   R   R&   R7   Rg   R   R   t   jt   ordert   randomt   shufflet   listst   itst   valueRL   R    R!   t   typeR%   t   resultR_   RR   R`   R3   t   assert_t   t1t   t2t   tnewt   t3t   proxyt   pt   getattrt   ReferenceError(   R   Rˆ   RŠ   R…   R‹   R„   R|   R#   R%   R$   R3   R   RŒ   R€   R   R†   R   R   R   (    (    R   t   test_tee1  sŒ    	.     ( *Hc         C   sš  |  i t t ƒ  i ƒ xO t t t t f D]; } |  i t | g  ƒ i ƒ |  i t | t	 ƒ  ƒ i ƒ q) W|  i t t
 g  d  ƒ i ƒ |  i t t
 t	 ƒ  d  ƒ i ƒ t g  ƒ \ } } |  i t | i ƒ |  i t | i ƒ t t	 ƒ  ƒ \ } } |  i t | i ƒ |  i t | i ƒ |  i t t d  d ƒ i ƒ xa t t t t t t f D]G } |  i t | d „  g  ƒ i ƒ |  i t | d „  t	 ƒ  ƒ i ƒ qKWd  S(   Ni    c         C   s   |  S(   N(   R   (   R   (    (    R   R0     s    c         C   s   |  S(   N(   R   (   R   (    (    R   R0   ž  s    (   R   R    R   R[   R   R   R-   R:   t   fR   R   RH   R   R   t   qRh   RW   RY   Rj   Rv   Rz   Rp   (   R   R”   R“   R   (    (    R   t   test_StopIteration‰  s$       (   R   R   R"   R+   R.   RV   RX   RZ   Rf   Ri   Rn   Rq   Rs   Ry   R{   R’   R•   (    (    (    R   R   )   s   				Y	
	
					$			Xt   TestGCc           B   s}   t  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 RS(   Nc         C   s!   | i | ƒ | i ƒ  ~ ~ d  S(   N(   t	   containerRL   t   iteratorR   (   R   R˜   R—   (    (    R   t	   makecycle¢  s    
c         C   s    g  } |  i t | ƒ | ƒ d  S(   N(   R#   R   R™   R   (   R   R#   (    (    R   R"   §  s    c         C   s'   g  } |  i t | g d ƒ | ƒ d  S(   Ni   (   R#   R   R™   R-   (   R   R#   (    (    R   R.   «  s    c         C   s,   g  } |  i t t d | | g ƒ | ƒ d  S(   Ni    (   R#   R   R™   Rz   Rw   (   R   R#   (    (    R   R{   ¯  s    c         C   s-   g  } |  i t | g d d „  ƒ | ƒ d  S(   Ni   c         C   s   |  S(   N(   R   (   R   (    (    R   R0   µ  s    (   R#   R   R™   R:   (   R   R#   (    (    R   RV   ³  s    c         C   s-   g  } |  i t d „  | g d ƒ | ƒ d  S(   Nc         C   s   t  S(   N(   RT   (   R   (    (    R   R0   ¹  s    i   (   R#   R   R™   RW   (   R   R#   (    (    R   RX   ·  s    c         C   s&   g  } |  i t d „  | ƒ | ƒ d  S(   Nc         C   s   t  S(   N(   t   False(   R   (    (    R   R0   ½  s    (   R#   R   R™   RY   (   R   R#   (    (    R   RZ   »  s    c         C   s1   g  } |  i t | g d | g d ƒ | ƒ d  S(   Ni   i   (   R#   R   R™   R[   (   R   R#   (    (    R   Rf   ¿  s    c         C   s-   g  } |  i t d „  | g d ƒ | ƒ d  S(   Nc         C   s   |  S(   N(   R   (   R   (    (    R   R0   Å  s    i   (   R#   R   R™   Rj   (   R   R#   (    (    R   Rn   Ã  s    c         C   s*   g  } |  i t | g d d  ƒ | ƒ d  S(   Ni   (   R#   R   R™   R   RH   (   R   R#   (    (    R   Rs   Ç  s    c         C   s    g  } |  i t | ƒ | ƒ d  S(   N(   R#   R   R™   Rh   (   R   R#   (    (    R   Ri   Ë  s    c         C   s3   g  } |  i t d „  | | f g d ƒ | ƒ d  S(   Nc          G   s   |  S(   N(   Rx   (   Rx   (    (    R   R0   Ñ  s    i   (   R#   R   R™   Rp   (   R   R#   (    (    R   Rq   Ï  s    c         C   s/   g  } |  i t t d d | | g ƒ | ƒ d  S(   Ni   i    (   R#   R   R™   Rv   Rw   (   R   R#   (    (    R   Ry   Ó  s    (   R   R   R™   R"   R.   R{   RV   RX   RZ   Rf   Rn   Rs   Ri   Rq   Ry   (    (    (    R   R–      s   												c         c   s   x |  D]
 } | Vq Wd S(   s   Regular generatorN(   t   seqnR   (   R›   R   (    (    R   t   R×  s      t   Gc           B   s    t  Z d  Z d „  Z d „  Z RS(   s   Sequence using __getitem__c         C   s   | |  _  d  S(   N(   R›   R   (   R   R›   (    (    R   t   __init__Þ  s    c         C   s   |  i | S(   N(   R   R›   R   (   R   R   (    (    R   t   __getitem__à  s    (   R   R   R   Rž   RŸ   (    (    (    R   R   Ü  s    	t   Ic           B   s)   t  Z d  Z d „  Z d „  Z d „  Z RS(   s    Sequence using iterator protocolc         C   s   | |  _  d |  _ d  S(   Ni    (   R›   R   R   (   R   R›   (    (    R   Rž   å  s    	c         C   s   |  S(   N(   R   (   R   (    (    R   R   è  s    c         C   sF   |  i t |  i ƒ j o
 t ‚ n |  i |  i } |  i d 7_ | S(   Ni   (   R   R   RR   R›   R   t   v(   R   R¡   (    (    R   R   ê  s
     
(   R   R   R   Rž   R   R   (    (    (    R   R    ã  s    		t   Igc           B   s    t  Z d  Z d „  Z d „  Z RS(   s9   Sequence using iterator protocol defined with a generatorc         C   s   | |  _  d |  _ d  S(   Ni    (   R›   R   R   (   R   R›   (    (    R   Rž   ò  s    	c         c   s   x |  i D]
 } | Vq
 Wd  S(   N(   R   R›   t   val(   R   R£   (    (    R   R   õ  s    
 (   R   R   R   Rž   R   (    (    (    R   R¢   ð  s    	t   Xc           B   s    t  Z d  Z d „  Z d „  Z RS(   s    Missing __getitem__ and __iter__c         C   s   | |  _  d |  _ d  S(   Ni    (   R›   R   R   (   R   R›   (    (    R   Rž   û  s    	c         C   sF   |  i t |  i ƒ j o
 t ‚ n |  i |  i } |  i d 7_ | S(   Ni   (   R   R   RR   R›   R   R¡   (   R   R¡   (    (    R   R   þ  s
     
(   R   R   R   Rž   R   (    (    (    R   R¤   ù  s    	t   Nc           B   s    t  Z d  Z d „  Z d „  Z RS(   s   Iterator missing next()c         C   s   | |  _  d |  _ d  S(   Ni    (   R›   R   R   (   R   R›   (    (    R   Rž     s    	c         C   s   |  S(   N(   R   (   R   (    (    R   R   	  s    (   R   R   R   Rž   R   (    (    (    R   R¥     s    	t   Ec           B   s)   t  Z d  Z d „  Z d „  Z d „  Z RS(   s   Test propagation of exceptionsc         C   s   | |  _  d |  _ d  S(   Ni    (   R›   R   R   (   R   R›   (    (    R   Rž     s    	c         C   s   |  S(   N(   R   (   R   (    (    R   R     s    c         C   s   d d d  S(   Ni   i    (    (   R   (    (    R   R     s    (   R   R   R   Rž   R   R   (    (    (    R   R¦     s    		t   Sc           B   s)   t  Z d  Z d „  Z d „  Z d „  Z RS(   s   Test immediate stopc         C   s   d  S(   N(    (   R   R›   (    (    R   Rž     s    c         C   s   |  S(   N(   R   (   R   (    (    R   R     s    c         C   s
   t  ‚ d  S(   N(   R   (   R   (    (    R   R     s    (   R   R   R   Rž   R   R   (    (    (    R   R§     s    		c         C   s(   t  t d „  t t t |  ƒ ƒ ƒ ƒ ƒ S(   s    Test multiple tiers of iteratorsc         C   s   |  S(   N(   R   (   R   (    (    R   R0   !  s    N(   R   Rj   Rœ   R¢   R   R›   (   R›   (    (    R   t   L  s     t   TestVariousIteratorArgsc           B   st   t  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 RS(   Nc         C   s%  xd d t  d ƒ d	 t d d d ƒ f D]õ } x• t t t t t t f D]{ } |  i t t | | ƒ ƒ ƒ t | | ƒ ƒ ƒ |  i t t | | ƒ | | ƒ ƒ ƒ t | | ƒ ƒ t | | ƒ ƒ ƒ qG W|  i t t t | ƒ ƒ |  i t t t t | ƒ ƒ ƒ |  i t t t t | ƒ ƒ ƒ q( Wd  S(
   Nt   123R   iè  t   dof1.2iÐ  i˜  i   (   R«   f1.2(   R7   Rg   RI   R   R    R¢   R§   R¨   Rœ   R>   R   R   R   R   R    R!   R¤   R¥   t   ZeroDivisionErrorR¦   (   R   R>   RI   (    (    R   R"   &  s    (  .Kc         C   s  x d d t  d ƒ d
 t d d d ƒ f D]× } xw t t t t t t f D]] } t
 | ƒ d	 } t | | ƒ ƒ d	 } t t t | | ƒ ƒ | ƒ ƒ } |  i | | ƒ qG W|  i t t t | ƒ ƒ |  i t t t t | ƒ ƒ ƒ |  i t t t t | ƒ ƒ ƒ q( Wd  S(   NRª   R   iè  R«   f1.2iÐ  i˜  i   i   (   s   dof1.2(   R7   Rg   RI   R   R    R¢   R§   R¨   Rœ   R>   RR   t   tgtlenR   t   expectedR   R-   t   actualR   R   R    R!   R¤   R¥   R¬   R¦   (   R   R­   R®   R¯   R>   RI   (    (    R   R.   /  s    (  !c         C   s  xþ t  d ƒ t  d ƒ t  d ƒ d	 t d d d ƒ f D]É } xi t t t t t t f D]O } |  i g  } t | | ƒ ƒ D] \ } } | | qv ~ t | | ƒ ƒ ƒ qS W|  i t t t | ƒ ƒ |  i t t t t | ƒ ƒ ƒ |  i t t t t | ƒ ƒ ƒ q4 Wd  S(
   Ni
   i    iè  i   i   iÐ  i˜  i   (   i   i   (   R7   Rg   RI   R   R    R¢   R§   R¨   Rœ   R>   R   R   R9   R:   R=   t   sbR   R    R!   R¤   R¥   R¬   R¦   (   R   R>   RI   R9   R°   R=   (    (    R   RV   :  s    4  Mc         C   sù   xò t  d ƒ t  d ƒ t  d ƒ d	 t d d d ƒ f D]½ } xT t t t t t t f D]: } |  i t t t | | ƒ ƒ ƒ t t | | ƒ ƒ ƒ qS W|  i t t t t | ƒ ƒ |  i t t t t t | ƒ ƒ ƒ |  i t t t t t | ƒ ƒ ƒ q4 Wd  S(
   Ni
   i    iè  i   i   iÐ  i˜  i   (   i   i   (   R7   Rg   RI   R   R    R¢   R§   R¨   Rœ   R>   R   R   R   RW   R	   t   filterR    R!   R¤   R¥   R¬   R¦   (   R   R>   RI   (    (    R   RX   B  s    4  8"c         C   sù   xò t  d ƒ t  d ƒ t  d ƒ d	 t d d d ƒ f D]½ } xT t t t t t t f D]: } |  i t t t | | ƒ ƒ ƒ t t | | ƒ ƒ ƒ qS W|  i t t t t | ƒ ƒ |  i t t t t t | ƒ ƒ ƒ |  i t t t t t | ƒ ƒ ƒ q4 Wd  S(
   Ni
   i    iè  i   i   iÐ  i˜  i   (   i   i   (   R7   Rg   RI   R   R    R¢   R§   R¨   Rœ   R>   R   R   R   RY   R	   R±   R
   R    R!   R¤   R¥   R¬   R¦   (   R   R>   RI   (    (    R   RZ   J  s    4  8"c         C   s  xd d t  d ƒ d	 t d d d ƒ f D]î } xŽ t t t t t t f D]t } |  i t t | | ƒ ƒ ƒ t | | ƒ ƒ ƒ |  i t t | | ƒ | | ƒ ƒ ƒ t | | ƒ | | ƒ ƒ ƒ qG W|  i t t t | ƒ ƒ |  i t t t t | ƒ ƒ ƒ |  i t t t t | ƒ ƒ ƒ q( Wd  S(
   NRª   R   iè  R«   f1.2iÐ  i˜  i   (   s   dof1.2(   R7   Rg   RI   R   R    R¢   R§   R¨   Rœ   R>   R   R   R   R[   R&   R    R!   R¤   R¥   R¬   R¦   (   R   R>   RI   (    (    R   Rf   R  s    (  .Dc      	   C   sE  x>t  d ƒ t  d ƒ t  d ƒ d	 t d d d ƒ f D]	} x  t t t t t t f D]† } |  i t t t | | ƒ ƒ ƒ t t | | ƒ ƒ ƒ |  i t t t i | | ƒ | | ƒ ƒ ƒ t t i | | ƒ | | ƒ ƒ ƒ qS W|  i t t t t | ƒ ƒ |  i t t t t t | ƒ ƒ ƒ |  i t t t t t | ƒ ƒ ƒ q4 Wd  S(
   Ni
   i    id   i   i   i   i2   i   (   i   i   (   R7   Rg   RI   R   R    R¢   R§   R¨   Rœ   R>   R   R   R   Rj   R   R`   Rk   Rl   R    R!   R¤   R¥   R¬   R¦   (   R   R>   RI   (    (    R   Rn   [  s    4  4P"c      	   C   sý   xö d d t  d ƒ d t d d d ƒ f D]Í } xd t t t t t t f D]J } |  i t t | | ƒ d	 d  d
 ƒ ƒ t | | ƒ ƒ d	 d  d
 … ƒ qG W|  i t t t | ƒ d ƒ |  i t t t t | ƒ d ƒ ƒ |  i t t t t | ƒ d ƒ ƒ q( Wd  S(   Nt   12345R   iè  R«   f1.2iÐ  i˜  i   i   i   i
   (   s   dof1.2(   R7   Rg   RI   R   R    R¢   R§   R¨   Rœ   R>   R   R   R   R   RH   R    R!   R¤   R¥   R¬   R¦   (   R   R>   RI   (    (    R   Rs   d  s    (  H"c      	   C   s   xt  d ƒ t  d ƒ t  d ƒ d	 t d d d ƒ f D]ä } xr t t t t t t f D]X } t
 | | ƒ } |  i t t t i | | ƒ ƒ ƒ t t i | | ƒ | | ƒ ƒ ƒ qS W|  i t t t i t | ƒ ƒ |  i t t t t i t | ƒ ƒ ƒ |  i t t t t i t | ƒ ƒ ƒ q4 Wd  S(
   Ni
   i    id   i   i   i   i2   i   (   i   i   (   R7   Rg   RI   R   R    R¢   R§   R¨   Rœ   R>   R&   t   ssR   R   R   Rp   Rk   Rl   R`   R    R!   R¤   R¥   R¬   R¦   (   R   R>   R³   RI   (    (    R   Rq   l  s    4  G%c         C   s&  xt  d ƒ t  d ƒ t  d ƒ d	 t d d d ƒ f D]ê } x t t t t t t f D]g } g  } x3 | | ƒ D]% } t | ƒ p Pn | i | ƒ ql W|  i t t t | | ƒ ƒ ƒ | ƒ qS W|  i t t t t | ƒ ƒ |  i t t t t t | ƒ ƒ ƒ |  i t t t t t | ƒ ƒ ƒ q4 Wd  S(
   Ni
   i    iè  i   i   iÐ  i˜  i   (   i   i   (   R7   Rg   RI   R   R    R¢   R§   R¨   Rœ   R>   t   tgtRK   R	   RL   R   R   R   Rv   R    R!   R¤   R¥   R¬   R¦   (   R   R´   R>   RI   RK   (    (    R   Ry   u  s    4    )"c         C   s0  x)t  d ƒ t  d ƒ t  d ƒ d	 t d d d ƒ f D]ô } x‹ t t t t t t f D]q } g  } x= | | ƒ D]/ } | o t | ƒ o ql n | i | ƒ ql W|  i t t t | | ƒ ƒ ƒ | ƒ qS W|  i t t t t | ƒ ƒ |  i t t t t t | ƒ ƒ ƒ |  i t t t t t | ƒ ƒ ƒ q4 Wd  S(
   Ni
   i    iè  i   i   iÐ  i˜  i   (   i   i   (   R7   Rg   RI   R   R    R¢   R§   R¨   Rœ   R>   R´   RK   R
   RL   R   R   R   Rz   R    R!   R¤   R¥   R¬   R¦   (   R   R´   R>   RI   RK   (    (    R   R{     s    4    )"c         C   s  xd d t  d ƒ d
 t d d d ƒ f D]ä } x| t t t t t t f D]b } t
 | | ƒ ƒ \ } } |  i t | ƒ t | | ƒ ƒ ƒ |  i t | ƒ t | | ƒ ƒ ƒ qG W|  i t t
 t | ƒ ƒ |  i t t t
 t | ƒ ƒ d	 ƒ |  i t t t
 t | ƒ ƒ d	 ƒ q( Wd  S(   NRª   R   iè  R«   f1.2iÐ  i˜  i   i    (   s   dof1.2(   R7   Rg   RI   R   R    R¢   R§   R¨   Rœ   R>   R   t   it1t   it2R   R   R   R    R!   R¤   R¥   R¬   R¦   (   R   R>   RI   R¶   Rµ   (    (    R   R’     s    (  "&#(   R   R   R"   R.   RV   RX   RZ   Rf   Rn   Rs   Rq   Ry   R{   R’   (    (    (    R   R©   $  s   															t   LengthTransparencyc           B   s   t  Z d „  Z RS(   Nc         C   s<   |  i t t d  d ƒ ƒ d ƒ |  i t t t d  ƒ ƒ d  S(   Ni2   (   R   R   RR   Rh   RH   R    R!   (   R   (    (    R   Ri   ™  s    (   R   R   Ri   (    (    (    R   R·   —  s   t   RegressionTestsc           B   s   t  Z d „  Z d „  Z RS(   Nc            sK   d „  } ‡  d †  } g  ‰  | d	 | d
 ƒ t t ƒ } |  i ˆ  | ƒ d  S(   Nc            sj   d g ‡  ‡ d † } t | ƒ } t |  ƒ | d d +t | | ƒ } t | g t |  ƒ Œ  ‰ ˆ i
 ƒ  d  S(   Ni   c            s#   | o | 2ˆ  ˆ i ƒ  ƒ n |  S(   N(   t   firstR“   t   zR   R†   (   R†   R¹   (   R“   Rº   (    R   R>   ¦  s    (   R>   R   t   tuple2t   itemst   tuple1Rj   t   genR[   RR   Rº   R   (   R½   R“   R»   R>   R¼   Rº   R¾   (    (   R“   Rº   R   t   mutatingtuple¢  s    c            s   |  a t t ƒ ˆ  (d  S(   N(   Rx   t   TR   R¹   (   Rx   (   R¹   (    R   R“   ±  s     i   i   i   i   i   i   (   i   i   i   (   i   i   i   (   R¿   R“   R¹   R   RÀ   t   secondR   R   (   R   R“   RÁ   R¿   R¹   (    (   R¹   R   t   test_sf_793826Ÿ  s    	c      	      sÖ   ‡  d †  } ‡  d †  } g  ‰  |  i t t t | ƒ  | t ƒ ƒ ƒ |  i	 ˆ  d d g ƒ g  ‰  |  i t t t | ƒ  | t
 ƒ ƒ ƒ |  i	 ˆ  d d g ƒ g  ‰  |  i t t t | ƒ  ƒ ƒ |  i	 ˆ  d d g ƒ d  S(   Nc           #   s5   ˆ  i d ƒ d Vˆ  i d ƒ t ‚ ˆ  i d ƒ d  S(   Ni    i   i   (   t   histRL   t   AssertionError(    (   RÃ   (    R   t   gen1À  s
    c         #   s3   ˆ  i d ƒ d Vˆ  i d ƒ |  o
 t ‚ n d  S(   Ni   i   i   (   RÃ   RL   R   R   (   R   (   RÃ   (    R   t   gen2Ç  s
    i    i   (   RÅ   RÆ   RÃ   R   R    RÄ   R   R   Rš   R   RT   R-   (   R   RÆ   RÅ   RÃ   (    (   RÃ   R   t   test_sf_950057¼  s    %%(   R   R   RÂ   RÇ   (    (    (    R   R¸     s   	s™   Doctest for examples in the library reference: libitertools.tex


>>> amounts = [120.15, 764.05, 823.14]
>>> for checknum, amount in izip(count(1200), amounts):
...     print 'Check %d is for $%.2f' % (checknum, amount)
...
Check 1200 is for $120.15
Check 1201 is for $764.05
Check 1202 is for $823.14

>>> import operator
>>> for cube in imap(operator.pow, xrange(1,4), repeat(3)):
...    print cube
...
1
8
27

>>> reportlines = ['EuroPython', 'Roster', '', 'alex', '', 'laura', '', 'martin', '', 'walter', '', 'samuele']
>>> for name in islice(reportlines, 3, None, 2):
...    print name.title()
...
Alex
Laura
Martin
Walter
Samuele

>>> from operator import itemgetter
>>> d = dict(a=1, b=2, c=1, d=2, e=1, f=2, g=3)
>>> di = sorted(sorted(d.iteritems()), key=itemgetter(1))
>>> for k, g in groupby(di, itemgetter(1)):
...     print k, map(itemgetter(0), g)
...
1 ['a', 'c', 'e']
2 ['b', 'd', 'f']
3 ['g']

# Find runs of consecutive numbers using groupby.  The key to the solution
# is differencing with a range so that consecutive numbers all appear in
# same group.
>>> data = [ 1,  4,5,6, 10, 15,16,17,18, 22, 25,26,27,28]
>>> for k, g in groupby(enumerate(data), lambda (i,x):i-x):
...     print map(operator.itemgetter(1), g)
...
[1]
[4, 5, 6]
[10]
[15, 16, 17, 18]
[22]
[25, 26, 27, 28]

>>> def take(n, seq):
...     return list(islice(seq, n))

>>> def enumerate(iterable):
...     return izip(count(), iterable)

>>> def tabulate(function):
...     "Return function(0), function(1), ..."
...     return imap(function, count())

>>> def iteritems(mapping):
...     return izip(mapping.iterkeys(), mapping.itervalues())

>>> def nth(iterable, n):
...     "Returns the nth item"
...     return list(islice(iterable, n, n+1))

>>> def all(seq, pred=bool):
...     "Returns True if pred(x) is True for every element in the iterable"
...     for elem in ifilterfalse(pred, seq):
...         return False
...     return True

>>> def any(seq, pred=bool):
...     "Returns True if pred(x) is True for at least one element in the iterable"
...     for elem in ifilter(pred, seq):
...         return True
...     return False

>>> def no(seq, pred=bool):
...     "Returns True if pred(x) is False for every element in the iterable"
...     for elem in ifilter(pred, seq):
...         return False
...     return True

>>> def quantify(seq, pred=bool):
...     "Count how many times the predicate is True in the sequence"
...     return sum(imap(pred, seq))

>>> def padnone(seq):
...     "Returns the sequence elements and then returns None indefinitely"
...     return chain(seq, repeat(None))

>>> def ncycles(seq, n):
...     "Returns the sequence elements n times"
...     return chain(*repeat(seq, n))

>>> def dotproduct(vec1, vec2):
...     return sum(imap(operator.mul, vec1, vec2))

>>> def flatten(listOfLists):
...     return list(chain(*listOfLists))

>>> def repeatfunc(func, times=None, *args):
...     "Repeat calls to func with specified arguments."
...     "   Example:  repeatfunc(random.random)"
...     if times is None:
...         return starmap(func, repeat(args))
...     else:
...         return starmap(func, repeat(args, times))

>>> def pairwise(iterable):
...     "s -> (s0,s1), (s1,s2), (s2, s3), ..."
...     a, b = tee(iterable)
...     try:
...         b.next()
...     except StopIteration:
...         pass
...     return izip(a, b)

This is not part of the examples but it tests to make sure the definitions
perform as purported.

>>> take(10, count())
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> list(enumerate('abc'))
[(0, 'a'), (1, 'b'), (2, 'c')]

>>> list(islice(tabulate(lambda x: 2*x), 4))
[0, 2, 4, 6]

>>> nth('abcde', 3)
['d']

>>> all([2, 4, 6, 8], lambda x: x%2==0)
True

>>> all([2, 3, 6, 8], lambda x: x%2==0)
False

>>> any([2, 4, 6, 8], lambda x: x%2==0)
True

>>> any([1, 3, 5, 9], lambda x: x%2==0,)
False

>>> no([1, 3, 5, 9], lambda x: x%2==0)
True

>>> no([1, 2, 5, 9], lambda x: x%2==0)
False

>>> quantify(xrange(99), lambda x: x%2==0)
50

>>> a = [[1, 2, 3], [4, 5, 6]]
>>> flatten(a)
[1, 2, 3, 4, 5, 6]

>>> list(repeatfunc(pow, 5, 2, 3))
[8, 8, 8, 8, 8]

>>> import random
>>> take(5, imap(int, repeatfunc(random.random)))
[0, 0, 0, 0, 0]

>>> list(pairwise('abcd'))
[('a', 'b'), ('b', 'c'), ('c', 'd')]

>>> list(pairwise([]))
[]

>>> list(pairwise('a'))
[]

>>> list(islice(padnone('abc'), 0, 6))
['a', 'b', 'c', None, None, None]

>>> list(ncycles('abc', 3))
['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c']

>>> dotproduct([1,2,3], [4,5,6])
32

t
   libreftestc         C   s·   t  t t t t f } t i | Œ  |  os t	 t
 d ƒ oc d  k } d  g d } xA t t | ƒ ƒ D]- } t i | Œ  | i ƒ  t
 i ƒ  | | <qb W| GHn t i t
 i t |  ƒ d  S(   Nt   gettotalrefcounti   (   R   R©   R–   R¸   R·   t   test_classest   test_supportt   run_unittestt   verboset   hasattrR(   t   gcRH   t   countsRg   RR   R   t   collectRÉ   t   run_doctestt   modulesR   (   RÍ   R   RÏ   RÊ   RÐ   (    (    R   t	   test_mainš  s    	 
	t   __main__RÍ   (%   t   unittestt   testRË   t	   itertoolst   weakrefRŽ   R(   Rk   R‚   R   R   R   R	   R
   R   R   t   TestCaseR   R–   Rœ   R   R    R¢   R¤   R¥   R¦   R§   R¨   R©   R·   R¸   RÈ   t   __test__RH   RÔ   R   RT   (   RË   RÈ   RÖ   R‚   Rk   R¸   R·   R   R    R   R	   R–   RÔ   R
   R¦   R   R   R¨   R¥   R(   R©   R§   Rœ   RÛ   RŽ   R   R   R¤   R   R¢   (    (    R   t   ?   sB   										ÿ x7		
		s=¾