U
    ¾mœd  ã                   @   sj  d Z ddlZddlmZ ddlZddlZddlZddlmZ ddl	m
Z ddlmZ ej d¡Zejddgd	�d
d„ ƒZejdd„ ƒZeej ddddg¡dd„ ƒƒZeej dddg¡dd„ ƒƒZedd„ ƒZedd„ ƒZeej dddg¡dd„ ƒƒZeej dddd g¡d!d"„ ƒƒZed#d$„ ƒZeej d%d&d'd(g¡d)d*„ ƒƒZed+d,„ ƒZd-d.„ Zed/d0„ ƒZdS )1zZ
Tests compressed data parsing functionality for all
of the parsers defined in parsers.py
é    N)ÚPath)Ú	DataFrame)Ú_compression_to_extensionZpyarrow_skipTF)Úparamsc                 C   s   | j S )N)Úparam)Úrequest© r   ú`/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/pandas/tests/io/parser/test_compression.pyÚbuffer   s    r
   c              	   C   s6   | }t |dƒ�}| ¡ }W 5 Q R X | |¡}|||fS )NÚrb)ÚopenÚreadÚread_csv)Úall_parsersÚcsv1ÚparserÚfÚdataÚexpectedr   r   r	   Úparser_and_data   s
    
r   ÚcompressionÚzipÚinferÚzip2c           	   
   C   s’   | \}}}t  d¡�t}tj|dd��}| d|¡ W 5 Q R X |dkrjt|dƒ�}|j|dd�}W 5 Q R X n|j||d�}t  ||¡ W 5 Q R X d S )	Nútest_file.zipÚw©ÚmodeÚ	test_filer   r   r   ©r   )ÚtmÚensure_cleanÚzipfileÚZipFileÚwritestrr   r   Úassert_frame_equal)	r   r   r   r   r   ÚpathÚtmpr   Úresultr   r   r	   Útest_zip$   s    
r)   c           	   
   C   s„   | \}}}t  d¡�f}ddg}tj|dd��}|D ]}| ||¡ q2W 5 Q R X tjtdd�� |j||d� W 5 Q R X W 5 Q R X d S )	Nzcombined_zip.zipr   Zsecond_filer   r   zMultiple files©Úmatchr   )	r    r!   r"   r#   r$   ÚpytestÚraisesÚ
ValueErrorr   )	r   r   r   r   r   r&   Zinner_file_namesr'   Ú	file_namer   r   r	   Útest_zip_error_multiple_files6   s    
r0   c              
   C   sd   | \}}}t  ¡ �H}tj|dd�� W 5 Q R X tjtdd�� |j|dd� W 5 Q R X W 5 Q R X d S )Nr   r   z
Zero filesr*   r   r   )r    r!   r"   r#   r,   r-   r.   r   )r   r   Ú_r&   r   r   r	   Útest_zip_error_no_filesF   s    


r2   c                 C   sb   | \}}}t  ¡ �F}t|dƒ�0}tjtjdd�� |j|dd� W 5 Q R X W 5 Q R X W 5 Q R X d S )Nr   zFile is not a zip filer*   r   r   )r    r!   r   r,   r-   r"   Ú
BadZipFiler   )r   r   r1   r&   r   r   r   r	   Útest_zip_error_invalid_zipR   s
    

r4   Úfilenamez
test.{ext}c              
   C   sÆ   |\}}}|}t | }	|d kr"|n
|j|	d�}|rL|rL| j tjjdd�¡ tj|d��d}
t 	||
|¡ |rpdn|}|ržt
|
dƒ�}|j||d�}W 5 Q R X n|j|
|d�}t ||¡ W 5 Q R X d S )N)Úextz9Cannot deduce compression from buffer of compressed data.)Úreason)r5   r   r   r   )r   ÚformatÚnodeZ
add_markerr,   ÚmarkZxfailr    r!   Zwrite_to_compressedr   r   r%   )r   r   Zcompression_onlyr
   r5   r   r   r   Úcompress_typer6   r&   r   r   r(   r   r   r	   Útest_compression\   s$    
ÿÿr<   r6   ÚgzÚbz2c           	   	   C   s~   | }dddœ}|j |f|Ž}d|d< |rLt|ƒ�}|j |f|Ž}W 5 Q R X n"|rXd| nd}|j || f|Ž}t ||¡ d S )Nr   T)Z	index_colZparse_datesr   r   Ú.Ú )r   r   r    r%   )	r   r   r
   r6   r   Úkwargsr   r   r(   r   r   r	   Útest_infer_compressiony   s    

rB   c           	      C   s\   | }|  |¡}tj |d|› d�¡}|j||ddd�}tddgddgd	œƒ}t ||¡ d S )
NÚutfz_ex_small.zipr   ú	)Úencodingr   ÚsepÚ	Venezuelaõ   Hugo ChÃ¡vez FrÃ­asúHenrique Capriles R.©ZCountryZTwitter)r8   Úosr&   Újoinr   r   r    r%   )	r   Úcsv_dir_pathZ	utf_valueZencoding_fmtr   rE   r&   r(   r   r   r   r	   Útest_compression_utf_encoding�   s    
þÿrN   Úinvalid_compressionZsfarkZbz3Zzipperc              	   C   s@   | }d|i}d|› �}t jt|d�� |jd|Ž W 5 Q R X d S )Nr   zUnrecognized compression type: r*   r   )r   )r,   r-   r.   r   )r   rO   r   Zcompress_kwargsÚmsgr   r   r	   Útest_invalid_compressionŸ   s
    
rQ   c                 C   s4   | }t j |d¡}| |¡}t|jƒdgks0t‚d S )Nztar_csv.tar.gzÚa)rK   r&   rL   r   ÚlistÚcolumnsÚAssertionError)r   rM   r   r&   Údfr   r   r	   Útest_compression_tar_archive«   s    
rW   c              
   C   s~   | }t dddgiƒ}t d¡�V}t d¡�@}|j|dd� t|ƒ t|ƒ ¡ ¡ t |j|d d�|¡ W 5 Q R X W 5 Q R X d S )	NrR   r   é   ztest.csvztest.csv.zipF©Úindexr   )	r   r    r!   Úto_csvr   Ú
write_textÚ	read_textr%   r   )r   r   rV   Zpath_csvZpath_zipr   r   r	   Ú!test_ignore_compression_extension³   s    r^   c              
   C   s”   | }t ddgddgdœƒ}t d¡�f}|j|dd� t | |¡|¡ t |d¡�.}|j| | 	¡ d	 ¡d
d�}t ||¡ W 5 Q R X W 5 Q R X d S )NrG   rH   rI   rJ   ztest.tar.gzFrY   zr:gzr   r   r   )
r   r    r!   r[   r%   r   Útarfiler   ÚextractfileÚgetnames)r   r   r   Ztar_pathÚtarr(   r   r   r	   Útest_writes_tar_gz¿   s    þÿ ÿrc   ) Ú__doc__rK   Úpathlibr   r_   r"   r,   Zpandasr   Zpandas._testingZ_testingr    Z pandas.tests.io.test_compressionr   r:   ZusefixturesZskip_pyarrowZfixturer
   r   Zparametrizer)   r0   r2   r4   r<   rB   rN   rQ   rW   r^   rc   r   r   r   r	   Ú<module>   sN   




	


