U
    f/ez#                     @   s  d dl Z d dlZd dlZd dlmZmZmZmZm	Z	m
Z
mZmZmZ d dlmZ d dlmZ eddgdejgddged	d
ddZeejdd Zejdd Zdd Zdd Zdd Zej dddgdd Z!ej dddgdd Z"d d! Z#ej d"ddgd#d$ Z$e%d%d&d' Z&e%d(d)d* Z'ej(e%d%d+d, Z)e%d-d.d/ Z*ej d0d1d2d3ge%d-d4d5 Z+ej(e%d-e%d%d6d7 Z,e-d8d9d: Z.e%d(d;d< Z/d=d> Z0d?d@ Z1dAdB Z2e%dCdDdE Z3e%d(dFdG Z4dS )H    N)		DataFrame
date_rangeread_csv
read_excelread_feather	read_jsonread_parquetread_pickle
read_stata)_test_decorators      g       @tsz
2018-06-18   )Zperiods)intfloatstrdtFindexc                  c   s(   t d} | d}|V  |j  d S )NfsspecZmemory)pytestimportorskip
filesystemstoreclear)r   Zmemfs r   ?/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/io/test_fsspec.py
cleared_fs   s    

r   c                 C   s:   ddl m} |td| jd< tddgd}tt| d S )Nr   )
MemoryFile)dataztest/test.csvmemory://test/test.csvr   )parse_dates)Zfsspec.implementations.memoryr    textr   r   tmassert_frame_equaldf1)r   r    df2r   r   r   test_read_csv(   s    r)   c              	   C   s   ddl m} ddlm} |j  tjtdd t	d W 5 Q R X d}| 
|dd	|d
 tjt|d t	d W 5 Q R X d S )Nr   )registry)known_implementationsZnosuchprotocolmatchznosuchprotocol://test/test.csvztest error messageZ
couldexistzunimportable.CouldExist)classerrzcouldexist://test/test.csv)r   r*   Zfsspec.registryr+   targetr   r   raises
ValueErrorr   setitemImportError)monkeypatchr   r*   r+   err_msgr   r   r   test_reasonable_error1   s    
r7   c                 C   s.   t jddd tddgdd}tt | d S )Nr"   Tr   r   r   r#   Z	index_col)r'   to_csvr   r%   r&   )r   r(   r   r   r   test_to_csvB   s    r:   extxlsZxlsxc                 C   sV   |dkrt d n
t d d| }tj|dd t|dgdd	}tt| d S )
Nr<   xlwtopenpyxlzmemory://test/test.Tr   r   r   r8   )r   r   r'   to_excelr   r%   r&   )r   r;   pathr(   r   r   r   test_to_excelJ   s    

rA   binary_modeTc                 C   s   t d}d}|rdnd}|j||d }tj|dd |jrDt|  |dd}|j||d }t	|d	gd
d}|jrt|  t
t| d S )Nr   r"   wbw)modeTr   rr   r   r8   )r   r   openr'   r9   closedAssertionErrorclosereplacer   r%   r&   )r   rB   r   r@   rE   Zfsspec_objectr(   r   r   r   test_to_csv_fsspec_objectY   s"    


rL   c                 C   sZ   t ddgi}|jdddidd | jd dks4ttdddid	 | jd dksVtd S )
Nar   testmem://test/test.csvtestZ	csv_writeFstorage_optionsr   Zcsv_readrQ   )r   r9   rO   rI   r   
fsspectestdfr   r   r   test_csv_optionss   s      rV   	extensionc                 C   s   |dkrt d n
t d tddgi}d| }|j|ddid	d
 | jd dks\tt|ddid | jd dks~td S )Nr<   r=   r>   rM   r   ztestmem://test/test.rO   writeFrP   readrR   )r   r   r   r?   rO   rI   r   )rT   rW   rU   r@   r   r   r   test_excel_options}   s    

