o
    �¨ÊhM  ã                   @   s  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„ dƒZej de d	d
d
ƒe d	d
dƒfe	 dd¡e	 dd¡fe	 d¡e	 d¡fe	jd d
d�e	jdddd�fg¡dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ ZdS )%é    )ÚdatetimeN)Úfind_common_type)Úis_dtype_equal)Ú	DataFrameÚIndexÚ
MultiIndexÚSeriesc                   @   s  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zd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d„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Ze	j
 d&dd'g¡d(d)„ ƒZd*d+„ Zd,S )-ÚTestDataFrameCombineFirstc                 C   s¨   t ddgtdƒd�}t tdƒtdƒd�}t||dœƒ}t ddgtddƒd�}t tdƒtddƒd�}t||dœƒ}ttdƒg d	¢dœg d
¢d�}| |¡}t ||¡ 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Úcombined© r"   ú_/var/www/html/env/lib/python3.10/site-packages/pandas/tests/frame/methods/test_combine_first.pyÚtest_combine_first_mixed   s   
z2TestDataFrameCombineFirst.test_combine_first_mixedc                 C   sœ  |d d… |dd … }}|  |¡}| |j¡}t ||¡ t |j|j¡ t |d |d ¡ | ¡ }d|d< |d= | ¡ }d|d< |d= |  |¡}|d dk 	¡ sUJ ‚t |d |d ¡ t |d |d ¡ t |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 |d  |	j¡|	d ¡ t |d  |
j¡|
d ¡ |rætnd }tj|d	d
�� |  tƒ ¡}W d   ƒ n	1 �sw   Y  t ||¡ tƒ   |¡}t || ¡ ¡ |  tddgd�¡}d|jv �s,J ‚tddgitdddƒgd�}tdgd�}|  |¡}d|v �sLJ ‚d S )Nr   r   r   ÚCr   r   ÚDé
   zempty entries)ÚmatchÚfazÚboor   r
   iÜ  r   ©Úcolumns)r   Úreindexr   r   r   Úassert_index_equalr,   Ú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Úresultr"   r"   r#   Útest_combine_first!   sT   




ÿ
z,TestDataFrameCombineFirst.test_combine_firstc                 C   s¸   t g d¢ƒ}tg d¢|d�}tg d¢|d�}tg d¢|d�}t|||dœƒ}t g d¢ƒ}tg d¢|d�}tg d¢|d�}tg d¢|d�}t|||dœƒ}| |¡}t|jƒdksZJ ‚d S )	N)r
   r   ÚcÚe)ç      @g      "Àç      @g      Y@r   )é   é   r   éa   )Úcol0Úcol2Úcol3)r
   r   rD   r   )Úcol1rL   Úcol5r   )r   r   r   r   Úlenr,   )r   ÚidxÚser1Úser2Úser3Úframe1Úframe2r!   r"   r"   r#   Útest_combine_first_mixed_bug`   s   
z6TestDataFrameCombineFirst.test_combine_first_mixed_bugc                 C   s|   t g d¢g d¢gg d¢d�}t ddggdgddgd	�}| |¡}t ||¡ tj|jd
< | |¡}d|jd
< t ||¡ d S )N)ç      ð?ç       @FT)rG   rF   TF)r   r   Úbool1Úbool2r+   é-   r   r   r   )r   r,   )r   r   )r   r   r   r   ÚnpÚnanÚloc)r   r@   ÚotherrB   r"   r"   r#   Ú$test_combine_first_same_as_in_updater   s   þ


z>TestDataFrameCombineFirst.test_combine_first_same_as_in_updatec                 C   s�   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 ||¡ d S )NrX   ç      @rF   rY   ç      @r   rG   ç      @g       @)r   r   é   r   re   rd   r   re   rI   r   é   )r   r]   r^   r   r   r   )r   Údf1rA   rB   Úexpectedr"   r"   r#   Útest_combine_first_doc_example‚   s   $ÿþÿ
 z8TestDataFrameCombineFirst.test_combine_first_doc_examplec                 C   s�   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d
