
    Owg-D                         d dl mZ 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mZmZ d dlmZ  G d d      Z G d d      Zy)	    )deepcopyN)PerformanceWarning)	DataFrameIndex
MultiIndexSeriesconcatc                   x    e Zd Zd Zej
                  j                  dg d      d        Zd Zd Z	d Z
d Zd	 Zy
)TestIndexConcatc           	      x   t        g dg dg dd      }t        dg di      }t        g d      |_        t        g d      |_        t        ||gd	d
|      }t        j
                  }t        |||dgg dg dddd|ggt        g d            }|s|j                  g d   }t        j                  ||       y )Nabc         )      @皙	@333333?)test1test2test3r   )@皙@333333@xyz)r   r    qr   T)axisignore_indexsortr   )r   r   r   r   )r   r   r   r   r   r   r   )r"   r   r    r!   index)r   r    r!   r"   )	r   r   r'   r	   npnanloctmassert_frame_equal)selfr%   frame1frame2v1r)   expecteds          ]/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/reshape/concat/test_index.pytest_concat_ignore_indexz(TestIndexConcat.test_concat_ignore_index   s    %	OT
 G_56_-_-VV$14dKffc3$""ac"	 ,-
 ||$89H
b(+    z#name_in1,name_in2,name_in3,name_out))idxr5   r5   r5   )r5   r5   NN)r5   NNN)idx1idx2NN)r6   r6   r7   N)r6   r7   idx3N)NNNNc           	         t        g d|      t        g d|      t        g d|      g}t        |g d      D cg c]  \  }}t        |g di|       }}}t        |d	      }	t        g d
|      }
t        dddt        j
                  t        j
                  gt        j
                  dddt        j
                  gt        j
                  t        j
                  dddgd|
      }t        j                  |	|       y c c}}w )Nr   name)r   r   d)r   r<   er   )r   r   r   r&   r   r#   )r   r   r   r<   r=   r   r   )r   zipr   r	   r(   r)   r+   r,   )r-   name_in1name_in2name_in3name_outindicesir   framesresultexp_indr1   s               r2   test_concat_same_index_namesz,TestIndexConcat.test_concat_same_index_names-   s     /1/1/1
 <?w;X
371aIq)nA.
 
 Q'1AArvvrvv.ffaArvv.ffbffaA.
 
 	fh/
s   Dc           	         t        t        j                  j                  d      j                  d      t	        d      t        t	        d      d            }t        t        j                  j                  d      j                  d      t	        d      t        t	        d      d            }t        ||gd	d
gddg      }t        ||gd	d
gdg      }t	        |j                  j                        }d|d<   |j                  j                  |d       t        j                  ||       |j                  j                  |j                  j                  k(  sJ y )Nr   )r   r   ABCabcindex_ar:   )columnsr'   index_bkey0key1lvl0lvl1keysnamesr   T)inplace)r   r(   randomdefault_rnglistr   r	   r'   rV   	set_namesr+   r,   )r-   r   r   rG   exprV   s         r2   test_concat_rename_indexz(TestIndexConcat.test_concat_rename_indexQ   s   II!!!$++F3KU)4

 II!!!$++F3KU)4
 Aff%5ff=MNaV66"26(CSYY__%a		E40
fc*||!!SYY__444r4   c                     t        ddg      }t        ||g|d      }|r|dv r|j                  |j                  usJ y |j                  |j                  u sJ y )Nr   r   Tr#   copyr   r'   )r   r	   r'   )r-   r#   using_copy_on_writesercombs        r2   test_concat_copy_index_seriesz-TestIndexConcat.test_concat_copy_index_seriesg   sW    aVnsCjt$7"dl&:::SYY...::***r4   c                 <   t        ddgddggddg      }t        ||g|d	      }|sO|j                  j                  |j                        rJ |j                  j                  |j                        rJ y |d
v rO|j                  j                  |j                        rJ |j                  j                  |j                        sJ y |dv rO|j                  j                  |j                        sJ |j                  j                  |j                        rJ y y )Nr   r   r      r   r   rN   Tr_   ra   )r   rN   )r   r	   r'   is_rN   )r-   r#   rb   dfrd   s        r2   test_concat_copy_index_framez,TestIndexConcat.test_concat_copy_index_framep   s    AA'#s<r2hT5"zz~~bhh///||''

