o
    Û­j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��5 tjt|d�� |j	|j
d d d… dd	� W d   ƒ n1 s5w   Y  W d   ƒ d S W d   ƒ d S 1 sMw   Y  d S )
NÚAé   é   zInvalid fill methodz/The 'method', 'limit', and 'fill_axis' keywords©ÚmatchéÿÿÿÿÚasfreq)Úmethod)r   ÚnpÚnanÚpytestÚraisesÚ
ValueErrorÚtmÚassert_produces_warningÚFutureWarningÚalignÚiloc)ÚselfÚdfÚmsgÚmsg2© r   úb/var/www/html/CropPilot/venv/lib/python3.10/site-packages/pandas/tests/frame/methods/test_align.pyÚtest_align_asfreq_method_raises   s   ÿÿ"ÿz2TestDataFrameAlign.test_align_asfreq_method_raisesc                 C   sF  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sAJ ‚|jj	|jj	ksKJ ‚| 
d	¡}| |¡\}}|jj	tju s`J ‚|jj	tju siJ ‚|j|d
 d
d�\}}|jj	tju s}J ‚|jj	tju s†J ‚|d
 j|d
d� |jj	tju s˜J ‚|jj	tju s¡J ‚d S )NÚ2001é   Úhz
US/Eastern)ÚperiodsÚfreqÚtzÚ2hr
   é   z
US/Centralr   ©Úaxis)r   r   r   ÚrandomÚdefault_rngÚstandard_normalÚlenr   Úindexr&   Ú
tz_convertr   Úutc)r   Úidx1Úidx2Údf1Údf2Únew1Únew2Údf1_centralr   r   r   Útest_frame_align_aware   s"     
z)TestDataFrameAlign.test_frame_align_awarec           
      C   sL  |  |¡\}}|j|jusJ ‚|j |dd�\}}|s#|j|ju s"J ‚n|j|jus+J ‚|jd d…d d…f }|j |ddd�\}}t |j|j¡ |j |j¡}|j |¡}| 	|¡j
}|dk ¡ scJ ‚|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 ¡ sÆJ ‚|j |dd
d	�\}}t |j|j¡ d}	tjt|	d�� |j |dd
dd�\}}W d   ƒ n1 s÷w   Y  t |j|j¡ d}	tjt|	d�� |j |jd d …df dd
d d d�\}}W d   ƒ n	1 �s,w   Y  t |jtg ƒ |jj¡¡ d}	tjt|	d�� |j |jd d …df dd
d dd�\}}W d   ƒ n	1 �sgw   Y  t |jtg ƒ |jj¡¡ d}	tjt|	d�� |j |jdd d…f ddd	� W d   ƒ d S 1 �sŸw   Y  d S )NF)Úcopyéûÿÿÿr(   r   r   )r*   Ú
fill_valueÚright)Újoinr*   r	   r)   ÚinnerúQThe 'method', 'limit', and 'fill_axis' keywords in DataFrame.align are deprecatedr   Úpad©r>   r*   r   ©r>   r*   r   r<   z)No axis named 2 for object type DataFramer
   )r   Ú_mgrr   r   Úassert_index_equalÚcolumnsr/   r>   Ú
differenceÚreindexÚvaluesÚallr:   r   r   r   ÚastypeÚdtyper   r   r   )
r   Úfloat_frameÚusing_copy_on_writeÚafÚbfÚotherÚjoin_idxÚdiff_aÚdiff_a_valsr   r   r   r   Útest_align_float3   sj   ÿÿÿÿÿÿÿÿ $ÿz#TestDataFrameAlign.test_align_floatc                    sä   |j }ttt|ƒƒ|d�‰ |jˆ dd�\}}t |j |j ¡ t |j |j ¡ t|tƒs-J ‚d}tjt	|d�� |jˆ dd�\}}W d   ƒ n1 sJw   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	   )Úbroadcast_axisc                    s   i | ]}|ˆ “qS r   r   )Ú.0Úc©Úsr   r   Ú
<dictcomp>�   s    zCTestDataFrameAlign.test_align_frame_with_series.<locals>.<dictcomp>©r/   rF   )r/   r   Úranger.   r   r   rE   Ú
isinstancer   r   rF   r   Úassert_frame_equal)r   rM   ÚidxÚleftr=   r   Úexpectedr   rZ   r   Útest_align_frame_with_series   s    ÿ
ÿ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Úbri   r
   r"   r	   rj   r]   r   )r   r
   r   )r   r"   r   )r   r   r`   Úwhere)r   r   Úresultrc   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 s)w   Y  t |j|j¡ d S )
