o
    ŀgg;                     @   sV   d dl 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 )    N)union_categoricals)CategoricalCategoricalIndexSeriesc                   @   s  e Zd Zejdedededfg dg dg dfg dg d	g d
fddejdgdejdgddejddejdgfe	
dde	
dde	
ddfe	j
dddde	j
dddde	j
ddddfe	dde	dde	ddfgejdeeegdd Zdd Zdd Zdd Zdd Zdd  Zejd!g d"ggd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Z d;d< Z!d=d> Z"d?d@ Z#dAS )BTestUnionCategoricalsza, b, combinedabcabdabcabd)r         r         )r   r
   r   r   r   r   r   333333?r   )r   333333@r   )r   r   r   r   r   r   bacz
2014-01-01z
2014-01-05z
2014-01-06z
2014-01-07z
US/Central)tzboxc                 C   s4   t |t||t|g}t|}t|| d S )N)r   r   tmassert_categorical_equal)selfr   r   combinedr   resultexpected r   `/var/www/html/myenv/lib/python3.10/site-packages/pandas/tests/reshape/test_union_categoricals.pytest_union_categorical   s   z,TestUnionCategoricals.test_union_categoricalc                 C   sH   t g d}t g d}t||g}t g dg dd}t|| d S )Nxyzr   r   r   r!   r"   r#   r   r   r   
categoriesr   r   r   r   r   ss2r   r   r   r   r   )test_union_categorical_ordered_appearance3   s   z?TestUnionCategoricals.test_union_categorical_ordered_appearancec                 C   sL   t g ddd}t g ddd}t||g}t g ddd}t|| d S )Nr   Tordered)r   r   r   r   r   r   r(   r)   r   r   r   #test_union_categorical_ordered_true=   s
   z9TestUnionCategoricals.test_union_categorical_ordered_truec                 C   s\   t g d}t g d}d}tjt|d t||g W d    d S 1 s'w   Y  d S )Nr   r   z$dtype of categories must be the samematch)r   pytestraises	TypeErrorr   )r   r*   r+   msgr   r   r   "test_union_categorical_match_typesD   s   "z8TestUnionCategoricals.test_union_categorical_match_typesc                 C   s@   d}t jt|d tg  W d    d S 1 sw   Y  d S )NzNo Categoricals to unionr0   )r2   r3   
ValueErrorr   )r   r5   r   r   r   test_union_categorical_emptyL   s   
"z2TestUnionCategoricals.test_union_categorical_emptyc                 C   s  t tddtjgtddtjgg}tddtjddtjg}t|| t tddgtddtjgg}tddddtjg}t|| tdtdtjg}tjtdtdg}t t|t|g}t|| tdtdtdgd	}t|| t ttj	tjtjgt
d
tdgtjdgt
d
d	g}ttjtjdg}t|| t ttjtjgttjtjgg}ttjtjtjtjg}t|| d S )Nr
   r   r   ABz
2011-01-01z
2011-03-01z
2011-02-01r&   dtypeX)r   r   npnanr   r   pd	TimestampNaTarrayobjectIndex)r   resexpval1val2r   r   r   test_union_categoricals_nanQ   sB   z1TestUnionCategoricals.test_union_categoricals_nanval1c                 C   sL   |r|dgkr| tjd ttg t|g}t|}t|| d S )NrL   zobject and strings dont match)applymarkerr2   markxfailr   r   r   r   )r   rK   requestusing_infer_stringrF   rG   r   r   r   test_union_categoricals_empty}   s
   z3TestUnionCategoricals.test_union_categoricals_emptyc              	   C   sl   t g dg dd}t dddtjgg dd}t||g}t dddddddtjgg dd}t|| d S )N)r
   r   r   r   r&   r   r   r
   r   r   r>   r?   r   r   r   r   c1c2rF   rG   r   r   r   $test_union_categorical_same_category   s
   "z:TestUnionCategoricals.test_union_categorical_same_categoryc                 C   sX   t g dg dd}t g dg dd}t||g}t g dg dd}t|| d S )N)r#   r#   r#   r    r&   )r!   r!   r!   )r#   r#   r#   r!   r!   r!   r(   rT   r   r   r   (test_union_categorical_same_category_str   s
   z>TestUnionCategoricals.test_union_categorical_same_category_strc                 C   sX   t g dg dd}t g dg dd}t||g}t g dg dd}t|| d S )Nr$   r&   r   r   r   )r   r   r   r   r   r   r(   r   rU   rV   r   r   r   r   r   6test_union_categorical_same_categories_different_order   s   zLTestUnionCategoricals.test_union_categorical_same_categories_different_orderc                 C   sN  t g ddd}t g ddd}d}tjt|d t||g W d    n1 s*w   Y  t||g}t g ddd}t|| t dd	d
tjgdd}t d
d	gg ddd}t||g}t dd	d
tjd
d	gdd}t|| t g ddd}t g dg ddd}d}tjt|d t||g W d    d S 1 sw   Y  d S )Nr
   r   r   Tr-   F$Categorical.ordered must be the samer0   r
   r   r   r
   r   r   r
   r   r   r'   r.   r   r   r
   >to union ordered Categoricals, all categories must be the same)	r   r2   r3   r4   r   r   r   r>   r?   )r   rU   rV   r5   rF   rG   r   r   r   test_union_categoricals_ordered   s(   "z5TestUnionCategoricals.test_union_categoricals_orderedc                 C   s  t g ddd}t g ddd}t||gdd}t g d}t|| d}tjt|d t||gdd W d    n1 s@w   Y  t||gdd}t g d}t|| t||gdd}t g dg ddd	}t|| t d
ddtjgdd}t ddgg ddd	}t||gdd}t d
ddtjddg}t|| t g ddd}t g dg ddd	}t||gdd}t g d}t|| t||gddd}t g dg dd}t|| t g ddd}t g ddd}t||gdd}t g d}t|| d}tjt|d t||gdd W d    n	1 s"w   Y  tjt|d t||g W d    d S 1 sAw   Y  d S )Nr\   Tr-   F)ignore_orderr^   r]   r0   r_   r
   r   r   r`   )rc   sort_categoriesr&   )r         )r
   r   r   r   re   rf   ra   )	r   r   r   r   r2   r3   r4   r>   r?   )r   rU   rV   rF   rG   r5   r   r   r   r   r   $test_union_categoricals_ignore_order   sP   $z:TestUnionCategoricals.test_union_categoricals_ignore_orderc                 C   s  t g d}t g d}t||gdd}t g dg dd}t|| t dd	gg d
