a
    d#.                  	   @   sd  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 ejdejdg dg dg g dd	ejdg d d
dgejdg ddd Zejdejdg dg dg g dd	ejdg d 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$ejj%d*d+ Z&ejj%d,d- Z'ejdejdg dg dg g dd	ejdg d d
dgejdg dd.d/ Z(ejdejdg dg dg g dd	ejdg d d
dgejdg dd0d1 Z)ejdejdg dg dg g dd	ejdg d d
dgejdg dd2d3 Z*ejd4d5e
j+fd6ej,fgd7d8 Z-d9d: Z.d;d< Z/d=d> Z0d?d@ Z1dS )A    N)Path)is_platform_windowsobjd   g~Ϛ?g9DܜJ?g>D)?g.4i(@g33333@g̤AXYZcolumnsr	   namemethod)	to_pickleto_jsonto_csvc                 C   s   |dkrddd}t  X}t| |||d tj|}t| ||d d tj|}||ksdJ W d    n1 sx0    Y  d S )Ntarw:gzr   modecompressiontmensure_cleangetattrospathgetsize)r   r   compression_onlyr   compressed_sizeuncompressed_size r$   i/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/pandas/tests/io/test_compression.pytest_compression_size   s    

r&   r   r   c              	   C   s  t  t}tj||dkrdnd|d,}t| ||j |jjrDJ W d    n1 sX0    Y  tj	|}W d    n1 s0    Y  t  t}tj|dd d,}t| ||j |jjrJ W d    n1 s0    Y  tj	|}||ksJ W d    n1 s0    Y  d S )Nr   r   wr   )
r   r   icom
get_handler   handleclosedr   r   r    )r   r   r!   r   handlesr"   r#   r$   r$   r%   test_compression_size_fh-   s     
**
*r-   z'write_method, write_kwargs, read_methodindexFr   c           	      C   s   t jg dg dgg dd}|| }td| 2}t|| |fi | |||d}W d    n1 sl0    Y  t|| d S )N)g      ?r   )g333333@      r   r   
compressedr   )pd	DataFramer   r   r   assert_frame_equal)	write_methodwrite_kwargsread_methodr!   compression_to_extensioninput	extensionr   outputr$   r$   r%   ,test_dataframe_compression_defaults_to_inferJ   s    *r=   z1write_method,write_kwargs,read_method,read_kwargsT)r.   headersqueezetypZseriesc                 C   s   t jg ddd}|| }td| l}t|| |fi | d|v rr| }	|	d= ||fd|i|	d}
n||fd|i|}
W d    n1 s0    Y  tj|
|dd	 d S )
N)r   r0   
   r	   r   r2   r?   r   r   F)Zcheck_names)r3   Seriesr   r   r   copyr?   Zassert_series_equal)r6   r7   r8   Zread_kwargsr!   r9   r:   r;   r   kwargsr<   r$   r$   r%   )test_series_compression_defaults_to_infer^   s    2rF   c              
   C   s   t jdg dg dg g dd}t z}tj|d| dJ}tt  |j|j	| d W d    n1 sn0    Y  W d    n1 s0    Y  W d    n1 s0    Y  d S )Nr   r   r   r   r   r'   r   )
r3   r4   r   r   r(   r)   Zassert_produces_warningRuntimeWarningr   r*   )r!   dfr   r,   r$   r$   r%   test_compression_warning~   s    
rI   c              	   C   s   t  }t  n}t|dd*}|j|d| d |d W d   n1 sN0    Y  t |tj|d| d W d   n1 s0    Y  t	
 }|j|d| d |d t |tj|d| d dS )z?
    Binary file handles support compression.

    GH22555
    wb)r   )r   r   r   N)Z	index_colr   )r   makeDataFramer   openr   seekr5   r3   read_csvioBytesIO)r!   rH   r   filer$   r$   r%   test_compression_binary   s    
("
rR   c                  C   s   t  } ddd}t  V}t|}| j||d td | }| j||d || ksbJ W d   n1 sv0    Y  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   皙?N)r   rK   r   r   r   timesleep
read_bytes)rH   compression_optionsr   r<   r$   r$   r%   #test_gzip_reproducibility_file_name   s    


