a
    PfF                     @   sZ   d dl mZ d dlZd dl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dS )    )timezoneN)	DataFrameIndexSeries
date_rangec                   @   s  e Z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ejgddegddegddejg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&d' Zejd(d)d*gejd+g d,ejd-d.d/gejd0g d1ejd2ed3ed4ged.ed.ggejd5ed6d7ed8d7ged.ed.ggejd9d/d7gd:d; Zd<d= Zd>d? Zd@dA Zd7S )BTestDataFrameAlignc              	   C   s   t ddtjdgi}d}d}tjt|dX tjt|d* |j	|j
d d d dd	 W d    n1 sj0    Y  W d    n1 s0    Y  d S )
NA      zInvalid fill methodz/The 'method', 'limit', and 'fill_axis' keywordsmatchZasfreq)method)r   npnanpytestraises
ValueErrortmassert_produces_warningFutureWarningaligniloc)selfdfmsgZmsg2 r   ^/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/frame/methods/test_align.pytest_align_asfreq_method_raises   s    z2TestDataFrameAlign.test_align_asfreq_method_raisesc                 C   sL  t ddddd}t ddddd}ttjdt|df|}ttjdt|df|}||\}}|jj	|jj	ksJ |jj	|jj	ksJ |
d	}||\}}|jj	tju sJ |jj	tju sJ |j|d
 d
d\}}|jj	tju sJ |jj	tju sJ |d
 j|d
d |jj	tju s4J |jj	tju sHJ d S )NZ2001   hz
US/Eastern)ZperiodsfreqtzZ2hr
      z
US/Centralr   axis)r   r   r   randomZdefault_rngZstandard_normallenr   indexr"   Z
tz_convertr   utc)r   Zidx1Zidx2df1df2Znew1Znew2Zdf1_centralr   r   r   test_frame_align_aware   s"      
z)TestDataFrameAlign.test_frame_align_awarec           
      C   sN  | |\}}|j|jusJ |j |dd\}}|sF|j|ju sVJ n|j|jusVJ |jd dd df }|j |ddd\}}t|j|j |j|j}|j|}|	|j
}|dk sJ |j |ddd	\}}t|j|j t|j|j t|j|j |jd dd df  }|j |d
d\}}t|j|j t|j|j |j|j}|j|}|	|j
}|dk sJ |j |dd
d	\}}t|j|j d}	tjt|	d& |j |dd
dd\}}W d    n1 s0    Y  t|j|j d}	tjt|	d6 |j |jd d df dd
d d d\}}W d    n1 s\0    Y  t|jtg |jj d}	tjt|	d6 |j |jd d df dd
d dd\}}W d    n1 s0    Y  t|jtg |jj d}	tjt|	d. |j |jdd df ddd	 W d    n1 s@0    Y  d S )NF)copyr#   r   r   )r%   
fill_valueright)joinr%   r	   r$   innerQThe 'method', 'limit', and 'fill_axis' keywords in DataFrame.align are deprecatedr   padr1   r%   r   r1   r%   r   r/   z)No axis named 2 for object type DataFramer
   )r   Z_mgrr   r   assert_index_equalcolumnsr(   r1   
differencereindexvaluesallr-   r   r   r   astypedtyper   r   r   )
r   float_frameZusing_copy_on_writeafbfotherZjoin_idxZdiff_aZdiff_a_valsr   r   r   r   test_align_float3   sb    6**z#TestDataFrameAlign.test_align_floatc                    s   |j }ttt||d |j dd\}}t|j |j  t|j |j  t|tsZJ d}tjt	|d" |j dd\}}W d    n1 s0    Y  t|j |j   fdd	|j
D }t||j |j
d
}t|| d S )Nr(   r   r$   z=The 'broadcast_axis' keyword in DataFrame.align is deprecatedr   r	   )Zbroadcast_axisc                    s   i | ]
}| qS r   r   ).0csr   r   
<dictcomp>       zCTestDataFrameAlign.test_align_frame_with_series.<locals>.<dictcomp>r(   r8   )r(   r   ranger'   r   r   r7   
isinstancer   r   r8   r   assert_frame_equal)r   r?   idxleftr0   r   expectedr   rG   r   test_align_frame_with_series   s    0
z/TestDataFrameAlign.test_align_frame_with_seriesc                 C   s   t g dg dd}||d dk }t ddggdgddgd	}t|| ||d dkd
}t g dg dd}t|| d S )Nr	   r
   r#   )   r      abrW   r
   r   r	   rX   rK   r   )r   r
   r   )r   r   r   )r   r   rN   where)r   r   resultrQ   r   r   r   test_align_series_condition   s    z.TestDataFrameAlign.test_align_series_conditionc                 C   sp   t tdg dd}d}tjt|d& |j|dddd	\}}W d    n1 sR0    Y  t|j|j d S )
