U
    sVc                     @   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   K/tmp/pip-unpacked-wheel-xj8nt62q/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|}|rt
|
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   


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