
    OwgM                        d dl m Z  d dl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mZ d dlmZ  G d d      Zej$                  j'                  d e d	d
d
       e d	d
d      f e	j(                  dd       e	j(                  dd      f e	j*                  d       e	j*                  d      f e	j,                  d d
       e	j,                  ddd      fg      d        Zd Zd Zd Zd Zd Zd Zd Zy)    )datetimeN)find_common_type)is_dtype_equal)	DataFrameIndex
MultiIndexSeriesc                      e Zd Zd Zd Zd Zd Zd Zd Ze	j                  j                  d edd	d	       edd	d
       edd	d      gej                  ej                  ej                  g edd	d	       edd	d
       edd	d      gfej                  ej                  ej                  g edd	d	       edd	d
       edd	d      g edd	d	       edd	d
       edd	d      gf edd	d
      ej                  ej                  g edd	d	       edd	d
       edd	d      g edd	d
       edd	d
       edd	d      gf edd	d	       edd	d
       edd	d      g edd	d
      ej                  ej                  g edd	d	       edd	d
       edd	d      gff      d        Zd Zd Zd Zd Zd Zd Zd Zd Zd Ze	j                  j                  dd	dg      d        Zd Zy)TestDataFrameCombineFirstc                    t        ddgt        d            }t        t        d      t        d            }t        ||d      }t        ddgt        dd            }t        t        d      t        dd            }t        ||d      }t        t        d      g d	dg d
      }|j	                  |      }t        j                  ||       y )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          d/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/frame/methods/test_combine_first.pytest_combine_first_mixedz2TestDataFrameCombineFirst.test_combine_first_mixed   s    C:U1X.5858,AA&'C:U1a[1585A;/AA&'d6l>lS??1%
h,    c                    |d d |dd  }}|j                  |      }|j                  |j                        }t        j                  ||       t        j
                  |j                  |j                         t        j                  |d   |d          |j                         }d|d<   |d= |j                         }d|d<   |d= |j                  |      }|d   dk(  j                         sJ t        j                  |d   |d          t        j                  |d   |d          t        j                  |d   |d          |d d j                         |}}d|d<   |j                  |      }|d   d d dk(  j                         sJ d|j                  d d|j                  j                  d      f<   |j                  |      }|d   d d dk(  j                         sJ |d d }	|dd  }
|	j                  |
      }t        j                  |d   j                  |	j                        |	d          t        j                  |d   j                  |
j                        |
d          |rt        nd }t        j                  |d	
      5  |j                  t                     }d d d        t        j                  |       t               j                  |      }t        j                  ||j                                |j                  t        ddg            }d|j                  v sJ t        ddgit!        ddd      g      }t        dg      }|j                  |      }d|v sJ y # 1 sw Y   xY w)Nr   r   r   Cr   r   D
   zempty entries)matchfazboor   r   i  r   columns)r   reindexr   r   r   assert_index_equalr0   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_firstz,TestDataFrameCombineFirst.test_combine_first!   sG    !_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	:
dK0{((5
dK$:$:$<=((%)HI

""" aSz(4A*>)?@&!!#&f}}	: 	:s   M''M0c                 ~   t        g d      }t        g d|      }t        g d|      }t        g d|      }t        |||d      }t        g d      }t        g d|      }t        g d|      }t        g d|      }t        |||d      }|j                  |      }t	        |j
                        dk(  sJ y )	N)r   r   ce)      @g      "      @g      Y@r   )      r   a   )col0col2col3)r   r   rI   r!   )col1rQ   col5r   )r   r	   r   r   lenr0   )r    idxser1ser2ser3frame1frame2r$   s           r%   test_combine_first_mixed_bugz6TestDataFrameCombineFirst.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                 J   t        g dg dgg d      }t        ddggdgddg	      }|j                  |      }t        j                  ||       t        j
                  |j                  d
<   |j                  |      }d|j                  d
<   t        j                  ||       y )N)      ?       @FT)rL   rK   TF)r   r   bool1bool2r/   -   r   r   r   )r   r0   )r   r   )r   r   r   r   npnanloc)r    rD   otherrF   s       r%   $test_combine_first_same_as_in_updatez>TestDataFrameCombineFirst.test_combine_first_same_as_in_updater   s    $&=>0

 B8*QC#sD!!%(
fb)v!!%(v
fb)r'   c           	         t        dt        j                  ddt        j                  gt        j                  ddt        j                  dgd      }t        dddt        j                  ddgt        j                  t        j                  dddd	gd      }|j                  |      }t        g d
t        j                  dddddgd      }t	        j
                  ||       y )Nr^         @rK   r_         @r   rL         @g       @)r   r      r   rl   rk   r   rl   rN   r      )r   rc   rd   r   r   r   )r    df1rE   rF   expecteds        r%   test_combine_first_doc_examplez8TestDataFrameCombineFirst.test_combine_first_doc_example   s    S"&&1c266SV8WX
 3RVVS#6ffbffc3S9
 ""3'#7rvvq!QPQST>UVW
fh/r'   c                    t        t        j                  ddgdt        j                  dgt        j                  ddgg      }t        dt        j                  dgg dgdd	g
      }t        g dd	t              }|j                  |      d	   }t        j                  ||       |j                  |      d	   }t        j                  ||       y )Nri   Tgffffffrk   FgLE)g      g?Fr   r   r   )TTF)namedtype)r   rc   rd   r	   boolr   r   r3   )r    rn   rE   ro   	result_12	result_21s         r%   -test_combine_first_return_obj_type_with_boolszGTestDataFrameCombineFirst.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   rl   c                     t        d|i      t        d|i      }}|j                  |      }t        d|i      }t        j                  ||       y )Nr   r   r   r   r   )r    data1data2data_expectedrn   rE   rF   ro   s           r%   -test_combine_first_convert_datatime_correctlyzGTestDataFrameCombineFirst.test_combine_first_convert_datatime_correctly   sN    < c5\*IsEl,CS""3'c=12
fh/r'   c                    t        t        j                  d      dggddg      }t        dgdggdg      }|d   j                  dk(  sJ |d   j                  d	k(  sJ |j	                  |      }t        t        j                  d      t        j
                  gddgd
ddg      }t        j                  ||       |d   j                  dk(  sJ |d   j                  d	k(  sJ |j                  d d j	                  |      }t        t        j                  t        j                  gddgd
ddg      }t        j                  ||       |d   j                  dk(  sJ |d   j                  d	k(  sJ y )N
2011-01-01r   r   r   r/   rN   r   zdatetime64[ns]int64r   r   r   float64)r   pd	Timestamprs   r   NaTr   r   r6   rc   rd   )r    dfadfbresr#   s        r%   test_combine_first_align_nanz6TestDataFrameCombineFirst.test_combine_first_align_nan   s`   ",,|4a89C:N!qc
SE23x~~!11113x~~((($<<-rvv6aVD#J
 	c3'3x~~!11113x~~(((hhrl((-rvvrvv.aV<sCjQ
c3'3x~~***3x~~(((r'   c           	         t        j                  d      j                  d      j                  |      }t	        ddg|t        j
                  dd            }t        j                  d	      j                  d      j                  |      }t	        dd
g|t        j
                  dd            }|dg   j                  |      }t	        t        j                  dd      t        j                  dd      gt        j                  dd      t         j                  gdddgt        j
                  ddd      d| d      }|d   j                  d| dk(  sJ |d   j                  d| dk(  sJ t        j                  ||       y )Nz20100101 01:01UTCUTCdatetimeabc20140627r   )periods)r0   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])r0   r   rs   )r   to_datetimetz_localizeas_unitr   
date_ranger   r   r   rs   r   r   )r    unitrz   rn   r{   rE   r   r#   s           r%   test_combine_first_timezonez5TestDataFrameCombineFirst.test_combine_first_timezone   sv   /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#====
c3'r'   c                    t        j                  ddd|      }t        d|i      }t        j                  ddd|      }t        d|i      }|j                  |      }t	        j
                  ||       |d   j                  d| dk(  sJ y )	N
2015-01-01
2015-01-05r   r   r   DATE
2015-01-03r   r   r   r   r   r   r   r   rs   )r    r   dts1rn   dts2rE   r   s          r%   test_combine_first_timezone2z6TestDataFrameCombineFirst.test_combine_first_timezone2   s    }}\<EM'}}\<EM'$
c3'6{  k$v$>>>>r'   c                    t        j                  g dd      j                  |      }t        d|ig d      }t        j                  g dd      j                  |      }t        d|ig d      }|j	                  |      }t        j                  g d	d      j                  |      }t        d|ig d
      }t        j                  ||       y )N)r   r   
2011-01-03
2011-01-04
US/Easternr   r   r   rl   r   r   r   
2012-01-01
2012-01-02z
2012-01-03r   rN   r   )r   r   r   r   r   r   r   r   rl   rN   r   r   )r   DatetimeIndexr   r   r   r   r   	r    r   r   rn   r   rE   r   exp_dtsr#   s	            r%   test_combine_first_timezone3z6TestDataFrameCombineFirst.test_combine_first_timezone3
  s    =,

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

'$- 	 i8$"" 

 '$- 	 )1CD
c3'r'   c                 
   t        j                  ddd      }t        d|i      }t        j                  dd      }t        d|i      }|j                  |      }t	        j
                  ||       |d   j                  dk(  sJ y )Nr   r   r   r   r   r   zdatetime64[ns, US/Eastern]r   )r    r   rn   r   rE   r   s         r%   test_combine_first_timezone4z6TestDataFrameCombineFirst.test_combine_first_timezone4$  s{    }}\<LI'}}\<8' $
c3'6{  $@@@@r'   c                    t        j                  ddd|      }t        d|i      }t        j                  dd|      }t        d|i      }|j                  |      }t        j                  dd      t        j                  dd      t        j                  d      g}t        d|i      }t        j                  ||       |d   j                  d	k(  sJ y )
Nr   z
2015-01-02r   r   r   r   )r   r   object)r   r   r   r   r   r   r   rs   r   s	            r%   test_combine_first_timezone5z6TestDataFrameCombineFirst.test_combine_first_timezone50  s    }}\<LtT'}}\<dC'$LL,7LL,7LL&

 )*
c3'6{  H,,,r'   c                 j   t        j                  g d      }t        d|ig d      }t        j                  g d      }t        d|ig d      }|j                  |      }t        j                  g d      }t        d|ig d      }t	        j
                  ||       |d   j                  d	k(  sJ y )
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   rs   )r    rz   rn   r{   rE   r   r   r#   s           r%   test_combine_first_timedeltaz6TestDataFrameCombineFirst.test_combine_first_timedelta@  s    !!"CDu\:!!"@AuY7$##B
 w/AB
c3'4y"3333r'   c           	      t   t        j                  g dd      }t        d|ig d      }t        j                  g dd      }t        d|ig d      }|j                  |      }t        j                  g d	d      }t        d|ig d
      }t	        j
                  ||       |d   j                  |j                  k(  sJ t        j                  g dd      }t        d|ig d      }|j                  |      }t        j                  dd      t        j                  dd      t         j                  t        j                  dd      t        j                  dd      t        j                  dd      g}t        d|ig d
      }t	        j
                  ||       |d   j                  dk(  sJ y )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   rs   Periodr   )	r    rz   rn   r{   rE   r   r   r#   r   s	            r%   test_combine_first_periodz3TestDataFrameCombineFirst.test_combine_first_periodN  se   GcReL9C#NeI6$..JQT
 g.@A
c3'3x~~,,, ~~HsSd95$IIic*IIl-FFIIl-IIic*IIic*
 g.@A
c3'3x~~)))r'   c                     t        dg did      }t        dddgid      }|j                  |      }t        dg di      }t        j                  ||       |j                  |      }t        dg di      }t        j                  ||       y )Nr   )r   r   rl   r   r   rs   r   rN   )r   rN   rl   r   ry   )r    rn   rE   ru   expected_12rv   expected_21s          r%   test_combine_first_intz0TestDataFrameCombineFirst.test_combine_first_intm  s     l+7;q!fW5%%c*	l 34
i5%%c*	l 34
i5r'   valr^   c                     t        d|gi      }t        ddgi      }|j                  |      }t        dg|gd      }t        j                  ||       y )NisNumisBoolT)r   r   ry   )r    r   rn   rE   r   r#   s         r%   (test_combine_first_with_asymmetric_otherzBTestDataFrameCombineFirst.test_combine_first_with_asymmetric_other{  sY     3%()D6*+$D6SE:;
c3'r'   c                    t        ddgt        j                  gdz  d|      }t        dgt        j                  gd|      }|j                  ddgd	       |j                  ddgd	       |j	                  |      }t        ddgt        j                  gdz  d|      j                  ddg      }t        j                  ||       y )
N96285r   r   r   r   r   T)inplace)r   r   NA	set_indexr   r   r   )r    nullable_string_dtyperD   rE   rF   ro   s         r%   'test_combine_first_string_dtype_only_nazATestDataFrameCombineFirst.test_combine_first_string_dtype_only_na  s    $-ruugk2:O
 tfBEE73;PQ
c3Z.sCj$/!!#&$-ruugk2:O

)S#J
 	 	fh/r'   N)__name__
__module____qualname__r&   rG   r\   rg   rp   rw   pytestmarkparametrizer   r   r   r}   r   r   r   r   r   r   r   r   r   r   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rightrl   r   )r   r   closedc                    |}t        ||ggddg      }t        | |ggddg      }t        |j                  d   |j                  d   g      }t        |d      s|j                  d   |j                  d   k(  r| }n|}|j	                  |      }t        |||ggg d      }	|	d   j                  |      |	d<   t        j                  ||	       y )Nr   r   r/   rI   r   r   r   rI   )r   r   dtypesr   r   astyper   r   )
scalar1scalar2nulls_fixturena_valueframerf   common_dtyper   rF   ro   s
             r%    test_combine_first_timestamp_bugr     s     H(+,sCjAE)*S#J?E#U\\#%6S8I$JKLlH-c1BellSVFW1W  'F8S'23_MHSM((6HSM&(+r'   c            	      l   t        t        j                  t        j                  ggddg      } t        t        ddd      t        ddd      ggddg      }| j	                  |      }t        t        j                  t        ddd      t        ddd      ggg d      }t        j                  ||       y )	Nr   r   r/   r   r   r   rI   r   )r   r   r   r   r   r   r   )r   rf   rF   ro   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                     t        j                  dddddt        j                  gg dgddg      } t	        dg di|       }t        j                  g dg dgddg      }t        g d|      }|j                  t	        d	|i            }t        j                  dddddddddd	t        j                  gg d
gddg      }t	        t        j                  t        j                  dddddt        j                  dt        j                  dgddt        j                  ddt        j                  t        j                  dt        j                  dt        j                  gd|      }t        j                  ||       y )Nr   rI   r   )r   r   rl   rN   r   r   names)r   r   r   r   r   r   r   )r   r   rI   r   r   dr   )r   r   rN   r   r   r   r   r   rl   r   r   r   r^   rL   r_   rK   ri   rj   )rI   r   )	r   from_arraysrc   rd   r   r	   r   r   r   )mi1rD   mi2sr   mi_expectedro   s          r%   &test_combine_first_with_nan_multiindexr    sQ    
 
 
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 #x(r'   c                     t        ddgt        d            } t        t        d      t        d            }t        | |d      }t        ddgt        dd            }t        t        dd	      t        dd            }t        ||d
      }t        ddt        j                  t        j                  gg dt        j                  t        j                  ddgdg d      }|j                  |      }t        j                  ||       y )Nr   r   r   r   r   r   r   r   )r   r)   )r   r   r  r   r   r   r)   r   )r	   r   r   rc   rd   r   r   r   )a_columnb_columnrn   c_columnrE   ro   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(H-r'   c            
         t        dg dit        j                  g dt        j                  ddggddg      	      } t        d
g dit        j                  g dt        j                  ddggddg      	      }t        dddt        j                  gddt        j                  dgdt        j                  g dt        j                  dddggddg      	      }| j                  |      }t        j                  ||       y )Nx)	   r+      r   r   rl   r   r   r   r   r   r   y)rM         )r   r   rN   r   g      "@g      $@g      &@g      (@g      *@g      ,@)r
  r  )r   r   rl   rN   )r   r   r   rc   rd   r   r   r   )rn   rE   ro   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(H-r'   c                      t        g dg dd      } t        g dg dg dd      }| j                  |      }t        g dg dg dd      }t        j                  ||       y )Nr  )rN   r   r   r   )r         )(   2   <   )rM   "   A   r  ry   )df_1df_2rF   ro   s       r%   ,test_combine_first_int64_not_cast_to_float64r    sS    9956D;\MND%Fyy|LMH&(+r'   c                  ^   t        j                  ddgt        j                  t        j                  gg      } t        j                  ddgt        j                  t        j                  gg      }t	        dd dgi|       }t	        dddgi|      }|j                  |      }t        j                  g dt        j                  t        j                  t        j                  t        j                  gg      }t	        dt        j                  dddgi|      }t        j                  ||       y )Nr   r   r   rN   r   rl   )r   r   r   r   )r   r   rc   rd   r   r   r   r   )midxmidx2rn   rE   rF   expected_midxro   s          r%   test_midx_losing_dtyper!    s    !!Aq6BFFBFF+;"<=D""QFRVVRVV,<#=>E
S4)$D
1C
S1a&M
/Cs#F**	78M #1a01GH&(+r'   c                      t        ddg      } t        ddg      }| j                  |      }t        g d      }t        j                  ||       y )Nr   r   r/   rI   r   ry   )r   r   rF   ro   s       r%    test_combine_first_empty_columnsr#  '  sH    c3Z(DsCj)E&F1H&(+r'   )r   numpyrc   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  r  r!  r#  r   r'   r%   <module>r,     s       4 4   0 0D 	$1	xa34	<	%yryys'CD	i	 ,",,x"89	!1	%{r{{6'RS	,,.,):.,.2,,,r'   