d}t d	dgg d
d}t||gdd}t g dg dd}t|| t dd	gg dd}t d	dgg dd}t||gdd}t g dg dd}t|| t dd	gg dd}t d	dgg dd}t||gdd}t g dg dd}t|| t dtjg}t tjd	g}t||gdd}t dtjtjd	gd	dgd}t|| t tjg}t tjg}t||gdd}t tjtjg}t|| t g }t g }t||gdd}t g }t|| t d	dgg d
dd}t ddgg d
dd}d}tjt|d t||gdd W d    d S 1 sBw   Y  d S )Nr    r$   Trd   r%   )r   r   r   r!   r"   r#   r&   r   r   rY   r   r   r   r   r   )r   r   r   r!   r_   z9Cannot use sort_categories=True with ordered Categoricalsr0   )	r   r   r   r   r>   r?   r2   r3   r4   r   rU   rV   r   r   r5   r   r   r   test_union_categoricals_sort   sV   $z2TestUnionCategoricals.test_union_categoricals_sortc                 C   sL   t g d}t g d}t||gdd}t g dg dd}t|| d S )Nr    r$   Frh   r%   r&   r(   rZ   r   r   r   "test_union_categoricals_sort_false#  s   z8TestUnionCategoricals.test_union_categoricals_sort_falsec                 C   \   t ddgg dd}t ddgg dd}t||gdd}t g dg dd}t|| d S )	Nr   r   rY   r&   r   Frh   ri   r(   rZ   r   r   r   +test_union_categoricals_sort_false_fastpath-  
   zATestUnionCategoricals.test_union_categoricals_sort_false_fastpathc                 C   rm   )	Nr   r   r$   r&   r   Frh   ri   r(   rZ   r   r   r   -test_union_categoricals_sort_false_skipresort5  ro   zCTestUnionCategoricals.test_union_categoricals_sort_false_skipresortc                 C   sX   t dtjg}t tjdg}t||gdd}t dtjtjdgddgd}t|| d S )Nr!   r   Frh   r&   rS   rZ   r   r   r   *test_union_categoricals_sort_false_one_nan=  s
   z@TestUnionCategoricals.test_union_categoricals_sort_false_one_nanc                 C   sH   t tjg}t tjg}t||gdd}t tjtjg}t|| d S NFrh   rS   rZ   r   r   r   +test_union_categoricals_sort_false_only_nanD  s
   zATestUnionCategoricals.test_union_categoricals_sort_false_only_nanc                 C   s8   t g }t g }t||gdd}t g }t|| d S rr   r(   rZ   r   r   r   (test_union_categoricals_sort_false_emptyK  s
   z>TestUnionCategoricals.test_union_categoricals_sort_false_emptyc                 C   sb   t ddgg ddd}t ddgg ddd}t||gdd}t g d	g ddd}t|| d S )
Nr   r   rY   Tr_   r   Frh   )r   r   r   r   r(   rZ   r   r   r   /test_union_categoricals_sort_false_ordered_trueR  s   zETestUnionCategoricals.test_union_categoricals_sort_false_ordered_truec                 C   s   t ddg}tddgdd}t||g}t g d}t|| t|}t||g}t|| t|}t||g}t|| d}tjt|d t|g d	g W d    d S 1 s]w   Y  d S )
Nr   r   r   categoryr;   ri   z-all components to combine must be Categoricalr0   r$   )	r   r   r   r   r   r   r2   r3   r4   rj   r   r   r   test_union_categorical_unwrap[  s   "z3TestUnionCategoricals.test_union_categorical_unwrapN)$__name__
__module____qualname__r2   rN   parametrizelistr>   r?   r@   
date_rangeperiod_ranger   r   r   r   r,   r/   r6   r8   rJ   rR   rW   rX   r[   rb   rg   rk   rl   rn   rp   rq   rs   rt   ru   rw   r   r   r   r   r      s^    







,

46
	r   )numpyr>   r2   pandas.core.dtypes.concatr   pandasr@   r   r   r   pandas._testing_testingr   r   r   r   r   r   <module>   s    