a
    d>                     @   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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d0d1d2 d3d2 gd4d5 Zejd0d6d2 d7d2 gd8d9 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   j/var/www/html/stable-diffusion-webui/venv/lib/python3.9/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      windowZmin_periods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   s    r5   c              	   C   s   | }|t jdt| }|jddd|}t|j	d t 
|dd  |dd  d  t }t }t j|d d< t j|d d	< |jt|d
d|}t|j	d || d S )Nr	   r    r!   r"   r$   r%   r&   r   
   r   )r'   r(   r)   r*   r+   r,   corrr.   r/   r0   ZcorrcoefZmakeTimeSeriesnan)r1   r2   r3   r4   abr   r   r   test_rolling_corr:   s    .r;   funcr-   r7   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 )Nr6   r   r"   r   FZcheck_names)getattrr,   locsliceindexZ	droplevelr.   assert_series_equal)r<   framer4   expectedr   r   r   test_rolling_pairwise_cov_corrK   s
     rE   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   r6   r#   c                    s   t jdd | S )Nr6   rG   r>   r,   x)rF   r1   r   r   <lambda>Z       z(test_flex_binary_frame.<locals>.<lambda>r	   rA   r   c                    s,   i | ]$}|t  | jd d| qS )r6   rG   rH   ).0k)rC   frame2rF   r   r   
<dictcomp>h   rL   z*test_flex_binary_frame.<locals>.<dictcomp>)r>   r,   applyr.   assert_frame_equalcopyr   r'   r(   r)   r*   shaperA   r   )rF   rC   resZres2expZres3r   )rC   rP   rF   r1   r   test_flex_binary_frameT   s"    rX   r#      c                 C   s@   t td}t td}|j| dj|d  s<J d S )N   rG   )other)r   r'   zerosaranger,   r7   Zisnaall)r#   sr[   r   r   r   $test_rolling_corr_with_zero_variancem   s    r`   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 sJ d S )NgF$?g)?gT5?g?'N?gFr1?g+	C-?gR	`?g1:b%?g9T!X4!?gXS_?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rN   rJ   r   r   r   	<genexpr>   rL   z#test_corr_sanity.<locals>.<genexpr>r	   )   r	   c                 s   s"   | ]}t t |d kV  qdS rb   rc   re   r   r   r   rf      rL   )r   r'   arrayr,   r7   r^   r(   r)   )dfrV   r   r   r   test_corr_sanityv   s     rj   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   r	   r   r   r   r	   rA   r   r   r   r	   r"   )NNr   r   Nr   )r   r,   r-   r.   rB   s1s2r4   rD   Zs2ar   r   r   test_rolling_cov_diff_length   s    rr   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 )Nrk   rl   rm   r   r   r   r	   r"   )NNr   rn   )r   r,   r7   r.   rB   ro   r   r   r   test_rolling_corr_diff_length   s    rs   fc                 C   s   | j dddj| ddS Nr6   r   r"   Tpairwiser,   r-   rI   r   r   r   rK      rL   rK   c                 C   s   | j dddj| ddS ru   r,   r7   rI   r   r   r   rK      rL   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   r2   r3   foonamer
   barr   rA   namesfloat64)r   rA   dtype)	r   r   ranger   from_productrA   r   r.   rS   )rt   ri   Zdf_expectedZ	df_resultr   r   r   2test_rolling_functions_window_non_shrinkage_binary   s    	r   c                 C   s   | j dddj| ddS ru   rx   rI   r   r   r   rK      rL   c                 C   s   | j dddj| ddS ru   ry   rI   r   r   r   rK      rL   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 )
Nr9   r{   r|   r~   r   r   rm   r   )rA   r   r   )	r   r   Zastyper   r   rA   r   r.   rS   )rt   Zdf1Zdf2Zdf1_expectedZdf2_expectedZ
df1_resultZ
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 );TestPairwisert   c                 C   s   |   S N)r-   rI   r   r   r   rK      rL   zTestPairwise.<lambda>c                 C   s   |   S r   )r7   rI   r   r   r   rK      rL   c                 C   sX   ||}t |j|j t |j|j ||}| j}| j}t j||dd d S NFZcheck_dtyper.   assert_index_equalrA   r   dropnavaluesassert_numpy_array_equalselfr   r   rt   r4   rD   r   r   r   test_no_flex   s    

