
    Eg;%                     h    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          ZdS )    )datetimeN)CategoricalDtype)Categorical	DataFrameSeriesc                   V    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd ZdS )TestCategoricalConcatc                    t          t          j        dd                              dd          g d          }t          t          j        dd                              d	d
          ddg          }g d}t	          t          |                    |d<   t          j        ||f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z  |z   d          }|d         	                    |d         j
                  |d<   t          j        ||           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arangereshaper   r   pdconcatnanastyper   tmassert_frame_equal)selfr   df1df2
cat_valuesresexps          a/var/www/sysmax/venv/lib/python3.11/site-packages/pandas/tests/reshape/concat/test_categorical.pytest_categorical_concatz-TestCategoricalConcat.test_categorical_concat   sf   Ib(((00A66
 
 
 	"G444<<QBBSRUJWWWFFF
+j1122Cic
DIII@@@FFFFFFF BAAVaZ*,% 
 
, s8??3s8>22C
c3'''''    c                    g d}t          g d          }t          g d          }t          g d          }t          j        t          |          ||gd|          }|j        |st
          ndk    }t          g d|          }t          j        ||           |j        d	k    }t          g d
|          }t          j        ||           |j        dk    }t          g d|          }t          j        ||           d S )N)catobjnumr   r%   r   r   r%   )r   keyszstring[pyarrow_numpy])FTFindexr   )FFTcategory)TFF)r   r   r.   r/   dtypesobjectr2   assert_series_equal)	r4   using_infer_stringrD   r>   r?   r@   dfresultexpecteds	            r:   test_categorical_concat_dtypesz4TestCategoricalConcat.test_categorical_concat_dtypes6   s    %%%///**___%%YYYYsS#.QUCCC,IFF2I
 ...e<<<
vx000g%...e<<<
vx000j(...e<<<
vx00000r<   c                 D   g d}t          dt          j        ddg|                    }t          dt          j        ddg|                    }t          dt          j        ddg|                    }t          j        |||gd	          }t          j        g 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|          }t          j        ||           d S )N)r   r   r%   r   r   r%   r   r   
categoriesrC   r   r   r   )r   r   r%   r   r   r%   r   )r   rD   )	r   r.   CategoricalIndexr/   r   r+   r0   r2   r3   )r4   rP   r   r   r   rK   exp_idxr9   s           r:   test_concat_categoricalindexz2TestCategoricalConcat.test_concat_categoricalindexL   s%   $__
1B/A:NNNOOO1B/A:NNNOOO1B/A:NNNOOOAq!91---%lllzJJJq"&"&)FAq"&)FBFAq) 
 II
 
 
 	fc*****r<   c           
      ^   t          t          d          d          }t          t          d          d          }t          t          d                    }t          j        ||gd          }t	          j        ||           t          t          d          d          }t          j        ||gd          }t	          j        ||           t          t          d          g d	d
          }t          j        ||g          }t	          j        ||           t          t          j        dd                    }t          t          d                    }t          ||	                    t          t          d                              d          }t          j        ||g          }t          t          j        ||g          t          j        ||g          	                    t          t          d                              d          }t	          j        ||           d S )NabcrE   r   abdabcabdTr   abcabcr   r%   r   r   r%   r   rD   r   r   r   aabbcacabAB)r   listr.   r/   r2   rH   r+   r,   r   r1   r   r3   )r4   ss2r9   r8   r   r   r6   s           r:    test_categorical_concat_preservez6TestCategoricalConcat.test_categorical_concat_preserveb   s    4;;j111DKKz222T(^^$$iBd333
sC(((T(^^:666iAT222
sC(((T(^^+=+=+=ZPPPiA
sC(((29Qg...//4>>""aahh/?U/L/L&M&MNNOOic
##Y1v&&Y1v&&--.>tE{{.K.KLL 
 
 	c3'''''r<   c           
      >   t          t          j        dd                    }t          t          d                    }t	          ||                    t          t          d                              d                              d          }t          j	        ||g          }t	          t          j	        ||g          t          j	        ||g                              t          t          d                              d                              d          }t          j        ||           t	          |t          |t          d          	          d                              d          }t          j	        ||g          }t          j	        |                    |j                            t                    d
          |                    |j                            t                    d
          g          }t          j        ||           d S )Nr   r   r   r^   r_   r`   rb   aberO   r   rQ   )r   r+   r,   rc   r   r1   r   	set_indexr.   r/   r2   r3   r   set_axisrD   rG   )r4   r   r   r6   rK   rL   df3s          r:    test_categorical_index_preserverz6TestCategoricalConcat.test_categorical_index_preserver   s   29Qg...//4>>""!((#3DKK#@#@AABB
 

)C.. 	 C:&&Y1v&&Y1v&&--.>tE{{.K.KLL 
 

 )C.. 	 	fh/// +aDKK@@@AA
 

)C.. 	 C:&&9SY--f55A>>SY--f55A>>
 
 	fh/////r<   c                 D   t          t          j        ddd                    }t          ddgd          }t          j        ||gd	
          }t          t          j        dd          t          j        dd          ddg          }t          j        ||           d S )Nz
2017-01-01r   z
US/Pacific)periodstzr   r   rE   r   TrZ   )ro   z
2017-01-02)r   r.   
date_ranger/   	Timestampr2   rH   )r4   r   r   rK   rL   s        r:   test_concat_categorical_tzz0TestCategoricalConcat.test_concat_categorical_tz   s    2=q\JJJKKC:Z000Aq6555\l;;;\l;;;	
 
 	vx00000r<   c                    t          dt          t          ddd          dgd          i          }t          dt          t          ddd          dgd          i          }t          j        ||g          }t          dt          t          ddd          t          ddd          g          i          }t          j        ||           d S )Nxi  r%   r   rE   r]   r   )r   r   r   r.   r/   r2   assert_equal)r4   r5   r6   rK   rL   s        r:    test_concat_categorical_datetimez6TestCategoricalConcat.test_concat_categorical_datetime   s    &$1--aS
KKKL
 
 &$1--aS
KKKL
 
 C:&&&(4A..q!0D0DEFFG
 
 	)))))r<   c           	      f   t          t          g ddd                    }t          g dg dd          }t          j        ||gd	
          }t          t          dddt          j        gd          t          dd	t          j        dgd          d          }t          j        ||           d S )Nr   rE   ra   )r   namerR   )r   r%   r   rb   )rD   rx   r%   rQ   r   r   r   r   r   r   floatr`   )r   r   r.   r/   r+   r0   r2   ru   )r4   rJ   serrK   rL   s        r:   !test_concat_categorical_unchangedz7TestCategoricalConcat.test_concat_categorical_unchanged   s     voooZcJJJKKYYYiiic:::B91---S#sBF3:FFFQ261-W=== 
 
 	)))))r<   c                    t          g dt          d          d          }t          |d                   |d<   |d         j                            g d           |dd         }|dd          }t          j        |d         j        j        |d         j        j                   t          j        |d         j        j        |d         j        j                   t          j	        ||g          }t          j        |d         j        j        |d         j        j                   |
                    |          }t          j        |d         j        j        |d         j        j                   d S )	N)r%   r   r   r"   r(   r   abbaae)id	raw_grader   grade)er   r   r   r   )r   rc   r   r>   set_categoriesr2   assert_index_equalrP   r.   r/   _append)r4   rJ   r5   r6   dfxdfas         r:   test_categorical_concat_gh7864z4TestCategoricalConcat.test_categorical_concat_gh7864   s5    000tH~~NNOO!"[/227
7&&7771gf
bko8#g,:J:UVVV
bko8#g,:J:UVVVic
##
bko8#g,:J:UVVVkk#
bko8#g,:J:UVVVVVr<   c                 "   t          dddgit          ddg                    }t          dddgit          ddg                    }t          j        ||g          }t          dg d	ig d
          }t	          j        ||           t          ddgt          ddg                    }t          ddgt          ddg                    }t          j        ||g          }t          g d	g d
          }t	          j        ||           d S )Nfoor%   r   barrC   r"   r   baz)r%   r   r"   r   )r   r   r   r   )r   r   r.   r/   r2   ru   r   )r4   r   r   r8   r9   s        r:   test_categorical_index_upcastz3TestCategoricalConcat.test_categorical_index_upcast   s#   
 uq!fo[%-H-HIIIuq!fo[%-H-HIIIiA-5Q5Q5QRRR
S!!!Aq6eU^!<!<===Aq6eU^!<!<===iA\\\)E)E)EFFF
S!!!!!r<   c                 n   t          dg di          }t          g dt          g d                              d          d          }t          j        ||gd          }t          d	g          }t          g d
t          j        g d|          dg d          }t          j	        ||           d S )Nf1rA   )r   r   r%   )r"   r"   r"   rE   )r   f2T)r   r"   )r%   r   r   r   r   r%   )r   r   r   r   r   r   r\   rC   )
r   r   r1   r.   r/   r   r   
from_codesr2   r3   )r4   r5   r6   rK   r   rL   s         r:   'test_categorical_missing_from_one_framez=TestCategoricalConcat.test_categorical_missing_from_one_frame   s    yyy)**yyyyyy0A0A0H0H0T0TUUVVC:D111 !%%(((!,-B-B-B%PPP  %$$
 
 
 	fh/////r<   c                 |   t          j        ddgddgd          }t          j        ddgddgd          }t          j        g dddgd          }t          dddgi|	          }t          dd
dgi|	          }t          j        ||f          }t          dg di|	          }t	          j        ||           d S )Nr   r   F)rP   ordered)r   r   r   r   ra   r%   r   rC   r   r"   )r%   r   r   r"   )r.   rS   r   r/   r2   r3   )r4   c1c2c3r5   r6   rK   rL   s           r:   7test_concat_categorical_same_categories_different_orderzMTestCategoricalConcat.test_concat_categorical_same_categories_different_order  s      #sc
ERRR #sc
ERRR    c3Z
 
 
 q!fR000q!fR000C:&&c<<<0;;;
fh/////r<   N)__name__
__module____qualname__r;   rM   rU   rf   rl   rr   rv   r{   r   r   r   r    r<   r:   r	   r	      s        #( #( #(J1 1 1,+ + +,( ( (>0 0 0:1 1 1* * * * * *W W W&" " "*0 0 00 0 0 0 0r<   r	   )r   numpyr+   pandas.core.dtypes.dtypesr   pandasr.   r   r   r   pandas._testing_testingr2   r	   r   r<   r:   <module>r      s              6 6 6 6 6 6             
      A0 A0 A0 A0 A0 A0 A0 A0 A0 A0r<   