U
    NZßfK  ã                
   @   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sôt‚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	sât‚| 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-nbcvw55c/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 þþ  ÿ