ó
šxŠ\c           @   s  d  Z  d d l Z d d l Z d d l m Z d d l m Z d d l m	 Z	 m
 Z
 d d l j j Z d Z d Z d „  Z e j j d	 do dp g ƒ d „  ƒ Z d „  Z e j j d d d g d
 d g f d d d g d d g f g ƒ d „  ƒ Z d „  Z d „  Z d „  Z e j j d d d g ƒ d „  ƒ Z e j j d d d g ƒ e j j d	 d d g d
 d g g ƒ d „  ƒ ƒ Z d „  Z d „  Z d „  Z d  „  Z e j j d! d d
 g e	 d d" d# g d$ d% g g d& d' d( g ƒ f d( d) g e	 d d# d* g d% d+ g g d& d( d) g ƒ f g ƒ d, „  ƒ Z  e j j d	 d d d- g d- d d g g ƒ d. „  ƒ Z! d/ „  Z" d0 „  Z# d1 „  Z$ e j j d	 d d d- g d- d d g g ƒ e j j d2 e% d3 ƒ e% d4 ƒ g ƒ d5 „  ƒ ƒ Z& d6 „  Z' d7 „  Z( e j j d	 d8 d9 g d: d; g g ƒ d< „  ƒ Z) e j j d	 d= d> g d? d@ g g ƒ dA „  ƒ Z* dB „  Z+ dC „  Z, e j j d! dD „  e	 i i dE d 6dF d
 6dG d 6dH 6i dI d 6d d
 6dJ d 6dK 6i d d 6d d
 6d d 6dL 6ƒ f dM „  e	 ƒ  f g ƒ dN „  ƒ Z- e j j d	 d d g dO „  g ƒ dP „  ƒ Z. e j j dQ dq dS d d
 d g e/ dT d ƒ e	 dU dV dW g dU dV dW g dX dY dZ g g ƒ f d[ d\ d] d^ g e/ ƒ  e	 i d
 d- d
 d
 d
 d_ g d\ 6d d` d d d da g d] 6d- d_ d` d- d- dJ g d^ 6ƒ f g ƒ db „  ƒ Z1 e j j dc d d d dd g e/ ƒ  e	 i d
 d_ g d 6d da g d 6d- dJ g d 6d` dI g dd 6ƒ d f d d d de g e/ ƒ  d e j2 df ƒ f d d de g e/ ƒ  d e j2 df ƒ f d d de dg g e/ ƒ  d e j2 dh ƒ f d e/ dT d d2 d\ d] d^ di g ƒ e	 i d
 d_ g d\ 6d da g d] 6d- dJ g d^ 6d` dI g di 6ƒ d f d\ d] d^ de g e/ dT d d2 d\ d] d^ di g ƒ d e j2 df ƒ f d\ d] de g e/ d2 d\ d] d^ di g ƒ d e j2 df ƒ f g ƒ dj „  ƒ Z3 e j j4 dk dl dm e5 ƒ e j j d	 d\ d^ g d d g g ƒ dn „  ƒ ƒ Z6 d S(r   s]   
