o
    Û­j?  ã                   @   sª  d dl Zd dlZd dlmZ d dlmZmZmZm	Z	m
Z
 d dlmZ d dlmZ ejeddgddgddgd	dggdd gd
�eddgddgddgd	dggddgd
�eddgddgddgd	dggddgd
�eddgddgddgd	dggdd gd
�eddgddgddgd	dggddgd
�eddgddgddgd	dggddgd
�eddgddgddgddggddgd
�eddgddgddgd	dggd dgd
�eddgddgddgd	dggddgd
�g	d�dd„ ƒZejdd„ ƒZejdd„ ƒZdd„ 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d0d1„ Zej d2d3d4„ d5d4„ g¡d6d7„ ƒZ ej d2d8d4„ d9d4„ g¡d:d;„ ƒZ!G d<d=„ d=ƒZ"dS )>é    N)ÚIS64)Ú	DataFrameÚIndexÚ
MultiIndexÚSeriesÚ
date_range)Ú	safe_sorté   é   é   é   é   ©ÚcolumnsÚCç      ð?g        ç       @g      @g      @g       @ÚX)Úparamsc                 C   s   | j S )zPairwise frames test_pairwise)Úparam)Úrequest© r   ú^/var/www/html/CropPilot/venv/lib/python3.10/site-packages/pandas/tests/window/test_pairwise.pyÚpairwise_frames   s   r   c                   C   s(   t ddgddgddgddggddgd�S )z'Pairwise target frame for test_pairwiser	   r
   r   r   r   r   r   ©r   r   r   r   r   Úpairwise_target_frame#   s   (r   c                   C   s(   t g d¢g d¢g d¢g d¢gg d¢d�S )z&Pairwise other frame for test_pairwise)Nr   r   )Nr   r	   )Né   r	   )Nr   r   )ÚYÚZr   r   r   r   r   r   r   Úpairwise_other_frame)   s   þr   c              	   C   sd   | }|t j d¡ t|ƒ¡ }|jddd� |¡}t |j	d t  |dd … |dd … ¡d ¡ d S ©Nr	   é2   é   ©ÚwindowÚmin_periodséÿÿÿÿiÎÿÿÿ)r   r   )
ÚnpÚrandomÚdefault_rngÚstandard_normalÚlenÚrollingÚcovÚtmÚassert_almost_equalÚiloc©ÚseriesÚAÚBÚresultr   r   r   Útest_rolling_cov2   ó   2r6   c              	   C   sd   | }|t j d¡ t|ƒ¡ }|jddd� |¡}t |j	d t  
|dd … |dd … ¡d ¡ d S r    )r'   r(   r)   r*   r+   r,   Úcorrr.   r/   r0   Úcorrcoefr1   r   r   r   Útest_rolling_corr:   r7   r:   c                  C   sx   t tjdtjd�tddd�d�} |  ¡ }tj| d d…< tj|d d…< | jt| ƒdd	� 	|¡}t
 |jd
 |  	|¡¡ d S )Né   ©Údtypez
2020-01-01©Úperiods©Úindexr   é
   r   r#   r&   )r   r'   ÚarangeÚfloat64r   ÚcopyÚnanr,   r+   r8   r.   r/   r0   )ÚaÚbr5   r   r   r   Ú!test_rolling_corr_bias_correctionB   s   ÿrI   Úfuncr-   r8   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 )NrB   r   r#   r   F©Úcheck_names)Úgetattrr,   ÚlocÚslicerA   Ú	droplevelr.   Úassert_series_equal)rJ   Úframer5   Úexpectedr   r   r   Útest_rolling_pairwise_cov_corrO   s
    rT   Úmethodc                    sÊ   ˆ d ‰t ˆjdd�ˆƒˆ ƒ}t ˆ jdd�ˆƒˆƒ}ˆ  ‡‡fdd„¡}t ||¡ t ||¡ ˆ  ¡ ‰ttj 	d¡ 
