U
    sVc%                     @   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mZ d dlmZ d dlmZ 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dd Z ejdddgdd Z!e"dd d! Z#ej"d"d#d$d%d& Z$ej%e"dd'd( Z&ejj'e"d)d*d+ Z(ejj'ejd,d-d.d/ge"d)d0d1 Z)ejj'ej%e"d)e"dd2d3 Z*e+d4d5d6 Z,e"d"d7d8 Z-d9d: Z.d;d< Z/d=d> Z0e"d?d@dA Z1e"d"dBdC Z2dS )D    N)
	DataFrame
date_rangeread_csv
read_excelread_feather	read_jsonread_parquetread_pickle
read_stata
read_table)_test_decoratorsc                   C   s(   t ddgdtjgddgtdddd	S )
N      g       @tsz
2018-06-18   )Zperiods)intfloatstrdt)r   npnanr    r   r   ?/tmp/pip-unpacked-wheel-xj8nt62q/pandas/tests/io/test_fsspec.pydf1   s    
r   c                  c   s(   t d} | d}|V  |j  d S )NfsspecZmemory)pytestimportorskip
filesystemstoreclear)r   Zmemfsr   r   r   
cleared_fs"   s    

r!   c              	   C   sT   t |jdd }| dd}|| W 5 Q R X tddgd}t|| d S )NFindexztest/test.csvwbmemory://test/test.csvr   )parse_dates)r   to_csvencodeopenwriter   tmassert_frame_equal)r!   r   textwdf2r   r   r   test_read_csv+   s
    r0   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   r1   Zfsspec.registryr2   targetr    r   raises
ValueErrorr   setitemImportError)Zmonkeypatchr!   r1   r2   err_msgr   r   r   test_reasonable_error4   s    
r=   c                 C   s.   |j ddd tddgdd}t|| d S )Nr%   Tr"   r   r   r&   Z	index_col)r'   r   r+   r,   )r!   r   r/   r   r   r   test_to_csvE   s    r?   extxlsZxlsxc                 C   sV   |dkrt d n
t d d| }|j|dd t|dgdd	}t|| d S )
NrA   xlwtopenpyxlzmemory://test/test.Tr"   r   r   r>   )r   r   to_excelr   r+   r,   )r!   r@   r   pathr/   r   r   r   test_to_excelM   s    

rF   binary_modeFTc                 C   s   t d}d}|rdnd}|j||d }|j|dd |jrDt|  |dd}|j||d }t|d	gd
d}|jrt|  t	
|| d S )Nr   r%   r$   r.   )modeTr"   rr   r   r>   )r   r   r)   r'   closedAssertionErrorclosereplacer   r+   r,   )r!   rG   r   r   rE   rH   Zfsspec_objectr/   r   r   r   test_to_csv_fsspec_object\   s"    


rN   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rT   )r   r'   rR   rK   r   
fsspectestdfr   r   r   test_csv_optionsv   s      rY   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 rO   )r   r'   rR   rK   r   rV   r   r   r   test_read_table_options   s      rZ   	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 )NrA   rB   rC   rP   r   ztestmem://test/test.rR   r*   FrS   readrU   )r   r   r   rD   rR   rK   r   )rW   r[   rX   rE   r   r   r   test_excel_options   s    

r]   fastparquetc                 C   s   |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)
to_parquet)r!   r   r   r   r   test_to_parquet_new_file   s       rc   pyarrow2)min_versionc                 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_   rP   r   rQ   rd   NrR   parquet_writer`   ra   rT   parquet_readr`   rT   r   rb   rR   rK   r   rV   r   r   r   test_arrowparquet_options   s    rl   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_   rP   r   rQ   r^   NrR   rg   rh   ri   rj   rk   rV   r   r   r   test_fastparquet_options   s    rm   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.csvrU   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    
 

rs   protocolZs3Zs3aZs3nc                 C   s    t td| |dt| d S )Nz%s://pandas-test/tips.csvrU   rn   )rp   rq   rt   rr   r   r   r   test_s3_protocols   s    ru   c                 C   s6   d}|j |ddd |d t|d|d}t|| d S )Nzs3://pandas-test/test.parquetFr^   )r#   r`   ra   rT   rj   )rb   r   r+   ro   )rp   rr   r   fnr/   r   r   r   test_s3_parquet   s        rw   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 requiredr3   r%   )r   r8   r;   r   )msgr   r   r   test_not_present_exception   s    ry   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 )NrP   r   testmem://afilerR   Zfeather_writerU   Zfeather_read)r   Z
to_featherrR   rK   r   r+   r,   rW   rX   outr   r   r   test_feather_options   s    r}   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 )NrP   r   rz   rR   Zpickle_writerU   Zpickle_read)r   Z	to_picklerR   rK   r	   r+   r,   r{   r   r   r   test_pickle_options  s    r~   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 )NrP   r   rz   rR   Z
json_write)ra   rT   Z	json_read)r   Zto_jsonrR   rK   r   r+   r,   )rW   ra   rX   r|   r   r   r   test_json_options  s    r   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 )NrP   r   rz   rR   Zstata_writeF)rT   Zwrite_indexZ
stata_readrU   Zint64)r   Zto_statarR   rK   r
   r+   r,   Zastyper{   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 )NrP   r   rz   rR   Zmd_writerU   )r   Zto_markdownrR   rK   catrV   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 )	NrT   r3   	localfilerP   TrU   r   Znonfsspecpath)	r   r8   r9   r   r   ioBytesIOr   rb   )ZbyrX   r   r   r   test_non_fsspec_options1  s    r   )3r   Znumpyr   r   Zpandasr   r   r   r   r   r   r   r	   r
   r   Zpandas._testingZ_testingr+   Zpandas.utilr   tdZfixturer   r!   r0   r=   r?   markZparametrizerF   rN   rY   rZ   r]   Z
skip_if_norc   rl   Z&skip_array_manager_not_yet_implementedrm   Z
single_cpurs   ru   rw   Zskip_if_installedry   r}   r~   r   r   r   r   r   r   r   r   <module>   sd   0

	





	

		
