o
    ŀgR                  	   @   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Zdd Zdd Zdd	 Zejd
dedg diedg ifdedg dieddgifgdededefddZdS )    N)Categorical	DataFrameSeries_testingconcatread_hdf)_maybe_removeensure_clean_storec           
   	   C   s6  t | }t|d ttg dg ddd}|jd|dd |d}t|| t|d ttg dg dd	d}|jd|dd |d}t|| t|d
 t|g dd}|jd
|dd |d
}t	|| t|d tg d
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|v sJ d|v sJ d|v sJ t|d ttg dg d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    n	1 sw   Y  |d)}|d usJ |d tjtd*d( |d) W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S )+Ns)abr   r   r   cr   r   r   dF)
categoriesorderedtable)format	s_orderedTdf)                  )r
   valssi)r   r   r   r   r   r   r   categorysi2r   r   r   r   r   df2abcdefgs2z/df2   z/df2/meta/values_block_0/metaz/df2/meta/values_block_2/metadf3)data_columnsr   r   zs in ["b","c"]wherezs = ["b","c"]r   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tmassert_series_equalr   assert_frame_equalastypenpnancopylistinfor
   isinr   catremove_unused_categoriespytestraises
ValueErrorremoveKeyError)

setup_pathstorer
   resultr   r    r3   expectedr#   msg rA   ]/var/www/html/myenv/lib/python3.10/site-packages/pandas/tests/io/pytables/test_categorical.pytest_categorical   s   
















 r$rC   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 )NESP_012345_6789ESP_987654_3210
APF00006np
APF0001immg333333@g#@)obsidsimgidsdatar   r   Tkeyr   r$   zobsids=Br%   r   )	r   ilocto_hdfr   r+   r-   rH   r.   rI   )	tmp_pathr<   rH   rI   rJ   r   r?   pathr>   rA   rA   rB   test_categorical_conversion   s    rQ   c                 C   s   t dddtjgtjtjtjtjgg d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   r   )dtyper   r   r   r   r   TrK   )r   r/   r0   r   objectr   r.   r   rN   r   r+   r-   )rO   r<   r   r?   rP   r>   rA   rA   rB   !test_categorical_nan_only_columns   s   
rT   zwhere, df, expectedzcol=="q"col)r   r   r
   zcol=="a"r   r&   r   r?   c           	      C   sx   |j d|_ ddi}t|j  }|j d|_ |j j||_ | | }|j|dd|d t||d}t	|| d S )Nr   rU   r   r   r   )rL   r   min_itemsizer%   )
rU   r.   sorteduniquer5   set_categoriesrN   r   r+   r-   )	rO   r<   r&   r   r?   
max_widthscategorical_valuesrP   r>   rA   rA   rB   test_convert_value   s   r\   )numpyr/   r7   pandasr   r   r   r   r+   r   r   pandas.tests.io.pytables.commonr   r	   mark
single_cpu
pytestmarkrC   rQ   rT   parametrizestrr\   rA   rA   rA   rB   <module>   s*     y