
    bMhC                         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dS )	    )deepcopyN)PerformanceWarning)	DataFrameIndex
MultiIndexSeriesconcatc                   ~    e Zd Zd Zej                            dg d          d             Zd Zd Z	d Z
d Zd	 Zd
S )TestIndexConcatc           	         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        ||           d S )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          f/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/reshape/concat/test_index.pytest_concat_ignore_indexz(TestIndexConcat.test_concat_ignore_index   s   %oo			OOOTT
 
 G___566___--___--VV$14dKKKfc3$""""""ac"	 ,,,--
 
 
  	:|$8$8$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}d t          |g d          D             }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        ||	           d S )Nr   name)r   r   d)r   r<   ec                 >    g | ]\  }}t          |g d i|          S ))r   r   r   r&   )r   ).0ir   s      r2   
<listcomp>z@TestIndexConcat.test_concat_same_index_names.<locals>.<listcomp>@   s>     
 
 
371aIq)))nA...
 
 
r4   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framesresultexp_indr1   s
             r2   test_concat_same_index_namesz,TestIndexConcat.test_concat_same_index_names-   s    ///111///111///111


 
;>w;X;X
 
 
 Q'''111AAAArvrv.faArv.fbfaA. 
 
 
 
 	fh/////r4   c           	         t          t          j                            d                              d          t	          d          t          t	          d          d                    }t          t          j                            d                              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        	                    |d           t          j        ||           |j        j        |j        j        k    sJ d S )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'   rY   	set_namesr+   r,   )r-   r   r   rJ   exprY   s         r2   test_concat_rename_indexz(TestIndexConcat.test_concat_rename_indexQ   sW   I!!!$$++F33KKU)444
 
 

 I!!!$$++F33KKU)444
 
 
 Aff%5ff=MNNNaV66"26(CCCSY_%%a	E4000
fc***|!SY_444444r4   c                     t          ddg          }t          ||g|d          }|r|dv r|j        |j        usJ d S |j        |j        u sJ d S )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   sq    aVnnsCjt$777" 	+dl&:&::SY......:******r4   c                    t          ddgddggddg          }t          ||g|d	          }|sD|j                            |j                  rJ |j                            |j                  rJ d S |d
v rD|j                            |j                  rJ |j                            |j                  sJ d S |dv rB|j                            |j                  sJ |j                            |j                  rJ d S d S )Nr   r   r      r   r   rQ   Trb   rd   )r   rQ   )r   r	   r'   is_rQ   )r-   r#   re   dfrg   s        r2   test_concat_copy_index_framez,TestIndexConcat.test_concat_copy_index_framep   s#   AA'#s<<<r2hT555" 	4z~~bh/////|''
3333333\!!z~~bh/////<##BJ///////^##:>>"(+++++|''
33333 $#33r4   c                    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           d S )Nr   r   r:   )rj         r    r   T)r#   r$   rj   r   rp   r   rq   check_index_typecheck_column_typeF)AB      r   ru   rv   rk   )r   rp   r   rw   )r   rq   rj   rx   )	r   r	   
isinstancerQ   pd
RangeIndexr   r+   r,   )r-   s1s2resr_   df1df2s          r2   test_default_indexz"TestIndexConcat.test_default_index~   s0   IIIC(((IIIC(((b"XAD999#+r}55555!Q!Q!Q011 	c3QUVVVV IIIIIIb"XAE:::#+r}55555!Q!Q!Q011mA&&
c3QUVVVV q!fAq62233q!fAq62233c3Zad;;;!Q!Q!Q!Q83*MMM
c3QUVVVVc3Zad;;;|||455
c3QUVVVVVVr4   c           
         t          t          j                            d                              ddd                              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                            d          
                    d          g d          t          t          j                            d                              ddd                              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	        dd                    }t          j        ||           |j	        ddd d f                             |j	        dd                                       |j	        dd                   }t          j        ||           t          ||gd
          }|                    |          }t          j        ||           d S )Nr   r   
   (   )sizerj   )ru   ru   Cr   rk   r   rB   )r   rj   )ru   ru   rv   rv      ru   r   rq   rx   	   )r   r(   r[   r\   integersreshaper	   r+   r,   ilocstandard_normal_append)r-   rm   rJ   r1   s       r2   test_dups_indexzTestIndexConcat.test_dups_index   sQ    I!!!$$--a"-==EEb!LL(((
 
 

 Rq)))
fk!!!RaR%0"555
fk!!!QRR%0"555Rq)))
fk#2#.333
fk"##.333 I))!,,<<WEE000   I))!,,55a"5EEMMbRSTT #J  	 
 
 
 Rq)))
fk!!!RaR%0"555
fk!!!QRR%0"555Rq)))
fk#2#.333
fk"##.333 1aaa((55
fb)))1aaa((166>>rwqt}MM
fb)))2r(+++B
fh/////r4   N)__name__
__module____qualname__r3   pytestmarkparametrizerL   r`   rh   rn   r   r    r4   r2   r   r      s        , , ,2 [-	
 	
 	
 0 0 005 5 5,+ + +4 4 4W W W@10 10 10 10 10r4   r   c                   t   e Zd Zd Zd Zd Zd Ze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        	                    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        	                    dddggg dgg          d             Zd Zd Zd Zej        	                    dg d           d!             Zd" Zd#S )$TestMultiIndexConcatc                    |}|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 d S )Nr   r   	iterationrW   )r   r   )r'   r	   rY   r+   r,   r*   nlevels)r-    multiindex_dataframe_random_dataframer'   rJ   s        r2    test_concat_multiindex_with_keysz5TestMultiIndexConcat.test_concat_multiindex_with_keys   s    0aVK=III|!^ek%AAAAA
fjmU333
fjmU333|#q((((((r4   c                 x   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	        ||           d S )Nr   rp   level1rY   col)r'   dtyper   level2rW   )r   r   Nrw   )r   from_productranger   r(   int32r	   r]   r+   r,   rC   from_tuples)	r-   r'   rm   rJ   r1   r   r   no_nametupless	            r2   /test_concat_multiindex_with_none_in_index_nameszDTestMultiIndexConcat.test_concat_multiindex_with_none_in_index_names   s   '!eAhh$?OPPPuQxx(RXFFFR1vhZ@@@'VaS%((#+E+E+E
 
 
 eT%((^^a%78RXVVV
fh///RVAq6(DDDqA37"quQxx..4a>>1c&&'2233&v5O5O5OPPPeW-U"(KKK
fh/////r4   c           	      H   t          t          j                            d                              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        ||           d S )Nr   )r   r   r   levelscodes)r   r   rj   rp   )r   r   rj   rp   )r   r(   r[   r\   r   r   rz   r{   repeatarangetiler'   r	   r   r+   r,   )r-   rm   r~   r_   s       r2   !test_concat_multiindex_rangeindexz6TestMultiIndexConcat.test_concat_multiindex_rangeindex   s    
 ry,,Q//??GGHHM!$$bmA&6&679RYq\\1--rwry||Q/G/GH
 
 

 bgiiil+RWaS!!!V_=>>glllAAAo&
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        |	|           d S )Nr   r   r   r&   r   r   )r|   r}   r|   r}   )testnameNN)r   r   rY   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usenEE&s2EFFF(5usenEE&s2EFFF08JKK#4L3%#s4q6Aq6Aq6****
 
 

 qcA3Z~>>>Xl33J<HHH
k8444ZLAAA
nh77777r4   mi1_listr   r   r   g       @g      @r   ru   rv   r<   20172018)startendperiodsmi2_listc                 V   t          j        |          }t          j        |          }t          t          j        dt          |          f          |          }t          t          j        dt          |          f          |          }|d         |d         k    r3t          |d         t          |d                   gg dg dg          }nQt          |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            n# 1 swxY w Y   t          j
        ||	           d S )
Nr   rk   r   )r   r   r   r   )r   r   r   r   r   )r   r   r   r   )r   r   r   r   rB   )r   r   r   r(   zeroslenr]   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XX//===!SXX//===A;(1+%%$ T(1+%6%67#||\\\2  KK
 %QK(1+-!%%Xa[(9(99 $||\\\2  K  !S-=-=)> ? ?UUU'-- 	3 	3Sz222I	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	k955555s   )F		FFc                 D   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        ||           d S )Nr   r   )12r   r&   XrX   )r   r	   r'   r   r   r+   assert_index_equalr,   )r-   rm   	iterablesresult_indexr   r   r   s          r2   test_concat_multiindex_z,TestMultiIndexConcat.test_concat_multiindex_F  s    /GGGRDu%%%UOOO,	x#0;;
lN;;;	OOO$J,CI,N,N
 
 
 	i5555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            n# 1 swxY w Y   t          dg d
it          g d                    }t          j        t          d          5  |j        d	         }d d d            n# 1 swxY w Y   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            n# 1 swxY w Y   t          g dg dt          d          d          	                    ddg          }d d g|j
        _        t          j        t          d          5  |j        d	d d f         }d d d            n# 1 swxY w Y   t          j        ||           d S )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,   r]   	set_indexr'   rY   )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oOOO<<<'&C
 
 
 	* 	* HXqqq[)E	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*
 YYYu-K-K-K'L'L
 
 
 '&C
 
 
 	' 	' HX&E	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'
 	eU+++122#s,--#s,--sCoOOO<<<'&C
 
 
 	* 	* HXqqq[)E	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*
 888***Y 
 
 )S#J

 	 !$<
'&C
 
 
 	* 	* HXqqq[)E	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*
 	eU+++++sH   (BB
B
C**C.1C.4FFF?H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            d S # 1 swxY w Y   d S )
Nru   r   r   r&   r    z*Level values not unique: \['x', 'y', 'y'\]r   r   r    r    )rX   r   r   r   raises
ValueErrorr	   )r-   r   r   msgs       r2   "test_concat_with_duplicated_levelsz7TestMultiIndexConcat.test_concat_with_duplicated_levels  s    qc
3%000qc
3%000;]:S111 	J 	JC:S#J7HIIII	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	Js   A//A36A3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            d S # 1 swxY w Y   d S )	Nru   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00qc
3%000;]:S111 	. 	.C:f----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.s   A))A-0A-c                 2   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	           d S )
Nr   r   r   r   T)r%   r#   )r   r   r   )exact)r   r	   r+   r,   rz   r{   r   r'   )r-   r   r   rJ   r1   r   s         r2   test_concat_range_index_resultz3TestMultiIndexConcat.test_concat_range_index_result  s    q!f&&q!f&&c
A666Aq6A7788
fh///q!,,
flN$GGGGGGr4   c                 T   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        ||           d S )Nr   r   r   r   objectr   rk   r   r   r   Touterr$   joinr%   r   r   g      ?r   r   r	   r(   r)   r+   r,   )r-   r   r   rJ   r1   s        r2   test_concat_index_keep_dtypez1TestMultiIndexConcat.test_concat_index_keep_dtype  s    U999H-M-M-MNNN!Q%Ah*G*G*GHHHc
G$OOO[[1a.)5(3S3S3S
 
 
 	fh/////r4   c                 T   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        ||           d S )Nr   r   r   rk   r   r   r   Tr   r   r   r   )r-   any_numeric_ea_dtyper   r   rJ   r1   s         r2   'test_concat_index_keep_dtype_ea_numericz<TestMultiIndexConcat.test_concat_index_keep_dtype_ea_numeric  s    YYKyyy8L!M!M!M
 
 
 !Q%A>R*S*S*STTTc
G$OOO[[1a.))))+?@@@
 
 
 	fh/////r4   r   )Int8Int16Int32c                 T   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        ||           d S )Nr   r   r   rk   r   r   r   r   Tr   r   r   r   )r-   r   r   r   rJ   r1   s         r2   test_concat_index_find_commonz2TestMultiIndexConcat.test_concat_index_find_common  s     U999E-J-J-JKKK!Q%Ag*F*F*FGGGc
G$OOO[[1a.)5'3R3R3R
 
 
 	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           d S )Nr   r   r   )r   r   r   r<   strr   Fr   r   )r%   r   r$   r#   r   r   r   r<   Trr   )r   r   r	   r   r(   r)   r+   r,   )r-   using_infer_stringr|   r}   s3s4rJ   r1   s           r2   (test_concat_axis_1_sort_false_rangeindexz=TestMultiIndexConcat.test_concat_axis_1_sort_false_rangeindex  s"   OOO$$S#J((())B,>IffEJJJR5wUQR
 
 
 	RVH$	RVH$bf!1u$x/	 !3=&&
 
 
 	Htt	
 	
 	
 	
 	
 	
r4   N)r   r   r   r   r   r   r   r   r   r   r   r(   r   rz   
date_ranger]   r   r   r   r   r   r   r   r   r  r  r   r4   r2   r   r      sW       ) ) )0 0 0*( ( (8 8 8( [UEE!HHUIBIc3''(US#JUMBMFAFFFG		
  [UEE!HHUIBIc3''(US#JUMBMFAFFFG		
 66(,6 6 6  $6>6 6 6",, ,, ,,\J J J [X#s6G'HII. . JI.	H 	H 	H0 0 00 0 0 [W&@&@&@AA0 0 BA0
 
 
 
 
r4   r   )rc   r   numpyr(   r   pandas.errorsr   pandasrz   r   r   r   r   r	   pandas._testing_testingr+   r   r   r   r4   r2   <module>r     s              , , , , , ,                       |0 |0 |0 |0 |0 |0 |0 |0~D
 D
 D
 D
 D
 D
 D
 D
 D
 D
r4   