3
Ud                 @   sx  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jZ	d dl
jjZejjdejddddgddd	gg d
ddgdejddddg d
dgejjddddgdd Zejjdejddddgddd	gg d
ddgdejddddg d
dgejjdddgdd Zej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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ejjdejddddgddd	gg d
ddgdejddddg d
dgejjddddgd*d+ Zejjdejddddgddd	gg d
ddgdejddddg d
dgejjddddgd,d- ZdS ).    Nobjd   g~Ϛ?g9DܜJ?g>D)?g.4i(@g33333@g̤AXYZ)columns)namemethodZ	to_pickleto_jsonto_csvc             C   s`   t j N}t| |||d tjj|}t| ||d d tjj|}||ksRtW d Q R X d S )N)compression)tmensure_cleangetattrospathgetsizeAssertionError)r   r	   compression_onlyr   compressed_sizeuncompressed_size r   T/var/www/html/virt/lib64/python3.6/site-packages/pandas/tests/io/test_compression.pytest_compression_size   s    
r   c             C   s   t j Z}tj|d|d\}}|  t| || |j s>tW d Q R X |jsRttjj	|}W d Q R X t j f}tj|dd d\}}|  t| || |j stW d Q R X |jsttjj	|}||kstW d Q R X d S )Nw)r   )
r   r   icom
get_handler   closedr   r   r   r   )r   r	   r   r   fhandlesr   r   r   r   r   test_compression_size_fh"   s    



r    z'write_method, write_kwargs, read_methodindexFc             C   sv   t jdddgdddggddd	gd
}tj| }tjd| $}t|| |f| |||d}W d Q R X tj|| d S )Ng      ?r      g333333@      r   r   r   )r   
compressed)r   )pd	DataFramer   _compression_to_extensionr   r   r   Zassert_frame_equal)write_methodwrite_kwargsread_methodr   input	extensionr   outputr   r   r   ,test_dataframe_compression_defaults_to_infer?   s    $
r0   z1write_method,write_kwargs,read_method,read_kwargsT)r!   headerZsqueezetypZseriesc       	      C   st   t jddddgdd}tj| }tjd| ,}t|| |f| ||fd|i|}W d Q R X tj||d	d
 d S )Nr   r#   r$   
   r   )r   r%   r   F)Zcheck_names)r'   Seriesr   r)   r   r   r   Zassert_series_equal)	r*   r+   r,   Zread_kwargsr   r-   r.   r   r/   r   r   r   )test_series_compression_defaults_to_inferS   s    
r6   c             C   s   t jddddgdddgg dd	d
gd}tj R}tj|d| d\}}tjtdd$ | |j|| d W d Q R X W d Q R X W d Q R X d S )Nr   g~Ϛ?g9DܜJ?g>D)?g.4i(@g33333@g̤Ar   r   r   )r   r   )r   F)Zcheck_stacklevel)	r'   r(   r   r   r   r   Zassert_produces_warningRuntimeWarningr   )r   dfr   r   r   r   r   r   test_compression_warningg   s    
r9   c              C   s&   t j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
        z-c)stderrN)textwrapdedent
subprocesscheck_outputsys
executablePIPE)coder   r   r   test_with_missing_lzmau   s    rC   c              C   s&   t j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
        df = pandas.DataFrame()
        with pytest.raises(RuntimeError, match='lzma module'):
            df.to_csv('foo.csv', compression='xz')
        z-c)r:   N)r;   r<   r=   r>   r?   r@   rA   )rB   r   r   r   test_with_missing_lzma_runtime   s    	rD   c             C   sf   t j T}t| ||dd tjj|}t| ||dddd tjj|}||k sXtW d Q R X d S )Ngzip)r      )r	   compresslevel)r   r   r   r   r   r   r   )r   r	   r   Zcompressed_size_defaultZcompressed_size_fastr   r   r   test_gzip_compression_level   s    
rH   c             C   s0   t j }t| ||dddd W dQ R X 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.
    bz2rF   )r	   rG   )r   N)r   r   r   )r   r	   r   r   r   r   test_bzip_compression_level   s    
rJ   )r   r=   r?   r;   ZpytestZpandasr'   Zpandas._testingZ_testingr   Zpandas.io.commoniocommonr   markZparametrizer(   r5   r   r    Zread_csv	read_jsonZread_pickler0   r6   r9   rC   rD   rH   rJ   r   r   r   r   <module>   s`   


