
    Owg?                        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
       eddgddgddgd	dggddg
       eddgddgddgd	dggddg
       eddgddgddgd	dggdd g
       eddgddgddgd	dggddg
       eddgddgddgd	dggddg
       eddgddgddgddggddg
       eddgddgddgd	dggd dg
       eddgddgddgd	dggddg
      g	      d        Zej                   d        Zej                   d        Zd Zd Zd Zej.                  j1                  dddg      d        Zej.                  j1                  dddg      d        Zej.                  j1                  d  ed!            d"        Zd# Zd$ Zd% Zej.                  j1                  d&d' d( g      d)        Z ej.                  j1                  d&d* d+ g      d,        Z! G d- d.      Z"y)/    N)IS64)	DataFrameIndex
MultiIndexSeries
date_range)	safe_sort               columnsC      ?g               @g      @g      @g       @X)paramsc                     | j                   S )zPairwise frames test_pairwise)param)requests    X/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/window/test_pairwise.pypairwise_framesr      s     ==    c                  8    t        ddgddgddgddggddg      S )z'Pairwise target frame for test_pairwiser
   r   r   r   r   r   r   r    r   r   pairwise_target_framer   #   s.     q!fq!fq!fq!f51vFFr   c                  8    t        g dg dg dg dgg d      S )z&Pairwise other frame for test_pairwise)Nr   r   )Nr   r
   )N   r
   )Nr   r   )YZr   r   r   r   r   r   pairwise_other_framer$   )   s      	|\<@ r   c           	      @   | }|t         j                  j                  d      j                  t	        |            z   }|j                  dd      j                  |      }t        j                  |j                  d   t        j                  |dd  |dd        d          y Nr
   2      windowmin_periodsi)r   r   )
nprandomdefault_rngstandard_normallenrollingcovtmassert_almost_equalilocseriesABresults       r   test_rolling_covr<   2   s    A	BII!!!$44SV<<AYYbbY155a8F6;;r?BFF1ST7AcdG,DT,JKr   c           	      @   | }|t         j                  j                  d      j                  t	        |            z   }|j                  dd      j                  |      }t        j                  |j                  d   t        j                  |dd  |dd        d          y r&   )r-   r.   r/   r0   r1   r2   corrr4   r5   r6   corrcoefr7   s       r   test_rolling_corrr@   :   s    A	BII!!!$44SV<<AYYbbY166q9F6;;r?BKK#$34,I$,OPr   c                     t        t        j                  dt        j                        t	        dd            } | j                         }t        j                  | d d t        j                  |d d | j                  t        |       d	      j                  |      }t        j                  |j                  d
   | j                  |             y )N   dtypez
2020-01-01periodsindexr   
   r   r)   r,   )r   r-   arangefloat64r   copynanr2   r1   r>   r4   r5   r6   )abr;   s      r   !test_rolling_corr_bias_correctionrP   B   s    
		"BJJ'z,PR/S	A 	
