
     	i%                     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          d/srv/django_bis/venv311/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   keysstr)FTFindexr   )FFTcategory)TFF)r   r   r.   r/   dtypesobjectr2   assert_series_equal)	r4   using_infer_stringrE   r>   r?   r@   dfresultexpecteds	            r:   test_categorical_concat_dtypesz4TestCategoricalConcat.test_categorical_concat_dtypes6   s   %%%///**___%%YYYYsS#.QUCCC-?JvvUK...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   
categoriesrD   r   r   r   )r   r   r%   r   r   r%   r   )r   rE   )	r   r.   CategoricalIndexr/   r   r+   r0   r2   r3   )r4   rQ   r   r   r   rL   exp_idxr9   s           r:   test_concat_categoricalindexz2TestCategoricalConcat.test_concat_categoricalindexJ   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abcrF   r   abdabcabdTr   abcabcr   r%   r   r   r%   r   rE   r   r   r   aabbcacabAB)r   listr.   r/   r2   rI   r+   r,   r   r1   r   r3   )r4   ss2r9   r8   r   r   r6   s           r:    test_categorical_concat_preservez6TestCategoricalConcat.test_categorical_concat_preserve`   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`   ra   rc   aberP   r   rR   )r   r+   r,   rd   r   r1   r   	set_indexr.   r/   r2   r3   r   set_axisrE   rH   )r4   r   r   r6   rL   rM   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   rF   r   Tr[   )rp   z
2017-01-02)r   r.   
date_ranger/   	Timestampr2   rI   )r4   r   r   rL   rM   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   rF   r^   r   )r   r   r   r.   r/   r2   assert_equal)r4   r5   r6   rL   rM   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   rF   rb   )r   namerS   )r   r%   r   rc   )rE   ry   r%   rR   r   r   r   r   r   r   floatra   )r   r   r.   r/   r+   r0   r2   rv   )r4   rK   serrL   rM   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   rd   r   r>   set_categoriesr2   assert_index_equalrQ   r.   r/   _append)r4   rK   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   barrD   r"   r   baz)r%   r   r"   r   )r   r   r   r   )r   r   r.   r/   r2   rv   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"   rF   )r   f2T)r   r"   )r%   r   r   r   r   r%   )r   r   r   r   r   r   r]   rD   )
r   r   r1   r.   r/   r   r   
from_codesr2   r3   )r4   r5   r6   rL   r   rM   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)rQ   ordered)r   r   r   r   rb   r%   r   rD   r   r"   )r%   r   r   r"   )r.   rT   r   r/   r2   r3   )r4   c1c2c3r5   r6   rL   rM   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;   rN   rV   rg   rm   rs   rw   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             
      0 0 0 0 0 0 0 0 0 0r<   