U
    NZfr                  	   @   s  d dl Z d dlmZ d dlZd dlmZ d dlZd dlZd dl	m
Z
mZmZmZmZmZmZ d dlmZ d dlmZmZ ejjZdd Zd	d
 Zdd Zdd Zdd Zdd Zej deddddde
e!dgdd Z"dd Z#dd Z$d d! Z%ej d"d#d$g d%d&gd'd( Z&dS ))    N)BytesIO)catch_warnings)CategoricalIndex	DataFrameHDFStore
MultiIndex_testing
date_rangeread_hdf)ensure_clean_store)Term_maybe_adjust_namec              
   C   s   t  }t| n}|d| d}tjt|d |jddgd W 5 Q R X d}tjt|d |jddgd W 5 Q R X W 5 Q R X d S )	Ndfzqcannot pass a column specification when reading a Fixed format store. this store must be selected in its entiretymatchA)columnszucannot pass a where specification when reading from a Fixed format store. this store must be selected in its entiretyz	columns=Awhere)tmmakeDataFramer   putpytestraises	TypeErrorselect)
setup_pathr   storemsg r   H/tmp/pip-unpacked-wheel-nbcvw55c/pandas/tests/io/pytables/test_errors.pytest_pass_spec_to_storer   s    
r!   c              
   C   s   t ddddgi}t ddddgitddd	d
}t| L}|jd|dd td}tjt|d |jd|ddd W 5 Q R X W 5 Q R X d S )Na                  z1/1/2000periods)indexframetableformatz/incompatible kind in col [integer - datetime64]r   T)r/   append)	r   r	   r   r   reescaper   r   r   )r   Zdf1df2r   r   r   r   r    $test_table_index_incompatible_dtypes/   s    

r4   c                 C   s   t | v}dtdddfg}|D ]V\}}t }|||< td| d}tjt	|d |
d| | W 5 Q R X q"W 5 Q R X t }d	|d
< d|d< tddd|d< | }t | 6}td}tjt	|d |
d| W 5 Q R X W 5 Q R X d S )Ndatei  r#   r$   [z&] is not implemented as a table columnr   Zdf1_fooZobj1barobj2Z	datetime1zjCannot serialize the column [datetime1]
because its data contents are not [string] but [date] object dtypeZdf_unimplemented)r   datetimer5   r   r   r1   r2   r   r   r   r0   Z_consolidate)r   r   Zdtypesnfr   r   r   r   r    'test_unimplemented_dtypes_table_columns:   s&    
(
r=   c                 C   s  t |}tdd t }d|d< d|j|jdd df< |jd|d	d
 td}t	j
t|d t  W 5 Q R X td}t	j
t|d |dd W 5 Q R X d}t	j
t|d |dd W 5 Q R X W 5 Q R X W 5 Q R X | | }ttjddtdtdddd}|j|dd	dd t|ddd t|ddd | | }ttjddtdtdddd}|j|dd	d
 d}t	j
t|d t|ddd W 5 Q R X d S )NT)recordr7   stringr8   r   r&   r   r-   r.   z:__init__() missing 1 required positional argument: 'where'r   zWcannot process expression [df.index[3]], [2000-01-06 00:00:00] is not a valid conditionzdf.index[3]zinvalid syntaxzindex>
   ABCDZ20130101r)   )r   r+   dfq)r/   Zdata_columnsz0index>Timestamp('20130104') & columns=['A', 'B']r   z
A>0 or C>0a  The passed where expression: A>0 or C>0\n\s*contains an invalid variable reference\n\s*all of the variable references must be a reference to\n\s*an axis \(e.g. 'index' or 'columns'\), or a data_column\n\s*The currently defined references are: index,columns\n)r   r   r   ZmakeTimeDataFramelocr+   r   r1   r2   r   r   r   r   
ValueErrorr   SyntaxErrorr   nprandomrandnlistr	   to_hdfr
   )tmp_pathr   r   r   r   pathrB   r   r   r    test_invalid_termsW   sN    
*

rM   c           
      C   s   t tjdd}t dtjdi}t dtjdi}t dtjdi}t ddtftjdi}t| d}dtd }||| ||||fD ]4}t	
d	}	tjt|	d
 ||| W 5 Q R X qW 5 Q R X d S )Nr@   r#   r"   r#   r$   )1r$   rO   r$   Zdf_z?cannot match existing table structure for [0] on appending datar   )r   rF   rG   rH   objectr   r   Zrandsr0   r1   r2   r   r   rD   )
r   r   r3   Zdf3Zdf4Zdf5r   namedr   r   r   r    7test_append_with_diff_col_name_types_raises_value_error   s    
rS   c              
   C   sh   t tjddtdtdd}t| 4}d}tjt	|d |j
|dd	d
 W 5 Q R X W 5 Q R X d S )Nr&   r'   abcdABCDEr+   r   z)complib only supports \[.*\] compression.r   r   Zfoolib)Zcomplib)r   rF   rG   randrI   r   Zensure_cleanr   r   rD   rJ   )r   r   rL   r   r   r   r    test_invalid_complib   s
     rX   idxZ2019Dr%   UTC)freqr*   tzabcc              	   C   sP   t | | g}td|dgd}|| }tjtdd ||d W 5 Q R X d S )Nr   r"   rV   zSaving a MultiIndexr   r   )r   Zfrom_arraysr   r   r   NotImplementedErrorrJ   )rY   rK   r   mir   rL   r   r   r    &test_to_hdf_multiindex_extension_dtype   s
    	ra   c              	   C   s6   | ddd}d}t jt|d t| W 5 Q R X d S )Niodataz"legacy_hdf/incompatible_dataset.h5z_Dataset\(s\) incompatible with Pandas data types, not table, or no datasets found in HDF5 file.r   )r   r   rD   r
   )datapathZ	data_pathmessager   r   r    test_unsuppored_hdf_file_error   s
    rf   c              	   C   s   t tjddtdtdd}||  }d}tjt|d t|d W 5 Q R X |	|d	 t
|d
d}|  d}tjt|d t|d	 W 5 Q R X d S )Nr&   r'   rT   rU   rV   zFile [\S]* does not existr   keyr   r)modez&The HDFStore must be open for reading.)r   rF   rG   rW   rI   r   r   OSErrorr
   rJ   r   close)r   rK   r   rL   r   r   r   r   r    test_read_hdf_errors   s     rl   c               	   C   s0   d} t jt| d ttdd W 5 Q R X d S )Nz5Support for generic buffers has not been implemented.r       r   )r   r   r_   r
   r   )r   r   r   r    #test_read_hdf_generic_buffer_errors   s    rn   bad_versionrN   )r#   Z12Z123c              	   C   s.   d}t jt|d td| d W 5 Q R X d S )Nz5Version is incorrect, expected sequence of 3 integersr   Zvalues_block_0)version)r   r   rD   r   )ro   r   r   r   r    )test_maybe_adjust_name_bad_version_raises   s    rq   )'r:   rb   r   r1   warningsr   ZnumpyrF   r   Zpandasr   r   r   r   r   r   r	   r
   Zpandas.tests.io.pytables.commonr   Zpandas.io.pytablesr   r   markZ
single_cpuZ
pytestmarkr!   r4   r=   rM   rS   rX   ZparametrizerI   ra   rf   rl   rn   rq   r   r   r   r    <module>   s6   $	=

	