ˆj¡ˆjˆjd�‰t ˆ jdd�ˆƒˆƒ}t‡ ‡‡fdd	„ˆ D ƒƒ}t ||¡ d S )
Nr   rB   ©r$   c                    s   t ˆjdd�ˆ ƒ| ƒS )NrB   rV   ©rM   r,   ©Úx)rU   r2   r   r   Ú<lambda>^   ó    z(test_flex_binary_frame.<locals>.<lambda>r	   ©rA   r   c                    s,   i | ]}|t ˆ | jd d�ˆƒˆ| ƒ“qS )rB   rV   rW   )Ú.0Úk)rR   Úframe2rU   r   r   Ú
<dictcomp>l   s   , z*test_flex_binary_frame.<locals>.<dictcomp>)rM   r,   Úapplyr.   Úassert_frame_equalrE   r   r'   r(   r)   r*   ÚshaperA   r   )rU   rR   ÚresÚres2ÚexpÚres3r   )rR   r_   rU   r2   r   Útest_flex_binary_frameX   s"   ýÿrh   r$   é   c                 C   s@   t t d¡ƒ}t t d¡ƒ}|j| d�j|d� ¡  ¡ sJ ‚d S )Nr;   rV   )Úother)r   r'   ÚzerosrC   r,   r8   ÚisnaÚall)r$   Úsrj   r   r   r   Ú$test_rolling_corr_with_zero_varianceq   s   $ro   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 ƒƒs2J ‚t tj d¡ d¡ƒ} | d jddd� | d ¡}tdd„ |D ƒƒsVJ ‚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   ó$   � | ]}t  t  |¡¡d kV  qdS ©r   N©r'   ÚabsÚ
nan_to_num©r]   rY   r   r   r   Ú	<genexpr>Š   ó   €" z#test_corr_sanity.<locals>.<genexpr>r	   )é   r	   c                 s   rq   rr   rs   rv   r   r   r   rw   Ž   rx   )r   r'   Úarrayr,   r8   rm   r(   r)   )Údfrd   r   r   r   Útest_corr_sanityz   s    úÿÿr|   c                  C   óŒ   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   r	   r   ©r   r   r	   r@   r   r   r   r	   r#   )NNr   ©r   Nr   )r   r,   r-   r.   rQ   ©Ús1Ús2r5   rS   Ús2ar   r   r   Útest_rolling_cov_diff_length‘   ó   r…   c                  C   r}   )Nr~   r   r@   r   r   r   r	   r#   )NNr   r€   )r   r,   r8   r.   rQ   r�   r   r   r   Útest_rolling_corr_diff_lengthž   r†   r‡   Úfc                 C   ó   | j ddd�j| dd�S ©NrB   r   r#   T©Úpairwise©r,   r-   rX   r   r   r   rZ   ®   ó    rZ   c                 C   r‰   rŠ   ©r,   r8   rX   r   r   r   rZ   ¯   rŽ   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   r   r	   é	   r&   r   r3   r4   Úfoo©Únamer
   Úbar©r   rA   ©ÚnamesrD   )r   rA   r=   )	r   r   Úranger   Úfrom_productrA   r   r.   rb   )rˆ   r{   Údf_expectedÚ	df_resultr   r   r   Ú2test_rolling_functions_window_non_shrinkage_binary«   s   	ýýrœ   c                 C   r‰   rŠ   r�   rX   r   r   r   rZ   Å   rŽ   c                 C   r‰   rŠ   r�   rX   r   r   r   rZ   Æ   rŽ   c                 C   s¨   t ƒ }t tdgdd�tg dd�d�}|d  d¡|d< t t |j|jg¡d�}t tj|j|jgddgd�tdgdd�dd	�}| |ƒ}t ||¡ | |ƒ}t ||¡ d S )
