U
    ÎZj3+  ã                	   @   s2  d dl Z d dl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Zd dl	Z	d dl
Z
d dlZd dlmZ d dlZd dlmZ d dlm  mZ dd„ ej ¡ D ƒZej dejddd	d
gdddgg dddgd�ejddd	d
g dd�g¡ej ddddg¡dd„ ƒƒZej dejddd	d
gdddgg dddgd�ejddd	d
g dd�g¡ej dddg¡dd„ ƒƒZej ddddiejfdi ej fdi ej!fg¡dd„ ƒZ"ej d ddd!d"œejd#d!ifdi ej d$d%ifdi ej!i fg¡d&d'„ ƒZ#d(d)„ Z$d*d+„ Z%d,d-„ Z&d.d/„ Z'd0d1„ Z(d2d3„ Z)ej dejddd	d
gdddgg dddgd�ejddd	d
g dd�g¡ej ddddg¡d4d5„ ƒƒZ*ej dejddd	d
gdddgg dddgd�ejddd	d
g dd�g¡ej ddddg¡d6d7„ ƒƒZ+ej d8d9e
j,fd:ej-fg¡d;d<„ ƒZ.d=d>„ Z/d?d@„ Z0dAdB„ Z1dCdD„ Z2dS )Eé    N)ÚPath)Úis_platform_windowsc                 C   s   i | ]\}}||“qS © r   )Ú.0ÚkeyÚvaluer   r   úc/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/pandas/tests/io/test_compression.pyÚ
<dictcomp>   s     r	   Úobjéd   ç¿¶~úÏš¿?ç9DÜœJÎ?ç>éD‚)â?çÜ.4×i¤(@ç33333þ@çÍÌÌÌ¤œAÚXÚYÚZ©Úcolumns©ÚnameÚmethodZ	to_pickleÚto_jsonÚto_csvc              	   C   sr   |dkrdddœ}t  ¡ �N}t| |ƒ||d� tj |¡}t| |ƒ|d d� tj |¡}||ksdt‚W 5 Q R X d S )NÚtarúw:gz©r   Úmode©Úcompression©ÚtmÚensure_cleanÚgetattrÚosÚpathÚgetsizeÚAssertionError)r
   r   Úcompression_onlyr'   Úcompressed_sizeÚuncompressed_sizer   r   r   Útest_compression_size   s    

r-   c              
   C   sÌ   t  ¡ �V}tj||dkrdnd|d��"}t| |ƒ|jƒ |jjrDt‚W 5 Q R X tj	 
|¡}W 5 Q R X t  ¡ �V}tj|dd d��"}t| |ƒ|jƒ |jjrœt‚W 5 Q R X tj	 
|¡}||ks¾t‚W 5 Q R X d S )Nr   r   Úwr    )r#   r$   ÚicomÚ
get_handler%   ÚhandleÚclosedr)   r&   r'   r(   )r
   r   r*   r'   Úhandlesr+   r,   r   r   r   Útest_compression_size_fh1   s     
ý
r4   z'write_method, write_kwargs, read_methodÚindexFc              	   C   st   t jdddgdddggddd	gd
�}t| }t d| ¡�$}t|| ƒ|f|Ž |||d�}W 5 Q R X t ||¡ d S )Ng      ð?r   éüÿÿÿg333333@é   é   r   r   r   r   Ú
compressedr    )ÚpdÚ	DataFrameÚ_compression_to_extensionr#   r$   r%   Úassert_frame_equal)Úwrite_methodÚwrite_kwargsÚread_methodr*   ÚinputÚ	extensionr'   Úoutputr   r   r   Ú,test_dataframe_compression_defaults_to_inferN   s    $rD   z1write_method,write_kwargs,read_method,read_kwargsT)r5   ÚheaderÚsqueezeÚtypZseriesc           
   	   C   s¤   t jddddgdd�}t| }t d| ¡�^}t|| ƒ|f|Ž d|krr| ¡ }|d= ||fd	|i|—Ž d
