o
    �¨Êh70  ã                	   @   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$   úR/var/www/html/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 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 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 )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.
    Ú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 s€w   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Ô    þûþ
þûþ


ýþ
ýþ


þûþ

þûþ
þûþ
	þþ
	