o
    Û­jã/  ã                	   @   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Úobjéd   ©g¿¶~úÏš¿?g9DÜœJÎ?g>éD‚)â?©gÜ.4×i¤(@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/html/CropPilot/venv/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 sˆw   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  tdƒ¡t  dd„ tdƒD ƒ¡d�}t 	¡ �7}t
|d	d
��}|j|d	| d� | d¡ W d  ƒ n1 sBw   Y  t |t j|d| d�¡ W d  ƒ n1 s]w   Y  t ¡ }|j|d	| d� | d¡ t |t j|d| d�¡ dS )z?
    Binary file handles support compression.

    GH22555
    çš™™™™™ñ?éx   ©é   é   ÚABCDc                 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Úranger   r   Úopenr   Úseekr5   Úread_csvÚioÚBytesIO)r!   rM   r   Úfiler$   r$   r%   Útest_compression_binaryŒ   s(   ý
þÿü	
ÿrk   c                  C   s¼   t jdt d¡ d¡ t  tdƒ¡t  dd„ tdƒD ƒ¡d�} d	d
dœ}t 	¡ �,}t
|ƒ}| j||d� t d¡ | ¡ }| j||d� || ¡ ksLJ ‚W d  ƒ dS 1 sWw   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   c                 S   rU   rV   r$   rW   r$   r$   r%   rZ   µ   r[   z7test_gzip_reproducibility_file_name.<locals>.<listcomp>rR   r\   Úgzipé   ©r   Úmtimer   çš™™™™™¹?N)r3   r4   r_   r`   ra   rb   rc   rd   r   r   r   r   ÚtimeÚsleepÚ
read_bytes)rM   Úcompression_optionsr   r<   r$   r$   r%   Ú#test_gzip_reproducibility_file_nameª   s   ý


"úru   c                  C   sž   t jdt d¡ d¡ t  tdƒ¡t  dd„ tdƒD ƒ¡d�} d	d
dœ}t 	¡ }| j
||dd� | ¡ }t d¡ t 	¡ }| j
||dd� || ¡ ksMJ ‚dS )zL
    Gzip should create reproducible archives with mtime.

    GH 28103
    rO   rP   rQ   rT   c                 S   rU   rV   r$   rW   r$   r$   r%   rZ   Ì   r[   z9test_gzip_reproducibility_file_object.<locals>.<listcomp>rR   r\   rl   rm   rn   r]   )r   r   rp   N)r3   r4   r_   r`   ra   rb   rc   rd   rh   ri   r   Úgetvaluerq   rr   )rM   rt   Úbufferr<   r$   r$   r%   Ú%test_gzip_reproducibility_file_objectÃ   s   ý

rx   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   ry   )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')
        rz   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 )Nrl   r   rm   ©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   rm   )r   Úpresetr   )r   r   r   r   r   r    r3   rg   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 )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.
    Úbz2rm   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   rg   )Ú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   rg   )r   rj   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—   )
re   ÚwriteÚtarfileÚTarFileÚaddr™   rš   r›   r3   rg   )Ú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 s€w   Y  d S )Nz.foor•   Ú1Ú2ÚfooÚbarr   r   r   r   F)r   r.   )Úfileobjrm   r   Úutf8zfoo,bar
1,2
zfoo,bar
1,2
)r   r   r3   r4   r   rl   re   r§   r¨   Ú
getmembersÚlenÚextractfileÚreadÚdecoder   )rj   Ú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   )rh   ri   r(   Ú_BytesTarFile)rw   r$   r$   r%   Útest_tar_no_error_on_closew  s   
ÿÿ"ÿrÂ   )4rl   rh   r   Úpathlibr   r€   r‚   r§   r~   rq   r¡   Únumpyr_   r™   Úpandas.compatr   Úpandasr3   Úpandas._testingÚ_testingr   Úpandas.io.commonÚcommonr(   ÚmarkÚparametrizer4   rE   r&   r-   rg   Ú	read_jsonÚread_pickler=   rJ   rN   rk   ru   rx   Ú
single_cpur‡   rˆ   rŽ   r‘   r“   r¢   r¨   rž   r¤   r°   rÀ   rÂ   r$   r$   r$   r%   Ú<module>   sÔ    þûþ
þûþ


ýþ
ýþ


þûþ

þûþ
þûþ
	þþ
	