�}tg d¢d	td�}| |¡d	 }t ||¡ | |¡d	 }t ||¡ d S )Nrb   TgffffffÀrd   FgÍÌÌÌÌLEÀ)g      Àgš™™™™™ù?Fr   r   r   )TTF)ÚnameÚdtype)r   r]   r^   r   Úboolr   r   r/   )r   rg   rA   rh   Ú	result_12Ú	result_21r"   r"   r#   Ú-test_combine_first_return_obj_type_with_bools“   s    ÿ zGTestDataFrameCombineFirst.test_combine_first_return_obj_type_with_boolszdata1, data2, data_expectediÐ  r   r   re   c                 C   s@   t d|iƒt d|iƒ}}| |¡}t d|iƒ}t ||¡ d S )Nr
   ©r   r   r   r   )r   Údata1Údata2Údata_expectedrg   rA   rB   rh   r"   r"   r#   Ú-test_combine_first_convert_datatime_correctly£   s   
zGTestDataFrameCombineFirst.test_combine_first_convert_datatime_correctlyc                 C   s   t t d¡dggddgd�}t dgdggdgd�}|d jdks"J ‚|d jd	ks+J ‚| |¡}t t d¡tjgddgd
œddgd�}t ||¡ |d jdksRJ ‚|d jd	ks[J ‚|jd d…  |¡}t t	j
t	j
gddgd
œddgd�}t ||¡ |d jdks…J ‚|d jd	ksŽJ ‚d S )Nú
2011-01-01r   r
   r   r+   rI   r   zdatetime64[ns]Úint64©r
   r   r   Úfloat64)r   ÚpdÚ	Timestamprk   r   ÚNaTr   r   r2   r]   r^   )r   ÚdfaÚdfbÚresr    r"   r"   r#   Útest_combine_first_align_nanÆ   s"   
þ"z6TestDataFrameCombineFirst.test_combine_first_align_nanc                 C   s  t  d¡ d¡ |¡}tddg|t jddd�d�}t  d	¡ d¡ |¡}tdd
g|t jddd�d�}|dg  |¡}tt jddd�t jddd�gt jddd�t jgdœddgt jdddd�d|› d�d�}|d j	d|› d�ksrJ ‚|d j	d|› d�ksJ ‚t
 ||¡ d S )Nz20100101 01:01ÚUTCÚUTCdatetimeÚabcÚ20140627r   )Úperiods)r,   Ú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])r,   r   rk   )ry   Úto_datetimeÚtz_localizeÚas_unitr   Ú
date_ranger   rz   r{   rk   r   r   )r   Úunitrq   rg   rr   rA   r~   r    r"   r"   r#   Útest_combine_first_timezoneß   s4   ýýþû
öz5TestDataFrameCombineFirst.test_combine_first_timezonec                 C   sp   t jddd|d�}td|iƒ}t jddd|d�}td|iƒ}| |¡}t ||¡ |d jd|› d�ks6J ‚d S )	Nú
2015-01-01ú
2015-01-05r€   ©r‰   r‘   ÚDATEú
2015-01-03r‹   rŒ   ©ry   r�   r   r   r   r   rk   )r   r‘   Údts1rg   Údts2rA   r~   r"   r"   r#   Útest_combine_first_timezone2ÿ   s   
z6TestDataFrameCombineFirst.test_combine_first_timezone2c           	      C   sž   t jg d¢dd� |¡}td|ig d¢d�}t jg d¢dd� |¡}td|ig d¢d�}| |¡}t jg d	¢dd� |¡}td|ig d
¢d�}t ||¡ d S )N)ru   r{   ú
2011-01-03ú
2011-01-04ú
US/Easternrˆ   r–   ©r   re   r   r   r   ©ú
2012-01-01ú
2012-01-02z
2012-01-03©r   rI   r   )ru   r¡   r{   r¢   rœ   r�   ©r   r   re   rI   r   r   )ry   ÚDatetimeIndexr�   r   r   r   r   ©	r   r‘   r™   rg   rš   rA   r~   Úexp_dtsr    r"   r"   r#   Útest_combine_first_timezone3
  s*   ÿþÿþ
