o
    i%                     @   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,g d-e"d)d.d/ Z)ejj'ej%e"d)e"dd0d1 Z*e+d2d3d4 Z,e"d"d5d6 Z-d7d8 Z.d9d: Z/d;d< Z0e"d=d>d? Z1e"d"d@dA Z2dS )B    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   )periods)intfloatstrdt)r   npnanr    r   r   V/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/pandas/tests/io/test_fsspec.pydf1   s   
r   c                  c   s*    t d} | d}|V  |j  d S )Nfsspecmemory)pytestimportorskip
filesystemstoreclear)r   memfsr   r   r   
cleared_fs"   s
   

r$   c                 C   sh   t |jdd }| dd}|| W d    n1 s w   Y  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   r3   c                 C   s   ddl m} ddlm} |j  tjtdd t	d W d    n1 s'w   Y  d}| 
|dd	|d
 tjt|d t	d W d    d S 1 sOw   Y  d S )Nr   )registry)known_implementationsnosuchprotocolmatchznosuchprotocol://test/test.csvztest error message
couldexistzunimportable.CouldExist)classerrzcouldexist://test/test.csv)r   r4   fsspec.registryr5   targetr"   r   raises
ValueErrorr   setitemImportError)monkeypatchr$   r4   r5   err_msgr   r   r   test_reasonable_error4   s   


"rD   c                 C   s.   |j ddd tddgdd}t|| d S )Nr(   Tr%   r   r   r)   	index_col)r*   r   r.   r/   )r$   r   r2   r   r   r   test_to_csvE   s   rG   extxlsxlsxc                 C   sV   |dkr
t d nt d d| }|j|dd t|dgdd	}t|| d S )
NrI   xlwtopenpyxlzmemory://test/test.Tr%   r   r   rE   )r   r   to_excelr   r.   r/   )r$   rH   r   pathr2   r   r   r   test_to_excelM   s   

rO   binary_modeFTc                 C   s   t d}d}|rdnd}|j||d }|j|dd |jr"J |  |dd}|j||d }t|d	gd
d}|jrBJ |  t	|| d S )Nr   r(   r'   r1   )modeTr%   rr   r   rE   )
r   r   r,   r*   closedclosereplacer   r.   r/   )r$   rP   r   r   rN   rQ   fsspec_objectr2   r   r   r   test_to_csv_fsspec_object\   s"   


rW   c                 C   Z   t ddgi}|jdddidd | jd dksJ tdddid	 | jd dks+J d S 
Nar   testmem://test/test.csvtest	csv_writeFstorage_optionsr&   csv_readr_   )r   r*   r\   r   
fsspectestdfr   r   r   test_csv_optionsv   s   
re   c                 C   rX   rY   )r   r*   r\   r   rb   r   r   r   test_read_table_options   s   
rf   	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.J t|ddid | jd dks?J d S )NrI   rK   rL   rZ   r   ztestmem://test/test.r\   r-   Fr^   readra   )r   r   r   rM   r\   r   )rc   rg   rd   rN   r   r   r   test_excel_options   s   

ri   fastparquetc                 C   s   |j ddddd dS )CRegression test for writing to a not-yet-existent GCS Parquet file.r(   Trj   N)r&   enginecompression)
to_parquet)r$   r   r   r   r   test_to_parquet_new_file   s   
ro   pyarrow2)min_versionc                 C   ^   t ddgi}|jdddddid | jd dksJ tdddd	id
 | jd d	ks-J dS )rk   rZ   r   r[   rp   Nr\   parquet_writerl   rm   r_   parquet_readrl   r_   r   rn   r\   r   rb   r   r   r   test_arrowparquet_options   s   ry   c                 C   rs   )rk   rZ   r   r[   rj   Nr\   rt   ru   rv   rw   rx   rb   r   r   r   test_fastparquet_options   s   rz   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.csvra   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   

r   protocol)s3s3as3nc                 C   s    t td| |dt| d S )Nz%s://pandas-test/tips.csvra   r|   )r~   r   r   r   r   r   r   test_s3_protocols   s   r   c                 C   s6   d}|j |ddd |d t|d|d}t|| d S )Nzs3://pandas-test/test.parquetFrj   )r&   rl   rm   r_   rw   )rn   r   r.   r}   )r~   r   r   fnr2   r   r   r   test_s3_parquet   s   
r   r   c                  C   s@   d} t jt| d td W d    d S 1 sw   Y  d S )Nz?Missing optional dependency 'fsspec'|fsspec library is requiredr7   r(   )r   r>   rA   r   )msgr   r   r   test_not_present_exception   s   
"r   c                 C   d   t ddgi}|jdddid | jd dksJ tdddid}| jd dks*J t|| d S )NrZ   r   testmem://afiler\   feather_writera   feather_read)r   
to_featherr\   r   r.   r/   rc   rd   outr   r   r   test_feather_options   s   r   c                 C   r   )NrZ   r   r   r\   pickle_writera   pickle_read)r   	to_pickler\   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sJ td|ddid}| jd dks,J t|| d S )NrZ   r   r   r\   
json_write)rm   r_   	json_read)r   to_jsonr\   r   r.   r/   )rc   rm   rd   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sJ tdddid	}| jd dks+J t||d
 d S )NrZ   r   r   r\   stata_writeF)r_   write_index
stata_readra   int64)r   to_statar\   r
   r.   r/   astyper   r   r   r   test_stata_options  s   
r   tabulatec                 C   sD   t ddgi}|jdddid | jd dksJ | ds J d S )NrZ   r   r   r\   md_writera   )r   to_markdownr\   catrb   r   r   r   test_markdown_options)  s   r   c                  C   s  t jtdd tdddid W d    n1 sw   Y  t jtdd tdddid W d    n1 s9w   Y  t } t jtdd t| ddid W d    n1 s\w   Y  tddgi}t jtdd |jdddid W d    d S 1 sw   Y  d S )	Nr_   r7   	localfilerZ   Tra   r   nonfsspecpath)	r   r>   r?   r   r   ioBytesIOr   rn   )byrd   r   r   r   test_non_fsspec_options1  s   "r   )3r   numpyr   r   pandasr   r   r   r   r   r   r   r	   r
   r   pandas._testing_testingr.   pandas.utilr   tdfixturer   r$   r3   rD   rG   markparametrizerO   rW   re   rf   ri   
skip_if_noro   ry   &skip_array_manager_not_yet_implementedrz   
single_cpur   r   r   skip_if_installedr   r   r   r   r   r   r   r   r   r   r   <module>   sf    0

	





	

		