zTestPairwise.test_no_flexc                 C   s   |   jddS NTrv   	expandingr-   rI   r   r   r   rK      rL   c                 C   s   |   jddS r   r   r7   rI   r   r   r   rK      rL   c                 C   s   | j ddjddS Nr   rG   Trv   rx   rI   r   r   r   rK      rL   c                 C   s   | j ddjddS r   ry   rI   r   r   r   rK      rL   c                 C   s   | j ddjddS Nr   comTrv   ewmr-   rI   r   r   r   rK      rL   c                 C   s   | j ddjddS r   r   r7   rI   r   r   r   rK      rL   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   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   s   |   jddS NFrv   r   rI   r   r   r   rK     rL   c                 C   s   |   jddS r   r   rI   r   r   r   rK     rL   c                 C   s   | j ddjddS Nr   rG   Frv   rx   rI   r   r   r   rK     rL   c                 C   s   | j ddjddS r   ry   rI   r   r   r   rK     rL   c                 C   s   | j ddjddS Nr   r   Frv   r   rI   r   r   r   rK     rL   c                 C   s   | j ddjddS r   r   rI   r   r   r   rK     rL   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   s   |   j|ddS r   r   rJ   yr   r   r   rK   $  rL   c                 C   s   |   j|ddS r   r   r   r   r   r   rK   %  rL   c                 C   s   | j ddj|ddS r   rx   r   r   r   r   rK   &  rL   c                 C   s   | j ddj|ddS r   ry   r   r   r   r   rK   )  rL   zPrecision issues on 32 bitF)reasonstrict)Zmarksc                 C   s   | j ddj|ddS r   r   r   r   r   r   rK   .  rL   c                 C   s   | j ddj|ddS r   r   r   r   r   r   rK   /  rL   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   rt   r4   rD   r   r   r   test_pairwise_with_other!  s    



z%TestPairwise.test_pairwise_with_otherzignore:RuntimeWarningc                 C   s   |   j|ddS r   r   r   r   r   r   rK   J  rL   c                 C   s   |   j|ddS r   r   r   r   r   r   rK   K  rL   c                 C   s   | j ddj|ddS r   rx   r   r   r   r   rK   L  rL   c                 C   s   | j ddj|ddS r   ry   r   r   r   r   rK   M  rL   c                 C   s   | j ddj|ddS r   r   r   r   r   r   rK   N  rL   c                 C   s   | j ddj|ddS r   r   r   r   r   r   rK   O  rL   c                 C   s   |j jr|||nd }|d urX|j|j}|j |j }t|j| t|j | nptjtdd ||| W d    n1 s0    Y  tjtdd ||| W d    n1 s0    Y  d S )Nz'arg1' columns are not unique)matchz'arg2' columns are not unique)	r   Z	is_uniquerA   unionr.   r   pytestZraises
ValueError)r   r   r   rt   r4   Zexpected_indexZexpected_columnsr   r   r   test_no_pairwise_with_otherF  s    (z(TestPairwise.test_no_pairwise_with_otherc                 C   s   |   |S r   r   r   r   r   r   rK   j  rL   c                 C   s   |   |S r   r   r   r   r   r   rK   k  rL   c                 C   s   | j dd|S Nr   rG   rx   r   r   r   r   rK   l  rL   c                 C   s   | j dd|S r   ry   r   r   r   r   rK   m  rL   c                 C   s   | j dd|S Nr   r   r   r   r   r   r   rK   n  rL   c                 C   s   | j dd|S r   r   r   r   r   r   rK   o  rL   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_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periodsrm   Z12H)	r   r   r   r,   r7   r'   r8   r.   rB   )r   r_   r4   rD   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abZxyZABr      r   rM   g?)alpha)r   r   g      @@gK\ǸO@)r   r   listr   r   r'   r]   Zreshaper   r-   Zvstackfullr8   r.   rS   )r   r   rA   ri   r4   rD   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Qr9   r:   r   )r   r	   r   r   r   )r   r	   )Nr9   r:   rM   )r   Zfrom_arraysr   r'   Zonesr,   r7   r8   repeatr]   int64r.   rS   )r   r   ri   r4   rD   r   r   r   $test_multindex_columns_pairwise_func  s    

z1TestPairwise.test_multindex_columns_pairwise_funcN)__name__
__module____qualname__r   markparametrizer   r   r   r   Zxfailr   r   filterwarningsr   r   r   r   r   r   r   r   r   r      s   





r   )"numpyr'   r   Zpandas.compatr   Zpandasr   r   r   r   r   Zpandas._testingZ_testingr.   Zpandas.core.algorithmsr   Zfixturer   r   r   r5   r;   r   r   rE   rX   r   r`   rj   rr   rs   r   r   r   r   r   r   r   <module>   s`   &&&&&&&&&







