
    id%                     l    d dl m Z  d dlZd dlm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y)    )datetimeN)Pandas4Warning)CategoricalDtype)Categorical	DataFrameSeriesc                   T    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y)TestCategoricalConcatc                    t        t        j                  dd      j                  dd      g d      }t        t        j                  dd      j                  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   j                  |d   j                        |d<   t        j                  ||       y )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          i/app/cer_product_mecsu/.venv/lib/python3.12/site-packages/pandas/tests/reshape/concat/test_categorical.pytest_categorical_concatz-TestCategoricalConcat.test_categorical_concat   s"   IIb(00A6
 		"G4<<QBSRUJWF
+j12Ciic
DI@FFFFFFFFFFFFFF BVaZ*,%
, s8??3s8>>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                  ||       y )N)catobjnumr   r&   r   r   r&   )r   keysstr)FTFindexr   )FFTcategory)TFF)r   r   r/   r0   dtypesobjectr3   assert_series_equal)	r5   using_infer_stringrF   r?   r@   rA   dfresultexpecteds	            r;   test_categorical_concat_dtypesz4TestCategoricalConcat.test_categorical_concat_dtypes8   s    %/*_%YYYsS#.QUC-?vUK.e<
vx0g%.e<
vx0j(.e<
vx0r=   c                 ^   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                  ||       y )N)r    r   r&   r   r   r&   r    r   
categoriesrE   r   r   r   )r    r   r&   r   r   r&   r   )r   rF   )	r   r/   CategoricalIndexr0   r   r,   r1   r3   r4   )r5   rR   r   r   r   rM   exp_idxr:   s           r;   test_concat_categoricalindexz2TestCategoricalConcat.test_concat_categoricalindexL   s    $
1B//A:NO1B//A:NO1B//A:NOAq!91-%%lzJq"&&"&&)FFAq"&&)FFBFFAq)
 
 	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        ||j                  t        t        d                  d      }t        j                  ||g      }t        t        j                  ||g      t        j                  ||g      j                  t        t        d                  d      }t	        j                  ||       y )NabcrG   r   abdabcabdTr   abcabcr   r&   r   r   r&   r   rF   r   r   r   aabbcacabAB)r   listr/   r0   r3   rJ   r,   r-   r   r2   r   r4   )r5   ss2r:   r9   r   r   r7   s           r;    test_categorical_concat_preservez6TestCategoricalConcat.test_categorical_concat_preserveb   sl    4;j1DKz2T(^$iiBd3
sC(T(^:6iiAT2
sC(T(^+=ZPiiA
sC(299Qg./4>"aahh/?U/L&MNOiic
#YY1v&YY1v&--.>tE{.KL
 	c3'r=   c           
         t        t        j                  dd            }t        t        d            }t	        ||j                  t        t        d                  d      j                  d      }t        j                  ||g      }t	        t        j                  ||g      t        j                  ||g      j                  t        t        d                  d      j                  d      }t        j                  ||       d}t        j                  t        |	      5  t	        |t        |t        d
            d      j                  d      }d d d        t        j                  |g      }t        j                  |j                  |j                   j                  t"              d      |j                  |j                   j                  t"              d      g      }t        j                  ||       y # 1 sw Y   xY w)Nr   r   r   r`   ra   rb   rd   z=Constructing a Categorical with a dtype and values containing)matchaberQ   r   rS   )r   r,   r-   re   r   r2   r   	set_indexr/   r0   r3   r4   assert_produces_warningr   r   set_axisrF   rI   )r5   r   r   r7   rM   rN   msgdf3s           r;    test_categorical_index_preserverz6TestCategoricalConcat.test_categorical_index_preserver   s   299Qg./4>"!((#3DK#@AB

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

 )C. 	 	fh/ N''cB 	k!UDEin 	 C:&99SYY--f5A>SYY--f5A>
 	fh/	 	s   %2H  H	c                 4   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                  ||       y )Nz
2017-01-01r   z
US/Pacific)periodstzr   r   rG   r   Tr\   )rt   z
2017-01-02)r   r/   
date_ranger0   	Timestampr3   rJ   )r5   r   r   rM   rN   s        r;   test_concat_categorical_tzz0TestCategoricalConcat.test_concat_categorical_tz   s    2==q\JKC:Z0Aq65\l;\l;	
 	vx0r=   c                 N   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                  ||       y )Nxi  r&   r   rG   r_   r   )r   r   r   r/   r0   r3   assert_equal)r5   r6   r7   rM   rN   s        r;    test_concat_categorical_datetimez6TestCategoricalConcat.test_concat_categorical_datetime   s    &$1-aS
KL
 &$1-aS
KL
 C:&&(4A.q!0DEFG
 	)r=   c           	      H   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                  ||       y )Nr   rG   rc   )r   namerT   )r   r&   r   rd   )rF   r}   r&   rS   r   r   r   r   r   r   floatrb   )r   r   r/   r0   r,   r1   r3   rz   )r5   rL   serrM   rN   s        r;   !test_concat_categorical_unchangedz7TestCategoricalConcat.test_concat_categorical_unchanged   s     voZcJKYic:B91-S#sBFF3:FQ2661-W=
 	)r=   c                 r   t        g dt        d      d      }t        |d         |d<   |d   j                  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                         y )	N)r&   r   r   r#   r)   r   abbaae)id	raw_grader   grade)er   r   r   r   )
r   re   r   r?   set_categoriesr3   assert_index_equalrR   r/   r0   )r5   rL   r6   r7   dfxs        r;   test_categorical_concat_gh7864z4TestCategoricalConcat.test_categorical_concat_gh7864   s     0tH~NO!"[/27
7&&71gf
bkoo88#g,:J:J:U:UV
bkoo88#g,:J:J:U:UViic
#
bkoo88#g,:J:J:U:U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
                  ||       y )Nfoor&   r   barrE   r#   r   baz)r&   r   r#   r   )r   r   r   r   )r   r   r/   r0   r3   rz   r   )r5   r   r   r9   r:   s        r;   test_categorical_index_upcastz3TestCategoricalConcat.test_categorical_index_upcast   s    
 uq!fo[%-HIuq!fo[%-HIiiA-5QR
S!Aq6eU^!<=Aq6eU^!<=iiA\)EF
S!r=   c                 B   t        dg di      }t        g dt        g d      j                  d      d      }t        j                  ||gd      }t        d	g      }t        g d
t        j                  g d|      dg d      }t        j                  ||       y )Nf1rB   )r   r   r&   )r#   r#   r#   rG   )r   f2T)r   r#   )r&   r   r   r   r   r&   )r   r   r   r   r   r   r^   rE   )
r   r   r2   r/   r0   r   r   
from_codesr3   r4   )r5   r6   r7   rM   r   rN   s         r;   'test_categorical_missing_from_one_framez=TestCategoricalConcat.test_categorical_missing_from_one_frame   s    y)*yy0A0H0H0TUVC:D1 !%(!,,-B%P %
 	fh/r=   c                 l   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
                  ||       y )Nr   r   F)rR   ordered)r   r   r   r   rc   r&   r   rE   r   r#   )r&   r   r   r#   )r/   rU   r   r0   r3   r4   )r5   c1c2c3r6   r7   rM   rN   s           r;   7test_concat_categorical_same_categories_different_orderzMTestCategoricalConcat.test_concat_categorical_same_categories_different_order  s       #sc
ER  #sc
ER   c3Z
 q!fR0q!fR0C:&c<0;
fh/r=   N)__name__
__module____qualname__r<   rO   rW   rh   rq   rw   r{   r   r   r   r   r    r=   r;   r
   r
      s@    #(J1(+,(>0>1* *W "*00r=   r
   )r   numpyr,   pandas.errorsr   pandas.core.dtypes.dtypesr   pandasr/   r   r   r   pandas._testing_testingr3   r
   r   r=   r;   <module>r      s/      ( 6  
 ~0 ~0r=   