o
    g:,                     @   sV   d dl 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 )    N)	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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dZe	j
dddge	j
dg de	j
ddd ge	j
d!g d"d#d$ Zd%d& ZdS )(TestDataFrameAlignc                 C   s6  t ddddd}t ddddd}ttjt|d|}ttjt|d|}||\}}|jj|jjks9J |jj|jjksCJ |	d}||\}}|jjt
jksXJ |jjt
jksaJ |j|d	 d	d
\}}|jjt
jksuJ |jjt
jks~J |d	 j|d	d
 |jjt
jksJ |jjt
jksJ d S )N2001   Hz
US/Eastern)periodsfreqtz2H   z
US/Centralr   axis)r   r   nprandomrandnlenalignindexr   
tz_convertpytzUTC)selfidx1idx2df1df2new1new2df1_central r"   c/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/pandas/tests/frame/methods/test_align.pytest_frame_align_aware   s"   
z)TestDataFrameAlign.test_frame_align_awarec                    s  | |\}}|j|jusJ |j |dd\}}|j|ju s J |jd dd df }|j |ddd\}}t|j|j |j|j}|j|}|j|}|	|j
}|	|j
}	|dk sdJ |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|}|	|j
}|	|j
}	|dk sJ |j |dd
d	\}}t|j|j |j |dd
dd\}}t|j|j |j |jd d df dd
d d d\}}t|jtg  |j |jd d df dd
d dd\}}t|jtg  d}
tjt|
d |j |jdd df ddd	 W d    n	1 sTw   Y  |j}ttt||d |j  dd\}}t|j|j t|j|j t|tsJ |j  d
d\}}t|j|j  fdd|jD }t||j|jd}t|| 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 ) NF)copyr   r   )r   
fill_valueright)joinr      r   innerpadr*   r   methodr*   r   r/   r(   z)No axis named 2 for object type DataFrame)match   r   )broadcast_axisc                    s   i | ]}| qS r"   r"   ).0csr"   r#   
<dictcomp>u   s    z7TestDataFrameAlign.test_align_float.<locals>.<dictcomp>r   columns)r+   r2   r   )   r      abr?   r   r@   )r   r2   r   )r   r   r   )r   _mgriloctmassert_index_equalr;   r   r*   
differencereindexvaluesallr%   r   pytestraises
ValueErrorr   ranger   
isinstancer   assert_frame_equalwhere)r   float_frameafbfotherjoin_idxdiff_adiff_bdiff_a_valsdiff_b_valsmsgidxleftr)   expecteddfresultr"   r7   r#   test_align_float*   s~   

 
z#TestDataFrameAlign.test_align_floatc                 C   s>   t tdg dd}|j|dddd\}}t|j|j d S )Nr   ABCr:   r,   r+   r-   r.   )r   rL   r   rC   rD   r;   )r   	int_framerS   rQ   rR   r"   r"   r#   test_align_int   s   z!TestDataFrameAlign.test_align_intc                 C   s*   |j |dddd\}}t|j|j d S )Nr,   r+   r-   r.   )r   rC   rD   r;   )r   float_string_framerQ   rR   r"   r"   r#   test_align_mixed_type   s   
z(TestDataFrameAlign.test_align_mixed_typec                 C   P   t tdg dd}|j|jd d df ddd dd\}}t|jtg  d S Nr   r`   r:   r   r,   r+   r0   r   rL   r   rB   rC   rD   r   r   )r   mixed_float_framerS   rQ   rR   r"   r"   r#   test_align_mixed_float   s
   
z)TestDataFrameAlign.test_align_mixed_floatc                 C   rh   ri   rj   )r   mixed_int_framerS   rQ   rR   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 )Nr=   int64dtypeaabbcacab)ordered)ra   rb   rb   r   babca)r   r   aranger   listastypepdCategoricalDtype	set_indexr   rM   r   rC   rD   )r   	l_ordered	r_orderedr\   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 )Nr2   r   )r?   r@   r6   )namesr@   )name   ro   rp   r3   r[   )r*   r)   r   r+   )r   r+   r2   r   r=         	   )r   r   r+   r+   )ry   
MultiIndexfrom_productrL   r   r   r   rv   r   rC   rN   nan)r   midxrZ   r   r   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   r>   ACEr3   )r+   r2   r<   ABDx)r   r   r   r   r+   r   r   ABCDEr2   r<   )	r   rw   r   r   r   r   rC   rN   assert_series_equal)r   r]   r8   res1res2exp1exp2r"   r"   r#   test_align_series_combinations   s   $ z1TestDataFrameAlign.test_align_series_combinationsNc                 C   s   |j ||||||d\}}	d\}
}||}}|d u s|dkr3|jj|j|d}
|j|
d}|j|
d}|d u s;|dkrP|jj|j|d}|j|d}|j|d}|j|||d}|j|||d}t|| t|	| d S )	N)r   r*   r/   limit	fill_axis)NNr   )howr3   r+   )r;   )r   r/   r   )r   r   r*   rF   r;   fillnarC   rN   )r   r?   r@   r   r   r   r/   r   aaab
join_indexjoin_columnseaebr"   r"   r#   _check_align   s"   

zTestDataFrameAlign._check_alignmethr-   bfillax)r   r+   Nfaxr   r+   r   )r,   outerr[   r)   c                 C   s   |}|  ||||| d S N)_check_align_fill)r   r   r   r   r   rP   r]   r"   r"   r#   test_align_fill_method  s   z)TestDataFrameAlign.test_align_fill_methodc           	   	   C   s   |j ddd df }|j dd dd f }|j d dd df }| j||||||d | j||||||dd | j||||||d | j||||||dd | j||||||d | j||||||dd | j||||||d | j||||||dd d S )	Nr   r<   
   r2   r=   )r   r   r   r/   r+   )r   r   r   r/   r   )rB   r   )	r   framekindr   r   r   r[   r)   emptyr"   r"   r#   r     s&   
z$TestDataFrameAlign._check_align_fillr   )__name__
__module____qualname__r$   r_   re   rg   rl   rn   rI   markparametrizery   CategoricalIndexr   r   r   r   r   r   r   r"   r"   r"   r#   r      s2    [	


	#
r   )numpyr   rI   r   pandasry   r   r   r   r   pandas._testing_testingrC   r   r"   r"   r"   r#   <module>   s    