a
    oÝEbg8  ã                   @   s  d dl Z d dlZd dlZd dlmZmZmZmZm	Z	 d dl
mZ d dlmZ dd„ Zdd„ Zej dd	d
g¡dd„ ƒZej dd
d	g¡dd„ ƒZej dedƒ¡dd„ ƒZdd„ Zdd„ Zdd„ Zej ddd„ dd„ g¡dd„ ƒZej dd d„ d!d„ g¡d"d#„ ƒZG d$d%„ d%ƒZdS )&é    N)Ú	DataFrameÚIndexÚ
MultiIndexÚSeriesÚ
date_range)Ú	safe_sortc              	   C   s\   | }|t j t|ƒ¡ }|jddd� |¡}t |d t  |dd … |dd … ¡d ¡ d S )Né2   é   ©ÚwindowZmin_periodséÿÿÿÿéÎÿÿÿ©r   é   )ÚnpÚrandomÚrandnÚlenÚrollingÚcovÚtmÚassert_almost_equal)ÚseriesÚAÚBÚresult© r   úa/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/pandas/tests/window/test_pairwise.pyÚtest_rolling_cov   s    r   c              	   C   s¶   | }|t j t|ƒ¡ }|jddd� |¡}t |d t  |dd … |dd … ¡d ¡ t 	¡ }t 	¡ }t j
|d d…< t j
|d d…< |jt|ƒd	d� |¡}t |d | |¡¡ d S )
Nr   r	   r
   r   r   r   é   é
   r   )r   r   r   r   r   Úcorrr   r   ZcorrcoefZmakeTimeSeriesÚnan)r   r   r   r   ÚaÚbr   r   r   Útest_rolling_corr   s    ,r%   Úfuncr   r!   c                 C   sn   t |jddd�| ƒƒ }|jtd ƒdfdf }|j d¡|_t |d jddd�| ƒ|d ƒ}tj||dd� d S )Nr    r   r
   r   F©Zcheck_names)Úgetattrr   ÚlocÚsliceÚindexZ	droplevelr   Úassert_series_equal)r&   Úframer   Úexpectedr   r   r   Útest_rolling_pairwise_cov_corr*   s
     r/   Úmethodc                    sÀ   ˆ d ‰t ˆjdd�ˆƒˆ ƒ}t ˆ jdd�ˆƒˆƒ}ˆ  ‡‡fdd„¡}t ||¡ t ||¡ ˆ  ¡ ‰tjjˆj	Ž ˆj
d d …< t ˆ jdd�ˆƒˆƒ}t‡ ‡‡fdd„ˆ D ƒƒ}t ||¡ d S )Nr   r    ©r   c                    s   t ˆjdd�ˆ ƒ| ƒS )Nr    r1   ©r(   r   ©Úx)r0   r   r   r   Ú<lambda>9   ó    z(test_flex_binary_frame.<locals>.<lambda>c                    s,   i | ]$}|t ˆ | jd d�ˆƒˆ| ƒ“qS )r    r1   r2   )Ú.0Úk)r-   Úframe2r0   r   r   Ú
<dictcomp>C   r6   z*test_flex_binary_frame.<locals>.<dictcomp>)r(   r   Úapplyr   Úassert_frame_equalÚcopyr   r   r   ÚshapeÚvaluesr   )r0   r-   ÚresZres2ÚexpZres3r   )r-   r9   r0   r   r   Útest_flex_binary_frame3   s    ÿrB   r   é   c                 C   s@   t t d¡ƒ}t t d¡ƒ}|j| d�j|d� ¡  ¡ s<J ‚d S )Né   r1   )Úother)r   r   ZzerosÚaranger   r!   ZisnaÚall)r   ÚsrE   r   r   r   Ú$test_rolling_corr_with_zero_varianceH   s    rI   c               
   C   s¬   t t ddgddgddgddgd	d
