
    Eg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                            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dS )    )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
                            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
                            dd	dg          d             Zd ZdS )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
          }|                    |          }t          j        ||           d S )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          b/var/www/sysmax/venv/lib/python3.11/site-packages/pandas/tests/frame/methods/test_combine_first.pytest_combine_first_mixedz2TestDataFrameCombineFirst.test_combine_first_mixed   s    C:U1XX...588588,,,AA&&''C:U1a[[1115885A;;///AA&&''d6ll>>lllSSS??1%%
h,,,,,    c                     |d d         |dd          }}|                     |          }|                    |j                  }t          j        ||           t          j        |j        |j                   t          j        |d         |d                    |                                }d|d<   |d= |                                }d|d<   |d= |                     |          }|d         dk    	                                sJ t          j        |d         |d                    t          j        |d         |d                    t          j        |d         |d                    |d d                                         |}}d|d<   |                     |          }|d         d d         dk    	                                sJ d|j
        d d|j                            d          f<   |                     |          }|d         d d         dk    	                                sJ |d d         }	|dd          }
|	                     |
          }t          j        |d                             |	j                  |	d                    t          j        |d                             |
j                  |
d                    |rt          nd }t          j        |d	
          5  |                     t                                }d d d            n# 1 swxY w Y   t          j        ||           t                                           |          }t          j        ||                                           |                     t          ddg                    }d|j        v sJ t          ddgit!          ddd          g          }t          dg          }|                     |          }d|v sJ d S )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!   s    !_k!""od%%d++%--hn==
