U
    cT                  
   @   s   d dl Zd dlZd dlmZmZmZmZm	Z	m
Z
 d dlmZmZmZ ejjejdgZdd Zdd Zd	d
 Zejddeddddgiedg ifdeddddgieddgifgeeedddZdS )    N)Categorical	DataFrameSeries_testingconcatread_hdf)_maybe_removeensure_clean_pathensure_clean_storez6ignore:a closed node found in the registry:UserWarningc           
   
   C   s  t | 
}t|d ttddddddgddddgdd}|jd|dd	 |d}t|| t|d
 ttddddddgddddgdd}|jd
|dd	 |d
}t|| t|d t|ddddddgd}|jd|dd	 |d}t	|| t|d tdddddddg
d}|d| |d}t|| t|d tddtjddddg
d}|d| |d}t|| t|d | }ttd
d|d< |d| |d}t	|| | }d|kstd|kstd|kstt|d ttddddddgddddgdd}|jd|dd	 |d}t|| t|d |jd|dgd ||jddg }|jddgd }t	|| ||jddg }|jdd!gd }t	|| ||jdg }|jdd"gd }t	|| ||jd#g }|jdd$gd }t	|| |d| t||g}||jddg }|jddgd }t	|| | }|d j |d< d%}	tjt|	d& |d| W 5 Q R X |d'}|d k	st|d tjtd(d& |d' W 5 Q R X W 5 Q R X d S ))NsabcdF)
categoriesZorderedtable)formatZ	s_orderedTdf                  )r   valssicategoryZsi2df2Zabcdefgs2z/df2   z/df2/meta/values_block_0/metaz/df2/meta/values_block_2/metadf3)data_columnszs in ["b","c"]wherezs = ["b","c"]z
s in ["d"]fz
s in ["f"]zEcannot append a categorical with different categories to the existing)matchzdf3/meta/s/metaz-'No object named df3/meta/s/meta in the file')r
   r   r   r   appendselecttmZassert_series_equalr   assert_frame_equalastypenpnancopylistinfoAssertionErrorr   isinr   catZremove_unused_categoriespytestZraises
ValueErrorremoveKeyError)

setup_pathstorer   resultr   r   r.   expectedr   msg r;   M/tmp/pip-unpacked-wheel-g7fro6k3/pandas/tests/io/pytables/test_categorical.pytest_categorical   s    



















 r=   c              	   C   s   ddg}ddg}ddg}t |||d}|jg d d f }t| 2}|j|dd	d
d t|ddd}t|| W 5 Q R X |jd|_|j	d|_	|jg d d f }t| 2}|j|dd	d
d t|ddd}t|| W 5 Q R X d S )NZESP_012345_6789ZESP_987654_3210Z
APF00006npZ
APF0001immg333333@g#@)obsidsimgidsdatar   r   Tr   r    zobsids=Br!   r   )
r   Zilocr	   to_hdfr   r'   r(   r>   r)   r?   )r6   r>   r?   r@   r   r9   pathr8   r;   r;   r<   test_categorical_conversion   s     

rD   c              	   C   s   t dddtjgtjtjtjtjgddddgtd gd tdd	}|jd
|d< |jd
|d< |jd
|d< |}t| .}|j	|dddd t
|d}t|| W 5 Q R X d S )Nr   r   r   r   r   r   r   )Zdtype)r   r   r   r   r   r   r   r   TrA   )r   r*   r+   r   objectr   r)   r   r	   rB   r   r'   r(   )r6   r   r9   rC   r8   r;   r;   r<   !test_categorical_nan_only_columns   s    


rF   zwhere, df, expectedzcol=="q"colr   r   r   zcol=="a")r"   r   r9   c              	   C   s   |j d|_ ddi}t|j  }|j d|_ |j j||_ t| 0}|j|dd|d t||d}t	
|| W 5 Q R X d S )Nr   rG   r   r   r   )r   Zmin_itemsizer!   )rG   r)   sorteduniquer1   Zset_categoriesr	   rB   r   r'   r(   )r6   r"   r   r9   Z
max_widthsZcategorical_valuesrC   r8   r;   r;   r<   test_convert_value   s    

rJ   )Znumpyr*   r2   Zpandasr   r   r   r   r'   r   r   Zpandas.tests.io.pytables.commonr   r	   r
   markZ
single_cpufilterwarningsZ
pytestmarkr=   rD   rF   ZparametrizestrrJ   r;   r;   r;   r<   <module>   s$    	{ 