¡}	n||fd	|i|—Ž}	W 5 Q R X tj|	|dd� d S )Nr   r7   éþÿÿÿé
   r   r   r9   rF   r!   r   F)Zcheck_names)	r:   ÚSeriesr<   r#   r$   r%   ÚcopyrF   Zassert_series_equal)
r>   r?   r@   Zread_kwargsr*   rA   rB   r'   ÚkwargsrC   r   r   r   Ú)test_series_compression_defaults_to_inferb   s    ÿrM   c                 C   s‚   t jddddgdddgg dd	d
gd�}t ¡ �H}tj|d| d��,}t t¡� |j|j	| d� W 5 Q R X W 5 Q R X W 5 Q R X d S )Nr   r   r   r   r   r   r   r   r   r   r   r.   r    )
r:   r;   r#   r$   r/   r0   Zassert_produces_warningÚRuntimeWarningr   r1   )r*   Údfr'   r3   r   r   r   Útest_compression_warning}   s    þ
rP   c              
   C   s¤   t  ¡ }t  ¡ �P}t|dd�� }|j|d| d� | d¡ W 5 Q R X t  |tj|d| d�¡ W 5 Q R X t	 
¡ }|j|d| d� | d¡ t  |tj|d| d�¡ dS )z?
    Binary file handles support compression.

    GH22555
    Úwb)r   )r   r!   r   )Z	index_colr!   N)r#   ÚmakeDataFramer$   Úopenr   Úseekr=   r:   Úread_csvÚioÚBytesIO)r*   rO   r'   Úfiler   r   r   Útest_compression_binaryŠ   s     
 ÿ
 ÿrY   c               	   C   sp   t  ¡ } dddœ}t  ¡ �L}t|ƒ}| j||d� t d¡ | ¡ }| j||d� || ¡ ksbt‚W 5 Q R X dS )zš
    Gzip should create reproducible archives with mtime.

    Note: Archives created with different filenames will still be different!

    GH 28103
    Úgzipé   ©r   Úmtimer    r8   N)	r#   rR   r$   r   r   ÚtimeÚsleepÚ
read_bytesr)   )rO   Úcompression_optionsr'   rC   r   r   r   Ú#test_gzip_reproducibility_file_name¤   s    


rb   c                  C   sh   t  ¡ } dddœ}t ¡ }| j||dd� | ¡ }t d¡ t ¡ }| j||dd� || ¡ ksdt‚dS )zL
    Gzip should create reproducible archives with mtime.

    GH 28103
    rZ   r[   r\   rQ   )r!   r   r8   N)	r#   rR   rV   rW   r   Úgetvaluer^   r_   r)   )rO   ra   ÚbufferrC   r   r   r   Ú%test_gzip_reproducibility_file_object¹   s    

re   c                  C   s&   t  d¡} tjtjd| gtjd� dS )z6Tests if import pandas works when lzma is not present.zT        import sys
        sys.modules['lzma'] = None
        import pandas
        ú-c©ÚstderrN©ÚtextwrapÚdedentÚ
subprocessÚcheck_outputÚsysÚ
executableÚPIPE©Úcoder   r   r   Útest_with_missing_lzmaÌ   s    ÿrs   c                  C   s&   t  d¡} tjtjd| gtjd� dS )z\Tests if RuntimeError is hit when calling lzma without
    having the module available.
    zÿ
        import sys
        import pytest
        sys.modules['lzma'] = None
        import pandas as pd
        df = pd.DataFrame()
        with pytest.raises(RuntimeError, match='lzma module'):
            df.to_csv('foo.csv', compression='xz')
        rf   rg   Nri   rq   r   r   r   Útest_with_missing_lzma_runtimeÙ   s    ÿrt   c              	   C   sf   t  ¡ �T}t| |ƒ|dd� tj |¡}t| |ƒ|dddœd� tj |¡}||k sXt‚W 5 Q R X d S )NrZ   r    r[   ©r   Úcompresslevelr"   )r
   r   r'   Zcompressed_size_defaultZcompressed_size_fastr   r   r   Útest_gzip_compression_levelë   s    
rw   c              	   C   s0   t  ¡ �}t| |ƒ|dddœd� W 5 Q R X dS )z´GH33196 bzip needs file size > 100k to show a size difference between
    compression levels, so here we just check if the call works when
    compression is passed as a dict.
    Úbz2r[   ru   r    N)r#   r$   r%   )r
   r   r'   r   r   r   Útest_bzip_compression_level   s    