NrG   r‘   r’   r”   r•   rD   r@   r–   )rA   r   r=   )	r   r   Úastyper   r™   rA   r   r.   rb   )rˆ   Údf1Údf2Údf1_expectedÚdf2_expectedÚ
df1_resultÚ
df2_resultr   r   r   Ú*test_moment_functions_zero_length_pairwiseÂ   s   ýr¤   c                   @   sŽ  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„ ej	dd„ ejj
e ddd�d�dd„ d d„ g¡d!d"„ ƒZej d#¡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„ d0d„ d1d„ g¡d2d3„ ƒZd4d5„ Zd6d7„ Zd8d9„ Zd:S );ÚTestPairwiserˆ   c                 C   ó   |   ¡ S ©N)r-   rX   r   r   r   rZ   Þ   ó    zTestPairwise.<lambda>c                 C   r¦   r§   )r8   rX   r   r   r   rZ   Þ   r¨   c                 C   sX   ||ƒ}t  |j|j¡ t  |j|j¡ ||ƒ}| ¡ j}| ¡ j}t j||dd� d S ©NF©Úcheck_dtype©r.   Úassert_index_equalrA   r   ÚdropnaÚvaluesÚassert_numpy_array_equal©Úselfr   r   rˆ   r5   rS   r   r   r   Útest_no_flexÞ   s   

zTestPairwise.test_no_flexc                 C   ó   |   ¡ jdd�S ©NTr‹   ©Ú	expandingr-   rX   r   r   r   rZ   ð   ó    c                 C   r´   rµ   ©r·   r8   rX   r   r   r   rZ   ñ   r¸   c                 C   ó   | j dd�jdd�S ©Nr   rV   Tr‹   r�   rX   r   r   r   rZ   ò   ó    c                 C   rº   r»   r�   rX   r   r   r   rZ   ó   r¼   c                 C   rº   ©Nr   ©ÚcomTr‹   ©Úewmr-   rX   r   r   r   rZ   ô   r¼   c                 C   rº   r½   ©rÁ   r8   rX   r   r   r   rZ   õ   r¼   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   FrK   r   rª   ©
r.   r­   rA   Úlevelsr   r   Úuniquer®   r¯   r°   r±   r   r   r   Útest_pairwise_with_selfí   s   ÿþ

z$TestPairwise.test_pairwise_with_selfc                 C   r´   ©NFr‹   r¶   rX   r   r   r   rZ     r¸   c                 C   r´   rÈ   r¹   rX   r   r   r   rZ     r¸   c                 C   rº   ©Nr   rV   Fr‹   r�   rX   r   r   r   rZ     r¼   c                 C   rº   rÉ   r�   rX   r   r   r   rZ     r¼   c                 C   rº   ©Nr   r¾   Fr‹   rÀ   rX   r   r   r   rZ     r¼   c                 C   rº   rÊ   rÂ   rX   r   r   r   rZ     r¼   c                 C   sX   ||ƒ}t  |j|j¡ t  |j|j¡ ||ƒ}| ¡ j}| ¡ j}t j||dd� d S r©   r¬   r±   r   r   r   Útest_no_pairwise_with_self  s   

z'TestPairwise.test_no_pairwise_with_selfc                 C   ó   |   ¡ j|dd�S rµ   r¶   ©rY   Úyr   r   r   rZ   (  ó    c                 C   rÌ   rµ   r¹   rÍ   r   r   r   rZ   )  rÏ   c                 C   ó   | j dd�j|dd�S r»   r�   rÍ   r   r   r   rZ   *  r[   c                 C   rÐ   r»   r�   rÍ   r   r   r   rZ   -  r[   zPrecision issues on 32 bitF)ÚreasonÚstrict)Úmarksc                 C   rÐ   r½   rÀ   rÍ   r   r   r   rZ   2  r[   c                 C   rÐ   r½   rÂ   rÍ   r   r   r   rZ   3  r[   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   r   rˆ   r5   rS   r   r   r   Útest_pairwise_with_other%  s   
ÿþ