rZ   fastparquetc                 C   s   t jddddd dS )CRegression test for writing to a not-yet-existent GCS Parquet file.r"   Tr[   N)r   enginecompression)r'   
to_parquet)r5   r   r   r   r   test_to_parquet_new_file   s       r`   pyarrowc                 C   s^   t ddgi}|jdddddid | jd dks6ttdddd	id
 | jd d	ksZtdS )r\   rM   r   rN   ra   NrO   parquet_writer]   r^   rQ   parquet_readr]   rQ   r   r_   rO   rI   r   rS   r   r   r   test_arrowparquet_options   s    rg   c                 C   s^   t ddgi}|jdddddid | jd dks6ttdddd	id
 | jd d	ksZtdS )r\   rM   r   rN   r[   NrO   rb   rc   rd   re   rf   rS   r   r   r   test_fastparquet_options   s    rh   Zs3fsc                 C   sL   t td|dt| t td|dt| t td|dt| d S )Nzs3://pandas-test/tips.csvrR   zs3://pandas-test/tips.csv.gzzs3://pandas-test/tips.csv.bz2r%   assert_equalr   )s3_resource	tips_files3sor   r   r   test_from_s3_csv   s    
 

rn   protocolZs3Zs3aZs3nc                 C   s    t td| |dt| d S )Nz%s://pandas-test/tips.csvrR   ri   )rk   rl   ro   rm   r   r   r   test_s3_protocols   s    rp   c                 C   s6   d}t j|ddd |d t|d|d}tt | d S )Nzs3://pandas-test/test.parquetFr[   )r   r]   r^   rQ   re   )r'   r_   r   r%   rj   )rk   rm   fnr(   r   r   r   test_s3_parquet   s        rr   r   c               	   C   s*   d} t jt| d td W 5 Q R X d S )Nz?Missing optional dependency 'fsspec'|fsspec library is requiredr,   r"   )r   r1   r4   r   )msgr   r   r   test_not_present_exception   s    rt   c                 C   sd   t ddgi}|jdddid | jd dks2ttdddid}| jd dksTtt|| d S )NrM   r   testmem://afilerO   Zfeather_writerR   Zfeather_read)r   Z
to_featherrO   rI   r   r%   r&   rT   rU   outr   r   r   test_feather_options   s    rx   c                 C   sd   t ddgi}|jdddid | jd dks2ttdddid}| jd dksTtt|| d S )NrM   r   ru   rO   Zpickle_writerR   Zpickle_read)r   Z	to_picklerO   rI   r	   r%   r&   rv   r   r   r   test_pickle_options   s    ry   c                 C   sh   t ddgi}|jd|ddid | jd dks4ttd|ddid}| jd dksXtt|| d S )NrM   r   ru   rO   Z
json_write)r^   rQ   Z	json_read)r   Zto_jsonrO   rI   r   r%   r&   )rT   r^   rU   rw   r   r   r   test_json_options   s    rz   c                 C   sl   t ddgi}|jdddidd | jd dks4ttdddid	}| jd dksVtt||d
 d S )NrM   r   ru   rO   Zstata_writeF)rQ   Zwrite_indexZ
stata_readrR   Zint64)r   Zto_statarO   rI   r
   r%   r&   Zastyperv   r   r   r   test_stata_options  s      r{   Ztabulatec                 C   sD   t ddgi}|jdddid | jd dks2t| ds@td S )NrM   r   ru   rO   Zmd_writerR   Zafile)r   Zto_markdownrO   rI   catrS   r   r   r   test_markdown_options  s    r}   c               	   C   s   t jtdd tdddid W 5 Q R X t jtdd tdddid W 5 Q R X t } t jtdd t| ddid W 5 Q R X tddgi}t jtdd |jdddid W 5 Q R X d S )	NrQ   r,   	localfilerM   TrR   r   Znonfsspecpath)	r   r1   r2   r   r   ioBytesIOr   r_   )ZbyrU   r   r   r   test_non_fsspec_options   s    r   )5r   Znumpynpr   Zpandasr   r   r   r   r   r   r   r	   r
   Zpandas._testingZ_testingr%   Zpandas.utilr   tdnanr'   r   r9   encoder$   Zfixturer   r)   r7   r:   markZparametrizerA   rL   rV   rZ   Z
skip_if_nor`   rg   Z&skip_array_manager_not_yet_implementedrh   rn   rp   rr   Zskip_if_installedrt   rx   ry   rz   r{   r}   r   r   r   r   r   <module>   sh   ,

	






	

		