gddgg¡ƒ} | d jddd� | d ¡}tdd„ |D ƒƒsdJ ‚t tj dd¡ƒ} | d jddd� | d ¡}tdd„ |D ƒƒs¨J ‚d S )Ng†F$ÈÙë?g)—Òé¯Ç?g‰ËT5ÿ—ä?g´?«'NÉÓ?gFr�1�í?g+ÿ”	C-à?gR	²±`?gÕ1:b%§?g9T!X4!ë?gXÀÊÂS_Õ?gS®= é?g\–+“Ltä?r   r   T)Úcenterr   c                 s   s"   | ]}t  t  |¡¡d kV  qdS ©r   N©r   ÚabsZ
nan_to_num©r7   r4   r   r   r   Ú	<genexpr>a   r6   z#test_corr_sanity.<locals>.<genexpr>é   é   c                 s   s"   | ]}t  t  |¡¡d kV  qdS rK   rL   rN   r   r   r   rO   e   r6   )r   r   Úarrayr   r!   rG   r   Zrand)Údfr@   r   r   r   Útest_corr_sanityQ   s     úÿÿrT   c                  C   sŒ   t g d¢g d¢d�} t ddgddgd�}| jddd� |¡}t g d	¢ƒ}t ||¡ t g d
¢g d¢d�}| jddd� |¡}t ||¡ d S )N©r   rQ   é   ©r   r   rQ   ©r+   r   rV   r   rQ   r
   )NNg       @©r   NrV   )r   r   r   r   r,   ©Ús1Ús2r   r.   Zs2ar   r   r   Útest_rolling_cov_diff_lengthh   s    r]   c                  C   sŒ   t g d¢g d¢d�} t ddgddgd�}| jddd� |¡}t g d	¢ƒ}t ||¡ t g d