z%TestPairwise.test_pairwise_with_otherzignore:RuntimeWarningc                 C   rÌ   rÈ   r¶   rÍ   r   r   r   rZ   N  rÏ   c                 C   rÌ   rÈ   r¹   rÍ   r   r   r   rZ   O  rÏ   c                 C   rÐ   rÉ   r�   rÍ   r   r   r   rZ   P  r[   c                 C   rÐ   rÉ   r�   rÍ   r   r   r   rZ   Q  r[   c                 C   rÐ   rÊ   rÀ   rÍ   r   r   r   rZ   R  r[   c                 C   rÐ   rÊ   rÂ   rÍ   r   r   r   rZ   S  r[   c                 C   sÐ   |j jr	|||ƒnd }|d ur-|j |j¡}|j  |j ¡}t |j|¡ t |j |¡ d S tjtdd�� |||ƒ W d   ƒ n1 sDw   Y  tjtdd�� |||ƒ W d   ƒ d S 1 saw   Y  d S )Nz'arg1' columns are not unique)Úmatchz'arg2' columns are not unique)	r   Ú	is_uniquerA   Úunionr.   r­   ÚpytestÚraisesÚ
ValueError)r²   r   r   rˆ   r5   Úexpected_indexÚexpected_columnsr   r   r   Útest_no_pairwise_with_otherJ  s"   ÿýÿÿ"ÿz(TestPairwise.test_no_pairwise_with_otherc                 C   ó   |   ¡  |¡S r§   r¶   rÍ   r   r   r   rZ   n  ó    c                 C   rÞ   r§   r¹   rÍ   r   r   r   rZ   o  rß   c                 C   ó   | j dd� |¡S ©Nr   rV   r�   rÍ   r   r   r   rZ   p  rÏ   c                 C   rà   rá   r�   rÍ   r   r   r   rZ   q  rÏ   c                 C   rà   ©Nr   r¾   rÀ   rÍ   r   r   r   rZ   r  rÏ   c                 C   rà   râ   rÂ   rÍ   r   r   r   rZ   s  rÏ   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   r   r   Frª   )r   r.   r­   rA   r   r®   r¯   r°   r±   r   r   r   Útest_pairwise_with_seriesk  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   Ú2020r>   r@   Ú12h)	r   r˜   r   r,   r8   r'   rF   r.   rQ   )r²   rn   r5   rS   r   r   r   Útest_corr_freq_memory_errorŒ  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ÚabÚxyÚABr   é   r   r\   gš™™™™™¹?)Úalpha)r   r   g      @@gK\Ç¸âðO@)r   r™   Úlistr˜   r   r'   rC   ÚreshaperÁ   r-   ÚvstackÚfullrF   r.   rb   )r²   r   rA   r{   r5   rS   r   r   r   Útest_cov_mulittindex“  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j	dtj
d�d¡ddgd ddgd gg d¢d�|d�}t ||¡ d S )NÚMÚNÚPÚQrG   rH   r–   )r   r	   r   r   r   r<   r	   )NrG   rH   r\   )r   Úfrom_arraysr   r'   Úonesr,   r8   rF   ÚrepeatrC   Úint64r.   rb   )r²   r   r{   r5   rS   r   r   r   Ú$test_multindex_columns_pairwise_func¬  s   

ýúöz1TestPairwise.test_multindex_columns_pairwise_funcN)Ú__name__Ú
__module__Ú__qualname__rØ   ÚmarkÚparametrizer³   rÇ   rË   r   Úxfailr   rÔ   ÚfilterwarningsrÝ   rã   ræ   rð   rù   r   r   r   r   r¥   Ü   s†    
úþ
úþ
ÿþôþ

úþúþ
r¥   )#Únumpyr'   rØ   Úpandas.compatr   Úpandasr   r   r   r   r   Úpandas._testingÚ_testingr.   Úpandas.core.algorithmsr   Úfixturer   r   r   r6   r:   rI   rý   rþ   rT   rh   r˜   ro   r|   r…   r‡   rœ   r¤   r¥   r   r   r   r   Ú<module>   sd    &&&&&&&&&÷ÿ





þþ
þþ