Nr   r   BCrK   r3   r   r2   r	   r4   r5   )r   rL   r   r   r   r   r7   r8   )r   Z	int_framerB   r   r@   rA   r   r   r   test_align_int   s    4z!TestDataFrameAlign.test_align_intc                 C   s\   d}t jt|d& |j|dddd\}}W d    n1 s>0    Y  t |j|j d S )Nr3   r   r2   r	   r4   r5   )r   r   r   r   r7   r8   )r   Zfloat_string_framer   r@   rA   r   r   r   test_align_mixed_type   s    (z(TestDataFrameAlign.test_align_mixed_typec                 C   s   t tdg dd}d}tjt|d6 |j|jd d df ddd dd	\}}W d    n1 sb0    Y  t|jt	g  d S 
Nr   r\   rK   r3   r   r   r2   r	   r6   
r   rL   r   r   r   r   r   r7   r(   r   )r   Zmixed_float_framerB   r   r@   rA   r   r   r   test_align_mixed_float   s    (z)TestDataFrameAlign.test_align_mixed_floatc                 C   s   t tdg dd}d}tjt|d6 |j|jd d df ddd dd	\}}W d    n1 sb0    Y  t|jt	g  d S ra   rb   )r   Zmixed_int_framerB   r   r@   rA   r   r   r   test_align_mixed_int   s    (z'TestDataFrameAlign.test_align_mixed_intzl_ordered,r_ordered,expectedTFc                 C   s   t tjdddttdtjtd|ddd}t tjd	ddttd
tjtd|ddd}|	|\}}t
|j|sJ t
|j|sJ t|j|j d S )NrU   int64r>   ZaabbcaZcab)ordered)r   r]   r]   r   Zbabca)r   r   aranger   listr=   pdZCategoricalDtypeZ	set_indexr   rM   r(   r   r7   )r   Z	l_orderedZ	r_orderedrQ   Zdf_1Zdf_2Z	aligned_1Z	aligned_2r   r   r   test_align_categorical   s,    	z)TestDataFrameAlign.test_align_categoricalc                 C   st  t jjtdtdtdgdd}ttddd}ttjddd	|d
}ttjddd	|d
}|j|dd\}}|j|dd\}}|}	t	
|	| t	
|	| tddddtjtjgd |d
}
t	
|
| t	
|
| |j|dd\}}|j|dd\}}t jjtdtdtdgdd}tg d|d
}	t	
|	| t	
|	| tg dd |d
}
t	
|
| t	
|
| d S )Nr
   r#   )rW   rX   rF   )namesrX   name   re   rf   rD   rP   )r1   r0   r   r	   )r   r	   r
   r#   rU         	   )r   r   r	   r	   )rj   
MultiIndexfrom_productrL   r   r   r   rh   r   r   rN   r   )r   ZmidxrO   r*   r+   Zres1lZres1rZres2lZres2rZexplexprZexp_idxr   r   r   test_align_multiindex   s2     z(TestDataFrameAlign.test_align_multiindexc                 C   s   t g dg ddtdd}tg dtddd}|j|d	d
\}}t dtjdtjdgdtjdtjdgdtdd}tddtjdtjgtddd}t|| t|| ||\}}t|| t|| d S )N)r	   r#   r   rV   ZACErD   r	   r
   rT   ZABDxr(   rn   r   r$   r	   r#   r   ZABCDEr
   rT   )	r   ri   r   r   r   r   r   rN   assert_series_equal)r   r   rH   Zres1Zres2Zexp1Zexp2r   r   r   test_align_series_combinations  s    $ z1TestDataFrameAlign.test_align_series_combinationsc                 C   s   t g ddd}t ddgdd}tddg|dd}td	td
itj||gd}tddgd |jdd}|j	|dd\}}t
|| t
|| d S )NrS   foorm   r	   r
   bar
foo_seriesry   colrU   rD   r#   r   r$   r   r   r   r   rh   rj   rs   rt   r(   r   r   rN   rz   r   	foo_index	bar_indexseriesr   Z
expected_rZresult_lZresult_rr   r   r   7test_multiindex_align_to_series_with_common_index_level(  s    zJTestDataFrameAlign.test_multiindex_align_to_series_with_common_index_levelc                 C   s   t g ddd}t ddgdd}tg dt g ddddd	}td
tditj||gd}tddgd |jdd	}|j	|dd\}}t
|| t
|| d S )NrS   r|   rm   r	   r
   r}   r	   r
   r#   rT   r~   ry   r   rU   rD   r#   r   r$   r   r   r   r   r   Gtest_multiindex_align_to_series_with_common_index_level_missing_in_left9  s    zZTestDataFrameAlign.test_multiindex_align_to_series_with_common_index_level_missing_in_leftc                 C   s   t g ddd}t g ddd}tddgt ddgdddd	}td