3333\!zz~~bhh///<<##BJJ///^#::>>"((+++||''

3333 $r4   c                 x   t        g dd      }t        g dd      }t        ||gdd      }t        |j                  t        j
                        sJ t        dd	gd
dgddgg      }t        j                  ||dd       t        g d      }t        g d      }t        ||gdd      }t        |j                  t        j
                        sJ t        dd	gd
dgddgg      }t	        j
                  d
      |_        t        j                  ||dd       t        dd
gddgd      }t        dd	gddgd      }t        ||gdd      }t        ddgd
dgddgd	dggddg      }t        j                  ||dd       t        ||gdd      }t        g dg dg      }t        j                  ||dd       y )Nr   r   r:   )rg         r    r   T)r#   r$   rg   r   rm   r   rn   check_index_typecheck_column_typeF)AB      r   rr   rs   rh   )r   rm   r   rt   )r   rn   rg   ru   )	r   r	   
isinstancerN   pd
RangeIndexr   r+   r,   )r-   s1s2resr\   df1df2s          r2   test_default_indexz"TestIndexConcat.test_default_index~   s   IC(IC(b"XAD9#++r}}555!Q!Q!Q01 	c3QUV IIb"XAE:#++r}}555!Q!Q!Q01mmA&
c3QUV q!fAq623q!fAq623c3Zad;!Q!Q!Q!Q83*M
c3QUVc3Zad;|45
c3QUVr4   c           
      `   t        t        j                  j                  d      j	                  ddd      j                  dd      g d      }t        ||gd	
      }t        j                  |j                  d d d df   |       t        j                  |j                  d d dd f   |       t        ||gd
      }t        j                  |j                  d d |       t        j                  |j                  dd  |       t        t        t        j                  j                  d      j                  d      g d      t        t        j                  j                  d      j	                  ddd      j                  dd      ddg      gd	
      }t        ||gd	
      }t        j                  |j                  d d d df   |       t        j                  |j                  d d dd f   |       t        ||gd
      }t        j                  |j                  d d |       t        j                  |j                  dd  |       |j                  ddd d f   j                  |j                  dd        }t        j                  ||       |j                  ddd d f   j                  |j                  dd       j                  |j                  dd       }t        j                  ||       t        ||gd
      }|j                  |      }t        j                  ||       y )Nr   r   
   (   )sizerg   )rr   rr   Cr   rh   r   r>   )r   rg   )rr   rr   rs   rs      rr   r   rn   ru   	   )r   r(   rX   rY   integersreshaper	   r+   r,   ilocstandard_normal_append)r-   rj   rG   r1   s       r2   test_dups_indexzTestIndexConcat.test_dups_index   s    II!!!$--a"-=EEb!L(

 Rq)
fkk!RaR%0"5
fkk!QR%0"5Rq)
fkk#2.3
fkk"#.3 II))!,<<WE0 II))!,55a"5EMMbRST #J	 
 Rq)
fkk!RaR%0"5
fkk!QR%0"5Rq)
fkk#2.3
fkk"#.3 1a((5
fb)1a((16>>rwwq}M
fb)2r(+B
fh/r4   N)__name__
__module____qualname__r3   pytestmarkparametrizerI   r]   re   rk   r~   r    r4   r2   r   r      sM    ,2 [[-	
0005,+4W@10r4   r   c                   f   e Zd Zd Zd Zd Zd Zej                  j                  ddg e
d      gdg ej                  d	d
      gdgddggdg ej                  ddd      gg      ej                  j                  ddg e
d      gdg ej                  d	d
      gdgddggdg ej                  ddd      gg      dedefd              Zd Zd Zd Zej                  j                  dddggg dgg      d        Zd Zd Zd Zej                  j                  dg d       d!        Zd" Zy#)$TestMultiIndexConcatc                 X   |}|j                   }t        ||gddgdg      }|j                   j                  d|j                  z   k(  sJ t        j                  |j
                  d   |       t        j                  |j
                  d   |       |j                   j                  dk(  sJ y )Nr   r   	iterationrT   )r   r   )r'   r	   rV   r+   r,   r*   nlevels)r-    multiindex_dataframe_random_dataframer'   rG   s        r2    test_concat_multiindex_with_keysz5TestMultiIndexConcat.test_concat_multiindex_with_keys   s    0aVK=I||!!^ekk%AAAA
fjjmU3
fjjmU3||##q(((r4   c                    t        j                  dgt        d      gdd g      }t        dt        d      i|t        j
                        }t        ||gddgdg	      }t        j                  ddgdgt        d      gg d
      }t        dt        t        d            dz  i|t        j
                        }t        j                  ||       t        ||d d gddgdg	      }dgdz  dgdz  z   }dgdz  }t        t        d            t        t        d            z   }t        t        |||            }t        j                  |g d
      }t        d|i|t        j
                        }t        j                  ||       y )Nr   rm   level1rV   col)r'   dtyper   level2rT   )r   r   Nrt   )r   from_productranger   r(   int32r	   rZ   r+   r,   r?   from_tuples)	r-   r'   rj   rG   r1   r   r   no_nametupless	            r2   /test_concat_multiindex_with_none_in_index_nameszDTestMultiIndexConcat.test_concat_multiindex_with_none_in_index_names   sY   ''!eAh$?OPuQx(RXXFR1vhZ@''VaS%(#+E
 eT%(^a%78RXXV
fh/RVAq6(DqA37"quQx.4a>1c&&'23&&v5OPeW-U"((K
fh/r4   c           	      @   t        t        j                  j                  d      j	                  d            }t        t        j                  d      t        j                  d      gt        j                  t        j                  d      d      t        j                  t        j                  d      d      g      |_        t        |j                  g dd d f   |j                  dgd d f   g      }|j                  g dd d f   }t        j                  ||       y )Nr   )r   r   r   levelscodes)r   r   rg   rm   )r   r   rg   rm   )r   r(   rX   rY   r   r   rw   rx   repeatarangetiler'   r	   r   r+   r,   )r-   rj   r{   r\   s       r2   !test_concat_multiindex_rangeindexz6TestMultiIndexConcat.test_concat_multiindex_rangeindex   s    
 ryy,,Q/??GHMM!$bmmA&6799RYYq\1-rwwryy|Q/GH

 bggil+RWWaS!V_=>gglAo&
c3'r4   c                    t        j                  dgdgg      }t        dg|      }t        j                  dgdgg      }t        dg|      }||d}t        dd	gdgddggddgddgddggg d
      }t        dgdgg|      }t        t	        |      dg      }t        j                  ||       t        |dg      }	t        j                  |	|       y )Nr   r   r   r&   r   r   )ry   rz   ry   rz   )testnameNN)r   r   rV   r   r   )r   r   r   r	   r   r+   r,   )
r-   example_multiindex1example_dataframe1example_multiindex2example_dataframe2example_dictexpected_indexr1   result_copyresult_no_copys
             r2   (test_concat_multiindex_dfs_with_deepcopyz=TestMultiIndexConcat.test_concat_multiindex_dfs_with_deepcopy  s    (55usenE&s2EF(55usenE&s2EF08JK#4L3%#s4q6Aq6Aq6**

 qcA3Z~>Xl3J<H
k84ZLA
nh7r4   mi1_listr   r   r   g       @g      @r   rr   rs   r<   20172018)startendperiodsmi2_listc                    t        j                  |      }t        j                  |      }t        t        j                  dt        |      f      |      }t        t        j                  dt        |      f      |      }|d   |d   k(  r%t        |d   t        |d         gg dg dg      }n9t        |d   |d   z   t        |d         t        |d         z   gg dg dg      }t        t        j                  dt        |      f      |      }t        j                  d       5  t        ||fd	      }	d d d        t        j                  |	       y # 1 sw Y    xY w)
Nr   rh   r   )r   r   r   r   )r   r   r   r   r   )r   r   r   r   )r   r   r   r   r>   )r   r   r   r(   zeroslenrZ   r+   assert_produces_warningr	   r,   )
r-   r   r   mi1mi2r|   r}   expected_miexpected_df	result_dfs
             r2   *test_concat_with_various_multiindex_dtypesz?TestMultiIndexConcat.test_concat_with_various_multiindex_dtypes  s@   , %%h/%%h/!SX/=!SX/=A;(1+%$ T(1+%67#\2K
 %QK(1+-!%Xa[(99 $\2K  !S-=)> ?U''- 	3Sz2I	3 	k95	3 	3s   *EE"c                 <   t        dg dig d      }t        |gdg      }dgg dg}|j                  }t        j                  |      }t        j                  ||       |}t        dg dit        j                  |            }t        j                  ||       y )Nr   r   )12r   r&   XrU   )r   r	   r'   r   r   r+   assert_index_equalr,   )r-   rj   	iterablesresult_indexr   r   r   s          r2   test_concat_multiindex_z,TestMultiIndexConcat.test_concat_multiindex_F  s    /GRDu%UO,	xx#00;
lN;	O$J,C,CI,N
 	i5r4   c                    t        ddgi      }t        ddgi      }t        ddgi      }t        |||gg d      }t        j                  t        d      5  |j
                  d	d d f   }d d d        t        dg d
it        g d            }t        j                  t        d      5  |j
                  d	   }d d d        t        j                         t        dg di      }t        dddgi      }t        dddgi      }t        |||gg d      }t        j                  t        d      5  |j
                  d	d d f   }d d d        t        g dg dt        d      d      j                  ddg      }d d g|j                  _        t        j                  t        d      5  |j
                  d	d d f   }d d d        t        j                  ||       y # 1 sw Y   sxY w# 1 sw Y   1xY w# 1 sw Y   xY w# 1 sw Y   FxY w)Nr;   r   r   r   )r   r    r   r   zindexing past lexsort depthmatchr   r   r   )r   )r    r   r   r&   )r   r   r   r   r   r   r<   )r   r   r   r    r    r   r   )r   r   r   r   r   r   r   aababcd)r   r   r;   )r   r	   r+   r   r   r*   r   r,   rZ   	set_indexr'   rV   )r-   r|   r}   df3df_aout_adf_bout_bs           r2   test_concat_with_key_not_uniquez4TestMultiIndexConcat.test_concat_with_key_not_uniqueW  s   !&!&!&sCoO<''&C
 	* HHXq[)E	*
 Yu-K'L
 ''&C
 	' HHX&E	'
 	eU+12#s,-#s,-sCoO<''&C
 	* HHXq[)E	*
 8*Y
 )S#J
 	 !$<

''&C
 	* HHXq[)E	*
 	eU+K	* 	*	' 	'	* 	*	* 	*s0   G+G*3G7*HG'*G47H Hc                     t        ddgidg      }t        ddgidg      }d}t        j                  t        |      5  t	        ||gddgg dg	       d d d        y # 1 sw Y   y xY w)
Nrr   r   r   r&   r    z*Level values not unique: \['x', 'y', 'y'\]r   r   r    r    )rU   r   r   r   raises
ValueErrorr	   )r-   r|   r}   msgs       r2   "test_concat_with_duplicated_levelsz7TestMultiIndexConcat.test_concat_with_duplicated_levels  sm    qc
3%0qc
3%0;]]:S1 	JC:S#J7HI	J 	J 	Js    AA(r   r   r    r   c                     t        ddgidg      }t        ddgidg      }d}t        j                  t        |      5  t	        ||g|       d d d        y # 1 sw Y   y xY w)	Nrr   r   r   r&   r    z+levels supported only when keys is not Noner   )r   r   )r-   r   r|   r}   r   s        r2   &test_concat_with_levels_with_none_keysz;TestMultiIndexConcat.test_concat_with_levels_with_none_keys  s`    qc
3%0qc
3%0;]]:S1 	.C:f-	. 	. 	.s    AA"c                     t        dddgi      }t        dddgi      }t        ||gdd      }t        ddgddgd      }t        j                  ||       t	        j
                  dd      }t        j                  |j                  |d	       y )