Tests the usecols functionality during parsing
for all of the parsers defined in parsers.py
iÿÿÿÿN(   t	   Timestamp(   t   StringIO(   t	   DataFramet   Indexs[   'usecols' must either be list-like of all strings, all unicode, all integers or a callable.sA   Usecols do not match columns, columns expected but not found: {0}c         C   sT   d } d d d g } |  } t  j t d t ƒ | j t | ƒ d | ƒWd  QXd  S(   Ns<   a,b,c
        1000,2000,3000
        4000,5000,6000
        i    t   bi   t   matcht   usecols(   t   pytestt   raisest
   ValueErrort   _msg_validate_usecols_argt   read_csvR   (   t   all_parserst   dataR   t   parser(    (    sB   lib/python2.7/site-packages/pandas/tests/io/parser/test_usecols.pyt!   test_raise_on_mixed_dtype_usecols   s
    R   i   i   R   t   cc         C   sw   d } |  } | j  t | ƒ d | ƒ} t d d g d d g d d g d	 d
 g g d d d g ƒ} t j | | ƒ d  S(   Ns    a,b,c
1,2,3
4,5,6
7,8,9
10,11,12R   i   i   i   i   i   i	   i   i   t   columnsR   R   (   R   R   R   t   tmt   assert_frame_equal(   R   R   R   R   t   resultt   expected(    (    sB   lib/python2.7/site-packages/pandas/tests/io/parser/test_usecols.pyt   test_usecols%   s    c         C   s   d } |  } d d g } | j  t | ƒ d | d d d g d d	 ƒ} t d d
 g d d g d d g d d g g d | ƒ} t j | | ƒ d  S(   Ns    a,b,c
1,2,3
4,5,6
7,8,9
10,11,12t   foot   bart   namesR   i   i   t   headeri    i   i   i   i   i	   i   i   R   (   R   R   R   R   R   (   R   R   R   R   R   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/io/parser/test_usecols.pyt   test_usecols_with_names5   s    s   names,usecolst   ac         C   sƒ   d } |  } | j  t | ƒ d | d d  d | ƒ} t d d g d d g d	 d
 g d d g g d d d g ƒ} t j | | ƒ d  S(   Ns   1,2,3
4,5,6
7,8,9
10,11,12R   R   R   i   i   i   i   i   i	   i   i   R   R   R   (   R   R   t   NoneR   R   R   (   R   R   R   R   R   R   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/io/parser/test_usecols.pyt   test_usecols_relative_to_namesF   s    	c      	   C   s   d } |  } | j  t | ƒ d d d g d d  d d d g ƒ} t d d	 g d
 d g d d g d d g g d d d g ƒ} t j | | ƒ d  S(   Ns   1,2,3
4,5,6
7,8,9
10,11,12R   R   R   R   R   i    i   i   i   i   i   i   i
   i   R   (   R   R   R   R   R   R   (   R   R   R   R   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/io/parser/test_usecols.pyt   test_usecols_relative_to_names2Y   s    c         C   su   d } |  } | j  d k r! d n d } t j t d | ƒ3 | j t | ƒ d d d g d	 d  d
 d g ƒWd  QXd  S(   Ns   1,2,3
4,5,6
7,8,9
10,11,12t   pythonsH   Number of passed names did not match number of header fields in the files&   Passed header names mismatches usecolsR   R   R   R   R   R   i   (   t   engineR   R   R	   R   R   R   (   R   R   R   t   msg(    (    sB   lib/python2.7/site-packages/pandas/tests/io/parser/test_usecols.pyt!   test_usecols_name_length_conflicti   s    c         C   sE   |  } d } t  j t d t ƒ | j t | ƒ d d ƒWd  QXd  S(   Ns/   foo, bar, baz
1000, 2000, 3000
4000, 5000, 6000R   R   R   (   R   R   R	   R
   R   R   (   R   R   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/io/parser/test_usecols.pyt   test_usecols_single_stringz   s    R   s   a,b,c,d
1,2,3,4
5,6,7,8s   a,b,c,d
1,2,3,4,
5,6,7,8,c         C   s}   |  } d d d g } t  i d d g d 6d d g d 6d d	 g d 6ƒ } | j t | ƒ d
 | d t ƒ} t j | | ƒ d  S(   NR   R   t   di   i   i   i   i   i   R   t	   index_col(   R   R   R   t   FalseR   R   (   R   R   R   R   R   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/io/parser/test_usecols.pyt   test_usecols_index_col_false…   s
    3!R&   i    c         C   sr   |  } d } t  i d d g d 6d t d d g d d ƒƒ} | j t | ƒ d	 | d
 | ƒ} t j | | ƒ d  S(   Ns   a,b,c,d
A,a,1,one
B,b,2,twoi   i   R   t   indexR   R   t   nameR   R&   (   R   R   R   R   R   R   (   R   R   R&   R   R   R   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/io/parser/test_usecols.pyt   test_usecols_index_col_conflict‘   s    1	c         C   s’   |  } d } t  i d d g d 6d d g d 6d d	 6ƒ } | j d d g ƒ } | j t | ƒ d
 d d d	 g d d d g ƒ} t j | | ƒ d  S(   Ns   a,b,c,d
A,a,1,one
B,b,2,twoR   R   i   i   R   t   onet   twoR%   R   R&   (   R,   R-   (   R   t	   set_indexR   R   R   R   (   R   R   R   R   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/io/parser/test_usecols.pyt    test_usecols_index_col_conflict2ž   s    -!c         C   ss   |  } d } | j  t | ƒ d d d g ƒ} t i d d g d 6d d g d 6d	 d
 d g ƒ} t j | | ƒ d  S(   Ns%   a,b,c
4,apple,bat,5.7
8,orange,cow,10R   R   R   t   applet   oranget   batt   cowR)   i   i   (   R   R   R   R   R   (   R   R   R   R   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/io/parser/test_usecols.pyt   test_usecols_implicit_index_col«   s    !c         C   ss   |  } d } | j  t | ƒ d d d d ƒ} t i d d g d 6d	 d
 g d 6d d d g ƒ} t j | | ƒ d  S(   Ns-   a  b  c
4  apple  bat  5.7
8  orange  cow  10t   seps   \s+R   R   R   R0   R1   R2   R3   R)   i   i   (   R   R   (   R   R   R   R   R   (   R   R   R   R   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/io/parser/test_usecols.pyt   test_usecols_regex_sep¶   s    !c         C   ss   |  } d } | j  t | ƒ d t d d ƒ} t i d d g d 6d d	 g d 6d
 d d g ƒ} t j | | ƒ d  S(   Ns-   a  b  c
4  apple  bat  5.7
8  orange  cow  10t   delim_whitespaceR   R   R   R0   R1   R2   R3   R)   i   i   (   R   R   (   R   R   t   TrueR   R   R   (   R   R   R   R   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/io/parser/test_usecols.pyt   test_usecols_with_whitespaceÁ   s    	s   usecols,expectediè  iÐ  i   iˆ  R   t   2t   0t   1i¸  ip  c         C   s;   |  } d } | j  t | ƒ d | ƒ} t j | | ƒ d  S(   Ns#   2,0,1
1000,2000,3000
4000,5000,6000R   (   R   R   R   R   (   R   R   R   R   R   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/io/parser/test_usecols.pyt%   test_usecols_with_integer_like_headerÌ   s    
i   c         C   s”   d } |  } d d g g } i d d g d 6t  d ƒ t  d ƒ g d 6} t | d	 d d g ƒ} | j t | ƒ d
 | d | ƒ} t j | | ƒ d  S(   Ns1   a,b,c,d,e
0,1,20140101,0900,4
0,1,20140102,1000,4i   i   i    R   s   2014-01-01 09:00:00s   2014-01-02 10:00:00t   c_dR   R   t   parse_dates(   R    R   R   R   R   R   (   R   R   R   R   R?   t   colsR   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/io/parser/test_usecols.pyt   test_usecols_with_parse_datesß   s    		c   
      C   sÄ   |  } d } d d g } | } d g } t  t d ƒ t d ƒ t d ƒ g d d ƒ} i d	 d
 d g d 6} t | d | ƒ} | j t | ƒ d | d d d | d d  d | ƒ}	 t j |	 | ƒ d  S(   NsJ   2008-02-07 09:40,1032.43
2008-02-07 09:50,1042.54
2008-02-07 10:00,1051.65t   datet   valuesi    s   2008-02-07 09:40s   2008-02-07 09:50s   2008-02-07 10:00R*   g…ëQ¸!@g\Âõ(J@gš™™™™n@R)   R?   R&   R   R   R   (   R   R    R   R   R   R   R   R   (
   R   R   R   R   R   R?   R)   R@   R   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/io/parser/test_usecols.pyt   test_usecols_with_parse_dates2õ   s    			c         C   sÕ   |  } d } t  d ƒ } d g } i
 t d ƒ d 6d g d 6d g d 6d	 g d
 6d g d 6d g d 6d g d 6d g d 6d g d 6d g d 6} t | d | ƒ} | j t | ƒ d | d | ƒ} t j | | ƒ d  S(   Ns0   a,b,c,d,e,f,g,h,i,j
2016/09/21,1,1,2,3,4,5,6,7,8t
   abcdefghiji    s
   2016-09-21R   i   R   R   i   R%   i   t   ei   t   fi   t   gi   t   hi   t   ii   t   jR   R   R?   (   t   listR    R   R   R   R   R   (   R   R   R   R   R?   R@   R   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/io/parser/test_usecols.pyt   test_usecols_with_parse_dates3  s    	!	c         C   sØ   d } t  d ƒ } d d g g } |  } i	 d d 6d g d 6d g d	 6d
 g d 6d g d 6d g d 6d g d 6d g d 6d g d 6} t | d d g t  d ƒ ƒ} | j t | ƒ d | d | ƒ} t j | | ƒ d  S(   Ns0   a,b,c,d,e,f,g,h,i,j
2016/09/21,1,1,2,3,4,5,6,7,8RE   i    i   s   2016/09/21 1t   a_bR   i   R%   i   RF   i   RG   i   RH   i   RI   i   RJ   i   RK   R   t   cdefghijR   R?   (   RL   R   R   R   R   R   (   R   R   R   R?   R   R@   R   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/io/parser/test_usecols.pyt   test_usecols_with_parse_dates4!  s    
(+	R   t   abcdet   acdc   	      C   sš   d } d d g g } |  } i d d g d 6t  d ƒ t  d ƒ g d 6} t | d	 d d g ƒ} | j t | ƒ d
 | d | d | ƒ} t j | | ƒ d  S(   Ns'   0,1,20140101,0900,4
0,1,20140102,1000,4i   i   i    R   s   2014-01-01 09:00:00s   2014-01-02 10:00:00R>   R   R   R?   R   (   R    R   R   R   R   R   (	   R   R   R   t   sR?   R   R@   R   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/io/parser/test_usecols.pyt'   test_usecols_with_parse_dates_and_names1  s    		c         C   s‹   d } |  } i i d d 6d d 6d d 6d 6i d	 d 6d d 6d
 d 6d 6} t  | ƒ } | j t | ƒ d d d g ƒ} t j | | ƒ d  S(   NsP   AAA,BBB,CCC,DDD
0.056674973,8,True,a
2.613230982,2,False,b
3.568935038,7,False,agÈ‡€­?i    gõ«$¥åç@i   gr.Ð-@i   t   AAAi   i   t   BBBR   u   AAAu   BBB(   R   R   R   R   R   (   R   R   R   t   exp_dataR   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/io/parser/test_usecols.pyt!   test_usecols_with_unicode_stringsL  s    !c         C   s‹   d } |  } i i d d 6d d 6d d 6d 6i d	 d 6d d 6d
 d 6d 6} t  | ƒ } | j t | ƒ d d d g ƒ} t j | | ƒ d  S(   NsH   A,B,C,D
0.056674973,8,True,a
2.613230982,2,False,b
3.568935038,7,False,agÈ‡€­?i    gõ«$¥åç@i   gr.Ð-@i   t   Ai   i   t   BR   u   Au   B(   R   R   R   R   R   (   R   R   R   RW   R   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/io/parser/test_usecols.pyt-   test_usecols_with_single_byte_unicode_stringsb  s    !u   AAARV   RU   u   BBBc         C   sE   d } |  } t  j t d t ƒ | j t | ƒ d | ƒWd  QXd  S(   NsP   AAA,BBB,CCC,DDD
0.056674973,8,True,a
2.613230982,2,False,b
3.568935038,7,False,aR   R   (   R   R   R	   R
   R   R   (   R   R   R   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/io/parser/test_usecols.pyt(   test_usecols_with_mixed_encoding_stringsx  s    s	   ã‚ã‚ã‚s   ã„ã„u	   ã‚ã‚ã‚u   ã„ã„c         C   s…   d } |  } i i d d 6d d 6d d 6d 6i d	 d 6d d 6d
 d 6d 6} t  | ƒ } | j t | ƒ d | ƒ} t j | | ƒ d  S(   Nsh   ã‚ã‚ã‚,ã„ã„,ã†ã†ã†,ãˆãˆãˆãˆ
0.056674973,8,True,a
2.613230982,2,False,b
3.568935038,7,False,agÈ‡€­?i    gõ«$¥åç@i   gr.Ð-@i   s	   ã‚ã‚ã‚i   i   s   ã„ã„R   (   R   R   R   R   R   (   R   R   R   R   RW   R   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/io/parser/test_usecols.pyt'   test_usecols_with_multi_byte_characters„  s    c         C   sG   d } t  ƒ  } |  } | j t | ƒ d t ƒ  ƒ} t j | | ƒ d  S(   Ns   a,b,c
1,2,3
4,5,6R   (   R   R   R   t   setR   R   (   R   R   R   R   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/io/parser/test_usecols.pyt   test_empty_usecols  s
    	c         C   sk   |  } d } t  j d d g ƒ } t d d g g d | ƒ} | j t | ƒ d | ƒ} t j | | ƒ d  S(   Ns   a,b,c
1,2,3R   R   i   i   R   R   (   t   npt   arrayR   R   R   R   R   (   R   R   R   R   R   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/io/parser/test_usecols.pyt   test_np_array_usecols¦  s    c         C   s   |  j  ƒ  d k S(   NRU   RV   t   DDD(   RU   RV   Rc   (   t   upper(   t   x(    (    sB   lib/python2.7/site-packages/pandas/tests/io/parser/test_usecols.pyt   <lambda>²  s    gÈ‡€­?gõ«$¥åç@gr.Ð-@t   AaAi   i   t   bBbt   dddc         C   s   t  S(   N(   R'   (   Re   (    (    sB   lib/python2.7/site-packages/pandas/tests/io/parser/test_usecols.pyRf   ¼  s    c         C   s;   d } |  } | j  t | ƒ d | ƒ} t j | | ƒ d  S(   NsP   AaA,bBb,CCC,ddd
0.056674973,8,True,a
2.613230982,2,False,b
3.568935038,7,False,aR   (   R   R   R   R   (   R   R   R   R   R   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/io/parser/test_usecols.pyt   test_callable_usecols±  s    c         C   s
   |  d k S(   NR   R   (   R   R   (    (   Re   (    (    sB   lib/python2.7/site-packages/pandas/tests/io/parser/test_usecols.pyRf   Ê  s    c         C   sy   d } |  } d d d g } t  i d d g d 6t j d g d 6ƒ } | j t | ƒ d | d | ƒ} t j | | ƒ d  S(	   Ns	   1,2
1,2,3R   R   R   i   i   R   R   (   R   R`   t   nanR   R   R   R   (   R   R   R   R   R   R   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/io/parser/test_usecols.pyt   test_incomplete_first_rowÊ  s    )!s   data,usecols,kwargs,expecteds	   19,29,39
s   10,20,30,40R   i   i   i'   i
   i   i   s4   A,B,C
1,2,3
3,4,5
1,2,4,5,1,6
1,2,3,,,1,
1,2,3
5,6,7RY   RZ   t   Ci   i   i   c         C   s8   |  } | j  t | ƒ d | | } t j | | ƒ d  S(   NR   (   R   R   R   R   (   R   R   R   t   kwargsR   R   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/io/parser/test_usecols.pyt   test_uneven_length_colsÖ  s    s   usecols,kwargs,expected,msgR%   RG   s   \['f'\]RH   s   \[('f', 'g'|'g', 'f')\]t   Dc         C   s‰   d } | j  d | ƒ |  } | d  k r] t j t d | ƒ | j t | ƒ |  Wd  QXn( | j t | ƒ |  } t j | | ƒ d  S(   Ns   a,b,c,d
1,2,3,4
5,6,7,8R   R   (	   t   updateR   R   R   R	   R   R   R   R   (   R   R   Rn   R   R"   R   R   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/io/parser/test_usecols.pyt%   test_raises_on_usecols_names_mismatché  s    t   reasons=   see gh-16469: works on the C engine but not the Python enginet   strictc         C   s   d } d d d d g } |  } | j  t | ƒ d d d | d	 | ƒ} t i d
 d g d 6d d g d 6ƒ } t j | | ƒ d  S(   Ns   a,b,c,d
1,2,3,4
5,6,7,8RY   RZ   Rm   Rp   R   i    R   R   i   i   i   i   (   R   R   R   R   R   (   R   R   R   R   R   R   R   (    (    sB   lib/python2.7/site-packages/pandas/tests/io/parser/test_usecols.pyt/   test_usecols_subset_names_mismatch_orig_columns
  s    &(   i   i   (   R   R   s   19,29,39
19,29,39
(7   t   __doc__t   numpyR`   R   t   pandas._libs.tslibR    t   pandas.compatR   t   pandasR   R   t   pandas.util.testingt   utilt   testingR   R
   t   _msg_validate_usecols_namesR   t   markt   parametrizeR   R   R   R   R#   R$   R(   R+   R/   R4   R6   R9   R=   RA   RD   RM   RP   RL   RT   RX   R[   R\   R]   R_   Rb   Rj   Rl   t   dictR   Ro   t   formatRr   t   xfailR'   Ru   (    (    (    sB   lib/python2.7/site-packages/pandas/tests/io/parser/test_usecols.pyt   <module>   sª   	$	*			3				''!6			*			0				"!-<%1	C!--$$