ó
šxŠ\c           @   sò   d  Z  d d l Z d d l Z d d l m Z d d l Z d d l j j Z	 d d l m
 Z
 d d l j Z d d l m Z m Z m Z d d l m Z d d l j j Z d d l m Z d d l m Z m Z d	 e f d
 „  ƒ  YZ d „  Z d S(   s\   
Tests the TextReader class in parsers.pyx, which
is integral to the C engine in parsers.py
iÿÿÿÿN(   t   nan(   t
   TextReader(   t   BytesIOt   StringIOt   map(   t	   DataFrame(   t   assert_frame_equal(   t   TextFileReadert   read_csvt   TestTextReaderc           B   sò   e  Z e j d  e ƒ d „  ƒ Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   t   autousec         C   sj   | d d d ƒ |  _  t j j |  j  d ƒ |  _ t j j |  j  d ƒ |  _ t j j |  j  d ƒ |  _ d  S(   Nt   iot   parsert   datas	   test1.csvs	   test2.csvs   test.xls(   t   dirpatht   ost   patht   joint   csv1t   csv2t   xls1(   t   selft   datapath(    (    sE   lib/python2.7/site-packages/pandas/tests/io/parser/test_textreader.pyt   setup_method   s    c         C   s5   t  |  j d ƒ  } t | ƒ } | j ƒ  Wd  QXd  S(   Nt   rb(   t   openR   R   t   read(   R   t   ft   reader(    (    sE   lib/python2.7/site-packages/pandas/tests/io/parser/test_textreader.pyt   test_file_handle#   s    c         C   s#   t  |  j d d  ƒ} | j ƒ  d  S(   Nt   header(   R   R   t   NoneR   (   R   R   (    (    sE   lib/python2.7/site-packages/pandas/tests/io/parser/test_textreader.pyt   test_string_filename(   s    c      
   C   sA   t  |  j d ƒ ) } t | d t d d  ƒ} | j ƒ  Wd  QXd  S(   NR   t
   memory_mapR   (   R   R   R   t   TrueR   R   (   R   R   R   (    (    sE   lib/python2.7/site-packages/pandas/tests/io/parser/test_textreader.pyt   test_file_handle_mmap,   s    c         C   sS   t  |  j d ƒ  } | j ƒ  } Wd  QXt | ƒ } t | d d  ƒ} | j ƒ  d  S(   NR   R   (   R   R   R   R   R   R   (   R   R   t   textt   srcR   (    (    sE   lib/python2.7/site-packages/pandas/tests/io/parser/test_textreader.pyt   test_StringIO1   s
    c         C   sY   d } t  t | ƒ d d  ƒ} | j ƒ  } t t t t | d ƒ ƒ ƒ d k sU t ‚ d  S(   Ns	   a
b
a
b
aR   i    i   (	   R   R   R   R   t   lent   setR   t   idt   AssertionError(   R   R   R   t   result(    (    sE   lib/python2.7/site-packages/pandas/tests/io/parser/test_textreader.pyt   test_string_factorize8   s    c         C   s˜   d } t  t | ƒ d t d d  ƒ} | j ƒ  } t j | d t j d d d d g d t j	 ƒƒ t j | d t j d d d d g d t j	 ƒƒ d  S(	   Ns   a,   b
a,   b
a,   b
a,   bt   skipinitialspaceR   i    t   at   dtypei   t   b(
   R   R   R"   R   R   t   tmt   assert_numpy_array_equalt   npt   arrayt   object_(   R   R   R   R+   (    (    sE   lib/python2.7/site-packages/pandas/tests/io/parser/test_textreader.pyt   test_skipinitialspace?   s    	%%c         C   sJ   d } t  t | ƒ d d  ƒ} | j ƒ  } | d j t j k sF t ‚ d  S(   Ns   True
False
True
TrueR   i    (   R   R   R   R   R/   R3   t   bool_R*   (   R   R   R   R+   (    (    sE   lib/python2.7/site-packages/pandas/tests/io/parser/test_textreader.pyt   test_parse_booleansN   s    c         C   s’   d } t  t | ƒ d t d d  ƒ} | j ƒ  } t j | d t j d d d g d t j	 ƒƒ t j | d t j d d d g d t j	 ƒƒ d  S(	   Ns   a  b
a		 "b"
"a"	 	 bt   delim_whitespaceR   i    R.   R/   i   R0   (
   R   R   R"   R   R   R1   R2   R3   R4   R5   (   R   R   R   R+   (    (    sE   lib/python2.7/site-packages/pandas/tests/io/parser/test_textreader.pyt   test_delimit_whitespaceV   s    	""c         C   sc   d } t  t | ƒ d d  ƒ} | j ƒ  } t j d d d g d t j ƒ} t j | d | ƒ d  S(   Ns   a
"hello
there"
thisR   R.   s   hello
theret   thisR/   i    (	   R   R   R   R   R3   R4   R5   R1   R2   (   R   R   R   R+   t   expected(    (    sE   lib/python2.7/site-packages/pandas/tests/io/parser/test_textreader.pyt   test_embedded_newlineb   s
    !c         C   sc   d } t  t | ƒ d d d d d d  ƒ} | j ƒ  } t j d d g ƒ } t j | d	 | ƒ d  S(
   Ns   12345,67
345,678t	   delimitert   :t   decimalt   ,R   g)\ÂÕÈ@g+‡Ùšu@i    (   R   R   R   R   R3   R4   R1   t   assert_almost_equal(   R   R   R   R+   R<   (    (    sE   lib/python2.7/site-packages/pandas/tests/io/parser/test_textreader.pyt   test_euro_decimalk   s    c         C   sl   d } t  t | ƒ d d d d d d  ƒ} | j ƒ  } t j d d g d	 t j ƒ} t j | d
 | ƒ d  S(   Ns   123,456
12,500R>   R?   t	   thousandsRA   R   i@â iÔ0  R/   i    (	   R   R   R   R   R3   R4   t   int64R1   RB   (   R   R   R   R+   R<   (    (    sE   lib/python2.7/site-packages/pandas/tests/io/parser/test_textreader.pyt   test_integer_thousandsu   s    c         C   s\   d } t  t | ƒ d d d d d d  ƒ} | j ƒ  } t d d g ƒ } t j | | ƒ d  S(	   Ns   123.456
12.500R>   R?   RD   t   .R   i@â iÔ0  (   R   R   R   R   R   R1   R   (   R   R   R   R+   R<   (    (    sE   lib/python2.7/site-packages/pandas/tests/io/parser/test_textreader.pyt   test_integer_thousands_alt   s    c         C   sp  d } t  t | ƒ d d d d  ƒ} d } t j t j d | ƒ | j ƒ  Wd  QXt  t | ƒ d d d d  d t d t ƒ} | j ƒ  } i t	 j
 d	 d
 d d g d t ƒd 6t	 j
 d d d d g d t ƒd 6t	 j
 d d d d g d t ƒd 6} t | | ƒ t  t | ƒ d d d d  d t d t ƒ} | j ƒ  | j ƒ  } d | j k sWt ‚ d | j k slt ‚ d  S(   Ns'   a:b:c
d:e:f
g:h:i
j:k:l:m
l:m:n
o:p:q:rR>   R?   R   sC   Error tokenizing data\. C error: Expected 3 fields in line 4, saw 4t   matcht   error_bad_linest   warn_bad_linesR.   t   dt   gt   lR/   i    R0   t   et   ht   mi   t   cR   t   it   ni   s   Skipping line 4s   Skipping line 6(   R   R   R   t   pytestt   raisesR   t   ParserErrorR   t   FalseR3   R4   t   objectt   assert_array_dicts_equalR"   t
   readouterrt   errR*   (   R   t   capsysR   R   t   msgR+   R<   t   captured(    (    sE   lib/python2.7/site-packages/pandas/tests/io/parser/test_textreader.pyt   test_skip_bad_lines‰   s.    		%"%	
c         C   sÑ   d } t  t | ƒ d d d d ƒ} | j } d d d g g } | | k sQ t ‚ | j ƒ  } i t j d	 d
 g d t j ƒd 6t j d d g d t j ƒd	 6t j d d g d t j ƒd 6} t | | ƒ d  S(   Ns%   skip this
skip this
a,b,c
1,2,3
4,5,6R>   RA   R   i   R.   R0   RR   i   i   R/   i    i   i   i   (	   R   R   R   R*   R   R3   R4   RE   RZ   (   R   R   R   R   R<   t   recs(    (    sE   lib/python2.7/site-packages/pandas/tests/io/parser/test_textreader.pyt   test_header_not_enough_lines­   s    	""c         C   sj   d } t  t | ƒ d d d d  d d ƒ} | j ƒ  } i t j d g d d	 t ƒd
 6} t | | ƒ d  S(   Ns,   \"hello world"
\"hello world"
\"hello world"R>   RA   R   t
   escapechars   \s   "hello world"i   R/   i    (   R   R   R   R   R3   R4   RY   RZ   (   R   R   R   R+   R<   (    (    sE   lib/python2.7/site-packages/pandas/tests/io/parser/test_textreader.pyt   test_escapechar¿   s    	#c         C   s   d  S(   N(    (   R   (    (    sE   lib/python2.7/site-packages/pandas/tests/io/parser/test_textreader.pyt   test_eof_has_eolÊ   s    c         C   s   d  S(   N(    (   R   (    (    sE   lib/python2.7/site-packages/pandas/tests/io/parser/test_textreader.pyt   test_na_substitutionÎ   s    c            s3  d ‰  ‡  f d †  } | d d ƒ } | j  ƒ  } | d j d k sI t ‚ t j d d d	 d
 d g d d ƒ} | d | k j ƒ  s‰ t ‚ | d j d k s¢ t ‚ | d d ƒ } | j  ƒ  } | d j d k sÖ t ‚ t j d d d	 d
 d
 g d d ƒ} | d | k j ƒ  st ‚ | d j d k s/t ‚ d  S(   Ns   a,1
aa,2
aaa,3
aaaa,4
aaaaa,5c             s   t  t ˆ  ƒ d d d d  |  S(   NR>   RA   R   (   R   R   R   (   t   kwds(   R   (    sE   lib/python2.7/site-packages/pandas/tests/io/parser/test_textreader.pyt   _make_readerÙ   s    R/   s   S5,i4i    t   S5R.   t   aat   aaat   aaaat   aaaaai   t   i4t   S4(   R   R/   R*   R3   R4   t   all(   R   Rh   R   R+   t	   ex_values(    (   R   sE   lib/python2.7/site-packages/pandas/tests/io/parser/test_textreader.pyt   test_numpy_string_dtypeÑ   s    $$c            s?  d ‰  ‡  f d †  } | d i d d 6d d 6ƒ } | j  ƒ  } | d j d k sW t ‚ | d j d k sp t ‚ | d i t j d 6t d 6ƒ } | j  ƒ  } | d j d k sµ t ‚ | d j d	 k sÎ t ‚ | d i t j d ƒ d 6t j d	 ƒ d 6ƒ } | j  ƒ  } | d j d k s"t ‚ | d j d	 k s;t ‚ d  S(
   Ns   one,two
1,a
2,b
3,c
4,dc             s   t  t ˆ  ƒ d d |  S(   NR>   RA   (   R   R   (   Rg   (   R   (    sE   lib/python2.7/site-packages/pandas/tests/io/parser/test_textreader.pyRh   õ   s    R/   t   u1t   onet   S1i   i    t   O(   R   R/   R*   R3   t   uint8RY   (   R   Rh   R   R+   (    (   R   sE   lib/python2.7/site-packages/pandas/tests/io/parser/test_textreader.pyt   test_pass_dtypeí   s     c            s›   d ‰  ‡  f d †  } | d d ƒ } | j  ƒ  } | ƒ  j  ƒ  } t | ƒ d k sW t ‚ | d | d k j ƒ  sw t ‚ | d | d k j ƒ  s— t ‚ d  S(   Ns    a,b,c
1,2,3
4,5,6
7,8,9
10,11,12c             s   t  t ˆ  ƒ d d |  S(   NR>   RA   (   R   R   (   Rg   (   R   (    sE   lib/python2.7/site-packages/pandas/tests/io/parser/test_textreader.pyRh     s    t   usecolsi   i   (   i   i   (   R   R'   R*   Rp   (   R   Rh   R   R+   t   exp(    (   R   sE   lib/python2.7/site-packages/pandas/tests/io/parser/test_textreader.pyt   test_usecols  s     c         C   s‘   d „  } d } | | d d ƒd } | | d t  ƒd } | | d d ƒd } | | d d ƒd	 } | | d t  ƒd
 } | | d t  ƒd  S(   Nc         [   sY   |  j  d d ƒ } t t |  ƒ |  j ƒ  } t t | ƒ |  j ƒ  } t | | ƒ d  S(   Ns   s   
(   t   replaceR   R   R   RZ   (   R$   t   kwargst	   nice_textR+   R<   (    (    sE   lib/python2.7/site-packages/pandas/tests/io/parser/test_textreader.pyt   _test  s    s    a,b,c1,2,34,5,67,8,910,11,12R>   RA   s*   a  b  c1  2  34  5  67  8  910  11  12R9   s    a,b,c1,2,34,5,6,88,910,11,12sd   A,B,C,D,E,F,G,H,I,J,K,L,M,N,OAAAAA,BBBBB,0,0,0,0,0,0,0,0,0,0,0,0,0,BBBBB,0,0,0,0,0,0,0,0,0,0,0,0,0s   A  B  C  2  34  5  6s   A B C2 34 5 6(   R"   (   R   R   R   t   sample(    (    sE   lib/python2.7/site-packages/pandas/tests/io/parser/test_textreader.pyt   test_cr_delimited  s    	c   	   	   C   s  d } t  t | ƒ d d ƒj ƒ  } i t j d d g d t j ƒd 6t j d d	 g d t ƒd 6t j d
 d	 g d t ƒd 6} t | | ƒ t d g t	 g g d d g d d d g ƒ} t d d d d g d d d d g g d t
 d ƒ d d d g ƒ} t d d d d g d t	 t	 t	 g d d d d g d d t	 t	 g g d t
 d ƒ d d d d d g ƒ} x® t d ƒ D]  } t t d ƒ d d d  d g d! d ƒ} t | | ƒ t t d% d& ƒ d  t
 d ƒ d! d ƒ} t | | ƒ t t d$ ƒ d  t
 d ƒ d! d ƒ} t | | ƒ qpWd  S('   Ns   a,b,c
1,2,3
4,,R>   RA   i   i   R/   i    t   2t    t   3i   R0   t   columnsR.   t   indexRR   t   abcdi   i   i   i	   i
   i   i   i   i   i   i   id   s   a,b
c
t   skiprowst   namest   engines
   1,1,1,1,0
s   
s"   0,1,2,3,4
5,6
7,8,9,10,11
12,13,14s   1,1,1,1,0
1,1,1,1,0
s   

(   R   R   R   R3   R4   RE   RY   RZ   R   R    t   listt   rangeR   R   (	   R   R   R+   R<   R.   R0   RR   t   _t   df(    (    sE   lib/python2.7/site-packages/pandas/tests/io/parser/test_textreader.pyt   test_empty_field_eof6  s0    "-'!$c      
   C   sC   t  t ƒ  d d d d  d d d d g ƒ} t | t ƒ s? t ‚ d  S(   Nt	   chunksizei   R   R‰   R.   R0   RR   (   R   R   R   t
   isinstanceR   R*   (   R   RŽ   (    (    sE   lib/python2.7/site-packages/pandas/tests/io/parser/test_textreader.pyt   test_empty_csv_inputW  s    (   t   __name__t
   __module__RU   t   fixtureR"   R   R   R    R#   R&   R,   R6   R8   R:   R=   RC   RF   RH   R`   Rb   Rd   Re   Rf   Rr   Rx   R{   R   R   R’   (    (    (    sE   lib/python2.7/site-packages/pandas/tests/io/parser/test_textreader.pyR	      s0   											
	
	
	$									!c         C   sR   xK t  j |  ƒ D]: \ } } t j t j | ƒ t j | | ƒ ƒ s t ‚ q Wd  S(   N(   t   compatt	   iteritemsR1   R2   R3   t   asarrayR*   (   t   leftt   rightt   kt   v(    (    sE   lib/python2.7/site-packages/pandas/tests/io/parser/test_textreader.pyRZ   ^  s    (   t   __doc__R   t   numpyR3   R    RU   t   pandas._libs.parserst   _libst   parsersR   R   t   pandas.compatR–   R   R   R   t   pandasR   t   pandas.util.testingt   utilt   testingR1   R   t   pandas.io.parsersR   R   RY   R	   RZ   (    (    (    sE   lib/python2.7/site-packages/pandas/tests/io/parser/test_textreader.pyt   <module>   s   ÿ E