ry   zsuffix,archiveú.zipz.tarc              
   C   sR   t j| d��<}||dƒ}| ¡  tjtdd�� t |¡ W 5 Q R X W 5 Q R X d S )N©Úfilenamer.   zZero files found©Úmatch)r#   r$   ÚcloseÚpytestÚraisesÚ
ValueErrorr:   rU   )ÚsuffixÚarchiver'   rX   r   r   r   Útest_empty_archive_zip  s
    
r…   c               
   C   sl   t jdd��V} t | d¡}| dd¡ | dd¡ | ¡  tjtdd�� t	 
| ¡ W 5 Q R X W 5 Q R X d S )	Nrz   r{   r.   úa.csvzfoo,barúb.csvz Multiple files found in ZIP filer}   )r#   r$   ÚzipfileÚZipFileÚwritestrr   r€   r�   r‚   r:   rU   )r'   rX   r   r   r   Útest_ambiguous_archive_zip#  s    r‹   c               
   C   sÖ   t  ¡ �Ä} tj | d¡}t|dƒ�}| d¡ W 5 Q R X tj | d¡}t|dƒ�}| d¡ W 5 Q R X tj | d¡}t |d¡�}| 	|d¡ | 	|d¡ W 5 Q R X t
jtdd�� t |¡ W 5 Q R X W 5 Q R X d S )Nr†   r.   zfoo,bar
r‡   zarchive.tarz#Multiple files found in TAR archiver}   )r#   Zensure_clean_dirr&   r'   ÚjoinrS   ÚwriteÚtarfileÚTarFileÚaddr€   r�   r‚   r:   rU   )ÚdirZcsvAPathÚaZcsvBPathÚbZtarpathr   r   r   r   Útest_ambiguous_archive_tar-  s    
r”   c                  C   sÀ   t jdd��ª} tjddggddgd�j| dd	d
œdd� t | ¡�j}tj|d��R}| 	¡ }t
|ƒdksjt‚| |d ¡ ¡  d¡}tƒ rŽd}nd}||ksžt‚W 5 Q R X W 5 Q R X W 5 Q R X d S )Nz.foor{   Ú1Ú2ZfooÚbarr   r   r   r   F)r!   r5   )Úfileobjr[   r   Úutf8zfoo,bar
1,2
zfoo,bar
1,2
)r#   r$   r:   r;   r   rZ   rS   rŽ   r�   Ú
getmembersÚlenr)   ÚextractfileÚreadÚdecoder   )rX   Zuncompressedr„   ÚmembersÚcontentÚexpectedr   r   r   Ú!test_tar_gz_to_different_filename?  s$    þ  ýr¢   c               
   C   s2   t  ¡ � } tj| dd�� W 5 Q R X W 5 Q R X d S )Nr.   )r˜   r   )rV   rW   r/   Z_BytesTarFile)rd   r   r   r   Útest_tar_no_error_on_closeS  s    
r£   )3rZ   rV   r&   Úpathlibr   rl   rn   rŽ   rj   r^   rˆ   r€   Zpandas.compatr   Zpandasr:   Zpandas._testingZ_testingr#   Zpandas.io.commonÚcommonr/   Z_extension_to_compressionÚitemsr<   ÚmarkZparametrizer;   rJ   r-   r4   rU   Ú	read_jsonZread_picklerD   rM   rP   rY   rb   re   rs   rt   rw   ry   r‰   r�   r…   r‹   r”   r¢   r£   r   r   r   r   Ú<module>   s¼   ÿþûþ
þûþ


ýþ
ýþ
þûþ

þûþ
	þþ

