B
    Y0dz#                 @   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   M/var/www/html/venv/lib/python3.7/site-packages/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.csvz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 d Q R X d}| 
|dd	|d
 tjt|d t	d W d 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    
r4   c             C   s.   t jddd tddgdd}tt | d S )Nzmemory://test/test.csvT)r   r   r   )r!   	index_col)r%   to_csvr   r#   r$   )r   r&   r   r   r   test_to_csvB   s    r7   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 )
Nr9   xlwtopenpyxlzmemory://test/test.T)r   r   r   )r!   r5   )r   r   r%   to_excelr   r#   r$   )r   r8   pathr&   r   r   r   test_to_excelJ   s    

r>   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   zmemory://test/test.csvwbw)modeT)r   rr   r   )r!   r5   )r   r   openr%   r6   closedAssertionErrorclosereplacer   r#   r$   )r   r?   r   r=   rB   Zfsspec_objectr&   r   r   r   test_to_csv_fsspec_objectY   s     


rI   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   ztestmem://test/test.csvtestZ	csv_writeF)storage_optionsr   Zcsv_read)rL   )r   r6   rK   rF   r   )
fsspectestdfr   r   r   test_csv_optionss   s    rO   	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 )Nr9   r:   r;   rJ   r   ztestmem://test/test.rK   writeF)rL   r   read)rL   )r   r   r   r<   rK   rF   r   )rM   rP   rN   r=   r   r   r   test_excel_options}   s    

rS   fastparquetc             C   s   t jddddd dS )zCRegression test for writing to a not-yet-existent GCS Parquet file.zmemory://test/test.csvTrT   N)r   enginecompression)r%   
to_parquet)r2   r   r   r   r   test_to_parquet_new_file   s    rX   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 )zCRegression test for writing to a not-yet-existent GCS Parquet file.rJ   r   ztestmem://test/test.csvrY   NrK   parquet_write)rU   rV   rL   parquet_read)rU   rL   )r   rW   rK   rF   r   )rM   rN   r   r   r   test_arrowparquet_options   s    r\   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 )zCRegression test for writing to a not-yet-existent GCS Parquet file.rJ   r   ztestmem://test/test.csvrT   NrK   rZ   )rU   rV   rL   r[   )rU   rL   )r   rW   rK   rF   r   )rM   rN   r   r   r   test_fastparquet_options   s    r]   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.csv)rL   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    


rb   protocolZs3Zs3aZs3nc             C   s    t td| |dt| d S )Nz%s://pandas-test/tips.csv)rL   )r#   r^   r   )r_   r`   rc   ra   r   r   r   test_s3_protocols   s    rd   c             C   s6   d}t j|ddd |d t|d|d}tt | d S )Nzs3://pandas-test/test.parquetFrT   )r   rU   rV   rL   )rU   rL   )r%   rW   r   r#   r^   )r_   ra   fnr&   r   r   r   test_s3_parquet   s
    rf   r   c           	   C   s*   d} t jt| d td W d Q R X d S )Nz?Missing optional dependency 'fsspec'|fsspec library is required)r*   zmemory://test/test.csv)r   r.   r1   r   )msgr   r   r   test_not_present_exception   s    rh   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 )NrJ   r   ztestmem://afilerK   Zfeather_write)rL   Zfeather_read)r   Z
to_featherrK   rF   r   r#   r$   )rM   rN   outr   r   r   test_feather_options   s    rj   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 )NrJ   r   ztestmem://afilerK   Zpickle_write)rL   Zpickle_read)r   Z	to_picklerK   rF   r	   r#   r$   )rM   rN   ri   r   r   r   test_pickle_options   s    rk   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 )NrJ   r   ztestmem://afilerK   Z
json_write)rV   rL   Z	json_read)r   to_jsonrK   rF   r   r#   r$   )rM   rV   rN   ri   r   r   r   test_json_options   s    rm   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 )NrJ   r   ztestmem://afilerK   Zstata_writeF)rL   Zwrite_indexZ
stata_read)rL   Zint64)r   Zto_statarK   rF   r
   r#   r$   Zastype)rM   rN   ri   r   r   r   test_stata_options  s    rn   tabulatec             C   sD   t ddgi}|jdddid | jd dks2t| ds@td S )NrJ   r   ztestmem://afilerK   Zmd_write)rL   Zafile)r   Zto_markdownrK   rF   cat)rM   rN   r   r   r   test_markdown_options  s    rq   c           	   C   s   t jtdd tdddid W d Q R X t jtdd tdddid W d Q R X t } t jtdd t| ddid W d Q R X tddgi}t jtdd |jdddid W d Q R X d S )	NrL   )r*   	localfilerJ   T)rL   r   Znonfsspecpath)	r   r.   r/   r   r   ioBytesIOr   rW   )ZbyrN   r   r   r   test_non_fsspec_options   s    ru   )5rs   numpynpr   Zpandasr   r   r   r   r   r   r   r	   r
   Zpandas._testingZ_testingr#   Zpandas.utilr   tdnanr%   r   r6   encoder"   Zfixturer   r'   r4   r7   markZparametrizer>   rI   rO   rS   Z
skip_if_norX   r\   Z&skip_array_manager_not_yet_implementedr]   rb   rd   rf   Zskip_if_installedrh   rj   rk   rm   rn   rq   ru   r   r   r   r   <module>   sH   ,		


	