U
    +if'                     @   sB  d dl Z d dlZd dlZd dlm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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&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(d0d1 Z-ej"j.e)d2d3d4 Z/ej"j.ej"#d5d6d7d8ge)d2d9d: Z0ej"j.ej,e)d2e)d(d;d< Z1e2d=d>d? Z3e)d+d@dA Z4dBdC Z5dDdE Z6dFdG Z7e)dHdIdJ Z8e)d+dKdL Z9dS )M    N)VERSIONS)
	DataFrame
date_rangeread_csv
read_excelread_feather	read_jsonread_parquetread_pickle
read_stata
read_table)_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   N/home/mars/bis/venv/lib/python3.8/site-packages/pandas/tests/io/test_fsspec.py
cleared_fs"   s    

r!   c              	   C   s@   |  dd}|t W 5 Q R X tddgd}tt| d S )Nztest/test.csvwbmemory://test/test.csvr   )parse_dates)openwritetextr   tmassert_frame_equaldf1)r!   w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_error3   s    
r;   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_csvD   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   r<   )r   r   r*   to_excelr   r(   r)   )r!   r?   pathr,   r   r   r    test_to_excelL   s    

rE   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#   r"   r+   )modeTr   rr   r   r<   )r   r   r%   r*   r=   closedAssertionErrorclosereplacer   r(   r)   )r!   rF   r   rD   rG   Zfsspec_objectr,   r   r   r    test_to_csv_fsspec_object[   s"    


rM   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rS   )r   r=   rQ   rJ   r   
fsspectestdfr   r   r    test_csv_optionsu   s      rX   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 rN   )r   r=   rQ   rJ   r   rU   r   r   r    test_read_table_options   s      rY   	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@   rA   rB   rO   r   ztestmem://test/test.rQ   r&   FrR   readrT   )r   r   r   rC   rQ   rJ   r   )rV   rZ   rW   rD   r   r   r    test_excel_options   s    

r\   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)r9   r!   r   r   r    test_to_parquet_new_file   s       rb   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^   rO   r   rP   rc   NrQ   parquet_writer_   r`   rS   parquet_readr_   rS   r   ra   rQ   rJ   r	   rU   r   r   r    test_arrowparquet_options   s    rk   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^   rO   r   rP   r]   NrQ   rf   rg   rh   ri   rj   rU   r   r   r    test_fastparquet_options   s    rl   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.csvrT   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    
 

rr   protocolZs3Zs3aZs3nc                 C   s    t td| |dt| d S )Nz%s://pandas-test/tips.csvrT   rm   )ro   rp   rs   rq   r   r   r    test_s3_protocols   s    rt   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`   rS   ri   )r*   ra   r	   r(   rn   )ro   rq   fnr,   r   r   r    test_s3_parquet   s        rv   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 requiredr0   r#   )r   r5   r8   r   )msgr   r   r    test_not_present_exception   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 )NrO   r   testmem://afilerQ   Zfeather_writerT   Zfeather_read)r   Z
to_featherrQ   rJ   r   r(   r)   rV   rW   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 )NrO   r   ry   rQ   Zpickle_writerT   Zpickle_read)r   Z	to_picklerQ   rJ   r
   r(   r)   rz   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 )NrO   r   ry   rQ   Z
json_write)r`   rS   Z	json_read)r   to_jsonrQ   rJ   r   r(   r)   )rV   r`   rW   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 )NrO   r   ry   rQ   Zstata_writeF)rS   Zwrite_indexZ
stata_readrT   Zint64)r   Zto_statarQ   rJ   r   r(   r)   Zastyperz   r   r   r    test_stata_options  s      r   tabulatec                 C   s   dd l }dd l}| jtjj|jtd ko6|jtd kdt	d t
ddgi}|jddd	id
 |jd d	kstt|dstd S )Nr   r   r   zFails on the min version build)reasonr5   rO   ry   rQ   Zmd_writerT   )r   r   nodeZ
add_markerr   markZxfail__version__r   FileNotFoundErrorr   Zto_markdownrQ   rJ   cat)requestrV   r   r   rW   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 )	NrS   r0   	localfilerO   TrT   r   Znonfsspecpath)	r   r5   r6   r   r	   ioBytesIOr   ra   )ZbyrW   r   r   r    test_non_fsspec_options>  s    r   ):r   numpynpr   Zpandas.compat._optionalr   Zpandasr   r   r   r   r   r   r	   r
   r   r   Zpandas._testingZ_testingr(   Zpandas.utilr   tdnanr*   r   r=   encoder'   Zfixturer!   r-   r;   r>   r   ZparametrizerE   rM   rX   rY   r\   Z
skip_if_norb   rk   Z&skip_array_manager_not_yet_implementedrl   Z
single_cpurr   rt   rv   Zskip_if_installedrx   r|   r}   r   r   r   r   r   r   r   r    <module>   sr   0







	

		