Nr   r   r   r   T)r%   r#   )r   r   r   )exact)r   r	   r+   r,   rw   rx   r   r'   )r-   r|   r}   rG   r1   r   s         r2   test_concat_range_index_resultz3TestMultiIndexConcat.test_concat_range_index_result  s    q!f&q!f&c
A6Aq6A78
fh/q!,
fllN$Gr4   c                 $   t        g dgt        g dd            }t        ddggt        ddgd            }t        ||gd	d
d	      }t        g dddt        j                  ggt        g dd            }t        j                  ||       y )Nr   r   r   r   objectr   rh   r   r   r   Touterr$   joinr%   r   r   g      ?r   r   r	   r(   r)   r+   r,   )r-   r|   r}   rG   r1   s        r2   test_concat_index_keep_dtypez1TestMultiIndexConcat.test_concat_index_keep_dtype  s    U9H-MN!Q%Ah*GHc
G$O1a.)5(3S
 	fh/r4   c                 $   t        g dgt        g d|            }t        ddggt        ddg|            }t        ||gdd	d
      }t        g dddt        j                  ggt        g d|            }t        j                  ||       y )Nr   r   r   rh   r   r   r   Tr   r   r   r   )r-   any_numeric_ea_dtyper|   r}   rG   r1   s         r2   'test_concat_index_keep_dtype_ea_numericz<TestMultiIndexConcat.test_concat_index_keep_dtype_ea_numeric  s    Ky8L!M
 !Q%A>R*STc