AFFAbqEVVAcrFYYc!f!Y499!<F6;;r?AFF1I6r   funcr3   r>   c                 B    t        |j                  dd      |              }|j                  t        d       dfdf   }|j                  j                  d      |_         t        |d   j                  dd      |       |d         }t        j                  ||d       y )NrI   r   r)   r   Fcheck_names)getattrr2   locslicerH   	droplevelr4   assert_series_equal)rQ   framer;   expecteds       r   test_rolling_pairwise_cov_corrr\   O   s    CWU]]"!]<dCEFZZta(!+,F<<))!,FLHwuQx''rq'A4HqRH68?r   methodc                     |d    t        j                  d             |      } t        |j                  d                   }|j                   fd      }t        j                  ||       t        j                  ||       |j                         }t        t        j                  j                  d      j                  |j                        |j                  |j                        } t        |j                  d             |      }t        |D ci c]+  }| t        ||   j                  d             ||         - c}      }t        j                  ||       y c c}w )Nr   rI   r*   c                 H     t        j                  d            |       S )NrI   r_   )rU   r2   )xr]   r8   s    r   <lambda>z(test_flex_binary_frame.<locals>.<lambda>^   s!     Jb(A6 J1 M r   r
   rH   r   )rU   r2   applyr4   assert_frame_equalrL   r   r-   r.   r/   r0   shaperH   r   )	r]   rZ   resres2expframe2res3kr8   s	   `       @r   test_flex_binary_framerm   X   s5   1XF
4'&...+V
4U
;C475===+V4V<D
++M
NC#s#$$ZZ\F
		a 00>llF 575===+V4V<D
MRS8GE!H$$B$/8C	CSC $$ 	Ts    0E.r*      c                     t        t        j                  d            }t        t        j                  d            }|j	                  |       j                  |      j                         j                         sJ y )NrB   r_   )other)r   r-   zerosrJ   r2   r>   isnaall)r*   srp   s      r   $test_rolling_corr_with_zero_varianceru   q   s\     	rxx|A299R=!E99F9#((u(5::<@@BBBr   c                     t        t        j                  ddgddgddgddgd	d
gddgg            } | d   j                  dd      j	                  | d         }t        d |D              sJ t        t        j                  j                  d      j                  d            } | d   j                  dd      j	                  | d         }t        d |D              sJ y )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              3   r   K   | ]/  }t        j                  t        j                  |            d k   1 ywr   Nr-   abs
nan_to_num.0ra   s     r   	<genexpr>z#test_corr_sanity.<locals>.<genexpr>   '     :rvvbmmA&'1,:   57r
   )   r
   c              3   r   K   | ]/  }t        j                  t        j                  |            d k   1 ywry   rz   r}   s     r   r   z#test_corr_sanity.<locals>.<genexpr>   r   r   )r   r-   arrayr2   r>   rs   r.   r/   )dfrg   s     r   test_corr_sanityr   z   s    	
Z(Y'Z(Z(Z(Z(		

B Q%--$-
'
,
,RU
3C:c::::	299((+227;	<B
Q%--$-
'
,
,RU
3C:c::::r   c                  d   t        g dg d      } t        ddgddg      }| j                  dd      j                  |      }t        g d	      }t        j                  ||       t        g d
g d      }| j                  dd      j                  |      }t        j                  ||       y )Nr   r
   r!   r   r   r
   rG   r   r!   r   r
   r)   )NNr   r   Nr!   )r   r2   r3   r4   rY   s1s2r;   r[   s2as        r   test_rolling_cov_diff_lengthr      s    			+B	Aq!f	%BZZqaZ044R8F'(H68,
Y
/CZZqaZ044S9F68,r   c                  d   t        g dg d      } t        ddgddg      }| j                  dd      j                  |      }t        g d	      }t        j                  ||       t        g d
g d      }| j                  dd      j                  |      }t        j                  ||       y )Nr   r   rG   r   r!   r   r
   r)   )NNr   r   )r   r2   r>   r4   rY   r   s        r   test_rolling_corr_diff_lengthr      s    			+B	Aq!f	%BZZqaZ055b9F'(H68,
Y
/CZZqaZ055c:F68,r   fc                 J    | j                  dd      j                  | d      S NrI   r   r)   Tpairwiser2   r3   ra   s    r   rb   rb      #    199BA96::1t:L r   c                 J    | j                  dd      j                  | d      S r   r2   r>   r   s    r   rb   rb      #    199BA96;;A;M r   c           	      F   t        ddgddgddgddggt        dd	gd
      t        t        d      d            }t        t        dd	gd
      t        j                  |j
                  |j                  gdd
g      d      } | |      }t        j                  ||       y )Nr   r   r!   r
   	   r,   r   r9   r:   foonamer   barr   rH   namesrK   )r   rH   rD   )	r   r   ranger   from_productrH   r   r4   re   )r   r   df_expected	df_results       r   2test_rolling_functions_window_non_shrinkage_binaryr      s     

Q!Q!Q"a)sCju-E!H5)
B
 sCju-%%rxx&<UENSK
 "I)[1r   c                 J    | j                  dd      j                  | d      S r   r   r   s    r   rb   rb      r   r   c                 J    | j                  dd      j                  | d      S r   r   r   s    r   rb   rb      r   r   c                    t               }t        t        dgd      t        g d            }|d   j                  d      |d<   t        t        j                  |j
                  |j                  g            }t        t        j                  |j
                  |j                  gddg      t        dgd      d	      } | |      }t        j                  ||        | |      }t        j                  ||       y )
NrN   r   r   r   r   rK   rG   r   )rH   r   rD   )	r   r   astyper   r   rH   r   r4   re   )r   df1df2df1_expecteddf2_expected
df1_result
df2_results          r   *test_moment_functions_zero_length_pairwiser      s     +C
E3%e4E"5<Q
RC3xy)CH:#:#:CIIs{{;S#TUL%%syy#++&>uenUse%(L 3J*l33J*l3r   c                      e Zd Zej                  j                  dd d g      d        Zej                  j                  dd d d d d	 d
 g      d        Zej                  j                  dd d d d d d g      d        Zej                  j                  dd d d  ej                  d ej                  j                  e dd            d d g      d        Zej                  j                  d      ej                  j                  dd d  d! d" d# d$ g      d%               Zej                  j                  dd& d' d( d) d* d+ g      d,        Zd- Zd. Zd/ Zy0)1TestPairwiser   c                 "    | j                         S N)r3   r   s    r   rb   zTestPairwise.<lambda>   s    QUUW r   c                 "    | j                         S r   )r>   r   s    r   rb   zTestPairwise.<lambda>   s     r   c                 d    ||      }t        j                  |j                  |j                         t        j                  |j                  |j                          ||      }|j	                         j
                  }|j	                         j
                  }t        j                  ||d       y NFcheck_dtyper4   assert_index_equalrH   r   dropnavaluesassert_numpy_array_equalselfr   r   r   r;   r[   s         r   test_no_flexzTestPairwise.test_no_flex   s     ?#
fllO,C,CD
fnno.E.EF*+ ''??$++
##FH%Hr   c                 B    | j                         j                  d      S NTr   	expandingr3   r   s    r   rb   zTestPairwise.<lambda>   s    akkm'''6 r   c                 B    | j                         j                  d      S r   r   r>   r   s    r   rb   zTestPairwise.<lambda>   s    akkm(($(7 r   c                 F    | j                  d      j                  d      S Nr!   r_   Tr   r   r   s    r   rb   zTestPairwise.<lambda>   s    aiiqi)--t-< r   c                 F    | j                  d      j                  d      S r   r   r   s    r   rb   zTestPairwise.<lambda>   s    aiiqi)...= r   c                 F    | j                  d      j                  d      S Nr!   comTr   ewmr3   r   s    r   rb   zTestPairwise.<lambda>   s    aeeel&&&5 r   c                 F    | j                  d      j                  d      S r   r   r>   r   s    r   rb   zTestPairwise.<lambda>   s    aeeel'''6 r   c                 0    ||      }t        j                  |j                  j                  d   |j                  d       t        j                  t	        |j                  j                  d         t	        |j
                  j                                      t        j                  |j
                  |j
                          ||      }|j                         j                  }|j                         j                  }t        j                  ||d       y Nr   FrS   r   r   
r4   r   rH   levelsr	   r   uniquer   r   r   r   s         r   test_pairwise_with_selfz$TestPairwise.test_pairwise_with_self   s     ?#
LL"O$9$9u	
 	fll))!,-o--4467	
 	fnno.E.EF*+ ''??$++
##FH%Hr   c                 B    | j                         j                  d      S NFr   r   r   s    r   rb   zTestPairwise.<lambda>  s    akkm'''7 r   c                 B    | j                         j                  d      S r   r   r   s    r   rb   zTestPairwise.<lambda>  s    akkm((%(8 r   c                 F    | j                  d      j                  d      S Nr!   r_   Fr   r   r   s    r   rb   zTestPairwise.<lambda>  s    aiiqi)--u-= r   c                 F    | j                  d      j                  d      S r   r   r   s    r   rb   zTestPairwise.<lambda>  s    aiiqi)...> r   c                 F    | j                  d      j                  d      S Nr!   r   Fr   r   r   s    r   rb   zTestPairwise.<lambda>  s    aeeel&&&6 r   c                 F    | j                  d      j                  d      S r   r   r   s    r   rb   zTestPairwise.<lambda>  s    aeeel'''7 r   c                 d    ||      }t        j                  |j                  |j                         t        j                  |j                  |j                          ||      }|j	                         j
                  }|j	                         j
                  }t        j                  ||d       y r   r   r   s         r   test_no_pairwise_with_selfz'TestPairwise.test_no_pairwise_with_self  s     ?#
fllO,A,AB
fnno.E.EF*+ ''??$++
##FH%Hr   c                 D    | j                         j                  |d      S r   r   ra   ys     r   rb   zTestPairwise.<lambda>(  s    **1t*< r   c                 D    | j                         j                  |d      S r   r   r   s     r   rb   zTestPairwise.<lambda>)  s    ++A+= r   c                 H    | j                  d      j                  |d      S r   r   r   s     r   rb   zTestPairwise.<lambda>*  s!    !,00T0B r   c                 H    | j                  d      j                  |d      S r   r   r   s     r   rb   zTestPairwise.<lambda>-  s!    QYYaY055a$5G r   zPrecision issues on 32 bitF)reasonstrict)marksc                 H    | j                  d      j                  |d      S r   r   r   s     r   rb   zTestPairwise.<lambda>2  s     1))!d); r   c                 H    | j                  d      j                  |d      S r   r   r   s     r   rb   zTestPairwise.<lambda>3  s     1**1t*< r   c                     |||      }t        j                  |j                  j                  d   |j                  d       t        j                  t	        |j                  j                  d         t	        |j
                  j                                       |||      }|j                         j                  }|j                         j                  }t        j                  ||d       y r   r   )r   r   r   r$   r   r;   r[   s          r   test_pairwise_with_otherz%TestPairwise.test_pairwise_with_other%  s    * ?$89
LL"O$9$9u	
 	fll))!,-*2299;<	
 *,@A ''??$++
##FH%Hr   zignore:RuntimeWarningc                 D    | j                         j                  |d      S r   r   r   s     r   rb   zTestPairwise.<lambda>N  s    **1u*= r   c                 D    | j                         j                  |d      S r   r   r   s     r   rb   zTestPairwise.<lambda>O  s    ++A+> r   c                 H    | j                  d      j                  |d      S r   r   r   s     r   rb   zTestPairwise.<lambda>P  s!    !,00U0C r   c                 H    | j                  d      j                  |d      S r   r   r   s     r   rb   zTestPairwise.<lambda>Q  s!    !,11!e1D r   c                 H    | j                  d      j                  |d      S r   r   r   s     r   rb   zTestPairwise.<lambda>R  s     1))!e)< r   c                 H    | j                  d      j                  |d      S r   r   r   s     r   rb   zTestPairwise.<lambda>S  s     1**1u*= r   c                 D   |j                   j                  r	 |||      nd }||j                  j                  |j                        }|j                   j                  |j                         }t	        j
                  |j                  |       t	        j
                  |j                   |       y t        j                  t        d      5   |||       d d d        t        j                  t        d      5   |||       d d d        y # 1 sw Y   7xY w# 1 sw Y   y xY w)Nz'arg1' columns are not unique)matchz'arg2' columns are not unique)	r   	is_uniquerH   unionr4   r   pytestraises
ValueError)r   r   r$   r   r;   expected_indexexpected_columnss          r   test_no_pairwise_with_otherz(TestPairwise.test_no_pairwise_with_otherJ  s      &&00 o34 	
 ,22889M9S9STN.66<<$,,  !!&,,?!!&..2BCz1PQ 9/#789z1PQ 9&89 99 99 9s   

D
7
D
DDc                 @    | j                         j                  |      S r   r   r   s     r   rb   zTestPairwise.<lambda>n  s    **1- r   c                 @    | j                         j                  |      S r   r   r   s     r   rb   zTestPairwise.<lambda>o  s    ++A. r   c                 D    | j                  d      j                  |      S Nr!   r_   r   r   s     r   rb   zTestPairwise.<lambda>p  s    !,003 r   c                 D    | j                  d      j                  |      S r	  r   r   s     r   rb   zTestPairwise.<lambda>q  s    !,11!4 r   c                 D    | j                  d      j                  |      S Nr!   r   r   r   s     r   rb   zTestPairwise.<lambda>r  s    1))!, r   c                 D    | j                  d      j                  |      S r  r   r   s     r   rb   zTestPairwise.<lambda>s  s    1**1- r   c                 $    ||t        g d            }t        j                  |j                  |j                         t        j                  |j                  |j                          ||t        g d            }|j                         j                  }|j                         j                  }t        j                  ||d        |t        g d      |      }t        j                  |j                  |j                         t        j                  |j                  |j                          |t        g d      |      }|j                         j                  }|j                         j                  }t        j                  ||d       y )N)r   r   r!   r   Fr   )r   r4   r   rH   r   r   r   r   r   s         r   test_pairwise_with_seriesz&TestPairwise.test_pairwise_with_seriesk  s     ?F<$89
fllO,A,AB
fnno.E.EF*F<,@A ''??$++
##FH%H6,'9
fllO,A,AB
fnno.E.EFVL)+@A ''??$++
##FH%Hr   c                    t        t        d      t        dd            }|j                  d      j	                  |      }t        t
        j                  gdz  t        dd            }t        j                  ||       y )Nr   2020rE   rG   12h)	r   r   r   r2   r>   r-   rM   r4   rY   )r   rt   r;   r[   s       r   test_corr_freq_memory_errorz(TestPairwise.test_corr_freq_memory_error  s_    58:fa#@A5!&&q)266(Q,j.KL
vx0r   c           
      
   t        j                  t        d      t        d      t        d      g      }t        d      }t	        t        j                  d      j                  dd      ||      }|j                  d	      j                         }t        j                  t        d      t        d      t        d      t        d      g      }t        j                  t        d      t        d      t        d      g      }t	        t        j                  t        j                  d
t
        j                        t        j                  d
d      t        j                  d
d      f      ||      }t        j                  ||       y )NabxyABr!      r   rc   g?)alpha)r   r   g      @@gK\ǸO@)r   r   listr   r   r-   rJ   reshaper   r3   vstackfullrM   r4   re   )r   r   rH   r   r;   r[   s         r   test_cov_mulittindexz!TestPairwise.test_cov_mulittindex  s    ))4:tDz4:*NOaryy},,Q2%Qc"&&(''q4:tDz4PT:(VW))4:tDz4:*NOIIGGFBFF+GGFI.GGFI. 

 	fh/r   c                    t        j                  ddgddggddg      }t        t        j                  d      |	      }|j                  d
      j                         }t        t        j                  t        j                  t        j                  t        j                  dt        j                        d      ddgdz  ddgdz  gg d      |      }t        j                  ||       y )NMNPQrN   rO   r   )r   r
   r   r!   r   rC   r
   )NrN   rO   rc   )r   from_arraysr   r-   onesr2   r>   rM   repeatrJ   int64r4   re   )r   r   r   r;   r[   s        r   $test_multindex_columns_pairwise_funcz1TestPairwise.test_multindex_columns_pairwise_func  s    ((3*sCj)A#sTrwwv8A##%FF((IIbii:A>#JN#JN
 ' 
 	fh/r   N)__name__
__module____qualname__r   markparametrizer   r   r   r   xfailr   r   filterwarningsr  r  r  r  r(  r   r   r   r   r      s   [[S#46H"IJI KI [[67<=56	

I
I* [[78=>67	

I
I [[<=BFLLGkk''H%A% (  <<	
"I#"I( [[ 78[[=>CD<=	

9
 99* [[-.34,-	

I
I,1020r   r   )#numpyr-   r   pandas.compatr   pandasr   r   r   r   r   pandas._testing_testingr4   pandas.core.algorithmsr	   fixturer   r   r$   r<   r@   rP   r,  r-  r\   rm   r   ru   r   r   r   r   r   r   r   r   r   <module>r7     s        , Aq6Aq6Aq6Aq62QFCAq6Aq6Aq6Aq62QFCAq6Aq6Aq6Aq62S#JGAq6Aq6Aq6Aq62S!HEAq6Aq6Aq6Aq62S!HEAq6Aq6Aq6Aq62S!HEC:SzC:SzBQPSHUAs8aX3x!S:QHMAq6Aq6Aq6As84sCjI

 G G
  LQ
7 %1@ 2@ FE?3% 4%0 58,C -C;.
-
- MN22  MN44&a0 a0r   