÷
öz6TestDataFrameCombineFirst.test_combine_first_timezone3c                 C   s`   t jdddd�}td|iƒ}t  dd¡}td|iƒ}| |¡}t ||¡ |d jdks.J ‚d S )Nr“   r”   rž   rˆ   r–   r—   zdatetime64[ns, US/Eastern]r˜   )r   r™   rg   rš   rA   r~   r"   r"   r#   Útest_combine_first_timezone4$  s   
z6TestDataFrameCombineFirst.test_combine_first_timezone4c           	      C   s–   t jddd|d�}td|iƒ}t jdd|d�}td|iƒ}| |¡}t jddd�t jddd�t  d¡g}td|iƒ}t ||¡ |d jd	ksIJ ‚d S )
Nr“   z
2015-01-02rž   r•   r–   r—   )r‘   rˆ   Úobject)ry   r�   r   r   rz   r   r   rk   r¦   r"   r"   r#   Útest_combine_first_timezone50  s   
ýz6TestDataFrameCombineFirst.test_combine_first_timezone5c                 C   s’   t  g d¢¡}td|ig d¢d�}t  g d¢¡}td|ig d¢d�}| |¡}t  g d¢¡}td|ig d¢d�}t ||¡ |d jd	ksGJ ‚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])ry   ÚTimedeltaIndexr   r   r   r   rk   )r   rq   rg   rr   rA   r~   r§   r    r"   r"   r#   Útest_combine_first_timedelta@  s   
ÿz6TestDataFrameCombineFirst.test_combine_first_timedeltac           	   	   C   sF  t jg d¢dd�}td|ig d¢d�}t jg d¢dd�}td|ig d¢d�}| |¡}t jg d	¢dd�}td|ig d
¢d�}t ||¡ |d j|jksNJ ‚t jg d¢dd�}td|ig d¢d�}| |¡}t jddd�t jddd�t jt jddd�t jddd�t jddd�g}td|ig d
¢d�}t ||¡ |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ª   )	ry   ÚPeriodIndexr   r   r   r   rk   ÚPeriodr{   )	r   rq   rg   rr   rA   r~   r§   r    rš   r"   r"   r#   Útest_combine_first_periodN  s0   
ÿ
úz3TestDataFrameCombineFirst.test_combine_first_periodc                 C   sx   t dg d¢idd�}t dddgidd�}| |¡}t dg d¢iƒ}t ||¡ | |¡}t dg d¢iƒ}t ||¡ d S )Nr
   )r   r   re   r   rv   ©rk   r   rI   )r   rI   re   r   rp   )r   rg   rA   rm   Úexpected_12rn   Úexpected_21r"   r"   r#   Útest_combine_first_intm  s   

z0TestDataFrameCombineFirst.test_combine_first_intÚvalrX   c                 C   sH   t d|giƒ}t ddgiƒ}| |¡}t dg|gdœƒ}t ||¡ d S )NÚisNumÚisBoolT)rÃ   rÂ   rp   )r   rÁ   rg   rA   r~   r    r"   r"   r#   Ú(test_combine_first_with_asymmetric_other{  s
   
zBTestDataFrameCombineFirst.test_combine_first_with_asymmetric_otherc                 C   sœ   t ddgtjgd dœ|d�}t dgtjgdœ|d�}|jddgdd	� |jddgdd	� | |¡}t ddgtjgd dœ|d� ddg¡}t ||¡ d S )
NÚ962Ú85r   rw   r½   r
   r   T)Úinplace)r   ry   ÚNAÚ	set_indexr   r   r   )r   Únullable_string_dtyper@   rA   rB   rh   r"   r"   r#   Ú'test_combine_first_string_dtype_only_na†  s   ÿ
ÿ
þzATestDataFrameCombineFirst.test_combine_first_string_dtype_only_naN)Ú__name__Ú
__module__Ú__qualname__r$   rC   rW   ra   ri   ro   ÚpytestÚmarkÚparametrizer   ry   r{   rt   r   r’   r›   r¨   r©   r«   r³   r¼   rÀ   rÄ   rË   r"   r"   r"   r#   r	      sP    ?  ý  ý  ý  ýðþ

 

r	   zscalar1, scalar2éä  r   r   z
2020-01-01r&   z
2020-01-02z89 daysz60 min)ÚleftÚrightre   rÓ   )rÓ   rÔ   Úclosedc           
      C   s´   |}t ||ggddgd�}t | |ggddgd�}t|jd |jd gƒ}t|dƒs3|jd |jd kr6| }n|}| |¡}t |||ggg d¢d�}	|	d  |¡|	d< t ||	¡ d S )Nr
   r   r+   rD   rª   ©r
   r   rD   )r   r   Údtypesr   r   Úastyper   r   )
Úscalar1Úscalar2Únulls_fixtureÚna_valueÚframer`   Úcommon_dtyperÁ   rB   rh   r"   r"   r#   Ú test_combine_first_timestamp_bug•  s   
rß   c                  C   s„   t tjtjggddgd�} t tdddƒtdddƒggddgd�}|  |¡}t tjtdddƒtdddƒggg d¢d�}t ||¡ d S )	Nr
   r   r+   rÒ   r   r   rD   rÖ   )r   ry   r{   r   r   r   r   )rÝ   r`   rB   rh   r"   r"   r#   Ú$test_combine_first_timestamp_bug_NaTµ  s   ÿ
"ÿrà   c                  C   s  t jdddddtjgg d¢gddgd�} tdg d¢i| d�}t jg d¢g d¢gddgd�}tg d¢|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d�}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œ|d�}t ||¡ d S )Nr   rD   r
   )r   r   re   rI   r   r   ©Únames)r   r   r   r   r   r   r   )r
   r   rD   r
   r   Údrã   )r   r   rI   r   r   r   r   r   re   r   r   r   rX   rG   rY   rF   rb   rc   )rD   rã   )	r   Úfrom_arraysr]   r^   r   r   r   r   r   )Úmi1r@   Úmi2Úsr~   Úmi_expectedrh   r"   r"   r#   Ú&test_combine_first_with_nan_multiindexÄ  s,   ÿÿþû "þûré   c                  C   sÀ   t ddgtdƒd�} t tdƒtdƒd�}t| |dœƒ}t ddgtddƒd�}t tdd	ƒtddƒd�}t||d
œƒ}tddtjtjgg d¢tjtjddgdœg d¢d�}| |¡}t ||¡ d S )Nr
   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   )Úa_columnÚb_columnrg   Úc_columnrA   rh   r!   r"   r"   r#   Útest_combine_preserve_dtypesá  s   ýú
rï   c                  C   sÄ   t dg d¢itjg d¢tjddggddgd�d	�} t d
g d¢itjg d¢tjddggddgd�d	�}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d�d	�}|  |¡}t ||¡ d S )NÚx)é	   r'   é   ©r   r   re   r   r   r
   r   rá   r   Úy)rH   é   é   )r   r   rI   r   g      "@g      $@g      &@g      (@g      *@g      ,@)rð   rô   )r   r   re   rI   )r   r   rä   r]   r^   r   r   r   )rg   rA   rh   r!   r"   r"   r#   Ú7test_combine_first_duplicates_rows_for_nan_index_values÷  s$   
 þ
 þþÿû
	r÷   c                  C   sh   t g d¢g d¢dœƒ} t g d¢g d¢g d¢dœƒ}|  |¡}t g d¢g d¢g d¢dœƒ}t ||¡ d S )Nró   )rI   r   r   r   )r   é   é   )é(   é2   é<   )rH   é"   éA   rë   rp   )Údf_1Údf_2rB   rh   r"   r"   r#   Ú,test_combine_first_int64_not_cast_to_float64  s
   
r  c                  C   s²   t  ddgtjtjgg¡} t  ddgtjtjgg¡}tdd dgi| d�}tdddgi|d�}| |¡}t  g d¢tjtjtjtjgg¡}tdtjdddgi|d�}t ||¡ d S )Nr   r   r
   rI   r   re   )r   r   r   r   )r   rä   r]   r^   r   r   r   r   )ÚmidxÚmidx2rg   rA   rB   Úexpected_midxrh   r"   r"   r#   Útest_midx_losing_dtype  s   
ÿr  c                  C   sD   t ddgd�} t ddgd�}|  |¡}t g d¢d�}t ||¡ d S )Nr
   r   r+   rD   rÖ   rp   )rÓ   rÔ   rB   rh   r"   r"   r#   Ú test_combine_first_empty_columns'  s
   
r  )r   Únumpyr]   rÏ   Úpandas.core.dtypes.castr   Úpandas.core.dtypes.commonr   Úpandasry   r   r   r   r   Úpandas._testingÚ_testingr   r	   rÐ   rÑ   r»   Ú	TimedeltaÚIntervalrß   rà   ré   rï   r÷   r  r  r  r"   r"   r"   r#   Ú<module>   s8       üþ
		