tditj||gd}tddtjtjgd |j	dd	}|j
|dd\}}t|| t|| d S )NrS   r|   rm   r   r}   r	   r
   r~   ry   r   ro   rD   r#   r   r$   r   r   r   r   rh   rj   rs   rt   r   r(   r   r   rN   rz   r   r   r   r   Htest_multiindex_align_to_series_with_common_index_level_missing_in_rightL  s    z[TestDataFrameAlign.test_multiindex_align_to_series_with_common_index_level_missing_in_rightc                 C   s   t g ddd}t g ddd}tg dt g ddddd}td	td
itj||gd}tdtjdgd |j	dd}|j
|dd\}}t|| t|| d S )NrS   r|   rm   )r	   r#   rT   r}   rw   r~   ry   r   rr   rD   r	   r#   r   r$   r   r   r   r   r   Gtest_multiindex_align_to_series_with_common_index_level_missing_in_both_  s    zZTestDataFrameAlign.test_multiindex_align_to_series_with_common_index_level_missing_in_bothc                 C   s   t g ddd}t ddgdd}tddg|dd}ttd	d
dtj||gd}g d|_	tddgd |j
dd}|j|dd\}}t|| t|j	|j	 d S )NrS   r|   rm   r	   r
   r}   r~   ry      rU   r#   rD   )cfooZcbarr   r   r$   )r   r   r   r   rh   reshaperj   rs   rt   r8   r(   r   r   rz   r7   )r   r   r   r   r   rQ   Zresult_leftZresult_rightr   r   r   Gtest_multiindex_align_to_series_with_common_index_level_non_unique_colsr  s    
zZTestDataFrameAlign.test_multiindex_align_to_series_with_common_index_level_non_unique_colsc                 C   s^   t tdd}ttd}tjtdd || W d    n1 sP0    Y  d S )N2   )
   r   r   zaxis=0 or 1r   )	r   r   rh   r   r   r   r   r   r   )r   r   r   r   r   r   )test_missing_axis_specification_exception  s    z<TestDataFrameAlign.test_missing_axis_specification_exceptionr   r4   Zbfillr%   )r   r	   N	fill_axisr   r	   how)r2   outerrP   r0   
left_slicerT   r   right_slicer
   NrU   limitc	              	   C   st  |}	|	j |d |d f }
|	j |d |d f }d}tjt|d* |
j||||||d\}}W d    n1 sr0    Y  d\}}|
| }}|d u s|dkr|
jj|j|d}|j|d}|j|d}|d u s|dkr|
jj|j|d}|j|d	}|j|d	}d
}tjt|d0 |j	|||d}|j	|||d}W d    n1 sN0    Y  t
|| t
|| d S )Nr   r	   r3   r   )r%   r1   r   r   r   )NN)r   rD   )r8   z,DataFrame.fillna with 'method' is deprecated)r%   r   r   )r   r   r   r   r   r(   r1   r:   r8   ZfillnarN   )r   r   r   r%   r   r?   r   r   r   framerP   r0   r   ZaaabZ
join_indexZjoin_columnsZeaZebr   r   r   test_align_fill_method  s<    (	
0z)TestDataFrameAlign.test_align_fill_methodc                 C   sR   t dddgi}tdgdd}| }|j|dd\}}d|jd< t|| d S )Nr   r	   r
   rm   r$   d   )r   r   r-   r   r   r   rz   )r   r   serrQ   rZ   rB   r   r   r   test_align_series_check_copy  s    
z/TestDataFrameAlign.test_align_series_check_copyc                 C   sb   t dddgi}tddg}|j|dd\}}t|| t|| ||usRJ ||us^J d S )NrW   r	   r
   r#   rT   r   r$   r   r   r   r   rN   rz   r   r   r   rZ   Zresult2r   r   r   %test_align_identical_different_object  s    z8TestDataFrameAlign.test_align_identical_different_objectc                 C   sf   t dddgi}tdgdgd}|j|dd\}}t|| t|| ||usVJ ||usbJ d S )NrW   r	   r
   rD   r$   r   r   r   r   r   -test_align_identical_different_object_columns  s    z@TestDataFrameAlign.test_align_identical_different_object_columns) __name__
__module____qualname__r   r,   rC   rR   r[   r_   r`   rc   rd   r   markZparametrizerj   ZCategoricalIndexr   rk   rv   r{   r   r   r   r   r   r   slicer   r   r   r   r   r   r   r   r      s^   L

	
#+	
r   )datetimer   numpyr   r   Zpandasrj   r   r   r   r   Zpandas._testingZ_testingr   r   r   r   r   r   <module>   s   