a
    nÝEb!  ã                	   @   sŽ  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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d)d*„ Z 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¢¡d/d0„ ƒƒZ#dS )1é    N)ÚPathÚ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   st   t  ¡ �X}t| |ƒ||d� tj |¡}t| |ƒ|d d� tj |¡}||ksRJ ‚W d   ƒ n1 sf0    Y  d S )N©Úcompression©ÚtmÚensure_cleanÚgetattrÚosÚpathÚgetsize)r   r   Úcompression_onlyr   Úcompressed_sizeÚuncompressed_size© r   ú`/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/pandas/tests/io/test_compression.pyÚtest_compression_size   s    
r!   r   r   c              	   C   s  t  ¡ �h}tj|d|d��,}t| |ƒ|jƒ |jjr8J ‚W d   ƒ n1 sL0    Y  tj 	|¡}W d   ƒ n1 sv0    Y  t  ¡ �t}tj|dd d��,}t| |ƒ|jƒ |jjr¸J ‚W d   ƒ n1 sÌ0    Y  tj 	|¡}||ksîJ ‚W d   ƒ n1 �s0    Y  d S )NÚ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j| }t d| ¡�2}t|| ƒ|fi |¤Ž |||d�}W d   ƒ n1 sn0    Y  t ||¡ d S )N)g      ð?r   éüÿÿÿ)g333333@é   é   r   r   Ú
compressedr   )ÚpdÚ	DataFramer#   Ú_compression_to_extensionr   r   r   Úassert_frame_equal)Úwrite_methodÚwrite_kwargsÚread_methodr   ÚinputÚ	extensionr   Úoutputr   r   r    Ú,test_dataframe_compression_defaults_to_infer>   s    
*r8   z1write_method,write_kwargs,read_method,read_kwargsT)r)   ÚheaderÚsqueezeÚtypZseriesc           
      C   sº   t jg d¢dd�}tj| }t d| ¡�l}t|| ƒ|fi |¤Ž d|v rt| ¡ }|d= ||fd|i|¤Ž d¡}	n||fd|i|¤Ž}	W d   ƒ n1 sœ0    Y  tj	|	|dd	� d S )
N)r   r+   éþÿÿÿé
   r   r   r-   r:   r   r   F)Zcheck_names)
r.   ÚSeriesr#   r0   r   r   r   Úcopyr:   Zassert_series_equal)
r2   r3   r4   Zread_kwargsr   r5   r6   r   Úkwargsr7   r   r   r    Ú)test_series_compression_defaults_to_inferR   s    
ÿ2rA   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 sŒ0    Y  W d   ƒ n1 sª0    Y  d S )Nr   r   r   r   r   r"   r   )
r.   r/   r   r   r#   r$   Zassert_produces_warningÚRuntimeWarningr   r%   )r   Údfr   r'   r   r   r    Útest_compression_warningm   s    þ
rD   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 s„0    Y  t	 
¡ }|j|d| d� | d¡ t  |tj|d| d�¡ dS )z?
    Binary file handles support compression.

    GH22555
    Úwb)Úmode)rF   r   r   N)Z	index_colr   )r   ÚmakeDataFramer   Úopenr   Úseekr1   r.   Úread_csvÚioÚBytesIO)r   rC   r   Úfiler   r   r    Útest_compression_binaryz   s    
(ÿ"
ÿrN   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   r,   N)r   rG   r   r   r   ÚtimeÚsleepÚ
read_bytes)rC   Úcompression_optionsr   r7   r   r   r    Ú#test_gzip_reproducibility_file_name”   s    


rW   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
    rO   rP   rQ   rE   )r   rF   r,   N)r   rG   rK   rL   r   ÚgetvaluerS   rT   )rC   rV   Úbufferr7   r   r   r    Ú%test_gzip_reproducibility_file_object©   s    

rZ   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    ÿrh   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[   r\   Nr^   rf   r   r   r    Útest_with_missing_lzma_runtimeÉ   s    ÿri   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 )NrO   r   rP   ©r   Úcompresslevelr   )r   r   r   Zcompressed_size_defaultZcompressed_size_fastr   r   r    Útest_gzip_compression_levelÛ   s    
rl   c                 C   sD   t  ¡ �(}t| |ƒ|dddœd� W d  ƒ n1 s60    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   rj   r   N)r   r   r   )r   r   r   r   r   r    Útest_bzip_compression_levelð   s    
rn   )$rK   r   Úpathlibr   ra   rc   r_   rS   ZpytestZpandasr.   Zpandas._testingZ_testingr   Zpandas.io.commonÚcommonr#   ÚmarkZparametrizer/   r>   r!   r(   rJ   Ú	read_jsonZread_pickler8   rA   rD   rN   rW   rZ   rh   ri   rl   rn   r   r   r   r    Ú<module>   s˜   þûþ
	þûþ


ýþ
ýþ
þûþ

þûþ
