o
    _~#g70                  	   @   sl  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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: Z0d;d< Z1d=d> Z2d?d@ Z3d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  -}t| |||d tj|}t| ||d d tj|}||ks2J W d    d S 1 s=w   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$   /var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/lib/python3.10/site-packages/pandas/tests/io/test_compression.pytest_compression_size   s   

"r&   r   r   c              	   C   s  t  :}tj||dkrdnd|d}t| ||j |jjr"J W d    n1 s,w   Y  tj	|}W d    n1 sAw   Y  t  ;}tj|dd d}t| ||j |jjrbJ W d    n1 slw   Y  tj	|}||ks}J W d    d S 1 sw   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| }t|| |fi | |||d}W d    n1 s6w   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_inferK   s   r=   z1write_method,write_kwargs,read_method,read_kwargsT)r.   headersqueezetypseriesc                 C   s   t jg ddd}|| }td| 6}t|| |fi | d|v r9| }	|	d= ||fd|i|	d}
n
||fd|i|}
W d    n1 sMw   Y  tj|
|dd	 d S )
N)r   r0   
   r	   r   r2   r?   r   r   F)check_names)r3   Seriesr   r   r   copyr?   assert_series_equal)r6   r7   r8   read_kwargsr!   r9   r:   r;   r   kwargsr<   r$   r$   r%   )test_series_compression_defaults_to_infer_   s   
rJ   c              
   C   s   t jdg dg dg g dd}t F}tj|d| d%}tt |j|j	| d W d    n1 s7w   Y  W d    n1 sFw   Y  W d    d S W d    d S 1 s^w   Y  d S )Nr   r   r   r   r   r'   r   )
r3   r4   r   r   r(   r)   assert_produces_warningRuntimeWarningr   r*   )r!   dfr   r,   r$   r$   r%   test_compression_warning   s   
"rN   c              	   C   s
  t jdtdd t jtdtdt jdd tdD tdd	}t	
 7}t|d
d}|j|d
| d |d W d   n1 sFw   Y  t	|t j|d| d W d   n1 saw   Y  t }|j|d
| d |d t	|t j|d| d dS )z?
    Binary file handles support compression.

    GH22555
    皙?x         ABCDdtypec                 S      g | ]}d | qS zi-r$   .0ir$   r$   r%   
<listcomp>       z+test_compression_binary.<locals>.<listcomp>rR   r   r.   wb)r   )r   r   r   N)	index_colr   )r3   r4   nparangereshapeIndexlistobjectranger   r   openr   seekr5   read_csvioBytesIO)r!   rM   r   filer$   r$   r%   test_compression_binary   s(   
	
rn   c                  C   s   t jdtdd t jtdtdt jdd tdD tdd	} d
dd}t	
 ,}t|}| j||d td | }| j||d || ksPJ W d   dS 1 s[w   Y  dS )z
    Gzip should create reproducible archives with mtime.

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

    GH 28103
    rO   rP   rQ   rT   rU   c                 S   rW   rX   r$   rY   r$   r$   r%   r\      r]   z7test_gzip_reproducibility_file_name.<locals>.<listcomp>rR   r^   gzip   r   mtimer   皙?N)r3   r4   ra   rb   rc   rd   re   rf   rg   r   r   r   r   timesleep
read_bytes)rM   compression_optionsr   r<   r$   r$   r%   #test_gzip_reproducibility_file_name   s   


"rx   c                  C   s   t jdtdd t jtdtdt jdd tdD tdd	} d
dd}t	
 }| j||dd | }td t	
 }| j||dd || ksQJ dS )zL
    Gzip should create reproducible archives with mtime.

    GH 28103
    rO   rP   rQ   rT   rU   c                 S   rW   rX   r$   rY   r$   r$   r%   r\      r]   z9test_gzip_reproducibility_file_object.<locals>.<listcomp>rR   r^   ro   rp   rq   r_   )r   r   rs   N)r3   r4   ra   rb   rc   rd   re   rf   rg   rk   rl   r   getvaluert   ru   )rM   rw   bufferr<   r$   r$   r%   %test_gzip_reproducibility_file_object   s   

