U
    gK                  
   @   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 ejj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_storec           
   
   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-r98eu4ag/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 }| | }|j|dd	d
d t|ddd}t|| |jd|_|jd|_|jg d d f }| | }|j|dd	d
d t|ddd}t|| 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ilocto_hdfr   r&   r'   r=   r(   r>   )	tmp_pathr5   r=   r>   r?   r   r8   pathr7   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< |}| | }|j|dddd t	|d}t
|| d S )Nr   r   r   r   r   r   r   )Zdtype)r   r   r   r   r   r   r   r   Tr@   )r   r)   r*   r   objectr   r(   r   rA   r   r&   r'   )rB   r5   r   r8   rC   r7   r:   r:   r;   !test_categorical_nan_only_columns   s    

rF   zwhere, df, expectedzcol=="q"colr   r   r
   zcol=="a")r!   r   r8   c           	      C   sx   |j d|_ ddi}t|j  }|j d|_ |j j||_ | | }|j|dd|d t||d}t	|| d S )Nr   rG   r   r   r   )r   Zmin_itemsizer    )
rG   r(   sorteduniquer0   Zset_categoriesrA   r   r&   r'   )	rB   r5   r!   r   r8   Z
max_widthsZcategorical_valuesrC   r7   r:   r:   r;   test_convert_value   s    rJ   )Znumpyr)   r1   Zpandasr   r   r   r   r&   r   r   Zpandas.tests.io.pytables.commonr   r	   markZ
single_cpuZ
pytestmarkr<   rD   rF   ZparametrizestrrJ   r:   r:   r:   r;   <module>   s$    y   