B
    ZŽ0d  ã            
   @   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‚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 d Q R X | d&¡}|d k	sÔt‚| d¡ tjtd'd% | d&¡ W d Q R X W d 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_1/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:   ú[/var/www/html/venv/lib/python3.7/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 d 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 d Q R X d S )NZESP_012345_6789ZESP_987654_3210Z
APF00006npZ
APF0001immg333333@gš™™™™™#@)ÚobsidsÚimgidsÚdatar   r   T)r   r    zobsids=B)r!   r   )
r   Zilocr	   Úto_hdfr   r&   r'   r=   r(   r>   )r5   r=   r>   r?   r   r8   Úpathr7   r:   r:   r;   Útest_categorical_conversion•   s     

rB   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 d Q R X d S )Nr   r   r   r   r   r   r   )Zdtype)r   r   r   r   r   r   r   r   T)r   r    )r   r)   r*   r   Úobjectr   r(   r   r	   r@   r   r&   r'   )r5   r   r8   rA   r7   r:   r:   r;   Ú!test_categorical_nan_only_columns´   s    


rD   zwhere, df, expectedzcol=="q"Úcolr   r   r   zcol=="a")r!   r   r8   c          	   C   s„   |j  d¡|_ ddi}t|j  ¡ ƒ}|j  d¡|_ |j j |¡|_ t| ƒ0}|j|dd|d t||d}t	 
||¡ W d Q R X d S )Nr   rE   r   r   r   )r   Zmin_itemsize)r!   )rE   r(   ÚsortedÚuniquer0   Zset_categoriesr	   r@   r   r&   r'   )r5   r!   r   r8   Ú
max_widthsZcategorical_valuesrA   r7   r:   r:   r;   Útest_convert_valueÊ   s    

rI   )Únumpyr)   r1   Zpandasr   r   r   r   r&   r   r   Zpandas.tests.io.pytables.commonr   r	   r
   ÚmarkZsingleÚfilterwarningsZ
pytestmarkr<   rB   rD   ZparametrizeÚstrrI   r:   r:   r:   r;   Ú<module>   s    z$