
    MhM                        S SK J r   S SKrS SKrS SKJr  S SKJr  S SKr	S SKJ
r
JrJrJr  S SKJr   " S S5      r\R$                  R'                  S\ " S	S
S
5      \ " S	S
S5      4\	R(                  " SS5      \	R(                  " SS5      4\	R*                  " S5      \	R*                  " S5      4\	R,                  " S S
S9\	R,                  " SSSS94/5      S 5       rS rS rS rS rS rS rS rg)    )datetimeN)find_common_type)is_dtype_equal)	DataFrameIndex
MultiIndexSeriesc                      \ rS rSrS rS rS rS rS rS r	\
R                  R                  S\" S	S
S
5      \" S	S
S5      \" S	S
S5      /\R                  \R                  \R                  /\" S	S
S
5      \" S	S
S5      \" S	S
S5      /4\R                  \R                  \R                  /\" S	S
S
5      \" S	S
S5      \" S	S
S5      /\" S	S
S
5      \" S	S
S5      \" S	S
S5      /4\" S	S
S5      \R                  \R                  /\" S	S
S
5      \" S	S
S5      \" S	S
S5      /\" S	S
S5      \" S	S
S5      \" S	S
S5      /4\" S	S
S
5      \" S	S
S5      \" S	S
S5      /\" S	S
S5      \R                  \R                  /\" S	S
S
5      \" S	S
S5      \" S	S
S5      /445      S 5       rS rS rS rS rS rS rS rS rS r\
R                  R                  SS
S/5      S 5       rS rSrg)TestDataFrameCombineFirst   c                    [        SS/[        S5      S9n[        [        S5      [        S5      S9n[        XS.5      n[        SS/[        SS5      S9n[        [        S5      [        SS5      S9n[        XS.5      n[        [        S5      / S	QS./ S
QS9nUR	                  U5      n[
        R                  " Xe5        g )Nab   indexAB      abab)r      r   r   r   r   r      )r	   ranger   listcombine_firsttmassert_frame_equal)selfr   r   fgexpcombineds          _/var/www/html/env/lib/python3.13/site-packages/pandas/tests/frame/methods/test_combine_first.pytest_combine_first_mixed2TestDataFrameCombineFirst.test_combine_first_mixed   s    C:U1X.5858,A&'C:U1a[1585A;/A&'d6l>lS??1%
h,    c                    US S USS  pCUR                  U5      nUR                  UR                  5      n[        R                  " XV5        [        R
                  " UR                  UR                  5        [        R                  " US   US   5        UR                  5       nSUS'   US	 UR                  5       nSUS'   US	 UR                  U5      nUS   S:H  R                  5       (       d   e[        R                  " US   US   5        [        R                  " US   US   5        [        R                  " US   US   5        US S R                  5       UpCSUS'   UR                  U5      nUS   S S S:H  R                  5       (       d   eSUR                  S S2UR                  R                  S5      4'   UR                  U5      nUS   S S S:H  R                  5       (       d   eUS S n	USS  n
U	R                  U
5      n[        R                  " US   R                  U	R                  5      U	S   5        [        R                  " US   R                  U
R                  5      U
S   5        U(       a  [        OS n[        R                  " US	S
9   UR                  [        5       5      nS S S 5        [        R                  " WU5        [        5       R                  U5      n[        R                  " XR                  5       5        UR                  [        SS/S95      nSUR                  ;   d   e[        SS/0[!        SSS5      /S9n[        S/S9nUR                  U5      nSU;   d   eg ! , (       d  f       N= f)Nr   r   r   Cr   r   D
   zempty entries)matchfazboor   r   i  r   columns)r   reindexr   r   r    assert_index_equalr2   assert_series_equalcopyallilocget_locFutureWarningassert_produces_warningr   
sort_indexr   )r!   float_frameusing_infer_stringheadtailr%   reordered_framefcopyfcopy2r"   r#   warningcombdfdf2results                   r&   test_combine_first,TestDataFrameCombineFirst.test_combine_first!   sC    !_k!"od%%d+%--hnn=
h8
h..0C0CD
x}oc.BC   "c
#J!!#s3K&&v."''))))
x}eCj9
x}fSk:
x}eCj9 %Sb)..0/dS	%%d+cr"a',,.... 56		#2#t||++C001%%d+cr"a',,.... ??1%
x}44QWW=qvF
x}44QWW=qvF $6-4''G,,Y[9D H
dK0{((5
d$:$:$<=((%)HI

""" aSz(4A*>)?@&!!#&f}} HGs   M::
Nc                 X   [        / SQ5      n[        / SQUS9n[        / SQUS9n[        / SQUS9n[        X#US.5      n[        / SQ5      n[        / SQUS9n[        / SQUS9n[        / SQUS9n[        X#US.5      nUR                  U5      n[	        UR
                  5      S:X  d   eg )	N)r   r   ce)      @g      "      @g      Y@r   )      r   a   )col0col2col3)r   r   rL   r"   )col1rT   col5r   )r   r	   r   r   lenr2   )r!   idxser1ser2ser3frame1frame2r%   s           r&   test_combine_first_mixed_bug6TestDataFrameCombineFirst.test_combine_first_mixed_bug`   s    ()-S9*#6nC0DEF()-S9*#6nC0DEF''/8##$)))r)   c                 >   [        / SQ/ SQ// SQS9n[        SS//S/SS/S	9nUR                  U5      n[        R                  " X15        [        R
                  UR                  S
'   UR                  U5      nSUR                  S
'   [        R                  " X15        g )N)      ?       @FT)rO   rN   TF)r   r   bool1bool2r1   -   r   r   r   )r   r2   )r   r   )r   r   r   r    npnanloc)r!   rF   otherrH   s       r&   $test_combine_first_same_as_in_update>TestDataFrameCombineFirst.test_combine_first_same_as_in_updater   s    $&=>0

 B8*QC#sD!!%(
f)v!!%(v
f)r)   c           	         [        S[        R                  SS[        R                  /[        R                  SS[        R                  S/S.5      n[        SSS[        R                  SS/[        R                  [        R                  SSSS	/S.5      nUR                  U5      n[        / S
Q[        R                  SSSSS/S.5      n[        R
                  " X45        g )Nrb         @rN   rc         @r   rO         @g       @)r   r      r   rq   rp   r   rq   rQ   r      )r   rg   rh   r   r   r    )r!   df1rG   rH   expecteds        r&   test_combine_first_doc_example8TestDataFrameCombineFirst.test_combine_first_doc_example   s    S"&&1c266SV8WX
 3RVVS#6ffbffc3S9
 ""3'#7rvvq!QPQST>UVW
f/r)   c                    [        [        R                  SS/S[        R                  S/[        R                  SS//5      n[        S[        R                  S// SQ/SS	/S
9n[        / SQS	[        S9nUR                  U5      S	   n[        R                  " XC5        UR                  U5      S	   n[        R                  " XS5        g )Nrn   Tgffffffrp   FgLE)g      g?Fr   r   r   )TTF)namedtype)r   rg   rh   r	   boolr   r   r5   )r!   rs   rG   rt   	result_12	result_21s         r&   -test_combine_first_return_obj_type_with_boolsGTestDataFrameCombineFirst.test_combine_first_return_obj_type_with_bools   s     ffc4 4"6e8LM
 %.0BCAq6R-ATB%%c*1-	
y3%%c*1-	
y3r)   zdata1, data2, data_expectedi  r   r   rq   c                     [        SU05      [        SU05      pTUR                  U5      n[        SU05      n[        R                  " Xg5        g )Nr   r   r   r   r    )r!   data1data2data_expectedrs   rG   rH   rt   s           r&   -test_combine_first_convert_datatime_correctlyGTestDataFrameCombineFirst.test_combine_first_convert_datatime_correctly   sJ    < c5\*IsEl,CS""3'c=12
f/r)   c                    [        [        R                  " S5      S//SS/S9n[        S/S//S/S9nUS   R                  S:X  d   eUS   R                  S	:X  d   eUR	                  U5      n[        [        R                  " S5      [        R
                  /SS/S
.SS/S9n[        R                  " X45        US   R                  S:X  d   eUS   R                  S	:X  d   eUR                  S S R	                  U5      n[        [        R                  [        R                  /SS/S
.SS/S9n[        R                  " X45        US   R                  S:X  d   eUS   R                  S	:X  d   eg )N
2011-01-01r   r   r   r1   rQ   r   zdatetime64[ns]int64r   r   r   float64)r   pd	Timestampry   r   NaTr   r    r8   rg   rh   )r!   dfadfbresr$   s        r&   test_combine_first_align_nan6TestDataFrameCombineFirst.test_combine_first_align_nan   s\   ",,|4a89C:N!qc
SE23x~~!11113x~~((($<<-rvv6aVD#J
 	c'3x~~!11113x~~(((hhrl((-rvvrvv.aV<sCjQ
c'3x~~***3x~~(((r)   c           
         [         R                  " S5      R                  S5      R                  U5      n[	        SS/U[         R
                  " SSS9S9n[         R                  " S	5      R                  S5      R                  U5      n[	        SS
/U[         R
                  " SSS9S9nUS/   R                  U5      n[	        [         R                  " SSS9[         R                  " SSS9/[         R                  " SSS9[         R                  /S.SS/[         R
                  " SSSS9SU S3S9nUS   R                  SU S3:X  d   eUS   R                  SU S3:X  d   e[        R                  " Xg5        g )Nz20100101 01:01UTCUTCdatetimeabc20140627r   )periods)r2   datar   z20121212 12:12xyz20140628z2010-01-01 01:01tzz2012-12-12 12:12z2010-01-01 01:01:00)r   r   r   r,   )r   freqdatetime64[, UTC])r2   r   ry   )r   to_datetimetz_localizeas_unitr   
date_ranger   r   r   ry   r   r    )r!   unitr   rs   r   rG   r   r$   s           r&   test_combine_first_timezone5TestDataFrameCombineFirst.test_combine_first_timezone   st   /0<<UCKKDQ"E*--
A6

 /0<<UCKKDQ"E*--
A6

 =/"005 LL!3>LL!3>  %:uErvvN #E*--
AC@vV,
 =!''[f+EEEE5z[f#====
c'r)   c                    [         R                  " SSSUS9n[        SU05      n[         R                  " SSSUS9n[        SU05      nUR                  U5      n[        R
                  " Xc5        US   R                  SU S3:X  d   eg )	N
2015-01-01
2015-01-05r   r   r   DATE
2015-01-03r   r   r   r   r   r   r   r    ry   )r!   r   dts1rs   dts2rG   r   s          r&   test_combine_first_timezone26TestDataFrameCombineFirst.test_combine_first_timezone2   s    }}\<EM'}}\<EM'$
c'6{  k$v$>>>>r)   c                    [         R                  " / SQSS9R                  U5      n[        SU0/ SQS9n[         R                  " / SQSS9R                  U5      n[        SU0/ SQS9nUR	                  U5      n[         R                  " / S	QSS9R                  U5      n[        SU0/ S
QS9n[
        R                  " Xh5        g )N)r   r   
2011-01-03
2011-01-04
US/Easternr   r   r   rq   r   r   r   
2012-01-01
2012-01-02z
2012-01-03r   rQ   r   )r   r   r   r   r   r   r   r   rq   rQ   r   r   )r   DatetimeIndexr   r   r   r   r    	r!   r   r   rs   r   rG   r   exp_dtsr$   s	            r&   test_combine_first_timezone36TestDataFrameCombineFirst.test_combine_first_timezone3
  s    =,

'$- 	 l;6<

'$- 	 i8$"" 

 '$- 	 )1CD
c'r)   c                 
   [         R                  " SSSS9n[        SU05      n[         R                  " SS5      n[        SU05      nUR                  U5      n[        R
                  " XR5        US   R                  S:X  d   eg )Nr   r   r   r   r   r   zdatetime64[ns, US/Eastern]r   )r!   r   rs   r   rG   r   s         r&   test_combine_first_timezone46TestDataFrameCombineFirst.test_combine_first_timezone4$  sy    }}\<LI'}}\<8' $
c'6{  $@@@@r)   c                    [         R                  " SSSUS9n[        SU05      n[         R                  " SSUS9n[        SU05      nUR                  U5      n[         R                  " SSS9[         R                  " SSS9[         R                  " S5      /n[        SU05      n[
        R                  " Xh5        US   R                  S	:X  d   eg )
Nr   z
2015-01-02r   r   r   r   )r   r   object)r   r   r   r   r   r   r    ry   r   s	            r&   test_combine_first_timezone56TestDataFrameCombineFirst.test_combine_first_timezone50  s    }}\<LtT'}}\<dC'$LL,7LL,7LL&

 )*
c'6{  H,,,r)   c                 `   [         R                  " / SQ5      n[        SU0/ SQS9n[         R                  " / SQ5      n[        SU0/ SQS9nUR                  U5      n[         R                  " / SQ5      n[        SU0/ SQS9n[        R
                  " XW5        US   R                  S	:X  d   eg )
N)1 dayr   3 day4dayTDr   r   )10 day11 dayz12 dayr   )r   r   r   r   r   z4 dayr   ztimedelta64[ns])r   TimedeltaIndexr   r   r   r    ry   )r!   r   rs   r   rG   r   r   r$   s           r&   test_combine_first_timedelta6TestDataFrameCombineFirst.test_combine_first_timedelta@  s    !!"CDu\:!!"@AuY7$##B
 w/AB
c'4y"3333r)   c           
      6   [         R                  " / SQSS9n[        SU0/ SQS9n[         R                  " / SQSS9n[        SU0/ SQS9nUR                  U5      n[         R                  " / S	QSS9n[        SU0/ S
QS9n[        R
                  " XW5        US   R                  UR                  :X  d   e[         R                  " / SQSS9n[        SU0/ SQS9nUR                  U5      n[         R                  " SSS9[         R                  " SSS9[         R                  [         R                  " SSS9[         R                  " SSS9[         R                  " SSS9/n[        SU0/ S
QS9n[        R
                  " XW5        US   R                  S:X  d   eg )N)2011-01r   2011-032011-04M)r   Pr   r   )r   2012-02z2012-03r   )r   z2012-01r   r   r   r   r   r   r,   r   r   r   r   r   r   )	r   PeriodIndexr   r   r   r    ry   Periodr   )	r!   r   rs   r   rG   r   r   r$   r   s	            r&   test_combine_first_period3TestDataFrameCombineFirst.test_combine_first_periodN  sa   GcReL9C#NeI6$..JQT
 g.@A
c'3x~~,,, ~~HsSd95$IIic*IIl-FFIIl-IIic*IIic*
 g.@A
c'3x~~)))r)   c                    [        S/ SQ0SS9n[        SSS/0SS9nUR                  U5      n[        S/ SQ05      n[        R                  " X45        UR                  U5      n[        S/ SQ05      n[        R                  " XV5        g )Nr   )r   r   rq   r   r   ry   r   rQ   )r   rQ   rq   r   r   )r!   rs   rG   r{   expected_12r|   expected_21s          r&   test_combine_first_int0TestDataFrameCombineFirst.test_combine_first_intm  s     l+7;q!fW5%%c*	l 34
i5%%c*	l 34
i5r)   valrb   c                     [        SU/05      n[        SS/05      nUR                  U5      n[        S/U/S.5      n[        R                  " XE5        g )NisNumisBoolT)r   r   r   )r!   r   rs   rG   r   r$   s         r&   (test_combine_first_with_asymmetric_otherBTestDataFrameCombineFirst.test_combine_first_with_asymmetric_other{  sW     3%()D6*+$D6SE:;
c'r)   c                 z   [        SS/[        R                  /S-  S.US9n[        S/[        R                  /S.US9nUR                  SS/SS	9  UR                  SS/SS	9  UR	                  U5      n[        SS/[        R                  /S-  S.US9R                  SS/5      n[
        R                  " XE5        g )
N96285r   r   r   r   r   T)inplace)r   r   NA	set_indexr   r   r    )r!   nullable_string_dtyperF   rG   rH   rt   s         r&   'test_combine_first_string_dtype_only_naATestDataFrameCombineFirst.test_combine_first_string_dtype_only_na  s    $-ruugk2:O
 tfBEE73;PQ
c3Z.sCj$/!!#&$-ruugk2:O

)S#J
 	 	f/r)    N)__name__
__module____qualname____firstlineno__r'   rI   r_   rk   ru   r}   pytestmarkparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __static_attributes__r   r)   r&   r   r      sO   -=~*$* 0"4  [[% $1%xa';XdAq=QR($1%xa';XdAq=QR ($1%xa';XdAq=QR$1%xa';XdAq=QR $1%rvvrvv6$1%xa';XdAq=QR$1%xa';XdAq=QR $1%xa';XdAq=QR$1%rvvrvv6$1%xa';XdAq=QR!	
20320)2(@	?(4
A- 4*>6 [[UQH-( .(0r)   r   zscalar1, scalar2  r   r   z
2020-01-01r,   z
2020-01-02z89 daysz60 min)leftrightrq   r   )r   r   closedc                    Un[        X3//SS/S9n[        X//SS/S9n[        UR                  S   UR                  S   /5      n[        US5      (       d   UR                  S   UR                  S   :X  a  U nOUnUR	                  U5      n[        X7U/// SQS9n	U	S   R                  U5      U	S'   [        R                  " X5        g )Nr   r   r1   rL   r   r   r   rL   )r   r   dtypesr   r   astyper   r    )
scalar1scalar2nulls_fixturena_valueframerj   common_dtyper   rH   rt   s
             r&    test_combine_first_timestamp_bugr
    s     H+,sCjAE)*S#J?E#U\\#%6S8I$JKLlH--c1BellSVFW1W  'F8'23_MHSM((6HSM&+r)   c            	      Z   [        [        R                  [        R                  //SS/S9n [        [        SSS5      [        SSS5      //SS/S9nU R	                  U5      n[        [        R                  [        SSS5      [        SSS5      /// SQS9n[
        R                  " X#5        g )	Nr   r   r1   r   r   r   rL   r  )r   r   r   r   r   r   r    )r  rj   rH   rt   s       r&   $test_combine_first_timestamp_bug_NaTr    s    '(3*=E
4A
q! 4	56c
E   'F
&&(4A&q!(<	=>H &+r)   c                     [         R                  " SSSSS[        R                  // SQ/SS/S9n [	        S/ SQ0U S9n[         R                  " / SQ/ SQ/SS/S9n[        / SQUS9nUR                  [	        S	U05      5      n[         R                  " SSSSSSSSSS	[        R                  // S
Q/SS/S9n[	        [        R                  [        R                  SSSSS[        R                  S[        R                  S/SS[        R                  SS[        R                  [        R                  S[        R                  S[        R                  /S.US9n[        R                  " XF5        g )Nr   rL   r   )r   r   rq   rQ   r   r   names)r   r   r   r   r   r   r   )r   r   rL   r   r   dr  )r   r   rQ   r   r   r   r   r   rq   r   r   r   rb   rO   rc   rN   rn   ro   )rL   r  )	r   from_arraysrg   rh   r   r	   r   r   r    )mi1rF   mi2sr   mi_expectedrt   s          r&   &test_combine_first_with_nan_multiindexr    sO    
 
 
sCc266	*,>?SzC 
C+,C	8B

 
 	');<S#JC 	!-A


9c1X.
/C((#sCc3S#rvvF-	
 CjK &&"&&!Q1aBFFAFsBFFCbffbffc2663PRPVPVW	
 H #(r)   c                     [        SS/[        S5      S9n [        [        S5      [        S5      S9n[        XS.5      n[        SS/[        SS5      S9n[        [        SS	5      [        SS5      S9n[        XS
.5      n[        SS[        R                  [        R                  // SQ[        R                  [        R                  SS/S./ SQS9nUR                  U5      n[        R                  " Xe5        g )Nr   r   r   r   r   r   r   r   )r   r+   )r   r   r  r   r   r   r+   r   )r	   r   r   rg   rh   r   r   r    )a_columnb_columnrs   c_columnrG   rt   r%   s          r&   test_combine_preserve_dtypesr    s    sCja1HeAheAh/H
(2
3CsCja4HeBl%1+6H
(2
3CsBFFBFF+&&"&&#s+	

 H   %H(-r)   c            
         [        S/ SQ0[        R                  " / SQ[        R                  SS//SS/S9S	9n [        S
/ SQ0[        R                  " / SQ[        R                  SS//SS/S9S	9n[        SSS[        R                  /SS[        R                  S/S.[        R                  " / SQ[        R                  SSS//SS/S9S	9nU R                  U5      n[        R                  " X25        g )Nx)	   r-      r   r   rq   r   r   r   r   r  r   y)rP         )r   r   rQ   r   g      "@g      $@g      &@g      (@g      *@g      ,@)r  r#  )r   r   rq   rQ   )r   r   r  rg   rh   r   r   r    )rs   rG   rt   r%   s       r&   7test_combine_first_duplicates_rows_for_nan_index_valuesr&    s    
	k$$i"&&!Q%@c
SC
 	l$$i"&&!Q%@c
SC
 tT266*bffd+	
 $$BFFAq!,-c3Z
H   %H(-r)   c                      [        / SQ/ SQS.5      n [        / SQ/ SQ/ SQS.5      nU R                  U5      n[        / SQ/ SQ/ SQS.5      n[        R                  " X#5        g )Nr"  )rQ   r   r   r   )r         )(   2   <   )rP   "   A   r  r   )df_1df_2rH   rt   s       r&   ,test_combine_first_int64_not_cast_to_float64r1    sQ    9956D;\MND%Fyy|LMH&+r)   c                  R   [         R                  " SS/[        R                  [        R                  //5      n [         R                  " SS/[        R                  [        R                  //5      n[	        SS S/0U S9n[	        SSS/0US9nUR                  U5      n[         R                  " / SQ[        R                  [        R                  [        R                  [        R                  //5      n[	        S[        R                  SSS/0US9n[        R                  " XF5        g )Nr   r   r   rQ   r   rq   )r   r   r   r   )r   r  rg   rh   r   r   r   r    )midxmidx2rs   rG   rH   expected_midxrt   s          r&   test_midx_losing_dtyper6    s    !!Aq6BFFBFF+;"<=D""QFRVVRVV,<#=>E
S4)$D
1C
S1a&M
/Cs#F**	78M #1a01GH&+r)   c                      [        SS/S9n [        SS/S9nU R                  U5      n[        / SQS9n[        R                  " X#5        g )Nr   r   r1   rL   r  r   )r   r   rH   rt   s       r&    test_combine_first_empty_columnsr8  '  sF    c3Z(DsCj)E&F1H&+r)   )r   numpyrg   r   pandas.core.dtypes.castr   pandas.core.dtypes.commonr   pandasr   r   r   r   r	   pandas._testing_testingr   r   r   r   r   	TimedeltaIntervalr
  r  r  r  r&  r1  r6  r8  r   r)   r&   <module>rA     s       4 4   0 0D 	$1	xa34	<	%ryys'CD	i	 ",,x"89	!1	%r{{6'RS	,,.,):.,.2,,,r)   