U
    +¿ifT  ã                
   @   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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;   ú\/home/mars/bis/venv/lib/python3.8/site-packages/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   Ú
max_widthsZcategorical_valuesrC   r8   r;   r;   r<   Útest_convert_valueË   s    

rK   )Ú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ÚstrrK   r;   r;   r;   r<   Ú<module>   s$    ÿý	{ þþ