U
    -e>                     @   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                
   @   s6  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 Zdd Zdd Zdd Zdd Zd d! Zd;d#d$Ze	j
d%d&d'ge	j
d(d)d*d"ge	j
d+d)d*ge	j
d,d-d.d/d0gd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd"S )<TestDataFrameAlignc                 C   s:  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srt	|jj|jjkst	|
d}||\}}|jjtjkst	|jjtjkst	|j|d	 d	d
\}}|jjtjkst	|jjtjkst	|d	 j|d	d
 |jjtjks"t	|jjtjks6t	d S )NZ2001   Hz
US/Eastern)ZperiodsfreqtzZ2H   z
US/Centralr   axis)r   r   nprandomZrandnlenalignindexr   AssertionErrorZ
tz_convertr   utc)selfZidx1Zidx2df1df2Znew1Znew2Zdf1_central r   f/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/pandas/tests/frame/methods/test_align.pytest_frame_align_aware   s"    
z)TestDataFrameAlign.test_frame_align_awarec              	      s  | |\}}|j|jk	st|j |dd\}}|sF|j|jksVtn|j|jk	sVt|jd dd df }|j |ddd\}}t|j|j |j|j}|j	|}|
|j}|dk st|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 st|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 5 Q R X |j}
ttt|
|
d |j  dd\}}t|j|j t|j|j t|tst|j  d
d\}}t|j|j  fdd|jD }t||j|jd}t|| td
ddgdddgd}||d dk }tddggd
gddgd}t|| ||d dkd}tdddgdddg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   )Zbroadcast_axisc                    s   i | ]
}| qS r   r   ).0csr   r   
<dictcomp>s   s      z7TestDataFrameAlign.test_align_float.<locals>.<dictcomp>r   columns   r      abr6   r7   )r   Z_mgrr   iloctmassert_index_equalr2   r   r!   
differencereindexvaluesallr   r   pytestraises
ValueErrorr   ranger   
isinstancer   assert_frame_equalwhere)r   float_frameZusing_copy_on_writeafbfotherZjoin_idxZdiff_aZdiff_a_valsmsgidxleftr    expecteddfresultr   r.   r   test_align_float+   s        
    
(  z#TestDataFrameAlign.test_align_floatc                 C   s@   t tddddgd}|j|dddd	\}}t|j|j d S )
Nr   ABCr1   r#   r"   r$   r%   )r   rB   r   r9   r:   r2   )r   Z	int_framerI   rG   rH   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   r9   r:   r2   )r   Zfloat_string_framerG   rH   r   r   r   test_align_mixed_type   s       
z(TestDataFrameAlign.test_align_mixed_typec                 C   sR   t tddddgd}|j|jd d df ddd dd	\}}t|jtg  d S 
Nr   rQ   rR   rS   r1   r   r#   r"   r'   r   rB   r   r8   r9   r:   r   r   )r   Zmixed_float_framerI   rG   rH   r   r   r   test_align_mixed_float   s        
z)TestDataFrameAlign.test_align_mixed_floatc                 C   sR   t tddddgd}|j|jd d df ddd dd	\}}t|jtg  d S rV   rW   )r   Zmixed_int_framerI   rG   rH   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|stt
|j|stt|j|j d S )Nr4   int64ZdtypeZaabbcaZcab)Zordered)rQ   rR   rR   r   Zbabca)r   r   aranger   listZastypepdZCategoricalDtypeZ	set_indexr   rC   r   r   r9   r:   )r   Z	l_orderedZ	r_orderedrM   Zdf_1Zdf_2Z	aligned_1Z	aligned_2r   r   r   test_align_categorical   s,    	z)TestDataFrameAlign.test_align_categoricalc              	   C   s  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ddddddddg|d
}	t	
|	| t	
|	| tddddgd |d
}
t	
|
| t	
|
| d S )Nr*   r   )r6   r7   r-   )namesr7   name   rZ   r[   r+   rL   )r!   r    r   r"   r4         	   )r^   
MultiIndexfrom_productrB   r   r   r   r\   r   r9   rD   nan)r   ZmidxrK   r   r   Zres1lZres1rZres2lZres2rZexplexprZexp_idxr   r   r   test_align_multiindex   s6       z(TestDataFrameAlign.test_align_multiindexc                 C   s   t dddgdddgdtdd}tdddg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 )Nr"   r   r   r5   ZACEr+   r*   r3   ZABDxr   rb   r   r   ZABCDE)	r   r]   r   r   r   ri   r9   rD   assert_series_equal)r   rN   r/   Zres1Zres2Zexp1Zexp2r   r   r   test_align_series_combinations   s    "$ z1TestDataFrameAlign.test_align_series_combinationsc                 C   s   t dddg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 )Nr"   r*   r   foora   bar
foo_seriesrm   colr4   r+   r   r   r   r   r   r   r\   r^   rg   rh   r   r   r9   rD   rn   r   	foo_index	bar_indexseriesrN   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 dddgdd}t ddgdd}tddddgt ddddg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 )Nr"   r*   r   rp   ra   rq   r3   rr   rm   rs   r4   r+   r   r   rt   ru   r   r   r   Gtest_multiindex_align_to_series_with_common_index_level_missing_in_left
  s    
  zZTestDataFrameAlign.test_multiindex_align_to_series_with_common_index_level_missing_in_leftc                 C   s   t dddgdd}t ddddg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 )Nr"   r*   r   rp   ra   r3   rq   rr   rm   rs   rc   r+   r   r   r   r   r   r   r\   r^   rg   rh   ri   r   r   r9   rD   rn   ru   r   r   r   Htest_multiindex_align_to_series_with_common_index_level_missing_in_right  s      z[TestDataFrameAlign.test_multiindex_align_to_series_with_common_index_level_missing_in_rightc                 C   s   t dddgdd}t dddgdd}tdddgt dddg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 )Nr"   r*   r   rp   ra   r3   rq   rr   rm   rs   rf   r+   r   r   r{   ru   r   r   r   Gtest_multiindex_align_to_series_with_common_index_level_missing_in_both0  s      zZTestDataFrameAlign.test_multiindex_align_to_series_with_common_index_level_missing_in_bothc                 C   s   t dddgdd}t ddgdd}tddg|dd}ttd	d