Nr"   ©r   ÚBÚCr]   r@   r   r?   r	   rA   rB   )r   r^   r   r   r   r   rE   rF   )r   Ú	int_framerQ   r   rO   rP   r   r   r   Útest_align_intž   s   ÿÿz!TestDataFrameAlign.test_align_intc                 C   s\   d}t jt|d�� |j|dddd�\}}W d   ƒ n1 sw   Y  t  |j|j¡ d S )Nr@   r   r?   r	   rA   rB   )r   r   r   r   rE   rF   )r   Úfloat_string_framer   rO   rP   r   r   r   Útest_align_mixed_typeª   s   ÿÿÿz(TestDataFrameAlign.test_align_mixed_typec                 C   ó‚   t tdƒg d¢d�}d}tjt|d�� |j|jd d …df ddd dd	�\}}W d   ƒ n1 s1w   Y  t |jt	g ƒ¡ d S ©
Nr"   rn   r]   r@   r   r   r?   r	   rC   ©
r   r^   r   r   r   r   r   rE   r/   r   )r   Úmixed_float_framerQ   r   rO   rP   r   r   r   Útest_align_mixed_floatµ   s   ÿÿÿz)TestDataFrameAlign.test_align_mixed_floatc                 C   ru   rv   rw   )r   Úmixed_int_framerQ   r   rO   rP   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|ƒsIJ ‚t
|j|ƒsQJ ‚t |j|j¡ d S )Nrg   Úint64©rL   ÚaabbcaÚcab)Úordered)r   ro   ro   r"   Úbabca)r   r   Úaranger   ÚlistrK   ÚpdÚCategoricalDtypeÚ	set_indexr   r_   r/   r   rE   )r   Ú	l_orderedÚ	r_orderedrc   Údf_1Údf_2Ú	aligned_1Ú	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(   )ri   rj   rY   )Únamesrj   ©Únameé   r|   r}   rV   rb   )r>   r=   r   r	   )r   r	   r
   r(   rg   é   é   é	   )r   r   r	   r	   )r„   Ú
MultiIndexÚfrom_productr^   r   r   r   r‚   r   r   r`   r   )r   Úmidxra   r4   r5   Úres1lÚres1rÚres2lÚres2rÚexplÚexprÚ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"   rh   ÚACErV   ©r	   r
   rf   ÚABDÚx©r/   r�   r   r)   r	   r(   r"   ÚABCDEr
   rf   )	r   rƒ   r   r   r   r   r   r`   Úassert_series_equal)r   r   r[   Úres1Úres2Úexp1Ú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 )Nre   Úfoor�   r	   r
   ÚbarÚ
foo_seriesr¤   Úcolrg   rV   r(   r   r)   ©r   r   r   r   r‚   r„   r•   r–   r/   r   r   r`   r¦   ©r   Ú	foo_indexÚ	bar_indexÚseriesr   Ú
expected_rÚresult_lÚ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 )Nre   r¬   r�   r	   r
   r­   ©r	   r
   r(   rf   r®   r¤   r¯   rg   rV   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 )Nre   r¬   r�   r¹   r­   r	   r
   r®   r¤   r¯   r‘   rV   r(   r   r)   ©r   r   r   r   r‚   r„   r•   r–   r   r/   r   r   r`   r¦   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 )Nre   r¬   r�   )r	   r(   rf   r­   r¡   r®   r¤   r¯   r”   rV   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 )Nre   r¬   r�   r	   r
   r­   r®   r¤   é   rg   r(   rV   )ÚcfooÚcbarr¿   r   r)   )r   r   r   r   r‚   Úreshaper„   r•   r–   rF   r/   r   r   r¦   rE   )r   r²   r³   r´   r   rc   Úresult_leftÚ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   ƒ d S 1 s)w   Y  d S )Né2   )é
   r"   r"   zaxis=0 or 1r   )	r   r   r‚   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   rA   Úbfillr*   )r   r	   NÚ	fill_axisr   r	   Úhow)r?   Úouterrb   r=   Ú
left_slicerf   rÆ   Úright_slicer
   Nrg   Úlimitc	              	   C   sp  |}	|	j |d |d f }
|	j |d |d f }d}tjt|d�� |
j||||||d�\}}W d   ƒ n1 s9w   Y  d\}}|
|}}|d u sO|dkrd|
jj|j|d�}|j|d�}|j|d�}|d u sl|dkr�|
jj|j|d�}|j|d	�}|j|d	�}d
}tjt|d�� |j	|||d�}|j	|||d�}W d   ƒ n1 s¥w   Y  t 
||¡ t 
||¡ d S )Nr   r	   r@   r   )r*   r>   r   rÎ   rÉ   )NN)rÊ   rV   )rF   z,DataFrame.fillna with 'method' is deprecated)r*   r   rÎ   )r   r   r   r   r   r/   r>   rH   rF   Úfillnar`   )r   rÊ   r   r*   rÉ   rM   rÌ   rÍ   rÎ   Úframerb   r=   r   ÚaaÚabÚ
join_indexÚjoin_columnsÚeaÚebr   r   r   Útest_align_fill_method‹  s@   ÿúÿ

þ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
   r�   r)   éd   )r   r   r:   r   r   r   r¦   )r   r   Úserrc   rl   rQ   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s)J ‚||us/J ‚d S )Nri   r	   r
   r(   rf   r   r)   ©r   r   r   r   r`   r¦   ©r   r   rÙ   rl   Ú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s+J ‚||us1J ‚d S )Nri   r	   r
   rV   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    r9   rU   rd   rm   rr   rt   ry   r{   r   ÚmarkÚparametrizer„   ÚCategoricalIndexr   r�   rŸ   r«   r¸   rº   r¼   r½   rÄ   rÇ   Úslicer×   rÚ   rÞ   rß   r   r   r   r   r      s`    L

üþ
	#þþþþ+	
r   )Údatetimer   Únumpyr   r   Úpandasr„   r   r   r   r   Úpandas._testingÚ_testingr   r   r   r   r   r   Ú<module>   s    