U
    -e*                  	   @   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   a/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/pandas/tests/io/test_compression.py
<dictcomp>   s     r	   objd   翶~Ϛ?9DܜJ?>D)?.4i(@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rtW 5 Q R X tj	
|}||kst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 )zGH33196 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   sV   t j| 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 )Nfilenamer.   zZero files foundmatch)r#   r$   pytestraises
ValueErrorr:   rU   )suffixarchiver'   r   r   r   test_empty_archive_zip  s
    
r   c               
   C   sp   t jddZ} t| d}|d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 )	Nrz   r{   r.   a.csvzfoo,barb.csvz Multiple files found in ZIP filer}   )
r#   r$   zipfileZipFilewritestrr   r   r   r:   rU   )r'   rX   r   r   r   test_ambiguous_archive_zip#  s    r   c              	   C   s   | d }t |d}|d W 5 Q R X | d }t |d}|d W 5 Q R X | d }t|d}||d ||d W 5 Q R X tjtdd t	| W 5 Q R X d S )Nr   r.   zfoo,bar
r   zarchive.tarz#Multiple files found in TAR archiver}   )
rS   writetarfileTarFileaddr   r   r   r:   rU   )Ztmp_pathZ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 rd}nd}||kst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_closeQ  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   








	
	