G$O1a.))+?@
 	fh/r4   r   )Int8Int16Int32c                 $   t        g dgt        g d|            }t        ddggt        ddgd            }t        ||gd	d
d	      }t        g dddt        j                  ggt        g dd            }t        j                  ||       y )Nr   r   r   rh   r   r   r   r   Tr   r   r   r   )r-   r   r|   r}   rG   r1   s         r2   test_concat_index_find_commonz2TestMultiIndexConcat.test_concat_index_find_common  s     U9E-JK!Q%Ag*FGc
G$O1a.)5'3R
 	fh/r4   c                    t        g d      }t        ddg      }t        g d      }t        g |st        nd      }t        ||||gdddd	
      }t        dgdz  t        j
                  gz   dgdz  t        j
                  gz   dt        j
                  gdz  t        j
                  gdz  dgz   t        j
                  gz   g|st        nd      }t        j                  ||dd       y )Nr   r   r   )r   r   r   r<   zstring[pyarrow_numpy]r   Fr   r   )r%   r   r$   r#   r   r   r   r<   Tro   )r   r   r	   r   r(   r)   r+   r,   )r-   using_infer_stringry   rz   s3s4rG   r1   s           r2   (test_concat_axis_1_sort_false_rangeindexz=TestMultiIndexConcat.test_concat_axis_1_sort_false_rangeindex  s    O$S#J()$6f<S
 R5wUQR
 	RVVH$	RVVH$bff!1u$x/	 !3&8O
 	Htt	
r4   N)r   r   r   r   r   r   r   r   r   r   r   r(   r   rw   
date_rangerZ   r   r   r   r   r   r   r   r   r   r  r   r4   r2   r   r      s   )0*(8( [[UE!HUIBIIc3'(US#JUMBMMFAFG		
 [[UE!HUIBIIc3'(US#JUMBMMFAFG		
66(,6$6>6",,\J [[X#s6G'HI. J.	H00 [[W&@A0 B0
r4   r   )r`   r   numpyr(   r   pandas.errorsr   pandasrw   r   r   r   r   r	   pandas._testing_testingr+   r   r   r   r4   r2   <module>r
     s<       ,   |0 |0~F
 F
r4   