h888
h.0CDDD
x}oc.BCCC   ""c
#J!!##s3K&&v.."'')))))
x}eCj999
x}fSk:::
x}eCj999 %SbS)..00/dS	%%d++crc"a',,..... 56	#2#t|++C0001%%d++crc"a',,..... ??1%%
x}44QW==qvFFF
x}44QW==qvFFF $6?--4'GGG 	: 	:,,Y[[99D	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:
dK000{{((55
dK$:$:$<$<===((%)H)H)HII
"""" aSz(4A*>*>)?@@@&&&!!#&&f}}}}}}s   ("LLL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          }|                    |          }t	          |j                  dk    sJ d S )	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99***#666nnnC000D$EEFF((())---S999***#666nnnC000D$EEFF''//8#$$))))))r'   c                 L   t          g dg dgg d          }t          ddggdgddg	          }|                    |          }t          j        ||           t          j        |j        d
<   |                    |          }d|j        d
<   t          j        ||           d S )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00
 
 

 B8*QC#sDD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          }|                    |          }t          g d
t          j        dddddgd          }t	          j        ||           d S )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c26SV8WXX
 
 3RVS#6fbfc3S9 
 
 ""3''#7#7#7rvq!QPQST>UVVW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                    }|                    |          d	         }t          j        ||           |                    |          d	         }t          j        ||           d S )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     fc4 4"6e8LM
 
 %.0B0B0BCAq6RRR---ATBBB%%c**1-	
y(333%%c**1-	
y(33333r'   zdata1, data2, data_expectedi  r   r   rl   c                     t          d|i          t          d|i          }}|                    |          }t          d|i          }t          j        ||           d S )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   sc    < c5\**IsEl,C,CS""3''c=12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 |                    |          }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                             |          }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 d S )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   ",|44a89C:NNN!qc
SE2223x~!111113x~(((($$<--rv6aVDD#J
 
 
 	c3'''3x~!111113x~((((hrrl((--rvrv.aV<<sCjQQQ
c3'''3x~****3x~((((((r'   c           	      B   t          j        d                              d                              |          }t	          ddg|t          j        dd                    }t          j        d	                              d                              |          }t	          dd
g|t          j        dd                    }|dg                             |          }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        ||           d S )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   s   /00<<UCCKKDQQ"E*-
A666
 
 

 /00<<UCCKKDQQ"E*-
A666
 
 

 =/"0055 L!3>>>L!3>>>  %:uEEErvN  #E*-
AC@@@,,,,
 
 
 =!'+E+E+E+EEEEE5z#=#=#=#=====
c3'''''r'   c                 ,   t          j        ddd|          }t          d|i          }t          j        ddd|          }t          d|i          }|                    |          }t	          j        ||           |d         j        d| dk    sJ d S )	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MM''}\<EMMM''$$
c3'''6{ $>$$>$>$>>>>>>>r'   c                    t          j        g dd                              |          }t          d|ig d          }t          j        g dd                              |          }t          d|ig d          }|                    |          }t          j        g d	d                              |          }t          d|ig d
          }t          j        ||           d S )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!   ===,
 
 

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

'$-- 	 iii888$$"   

 

 

 '$-- 	 )1C1C1CDDD
c3'''''r'   c                    t          j        ddd          }t          d|i          }t          j        dd          }t          d|i          }|                    |          }t	          j        ||           |d         j        dk    sJ d S )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II''}\<88'' $$
c3'''6{ $@@@@@@@r'   c                    t          j        ddd|          }t          d|i          }t          j        dd|          }t          d|i          }|                    |          }t          j        dd          t          j        dd          t          j        d          g}t          d|i          }t          j        ||           |d         j        d	k    sJ d S )
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TT''}\<dCCC''$$L,777L,777L&&

 )**
c3'''6{ H,,,,,,r'   c                    t          j        g d          }t          d|ig d          }t          j        g d          }t          d|ig d          }|                    |          }t          j        g d          }t          d|ig d          }t	          j        ||           |d         j        d	k    sJ d S )
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"C"CDDu\\\:::!"@"@"@AAuYYY777$$#BBB
 
 w/A/A/ABBB
c3'''4y"3333333r'   c           	         t          j        g dd          }t          d|ig d          }t          j        g dd          }t          d|ig d          }|                    |          }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          }|                    |          }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 d S )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  s   GGGcRRReLLL999CCC#NNNeIII666$$.JJJQT
 
 
 g.@.@.@AAA
c3'''3x~,,,, ~HHHsSSSd999555$$Iic***Il---FIl---Iic***Iic***
 g.@.@.@AAA
c3'''3x~))))))r'   c                 N   t          dg did          }t          dddgid          }|                    |          }t          dg di          }t          j        ||           |                    |          }t          dg di          }t          j        ||           d S )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     lll+7;;;q!fW555%%c**	lll 344
i555%%c**	lll 344
i55555r'   valr^   c                     t          d|gi          }t          ddgi          }|                    |          }t          dg|gd          }t          j        ||           d S )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{  sq     3%())D6*++$$D6SE::;;
c3'''''r'   c                    t          ddgt          j        gdz  d|          }t          dgt          j        gd|          }|                    ddgd	           |                    ddgd	           |                    |          }t          ddgt          j        gdz  d|                              ddg          }t          j        ||           d S )
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    $-rugk22:O
 
 
 tfBE733;PQQQ
c3Z...sCj$///!!#&&$-rugk2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      s       - - -= = =~* * *$* * * 0 0 0"4 4 4  [% $1%%xxa';';XXdAq=Q=QR($1%%xxa';';XXdAq=Q=QR ($1%%xxa';';XXdAq=Q=QR$1%%xxa';';XXdAq=Q=QR $1%%rvrv6$1%%xxa';';XXdAq=Q=QR$1%%xxa';';XXdAq=Q=QR $1%%xxa';';XXdAq=Q=QR$1%%rvrv6$1%%xxa';';XXdAq=Q=QR!	
 20 03 20) ) )2( ( (@	? 	? 	?( ( (4
A 
A 
A- - - 4 4 4* * *>6 6 6 [UQH--( ( .-(0 0 0 0 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|}|                    |          }t          |||ggg d          }	|	d                             |          |	d<   t          j        ||	           d S )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AAAE)*S#J???E#U\#%6S8I$JKKLlH-- c1BelSVFW1W1W  ''F8S'23___MMMHSM((66HSM&(+++++r'   c            	         t          t          j        t          j        ggddg          } t          t          ddd          t          ddd          ggddg          }|                     |          }t          t          j        t          ddd          t          ddd          ggg d          }t          j        ||           d S )	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 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|          }|                    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        ||           d S )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    s    
 
sCc26	*,>,>,>?Sz  C 
C+++,C	8	8	8B

 	'	'	');););<S#J  C 	!!!---A


9c1X..
/
/C(#sCc3S#rvF---	
 Cj  K &"&!Q1aBFAFsBFCbfbfc263PRPVW	
 	
   H #x(((((r'   c                  f   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          }|                    |          }t          j        ||           d S )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111HeAhheAhh///H
(22
3
3CsCja444HeBll%1++666H
(22
3
3CsBFBF+&"&#s+	
 	

 ll  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          	          }|                     |          }t          j        ||           d S )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    s2   
	kkk$iii"&!Q%@c
SSS  C
 	lll$iii"&!Q%@c
SSS  C
 tT26*bfd+	
 	
 $\\BFAq!,-c3Z
 
 
  H   %%H(H-----r'   c                      t          g dg dd          } t          g dg dg dd          }|                     |          }t          g dg dg dd          }t          j        ||           d S )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    s    9999995566D;;;\\\MMNND%%Fyyyyyy|||LLMMH&(+++++r'   c                  0   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|          }|                    |          }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        ||           d S )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    !Aq6BFBF+;"<==D"QFRVRV,<#=>>E
S4)$D
1
1
1C
S1a&M
/
/
/Cs##F*	78 M #1a01GGGH&(+++++r'   c                      t          ddg          } t          ddg          }|                     |          }t          g d          }t          j        ||           d S )Nr   r   r/   rI   r   ry   )r   r   rF   ro   s       r%    test_combine_first_empty_columnsr#  '  sj    c3Z(((DsCj)))E&&F11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 4 4 4 4 4 4 4 4 4 4                     0 0 0 0 0 0 0 0D 	$1		xxa334	<	%	%yrys'C'CD	i	 	 ,",x"8"89	!1	%	%	%{r{6'R'R'RS	 , , ,., , ,) ) ):. . .,. . .2, , ,, , ,, , , , ,r'   