ó
šxŠ\c           @   s†  d  Z  d d l Z d d l Z d d l Z d d l m Z m Z m Z d d l j	 j
 Z d d l Z d d l j	 j Z d d l j j Z d e f d „  ƒ  YZ e e g Z y! d d l m Z e j e ƒ Wn e k
 rÞ n Xy! d d l m Z e j e ƒ Wn e k
 rn Xe j  j! e j  j" e# ƒ ƒ Z$ e j% j& d ƒ d	 e f d
 „  ƒ  Yƒ Z' e j( d „  ƒ Z) d e f d „  ƒ  YZ* d S(   s0   
Tests for the pandas.io.common functionalities
iÿÿÿÿN(   t   FileNotFoundErrort   StringIOt   is_platform_windowst   CustomFSPathc           B   s    e  Z d  Z d „  Z d „  Z RS(   s%   For testing fspath on unknown objectsc         C   s   | |  _  d  S(   N(   t   path(   t   selfR   (    (    s:   lib/python2.7/site-packages/pandas/tests/io/test_common.pyt   __init__   s    c         C   s   |  j  S(   N(   R   (   R   (    (    s:   lib/python2.7/site-packages/pandas/tests/io/test_common.pyt
   __fspath__   s    (   t   __name__t
   __module__t   __doc__R   R   (    (    (    s:   lib/python2.7/site-packages/pandas/tests/io/test_common.pyR      s   	(   t   Path(   t   locals*   ignore:can't resolve package:ImportWarningt   TestCommonIOCapabilitiesc           B   sº  e  Z d  Z d „  Z d „  Z e j d ƒ d „  ƒ Z e j d ƒ d „  ƒ Z d „  Z	 e
 j j d dI dJ dK dL dM g ƒ e
 j j d e ƒ d „  ƒ ƒ Z d „  Z d „  Z d „  Z e
 j j d e j d e d f e j d e d f e j d e d f e j d e d f e j d e d f e j d e d  f e j d e d! f e j d e d" f e j d e d# f e j  d e d$ f g
 ƒ d% „  ƒ Z! e
 j j d e j d e d f e j d e d f e j d e d f e j d e d f e j d e d f e j d e d  f e j d e d! f e j d e d" f e j d e d# f e j  d e d$ f g
 ƒ d& „  ƒ Z" d' „  Z# e
 j j d( e j d dN f e j d dO f e j d dP f e j d dQ f e j d dR f e j d dS f e j d dT f e j d dU f e j d dV f e j  d dW f g
 ƒ d8 „  ƒ Z$ d9 „  Z% e
 j j d: d; i  d f d< i d= d> 6d= f d? i  d f d@ i  d f dA i  d f dB i  d f dC i  d f dD i  d f dE i  d f g	 ƒ dF „  ƒ Z& dG „  Z' RS(X   si   index,A,B,C,D
foo,2,3,4,5
bar,7,8,9,10
baz,12,13,14,15
qux,12,13,14,15
foo2,12,13,14,15
bar2,12,13,14,15
c         C   sa   d } t  j | ƒ } | | k s' t ‚ t j j | ƒ s? t ‚ t j j | ƒ | k s] t ‚ d  S(   Ns
   ~/sometest(   t   icomt   _expand_usert   AssertionErrort   osR   t   isabst
   expanduser(   R   t   filenamet   expanded_name(    (    s:   lib/python2.7/site-packages/pandas/tests/io/test_common.pyt   test_expand_user9   s
    c         C   sI   d } t  j | ƒ } | | k s' t ‚ t j j | ƒ | k sE t ‚ d  S(   Ns   /somefolder/sometest(   R   R   R   R   R   R   (   R   R   R   (    (    s:   lib/python2.7/site-packages/pandas/tests/io/test_common.pyt   test_expand_user_normal_pathA   s    t   pathlibc         C   sa   t  j t d ƒ ƒ } | d k s' t ‚ t  j t d ƒ ƒ } | t j j d d ƒ k s] t ‚ d  S(   Nt   .s   foo//bart   foot   bar(   R   t   _stringify_pathR   R   R   R   t   join(   R   t   rel_patht   redundant_path(    (    s:   lib/python2.7/site-packages/pandas/tests/io/test_common.pyt   test_stringify_path_pathlibH   s    s   py.pathc         C   sR   t  j j d d ƒ } t  j j | ƒ } t | ƒ } t j | ƒ | k sN t ‚ d  S(   NR   R   (   R   R   R   t   abspatht	   LocalPathR   R   R   (   R   R   t   abs_patht   lpath(    (    s:   lib/python2.7/site-packages/pandas/tests/io/test_common.pyt   test_stringify_path_localpathO   s    c         C   s1   t  d ƒ } t j | ƒ } | d k s- t ‚ d  S(   Ns   foo/bar.csv(   R   R   R   R   (   R   t   pt   result(    (    s:   lib/python2.7/site-packages/pandas/tests/io/test_common.pyt   test_stringify_path_fspathV   s    s   extension,expectedt    s   .gzt   gzips   .bz2t   bz2s   .zipt   zips   .xzt   xzt	   path_typec         C   s;   | d | ƒ } t  j | d d ƒ} | | k s7 t ‚ d  S(   Ns   foo/bar.csvt   compressiont   infer(   R   t   _infer_compressionR   (   R   t	   extensiont   expectedR.   R   R/   (    (    s:   lib/python2.7/site-packages/pandas/tests/io/test_common.pyt    test_infer_compression_from_path[   s    	c         C   sz   d } t  j | ƒ \ } } } } | | k s3 t ‚ t j j | ƒ sK t ‚ t j j | ƒ | k si t ‚ | sv t ‚ d  S(   Ns
   ~/sometest(   R   t   get_filepath_or_bufferR   R   R   R   R   (   R   R   t   filepath_or_buffert   _t   should_close(    (    s:   lib/python2.7/site-packages/pandas/tests/io/test_common.pyt%   test_get_filepath_or_buffer_with_pathh   s    c         C   sG   t  ƒ  } t j | ƒ \ } } } } | | k s6 t ‚ | sC t ‚ d  S(   N(   R   R   R5   R   (   R   t   input_bufferR6   R7   R8   (    (    s:   lib/python2.7/site-packages/pandas/tests/io/test_common.pyt'   test_get_filepath_or_buffer_with_bufferq   s
    	c         C   sÃ   t  j t |  j ƒ d d ƒ} t  j | d t ƒ} t  j t |  j ƒ ƒ } t j | | ƒ t  j t |  j ƒ d d ƒ} t | ƒ } t j | | j	 d g ƒ t j t  j | ƒ | j	 d ƒ d  S(   Nt	   chunksizei   t   ignore_indexi    (
   t   pdt   read_csvR   t   data1t   concatt   Truet   tmt   assert_frame_equalt   nextt   iloc(   R   t   readerR'   R3   t   itt   first(    (    s:   lib/python2.7/site-packages/pandas/tests/io/test_common.pyt   test_iteratorx   s    s#   reader, module, error_class, fn_extR   t   csvt   txtt   xlrdt   xlsxt   feathert   tablest   h5t   dtat   sas7bdatt   jsont   mpt   picklec      	   C   s¤   t  j | ƒ t j j t d d | ƒ } d j | ƒ } d j | ƒ } d } d }	 d j | | ƒ }
 t  j | d d	 j | | | |	 |
 ƒ ƒ | | ƒ Wd  QXd  S(
   Nt   datas   does_not_exist.s/   File (b')?.+does_not_exist\.{}'? does not exists=   \[Errno 2\] No such file or directory: '.+does_not_exist\.{}'s   Expected object or values7   path_or_buf needs to be a string file path or file-likesL   \[Errno 2\] File .+does_not_exist\.{} does not exist: '.+does_not_exist\.{}'t   matchs   ({}|{}|{}|{}|{})(   t   pytestt   importorskipR   R   R   t   HEREt   formatt   raises(   R   RG   t   modulet   error_classt   fn_extR   t   msg1t   msg2t   msg3t   msg4t   msg5(    (    s:   lib/python2.7/site-packages/pandas/tests/io/test_common.pyt   test_read_non_existant„   s    		c      	   C   s·   t  j | ƒ t j j d d | ƒ } | j t d d „  ƒ d j | ƒ } d j | ƒ } d }	 d }
 d	 j | | ƒ } t  j | d
 d j | | |	 |
 | ƒ ƒ | | ƒ Wd  QXd  S(   Nt   ~s   does_not_exist.R   c         S   s   t  j j d |  ƒ S(   NR   (   R   R   R   (   t   x(    (    s:   lib/python2.7/site-packages/pandas/tests/io/test_common.pyt   <lambda>²   s    s/   File (b')?.+does_not_exist\.{}'? does not exists=   \[Errno 2\] No such file or directory: '.+does_not_exist\.{}'s0   Unexpected character found when decoding 'false's7   path_or_buf needs to be a string file path or file-likesL   \[Errno 2\] File .+does_not_exist\.{} does not exist: '.+does_not_exist\.{}'RX   s   ({}|{}|{}|{}|{})(	   RY   RZ   R   R   R   t   setattrR   R\   R]   (   R   RG   R^   R_   R`   t   monkeypatchR   Ra   Rb   Rc   Rd   Re   (    (    s:   lib/python2.7/site-packages/pandas/tests/io/test_common.pyt   test_read_expands_user_home_dir    s    
		c      
   C   ss   t  j j t d d ƒ } d } d } t j t d d j | | ƒ ƒ( t j	 t
 ƒ  t j | ƒ Wd  QXWd  QXd  S(	   NRW   s   does_not_exist.RK   s,   File b'.+does_not_exist\.csv' does not existsN   \[Errno 2\] File .+does_not_exist\.csv does not exist: '.+does_not_exist\.csv'RX   s   ({}|{})s   does_not_exist.csv(   R   R   R   R[   RY   R]   R    R\   RC   t   assert_produces_warningt   FutureWarningR>   t
   read_table(   R   R   Ra   Rb   (    (    s:   lib/python2.7/site-packages/pandas/tests/io/test_common.pyt!   test_read_non_existant_read_tableÁ   s    s   reader, module, patht   ioRW   s   iris.csvs   fixed_width_format.txts
   test1.xlsxs   feather-0_3_1.feathert
   legacy_hdfs   datetimetz_object.h5s   stata10_115.dtat   sass   test1.sas7bdats   tsframe_v012.jsont   msgpacks   frame.mps   categorical_0_14_1.picklec         C   ss   t  j | ƒ | | Œ  } t | ƒ } | | ƒ } | | ƒ } | j d ƒ r_ t j | | ƒ n t j | | ƒ d  S(   Ns   .pickle(   RY   RZ   R   t   endswithRC   t   assert_categorical_equalRD   (   R   RG   R^   R   t   datapatht   mypathR'   R3   (    (    s:   lib/python2.7/site-packages/pandas/tests/io/test_common.pyt   test_read_fspath_allË   s    c         C   sž   | d d d ƒ } t  | ƒ } t j t ƒ  t j | ƒ } Wd  QXt j t ƒ  t j | ƒ } Wd  QX| j d ƒ rŠ t j | | ƒ n t j | | ƒ d  S(   NRq   RW   s   iris.csvs   .pickle(	   R   RC   Rm   Rn   R>   Ro   Ru   Rv   RD   (   R   Rw   R   Rx   R'   R3   (    (    s:   lib/python2.7/site-packages/pandas/tests/io/test_common.pyt   test_read_fspath_all_read_tableæ   s    s"   writer_name, writer_kwargs, modulet   to_csvt   to_excelt   xlwtt   enginet
   to_feathert   to_htmlt   to_jsont   to_latext
   to_msgpackt	   to_picklet   to_statac         C   sø   t  j d ƒ } t  j d ƒ } t j i d d g d 6ƒ } | ² } | £ } t j | ƒ t | ƒ }	 t | | ƒ }
 |
 | |  t | d ƒ  } | j	 ƒ  } Wd  QX|
 |	 |  t | d ƒ  } | j	 ƒ  } Wd  QX| | k sè t
 ‚ Wd  QXWd  QXd  S(   Nt   stringt   fspathi   i   t   At   rb(   RC   t   ensure_cleanR>   t	   DataFrameRY   RZ   R   t   getattrt   opent   readR   (   R   t   writer_namet   writer_kwargsR^   t   p1t   p2t   dfR†   R‡   Rx   t   writert   fR3   R'   (    (    s:   lib/python2.7/site-packages/pandas/tests/io/test_common.pyt   test_write_fspath_allõ   s    	 	c   	      C   sÕ   t  j d ƒ t j i d d g d 6ƒ } t j d ƒ } t j d ƒ } | r } | c } t | ƒ } | j | d d ƒ| j | d d ƒt j | d d ƒ} t j | d d ƒ} Wd  QXWd  QXt j	 | | ƒ d  S(	   NRP   i   i   Rˆ   R†   R‡   t   keyR   (
   RY   RZ   R>   R‹   RC   RŠ   R   t   to_hdft   read_hdfRD   (	   R   R“   R‘   R’   R†   R‡   Rx   R'   R3   (    (    s:   lib/python2.7/site-packages/pandas/tests/io/test_common.pyt   test_write_fspath_hdf5  s    	 	!N(   R)   N(   s   .gzR*   (   s   .bz2R+   (   s   .zipR,   (   s   .xzR-   (   Rq   RW   s   iris.csv(   Rq   RW   s   fixed_width_format.txt(   Rq   RW   s
   test1.xlsx(   Rq   RW   s   feather-0_3_1.feather(   Rq   RW   Rr   s   datetimetz_object.h5(   Rq   RW   s   stata10_115.dta(   Rq   Rs   RW   s   test1.sas7bdat(   Rq   RT   RW   s   tsframe_v012.json(   Rq   Rt   RW   s   frame.mp(   Rq   RW   s   categorical_0_14_1.pickle((   R   R	   R@   R   R   t   tdt
   skip_if_noR    R%   R(   RY   t   markt   parametrizet   Nonet
   path_typesR4   R9   R;   RJ   R>   R?   R    t   read_fwft
   read_excelt   read_feathert	   ExceptionR™   t
   read_statat   read_sast	   read_jsont
   ValueErrort   read_msgpackt   read_pickleRf   Rl   Rp   Ry   Rz   R–   Rš   (    (    (    s:   lib/python2.7/site-packages/pandas/tests/io/test_common.pyR   .   s~   					!				$$	
	!	c         C   s   |  d d d ƒ S(   NRq   RW   s   test_mmap.csv(    (   Rw   (    (    s:   lib/python2.7/site-packages/pandas/tests/io/test_common.pyt	   mmap_file)  s    t   TestMMapWrapperc           B   s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C   s´   t  d ƒ } d „  | _ t ƒ  r0 d } t } n d } t j } t j | d | ƒ t j	 | ƒ Wd  QXt
 | d ƒ } | j ƒ  d } t j t d | ƒ t j	 | ƒ Wd  QXd  S(   Ns   I am not a filec           S   s   d S(   Niÿÿÿÿ(    (    (    (    s:   lib/python2.7/site-packages/pandas/tests/io/test_common.pyRi   2  s    s   The parameter is incorrects
   [Errno 22]RX   t   rs   I/O operation on closed file(   R   t   filenoR   t   OSErrort   mmapt   errorRY   R]   R   t   MMapWrapperR   t   closeR¨   (   R   R«   t   non_filet   msgt   errt   target(    (    s:   lib/python2.7/site-packages/pandas/tests/io/test_common.pyt   test_constructor_bad_file0  s    			
c         C   s«   t  | d ƒ  } t j | ƒ } Wd  QXt | j ƒ } g  | D] } | j d ƒ s= | ^ q= } | j d ƒ x# | D] } t | | ƒ sr t ‚ qr Wt | d ƒ s§ t ‚ d  S(   NR­   t   __t   __next__R   (	   R   R   R²   t   dirR°   t
   startswitht   appendt   hasattrR   (   R   R«   R·   t   wrappert   attrst   attr(    (    s:   lib/python2.7/site-packages/pandas/tests/io/test_common.pyt   test_get_attrF  s    c         C   s˜   t  | d ƒ " } t j | ƒ } | j ƒ  } Wd  QXx8 | D]0 } t | ƒ } | j ƒ  | j ƒ  k s: t ‚ q: Wt j t	 d d ƒ t | ƒ Wd  QXd  S(   NR­   RX   s   ^$(
   R   R   R²   t	   readlinesRE   t   stripR   RY   R]   t   StopIteration(   R   R«   R·   R¿   t   linest   linet	   next_line(    (    s:   lib/python2.7/site-packages/pandas/tests/io/test_common.pyt	   test_nextT  s    "c         C   sa   t  j ƒ  O } t  j ƒ  } | j | ƒ t j t d d ƒ t j | d d ƒWd  QXWd  QXd  S(   NRX   s   Unknown engineR~   t   pyt(	   RC   RŠ   t   makeDataFrameR{   RY   R]   R¨   R>   R?   (   R   R   R“   (    (    s:   lib/python2.7/site-packages/pandas/tests/io/test_common.pyt   test_unknown_engine`  s
    (   R   R	   R¸   RÂ   RÉ   RÌ   (    (    (    s:   lib/python2.7/site-packages/pandas/tests/io/test_common.pyR¬   .  s   			(+   R
   R°   R   RY   t   pandas.compatR    R   R   t   pandas.util._test_decoratorst   utilt   _test_decoratorsR›   t   pandasR>   t   pandas.util.testingt   testingRC   t   pandas.io.commonRq   t   commonR   t   objectR   t   strR    R   R   R½   t   ImportErrort   py.pathR   R"   R   R!   t   dirnamet   __file__R[   R   t   filterwarningsR   t   fixtureR«   R¬   (    (    (    s:   lib/python2.7/site-packages/pandas/tests/io/test_common.pyt   <module>   s2   
ú