dtj||gd}dddg|_	tddgd |j
dd}|j|dd\}}t|| t|j	|j	 d S )Nr"   r*   r   rp   ra   rq   rr   rm      r4   r+   ZcfooZcbarr   r   )r   r   r   r   r\   reshaper^   rg   rh   r2   r   r   r9   rn   r:   )r   rv   rw   rx   rN   rM   Zresult_leftZresult_rightr   r   r   Gtest_multiindex_align_to_series_with_common_index_level_non_unique_colsC  s    zZTestDataFrameAlign.test_multiindex_align_to_series_with_common_index_level_non_unique_colsc              	   C   sJ   t tdd}ttd}tjtdd || W 5 Q R X d S )N2   )
   r   r   zaxis=0 or 1r(   )	r   r   r\   r   r   r?   r@   rA   r   )r   rN   rx   r   r   r   )test_missing_axis_specification_exceptionU  s    z<TestDataFrameAlign.test_missing_axis_specification_exceptionNc                 C   s   |j ||||||d\}}	d\}
}|| }}|d ks<|dkrf|jj|j|d}
|j|
d}|j|
d}|d ksv|dkr|jj|j|d}|j|d}|j|d}|j|||d}|j|||d}t|| t|	| d S )	N)r   r!   r&   limit	fill_axis)NNr   )howr+   r"   )r2   )r   r&   r   )r   r   r!   r<   r2   Zfillnar9   rD   )r   r6   r7   r   r   r   r&   r   ZaaabZ
join_indexZjoin_columnsZeaZebr   r   r   _check_align\  s,         

zTestDataFrameAlign._check_alignmethr$   Zbfillaxr   r"   faxr   r#   outerrL   r    c                 C   s   |}|  ||||| d S )N)_check_align_fill)r   r   r   r   r   rF   rN   r   r   r   test_align_fill_methodt  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   r3   r   r*   r4   )r   r   r   r&   r"   )r   r   r   r&   r   )r8   r   )	r   framekindr   r   r   rL   r    emptyr   r   r   r   |  sV                            z$TestDataFrameAlign._check_align_fillc                 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*   ra   r   d   )r   r   r   r   r8   r9   rn   )r   rN   serrM   rO   rI   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|| ||k	sRt||k	s^td S )Nr6   r"   r*   r   r3   r   r   r   r   r   r9   rD   rn   r   r   rN   r   rO   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|| ||k	sVt||k	sbtd S )Nr6   r"   r*   r+   r   r   r   r   r   r   -test_align_identical_different_object_columns  s    z@TestDataFrameAlign.test_align_identical_different_object_columns)N)__name__
__module____qualname__r   rP   rT   rU   rX   rY   r?   markZparametrizer^   ZCategoricalIndexr   r_   rk   ro   ry   rz   r|   r}   r   r   r   r   r   r   r   r   r   r   r   r   r      sB   X	

	
#
	
r   )datetimer   numpyr   r?   Zpandasr^   r   r   r   r   Zpandas._testingZ_testingr9   r   r   r   r   r   <module>   s   