¢g d¢d�}| jddd� |¡}t ||¡ d S )NrU   rW   rX   r   rV   r   rQ   r
   )NNg      ð?rY   )r   r   r!   r   r,   rZ   r   r   r   Útest_rolling_corr_diff_lengthu   s    r^   Úfc                 C   s   | j ddd�j| dd�S ©Nr    r   r
   T©Úpairwise©r   r   r3   r   r   r   r5   …   r6   r5   c                 C   s   | j ddd�j| dd�S r`   ©r   r!   r3   r   r   r   r5   †   r6   c                 C   s†   t ddgddgddgddggtdd	gd
d�ttdƒdd�d�}t tdd	gd
d�tj|j|jgdd
gd�dd�}| |ƒ}t ||¡ d S )Nr   r   rV   rQ   é	   r   r   r   r   Úfoo©Únameé   Úbar©Úcolumnsr+   ©ÚnamesÚfloat64)rl   r+   Údtype)	r   r   Úranger   Úfrom_productr+   rl   r   r<   )r_   rS   Zdf_expectedZ	df_resultr   r   r   Ú2test_rolling_functions_window_non_shrinkage_binary‚   s    
ýýrs   c                 C   s   | j ddd�j| dd�S r`   rc   r3   r   r   r   r5   �   r6   c                 C   s   | j ddd�j| dd�S r`   rd   r3   r   r   r   r5   ž   r6   c                 C   s®   t ƒ }t tdgdd�tg dd�d�}|d  d¡|d< t t |j|jg¡tg ƒd�}t tj|j|jgddgd�tdgdd�dd	�}| |ƒ}t ||¡ | |ƒ}t ||¡ d S )
Nr#   rf   rg   rj   rk   ro   ©r+   rl   rm   )r+   rl   rp   )	r   r   Zastyper   rr   r+   rl   r   r<   )r_   Zdf1Zdf2Zdf1_expectedZdf2_expectedZ
df1_resultZ
df2_resultr   r   r   Ú*test_moment_functions_zero_length_pairwiseš   s    	ÿýru   c                
   @   sh  e Zd Zej ddd„ dd„ g¡dd„ ƒZej ddd„ dd„ d	d„ d
d„ dd„ dd„ g¡dd„ ƒZej ddd„ dd„ dd„ dd„ dd„ dd„ g¡dd„ ƒZej ddd„ dd„ dd„ dd„ dd„ dd„ g¡dd„ ƒZ	ej ddd„ d d„ d!d„ d"d„ d#d„ d$d„ g¡d%d&„ ƒZ
ej dd'd„ d(d„ d)d„ d*d„ d+d„ d,d„ g¡d-d.„ ƒZd/d0„ Zd1d2„ Zd3d4„ Zd5S )6ÚTestPairwiser_   c                 C   s   |   ¡ S ©N)r   r3   r   r   r   r5   º   r6   zTestPairwise.<lambda>c                 C   s   |   ¡ S rw   )r!   r3   r   r   r   r5   º   r6   c                 C   sX   ||ƒ}t  |j|j¡ t  |j|j¡ ||ƒ}| ¡ j}| ¡ j}t j||dd� d S ©NF©Zcheck_dtype©r   Úassert_index_equalr+   rl   Údropnar?   Úassert_numpy_array_equal©ÚselfÚpairwise_framesÚpairwise_target_framer_   r   r.   r   r   r   Útest_no_flexº   s    

zTestPairwise.test_no_flexc                 C   s   |   ¡ jdd�S ©NTra   ©Ú	expandingr   r3   r   r   r   r5   Í   r6   c                 C   s   |   ¡ jdd�S rƒ   ©r…   r!   r3   r   r   r   r5   Î   r6   c                 C   s   | j dd�jdd�S ©NrV   r1   Tra   rc   r3   r   r   r   r5   Ï   r6   c                 C   s   | j dd�jdd�S r‡   rd   r3   r   r   r   r5   Ð   r6   c                 C   s   | j dd�jdd�S ©NrV   ©ÚcomTra   ©Úewmr   r3   r   r   r   r5   Ñ   r6   c                 C   s   | j dd�jdd�S rˆ   ©rŒ   r!   r3   r   r   r   r5   Ò   r6   c                 C   s„   ||ƒ}t j|jjd |jdd� t  t|jjd ƒt|j ¡ ƒ¡ t  |j|j¡ ||ƒ}| ¡ j	}| ¡ j	}t j||dd� d S ©Nr   Fr'   r   ry   ©
r   r{   r+   Zlevelsr}   r   rl   Úuniquer|   r?   r~   r   r   r   Útest_pairwise_with_selfÊ   s    ÿþ

z$TestPairwise.test_pairwise_with_selfc                 C   s   |   ¡ jdd�S ©NFra   r„   r3   r   r   r   r5   î   r6   c                 C   s   |   ¡ jdd�S r’   r†   r3   r   r   r   r5   ï   r6   c                 C   s   | j dd�jdd�S ©NrV   r1   Fra   rc   r3   r   r   r   r5   ð   r6   c                 C   s   | j dd�jdd�S r“   rd   r3   r   r   r   r5   ñ   r6   c                 C   s   | j dd�jdd�S ©NrV   r‰   Fra   r‹   r3   r   r   r   r5   ò   r6   c                 C   s   | j dd�jdd�S r”   r�   r3   r   r   r   r5   ó   r6   c                 C   sX   ||ƒ}t  |j|j¡ t  |j|j¡ ||ƒ}| ¡ j}| ¡ j}t j||dd� d S rx   rz   r~   r   r   r   Útest_no_pairwise_with_selfë   s    

z'TestPairwise.test_no_pairwise_with_selfc                 C   s   |   ¡ j|dd�S rƒ   r„   ©r4   Úyr   r   r   r5     r6   c                 C   s   |   ¡ j|dd�S rƒ   r†   r–   r   r   r   r5     r6   c                 C   s   | j dd�j|dd�S r‡   rc   r–   r   r   r   r5   	  r6   c                 C   s   | j dd�j|dd�S r‡   rd   r–   r   r   r   r5   
  r6   c                 C   s   | j dd�j|dd�S rˆ   r‹   r–   r   r   r   r5     r6   c                 C   s   | j dd�j|dd�S rˆ   r�   r–   r   r   r   r5     r6   c                 C   sx   |||ƒ}t j|jjd |jdd� t  t|jjd ƒt|j ¡ ƒ¡ |||ƒ}| ¡ j	}| ¡ j	}t j||dd� d S rŽ   r�   )r   r€   r�   Úpairwise_other_framer_   r   r.   r   r   r   Útest_pairwise_with_other  s    
ÿþ


z%TestPairwise.test_pairwise_with_otherc                 C   s   |   ¡ j|dd�S r’   r„   r–   r   r   r   r5   '  r6   c                 C   s   |   ¡ j|dd�S r’   r†   r–   r   r   r   r5   (  r6   c                 C   s   | j dd�j|dd�S r“   rc   r–   r   r   r   r5   )  r6   c                 C   s   | j dd�j|dd�S r“   rd   r–   r   r   r   r5   *  r6   c                 C   s   | j dd�j|dd�S r”   r‹   r–   r   r   r   r5   +  r6   c                 C   s   | j dd�j|dd�S r”   r�   r–   r   r   r   r5   ,  r6   c                 C   s  |j jr|||ƒnd }|d ur�tjdd��8 t dt¡ |j |j¡}|j  |j ¡}W d   ƒ n1 sh0    Y  t 	|j|¡ t 	|j |¡ npt
jtdd�� |||ƒ W d   ƒ n1 s¾0    Y  t
jtdd�� |||ƒ W d   ƒ n1 sö0    Y  d S )NT)ÚrecordÚignorez'arg1' columns are not unique)Úmatchz'arg2' columns are not unique)rl   Z	is_uniqueÚwarningsÚcatch_warningsÚsimplefilterÚRuntimeWarningr+   Úunionr   r{   ÚpytestZraisesÚ
ValueError)r   r€   r˜   r_   r   Zexpected_indexZexpected_columnsr   r   r   Útest_no_pairwise_with_other$  s"    ÿýÿ"(z(TestPairwise.test_no_pairwise_with_otherc                 C   s   |   ¡  |¡S rw   r„   r–   r   r   r   r5   J  r6   c                 C   s   |   ¡  |¡S rw   r†   r–   r   r   r   r5   K  r6   c                 C   s   | j dd� |¡S ©NrV   r1   rc   r–   r   r   r   r5   L  r6   c                 C   s   | j dd� |¡S r¥   rd   r–   r   r   r   r5   M  r6   c                 C   s   | j dd� |¡S ©NrV   r‰   r‹   r–   r   r   r   r5   N  r6   c                 C   s   | j dd� |¡S r¦   r�   r–   r   r   r   r5   O  r6   c                 C   sÔ   ||t g d¢ƒƒ}t |j|j¡ t |j|j¡ ||t g d¢ƒƒ}| ¡ j}| ¡ j}tj||dd� |t g d¢ƒ|ƒ}t |j|j¡ t |j|j¡ |t g d¢ƒ|ƒ}| ¡ j}| ¡ j}tj||dd� d S )N)r   r   rV   é   Fry   )r   r   r{   r+   rl   r|   r?   r}   r~   r   r   r   Útest_pairwise_with_seriesG  s    



z&TestPairwise.test_pairwise_with_seriesc                 C   sT   t tdƒtddd�d�}| d¡ |¡}t tjgd tddd�d�}t ||¡ d S )Nr   Z2020)ZperiodsrX   Z12H)	r   rq   r   r   r!   r   r"   r   r,   )r   rH   r   r.   r   r   r   Útest_corr_freq_memory_errori  s    z(TestPairwise.test_corr_freq_memory_errorc              	   C   sÒ   t  tdƒtdƒtdƒg¡}tdƒ}tt d¡ dd¡||d�}|jdd	� 	¡ }t  tdƒtdƒtdƒtdƒg¡}t  tdƒtdƒtdƒg¡}tt 
t d
tj¡t d
d¡t d
d¡f¡||d�}t ||¡ d S )NÚabZxyZABrV   é   r§   rt   gš™™™™™¹?)Úalpha)r§   r§   g      @@gK\Ç¸âðO@)r   rr   Úlistrq   r   r   rF   ZreshaperŒ   r   ZvstackÚfullÚNaNr   r<   )r   rl   r+   rS   r   r.   r   r   r   Útest_cov_mulittindexp  s"    "

ýÿ÷z!TestPairwise.test_cov_mulittindexc                 C   s�   t jddgddggddgd�}tt d¡|d	�}| d
¡ ¡ }ttjt jt t 	d¡d¡ddgd ddgd gg d¢d�|d�}t
 ||¡ d S )NÚMÚNÚPÚQr#   r$   rm   )r   rQ   )rl   rV   r   rQ   )Nr#   r$   rt   )r   Zfrom_arraysr   r   Zonesr   r!   r"   ÚrepeatrF   r   r<   )r   rl   rS   r   r.   r   r   r   Ú$test_multindex_columns_pairwise_func‰  s    &þúz1TestPairwise.test_multindex_columns_pairwise_funcN)Ú__name__Ú
__module__Ú__qualname__r¢   ÚmarkÚparametrizer‚   r‘   r•   r™   r¤   r¨   r©   r°   r¶   r   r   r   r   rv   ·   sx   
úþ
úþ
úþ
úþ
úþ
rv   )r�   Únumpyr   r¢   Zpandasr   r   r   r   r   Zpandas._testingZ_testingr   Zpandas.core.algorithmsr   r   r%   rº   r»   r/   rB   rq   rI   rT   r]   r^   rs   ru   rv   r   r   r   r   Ú<module>   s>   


þþ
þþ
