a
    Pf;%                     @   sZ   d dl m Z  d dlZd dlmZ d dlZd dlmZmZm	Z	 d dl
mZ G dd dZdS )    )datetimeN)CategoricalDtype)Categorical	DataFrameSeriesc                   @   sl   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd ZdS )TestCategoricalConcatc                 C   s   t tjdddddg dd}t tjdddd	d
ddgd}g d}tt||d< tj||fdd|d}t g dddd	dddtjtjtjtjtjtjtjgg dd gd | d}|d 	|d j
|d< t|| d S )N   int64dtype      abc)columns         r   r   )oner   twor   r   r   r   hr   T)axisignore_indexsort)r   r   r   	         r   r      r      
   r      r   r!         )r      r       r      r"   r   r%   r   r   r&   r#   )r   r   r   r   )r   nparangeZreshaper   r   pdconcatnanastyper   tmassert_frame_equal)selfr   df1df2Z
cat_valuesresexp r5   e/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/reshape/concat/test_categorical.pytest_categorical_concat   s:    "z-TestCategoricalConcat.test_categorical_concatc           	      C   s   g d}t g d}tg d}tg d}tjt|||gd|d}|j|sRtndk}tg d|d}t|| |jd	k}tg d
|d}t|| |jdk}tg d|d}t|| d S )N)catobjnumr   r"   r   r   r"   )r   keyszstring[pyarrow_numpy])FTFindexr	   )FFTcategory)TFF)r   r   r*   r+   Zdtypesobjectr.   assert_series_equal)	r0   Zusing_infer_stringr>   r8   r9   r:   dfresultexpectedr5   r5   r6   test_categorical_concat_dtypes6   s     


z4TestCategoricalConcat.test_categorical_concat_dtypesc                 C   s   g d}t dtjddg|dd}t dtjddg|dd}t dtjddg|dd}tj|||gdd	}tjg d
|d}tddtjtjgtjddtjgtjtjddgdg d|d}t|| d S )N)r   r   r"   r   r   r"   r   r   
categoriesr=   r   r   r   )r   r   r"   r   r   r"   r   )r   r>   )	r   r*   CategoricalIndexr+   r   r(   r,   r.   r/   )r0   rG   r   r   r   rC   Zexp_idxr4   r5   r5   r6   test_concat_categoricalindexL   s    	z2TestCategoricalConcat.test_concat_categoricalindexc                 C   s0  t tddd}t tddd}t td}tj||gdd}t|| t tddd}tj||gdd}t|| t tdg d	dd
}t||g}t|| t tjddd}t td}t||	t
tdd}t||g}tt||gt||g	t
tdd}t|| d S )Nabcr?   r
   ZabdZabcabdTr   Zabcabcr   r"   r   r   r"   r   r>   r   r   r	   aabbcacabAB)r   listr*   r+   r.   rA   r(   r)   r   r-   r   r/   )r0   ss2r4   r3   r   r   r2   r5   r5   r6    test_categorical_concat_preserveb   s*    z6TestCategoricalConcat.test_categorical_concat_preservec                 C   s   t tjddd}t td}t||ttddd}t	||g}tt	||gt	||gttddd}t
|| t|t|tdd	dd}t	||g}t	|j|jtd
d|j|jtd
dg}t
|| d S )Nr   r	   r
   rP   rQ   rR   rT   ZaberF   r   rH   )r   r(   r)   rU   r   r-   r   Z	set_indexr*   r+   r.   r/   r   Zset_axisr>   r@   )r0   r   r   r2   rC   rD   Zdf3r5   r5   r6    test_categorical_index_preserver   s8    z6TestCategoricalConcat.test_categorical_index_preserverc                 C   sj   t tjdddd}t ddgdd}tj||gd	d
}t tjdddtjdddddg}t|| d S )Nz
2017-01-01r   z
US/Pacific)Zperiodstzr   r   r?   r
   TrM   )rZ   z
2017-01-02)r   r*   Z
date_ranger+   	Timestampr.   rA   )r0   r   r   rC   rD   r5   r5   r6   test_concat_categorical_tz   s    z0TestCategoricalConcat.test_concat_categorical_tzc                 C   s   t dttddddgddi}t dttddddgddi}t||g}t dttdddtdddgi}t|| d S )Nxi  r"   r   r?   rO   r   )r   r   r   r*   r+   r.   assert_equal)r0   r1   r2   rC   rD   r5   r5   r6    test_concat_categorical_datetime   s    z6TestCategoricalConcat.test_concat_categorical_datetimec                 C   s   t tg dddd}tg dg ddd}tj||gd	d
}t tdddtjgddtdd	tjdgddd}t|| d S )Nr   r?   rS   )r   namerI   )r   r"   r   rT   )r>   r`   r"   rH   r   r   r   r
   r   r   floatrR   )r   r   r*   r+   r(   r,   r.   r^   )r0   rB   ZserrC   rD   r5   r5   r6   !test_concat_categorical_unchanged   s    z7TestCategoricalConcat.test_concat_categorical_unchangedc                 C   s   t g dtdd}t|d |d< |d jg d |dd }|dd  }t|d jj|d jj t|d jj|d jj t	||g}t|d jj|d jj |
|}t|d jj|d jj d S )	N)r"   r   r   r   r%   r   Zabbaae)id	raw_graderd   Zgrade)er   r   r   r   )r   rU   r   r8   Zset_categoriesr.   Zassert_index_equalrG   r*   r+   _append)r0   rB   r1   r2   ZdfxZdfar5   r5   r6   test_categorical_concat_gh7864   s    
z4TestCategoricalConcat.test_categorical_concat_gh7864c                 C   s   t dddgitddgd}t dddgitddgd}t||g}t dg d	ig d
d}t|| tddgtddgd}tddgtddgd}t||g}tg d	g d
d}t|| d S )Nfoor"   r   barr=   r   r   baz)r"   r   r   r   )rh   ri   rj   ri   )r   r   r*   r+   r.   r^   r   )r0   r   r   r3   r4   r5   r5   r6   test_categorical_index_upcast   s    z3TestCategoricalConcat.test_categorical_index_upcastc                 C   s   t dg di}t g dtg ddd}tj||gdd}td	g}t g d
tjg d|ddg dd}t	|| d S )Nf1r;   )r   r   r"   )r   r   r   r?   )rl   f2T)r   r   )r"   r   r   r   r   r"   )rn   rn   r   r   r   r
   rN   r=   )
r   r   r-   r*   r+   r   r   Z
from_codesr.   r/   )r0   r1   r2   rC   r   rD   r5   r5   r6   'test_categorical_missing_from_one_frame   s     
z=TestCategoricalConcat.test_categorical_missing_from_one_framec                 C   s   t jddgddgdd}t jddgddgdd}t jg dddgdd}tdddgi|d	}tdd
dgi|d	}t ||f}tdg di|d	}t|| d S )Nr   r   F)rG   ordered)r   r   r   r   rS   r"   r   r=   r   r   )r"   r   r   r   )r*   rJ   r   r+   r.   r/   )r0   c1c2c3r1   r2   rC   rD   r5   r5   r6   7test_concat_categorical_same_categories_different_order  s    zMTestCategoricalConcat.test_concat_categorical_same_categories_different_orderN)__name__
__module____qualname__r7   rE   rK   rX   rY   r\   r_   rb   rg   rk   ro   rt   r5   r5   r5   r6   r      s   %r   )r   numpyr(   Zpandas.core.dtypes.dtypesr   Zpandasr*   r   r   r   Zpandas._testingZ_testingr.   r   r5   r5   r5   r6   <module>   s   