r\   c                  C   sh   t  } ddd}t }| j||dd | }td t }| j||dd || ksdJ dS )zL
    Gzip should create reproducible archives with mtime.

    GH 28103
    rS   rT   rU   rJ   )r   r   rW   N)r   rK   rO   rP   r   getvaluerX   rY   )rH   r[   bufferr<   r$   r$   r%   %test_gzip_reproducibility_file_object   s    

r_   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    rm   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')
        r`   ra   Nrc   rk   r$   r$   r%   test_with_missing_lzma_runtime   s    rn   c                 C   sz   t  ^}t| ||dd tj|}t| ||dddd tj|}||k sXJ W d    n1 sl0    Y  d S )NrS   r   rT   r   compresslevelr   r   r   r   Zcompressed_size_defaultZcompressed_size_fastr$   r$   r%   test_gzip_compression_level   s    
rr   c                 C   s   t  t}t| ||dd tj|}t| ||dddd tj|}||k sXJ |dkrntj|dd W d    n1 s0    Y  d S )Nxzr   rT   )r   presetr   )r   r   r   r   r   r    r3   rN   rq   r$   r$   r%   test_xz_compression_level_read  s    
ru   c                 C   sD   t  (}t| ||dddd W d   n1 s60    Y  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.
    bz2rT   ro   r   N)r   r   r   )r   r   r   r$   r$   r%   test_bzip_compression_level  s    
rw   zsuffix,archive.zipz.tarc              	   C   s   t j| dr}||d W d    n1 s.0    Y  tjtdd t| W d    n1 sf0    Y  W d    n1 s0    Y  d S )Nfilenamer'   zZero files foundmatch)r   r   pytestraises
ValueErrorr3   rN   )suffixarchiver   r$   r$   r%   test_empty_archive_zip-  s
    r   c               	   C   s   t jdd} t| d(}|dd |dd W d    n1 sH0    Y  tjtdd t	|  W d    n1 s0    Y  W d    n1 s0    Y  d S )	Nrx   ry   r'   a.csvzfoo,barb.csvz Multiple files found in ZIP filer{   )
r   r   zipfileZipFilewritestrr}   r~   r   r3   rN   )r   rQ   r$   r$   r%   test_ambiguous_archive_zip<  s    *r   c                 C   s  | d }t |ddd}|d W d    n1 s60    Y  | d }t |ddd}|d W d    n1 sv0    Y  | d }t|d(}||d ||d W d    n1 s0    Y  tjtdd	 t	| W d    n1 s0    Y  d S )
Nr   r'   zutf-8)encodingzfoo,bar
r   zarchive.tarz#Multiple files found in TAR archiver{   )
rL   writetarfileTarFileaddr}   r~   r   r3   rN   )Ztmp_pathZcsvAPathaZcsvBPathbZtarpathr   r$   r$   r%   test_ambiguous_archive_tarE  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| }tj|d\}|	 }t
|dksjJ ||d  d}t rd}nd}||ksJ W d    n1 s0    Y  W d    n1 s0    Y  W d    n1 s0    Y  d S )Nz.foory   12Zfoobarr   r   r   r   F)r   r.   )fileobjrT   r   utf8zfoo,bar
1,2
zfoo,bar
1,2
)r   r   r3   r4   r   rS   rL   r   r   
getmemberslenextractfilereaddecoder   )rQ   Zuncompressedr   memberscontentexpectedr$   r$   r%   !test_tar_gz_to_different_filenameV  s     r   c               	   C   sZ   t  >} tj| dd W d    n1 s.0    Y  W d    n1 sL0    Y  d S )Nr'   )r   r   )rO   rP   r(   Z_BytesTarFile)r^   r$   r$   r%   test_tar_no_error_on_closej  s    
r   )2rS   rO   r   pathlibr   rf   rh   r   rd   rX   r   r}   Zpandas.compatr   Zpandasr3   Zpandas._testingZ_testingr   Zpandas.io.commoncommonr(   markZparametrizer4   rC   r&   r-   rN   	read_jsonZread_pickler=   rF   rI   rR   r\   r_   Z
single_cpurm   rn   rr   ru   rw   r   r   r   r   r   r   r   r$   r$   r$   r%   <module>   s   











	
	