r{   c                  C   &   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   r   c                  C   r|   )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}   r~   Nr   r   r$   r$   r%   test_with_missing_lzma_runtime   s   r   c                 C   s|   t  0}t| ||dd tj|}t| ||dddd tj|}||k s,J W d    d S 1 s7w   Y  d S )Nro   r   rp   r   compresslevelr   r   r   r   compressed_size_defaultcompressed_size_fastr$   r$   r%   test_gzip_compression_level   s   
"r   c                 C   s   t  C}t| ||dd tj|}t| ||dddd tj|}||k s,J |dkr?tj|dd W d    d S W d    d S 1 sJw   Y  d S )Nxzr   rp   )r   presetr   )r   r   r   r   r   r    r3   rj   r   r$   r$   r%   test_xz_compression_level_read  s   
"r   c                 C   sF   t  }t| ||dddd W d   dS 1 sw   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.
    bz2rp   r   r   N)r   r   r   )r   r   r   r$   r$   r%   test_bzip_compression_level&  s   
"r   zsuffix,archive.zipz.tarc              	   C   s   t j| dB}||d W d    n1 sw   Y  tjtdd t| W d    n1 s3w   Y  W d    d S W d    d S 1 sKw   Y  d S )Nfilenamer'   zZero files foundmatch)r   r   pytestraises
ValueErrorr3   rj   )suffixarchiver   r$   r$   r%   test_empty_archive_zip:  s   "r   c               	   C   s   t jddO} t| d}|dd |dd W d    n1 s$w   Y  tjtdd t	|  W d    n1 s@w   Y  W d    d S W d    d S 1 sXw   Y  d S )	Nr   r   r'   a.csvzfoo,barb.csvz Multiple files found in ZIP filer   )
r   r   zipfileZipFilewritestrr   r   r   r3   rj   )r   rm   r$   r$   r%   test_ambiguous_archive_zipI  s   "r   c                 C   s
  | d }t |ddd}|d W d    n1 sw   Y  | d }t |ddd}|d W d    n1 s;w   Y  | d }t|d}||d ||d W d    n1 saw   Y  tjtdd	 t	| W d    d S 1 s~w   Y  d S )
Nr   r'   zutf-8)encodingzfoo,bar
r   zarchive.tarz#Multiple files found in TAR archiver   )
rh   writetarfileTarFileaddr   r   r   r3   rj   )tmp_pathcsvAPathacsvBPathbtarpathr   r$   r$   r%   test_ambiguous_archive_tarR  s    "r   c               
   C   s  t jddw} tjddggddgdj| dd	d
dd t| D}tj|d.}|	 }t
|dks5J ||d  d}t rGd}nd}||ksOJ W d    n1 sYw   Y  W d    n1 shw   Y  W d    d S W d    d S 1 sw   Y  d S )Nz.foor   12foobarr   r   r   r   F)r   r.   )fileobjrp   r   utf8zfoo,bar
1,2
zfoo,bar
1,2
)r   r   r3   r4   r   ro   rh   r   r   
getmemberslenextractfilereaddecoder   )rm   uncompressedr   memberscontentexpectedr$   r$   r%   !test_tar_gz_to_different_filenamec  s,   "r   c               	   C   sl   t  (} tj| dd W d    n1 sw   Y  W d    d S W d    d S 1 s/w   Y  d S )Nr'   )r   r   )rk   rl   r(   _BytesTarFile)rz   r$   r$   r%   test_tar_no_error_on_closew  s   
"r   )4ro   rk   r   pathlibr   r   r   r   r   rt   r   numpyra   r   pandas.compatr   pandasr3   pandas._testing_testingr   pandas.io.commoncommonr(   markparametrizer4   rE   r&   r-   rj   	read_jsonread_pickler=   rJ   rN   rn   rx   r{   
single_cpur   r   r   r   r   r   r   r   r   r   r   r   r$   r$   r$   r%   <module>   s    











	
	