
    bMh?                     n   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                            dddg          d             Zej                            dddg          d             Zej                            d  ed!                    d"             Zd# Zd$ Zd% Zej                            d&d' d( g          d)             Z ej                            d&d* d+ g          d,             Z! G d- d.          Z"dS )/    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    a/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/window/test_pairwise.pypairwise_framesr      s     =    c                  @    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   #   s4     q!fq!fq!fq!f51vFFFFr   c                  @    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   | }|t           j                            d                              t	          |                    z   }|                    dd                              |          }t          j        |j	        d         t          j        |dd          |dd                    d                    d S 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	BI!!!$$44SVV<<<AYYbbY1155a88F6;r?BF1STT7AcddG,D,DT,JKKKKKr   c           	      t   | }|t           j                            d                              t	          |                    z   }|                    dd                              |          }t          j        |j	        d         t          j
        |dd          |dd                    d                    d S r&   )r-   r.   r/   r0   r1   r2   corrr4   r5   r6   corrcoefr7   s       r   test_rolling_corrr@   :   s    A	BI!!!$$44SVV<<<AYYbbY1166q99F6;r?BK#$$344,I,I$,OPPPPPr   c                     t          t          j        dt          j                  t	          dd                    } |                                 }t          j        | d d<   t          j        |d d<   |                     t          |           d	          	                    |          }t          j        |j        d
         | 	                    |                     d S )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    
	"BJ'''z,PR/S/S/S	 	 	A 	
AFAbqbEVAcrcFYYc!ff!Y4499!<<F6;r?AFF1II66666r   funcr3   r>   c                 |    t          |                    dd          |                       }|j        t          d           dfdf         }|j                            d          |_         t          |d                             dd          |           |d                   }t          j        ||d           d S )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CEEFZta(!+,F<))!,,FLHwuQx''rq'AA4HHqRRH68??????r   methodc                     d          t                              d                               } t                              d                               }                     fd          }t          j        ||           t          j        ||                                           t          t          j        	                    d          
                    j                  j        j                   t                              d                               }t           fdD                       }t          j        ||           d S )Nr   rI   r*   c                 ^     t                              d                    |           S )NrI   r_   rU   r2   )xr]   r8   s    r   <lambda>z(test_flex_binary_frame.<locals>.<lambda>^   s*     Jb(A(A6 J J1 M M r   r
   rH   r   c           	          i | ]<}| t          |                             d                     |                   =S )rI   r_   ra   ).0krZ   frame2r]   s     r   
<dictcomp>z*test_flex_binary_frame.<locals>.<dictcomp>l   sI    SSS8GE!H$$B$//88CCSSSr   )rU   r2   applyr4   assert_frame_equalrL   r   r-   r.   r/   r0   shaperH   r   )r]   rZ   resres2expres3rh   r8   s   ``    @@r   test_flex_binary_framerq   X   s_   1XF
4'&...++V
4
4U
;
;C475===++V44V<<D
++MMMMM
N
NC#s###$$$$ZZ\\F
	a  00>>l  F 575===++V44V<<D
SSSSSSUSSS C $$$$$$r   r*      c                 *   t          t          j        d                    }t          t          j        d                    }|                    |                               |                                                                          sJ d S )NrB   r_   )other)r   r-   zerosrJ   r2   r>   isnaall)r*   srt   s      r   $test_rolling_corr_with_zero_variancery   q   sw     	rx||A29R==!!E99F9##((u(55::<<@@BBBB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                             dd                              | d                   }t          d |D                       sJ t          t          j                            d                              d                    } | d                             dd                              | d                   }t          d |D                       sJ 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              3   j   K   | ].}t          j        t          j        |                    d k    V  /dS r   Nr-   abs
nan_to_numrf   rb   s     r   	<genexpr>z#test_corr_sanity.<locals>.<genexpr>   ;      ::rvbmA&&''1,::::::r   r
   )   r
   c              3   j   K   | ].}t          j        t          j        |                    d k    V  /dS r}   r~   r   s     r   r   z#test_corr_sanity.<locals>.<genexpr>   r   r   )r   r-   arrayr2   r>   rw   r.   r/   )dfrm   s     r   test_corr_sanityr   z   s$   	
Z(Y'Z(Z(Z(Z(		
 		

 
B Q%--$-
'
'
,
,RU
3
3C::c::::::::	29((++227;;	<	<B
Q%--$-
'
'
,
,RU
3
3C::c::::::::::r   c                     t          g dg d          } t          ddgddg          }|                     dd                              |          }t          g d	          }t          j        ||           t          g d
g d          }|                     dd                              |          }t          j        ||           d S )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044R88F'''((H68,,,
YYY
/
/
/CZZqaZ0044S99F68,,,,,r   c                     t          g dg d          } t          ddgddg          }|                     dd                              |          }t          g d	          }t          j        ||           t          g d
g d          }|                     dd                              |          }t          j        ||           d S )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055b99F'''((H68,,,
YYY
/
/
/CZZqaZ0055c::F68,,,,,r   fc                 Z    |                      dd                              | d          S NrI   r   r)   Tpairwiser2   r3   rb   s    r   rc   rc      )    199BA966::1t:LL r   c                 Z    |                      dd                              | d          S r   r2   r>   r   s    r   rc   rc      )    199BA966;;A;M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        ||           d S )Nr   r   r!   r
   	   r,   r   r9   r:   foonamer   barr   rH   namesrK   )r   rH   rD   )	r   r   ranger   from_productrH   r   r4   rk   )r   r   df_expected	df_results       r   2test_rolling_functions_window_non_shrinkage_binaryr      s     

Q!Q!Q"a)sCju---E!HH5)))
 
 
B
 sCju---%rx&<UENSSS  K
 "I)[11111r   c                 Z    |                      dd                              | d          S r   r   r   s    r   rc   rc      r   r   c                 Z    |                      dd                              | d          S r   r   r   s    r   rc   rc      r   r   c                 "   t                      }t          t          dgd          t          g d                    }|d                             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        ||           d S )
NrN   r   r   r   r   rK   rG   r   )rH   r   rD   )	r   r   astyper   r   rH   r   r4   rk   )r   df1df2df1_expecteddf2_expected
df1_result
df2_results          r   *test_moment_functions_zero_length_pairwiser      s	    ++C
E3%e444E"5<Q<Q<Q
R
R
RC3xy))CH:#:CIs{;S#T#TUUUL%sy#+&>uenUUUse%(((  L 3J*l3333J*l33333r   c                      e Zd Zej                            dd d g          d             Zej                            dd d d d d	 d
 g          d             Zej                            dd d d d d d g          d             Zej                            dd d d  ej	        d ej        
                    e dd                    d d g          d             Zej                            d          ej                            dd d  d! d" d# d$ g          d%                         Zej                            dd& d' d( d) d* d+ g          d,             Zd- Zd. Zd/ Zd0S )1TestPairwiser   c                 *    |                                  S N)r3   r   s    r   rc   zTestPairwise.<lambda>   s    QUUWW r   c                 *    |                                  S r   )r>   r   s    r   rc   zTestPairwise.<lambda>   s     r   c                 @    ||          }t          j        |j        |j                   t          j        |j        |j                    ||          }|                                j        }|                                j        }t          j        ||d           d S 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     ?##
flO,CDDD
fno.EFFF1*++ '??$$+
#FH%HHHHHHr   c                 R    |                                                      d          S NTr   	expandingr3   r   s    r   rc   zTestPairwise.<lambda>   s    akkmm'''66 r   c                 R    |                                                      d          S r   r   r>   r   s    r   rc   zTestPairwise.<lambda>   s    akkmm(($(77 r   c                 V    |                      d                              d          S Nr!   r_   Tr   r   r   s    r   rc   zTestPairwise.<lambda>   s%    aiiqi))--t-<< r   c                 V    |                      d                              d          S r   r   r   s    r   rc   zTestPairwise.<lambda>   s%    aiiqi))...== r   c                 V    |                      d                              d          S Nr!   comTr   ewmr3   r   s    r   rc   zTestPairwise.<lambda>   s#    aeeell&&&55 r   c                 V    |                      d                              d          S r   r   r>   r   s    r   rc   zTestPairwise.<lambda>   s#    aeeell'''66 r   c                     ||          }t          j        |j        j        d         |j        d           t          j        t	          |j        j        d                   t	          |j                                                             t          j        |j        |j                    ||          }|                                j        }|                                j        }t          j	        ||d           d S 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     ?##
L"O$9u	
 	
 	
 	
 	fl)!,--o-446677	
 	
 	
 	fno.EFFF1*++ '??$$+
#FH%HHHHHHr   c                 R    |                                                      d          S NFr   r   r   s    r   rc   zTestPairwise.<lambda>  s    akkmm'''77 r   c                 R    |                                                      d          S r   r   r   s    r   rc   zTestPairwise.<lambda>  s    akkmm((%(88 r   c                 V    |                      d                              d          S Nr!   r_   Fr   r   r   s    r   rc   zTestPairwise.<lambda>  s%    aiiqi))--u-== r   c                 V    |                      d                              d          S r   r   r   s    r   rc   zTestPairwise.<lambda>  s%    aiiqi))...>> r   c                 V    |                      d                              d          S Nr!   r   Fr   r   r   s    r   rc   zTestPairwise.<lambda>  s#    aeeell&&&66 r   c                 V    |                      d                              d          S r   r   r   s    r   rc   zTestPairwise.<lambda>  s#    aeeell'''77 r   c                 @    ||          }t          j        |j        |j                   t          j        |j        |j                    ||          }|                                j        }|                                j        }t          j        ||d           d S r   r   r   s         r   test_no_pairwise_with_selfz'TestPairwise.test_no_pairwise_with_self  s     ?##
flO,ABBB
fno.EFFF1*++ '??$$+
#FH%HHHHHHr   c                 T    |                                                      |d          S r   r   rb   ys     r   rc   zTestPairwise.<lambda>(  s!    **1t*<< r   c                 T    |                                                      |d          S r   r   r   s     r   rc   zTestPairwise.<lambda>)  s!    ++A+== r   c                 X    |                      d                              |d          S r   r   r   s     r   rc   zTestPairwise.<lambda>*  s'    !,,00T0BB r   c                 X    |                      d                              |d          S r   r   r   s     r   rc   zTestPairwise.<lambda>-  s'    QYYaY0055a$5GG r   zPrecision issues on 32 bitF)reasonstrict)marksc                 X    |                      d                              |d          S r   r   r   s     r   rc   zTestPairwise.<lambda>2  s%    1))!d);; r   c                 X    |                      d                              |d          S r   r   r   s     r   rc   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        }t          j	        ||d           d S r   r   )r   r   r   r$   r   r;   r[   s          r   test_pairwise_with_otherz%TestPairwise.test_pairwise_with_other%  s    * ?$899
L"O$9u	
 	
 	
 	
 	fl)!,--*299;;<<	
 	
 	
 1*,@AA '??$$+
#FH%HHHHHHr   zignore:RuntimeWarningc                 T    |                                                      |d          S r   r   r   s     r   rc   zTestPairwise.<lambda>N  s!    **1u*== r   c                 T    |                                                      |d          S r   r   r   s     r   rc   zTestPairwise.<lambda>O  s!    ++A+>> r   c                 X    |                      d                              |d          S r   r   r   s     r   rc   zTestPairwise.<lambda>P  s'    !,,00U0CC r   c                 X    |                      d                              |d          S r   r   r   s     r   rc   zTestPairwise.<lambda>Q  s'    !,,11!e1DD r   c                 X    |                      d                              |d          S r   r   r   s     r   rc   zTestPairwise.<lambda>R  s%    1))!e)<< r   c                 X    |                      d                              |d          S r   r   r   s     r   rc   zTestPairwise.<lambda>S  s%    1**1u*== r   c                 $   |j         j        r |||          nd }|t|j                            |j                  }|j                             |j                   }t	          j        |j        |           t	          j        |j         |           d S t          j        t          d          5   |||           d d d            n# 1 swxY w Y   t          j        t          d          5   |||           d d d            d S # 1 swxY w Y   d S )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AAo3444 	
 ,2889M9STTN.6<<$,    !&,???!&.2BCCCCCz1PQQQ 9 9/#78889 9 9 9 9 9 9 9 9 9 9 9 9 9 9z1PQQQ 9 9&8889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9s$   ,CC	C	+DD	D	c                 P    |                                                      |          S r   r   r   s     r   rc   zTestPairwise.<lambda>n  s    **1-- r   c                 P    |                                                      |          S r   r   r   s     r   rc   zTestPairwise.<lambda>o  s    ++A.. r   c                 T    |                      d                              |          S Nr!   r_   r   r   s     r   rc   zTestPairwise.<lambda>p  s"    !,,0033 r   c                 T    |                      d                              |          S r  r   r   s     r   rc   zTestPairwise.<lambda>q  s"    !,,11!44 r   c                 T    |                      d                              |          S Nr!   r   r   r   s     r   rc   zTestPairwise.<lambda>r  s     1))!,, r   c                 T    |                      d                              |          S r  r   r   s     r   rc   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        }t          j        ||d            |t          g d          |          }t          j        |j        |j                   t          j        |j        |j                    |t          g d          |          }|                                j        }|                                j        }t          j        ||d           d S )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  sX    ?F<<<$8$899
flO,ABBB
fno.EFFF1*F<<<,@,@AA '??$$+
#FH%HHHH6,,,''99
flO,ABBB
fno.EFFF1VLLL))+@AA '??$$+
#FH%HHHHHHr   c                 6   t          t          d          t          dd                    }|                    d                              |          }t          t
          j        gdz  t          dd                    }t          j        ||           d S )Nr   2020rE   rG   12h)	r   r   r   r2   r>   r-   rM   r4   rY   )r   rx   r;   r[   s       r   test_corr_freq_memory_errorz(TestPairwise.test_corr_freq_memory_error  s    588:fa#@#@#@AAA5!!&&q))26(Q,j.K.K.KLLL
vx00000r   c           
      r   t          j        t          d          t          d          t          d          g          }t          d          }t	          t          j        d                              dd          ||          }|                    d	          	                                }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        ||           d S )NabxyABr!      r   rd   g?)alpha)r   r   g      @@gK\ǸO@)r   r   listr   r   r-   rJ   reshaper   r3   vstackfullrM   r4   rk   )r   r   rH   r   r;   r[   s         r   test_cov_mulittindexz!TestPairwise.test_cov_mulittindex  sX    )4::tDzz4::*NOOary}},,Q22%QQQc""&&(('q4::tDzz4PT::(VWW)4::tDzz4::*NOOIGFBF++GFI..GFI..  

 

 

 	fh/////r   c                    t          j        ddgddggddg          }t          t          j        d          |	          }|                    d
                                          }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        ||           d S )NMNPQrN   rO   r   )r   r
   r   r!   r   rC   r
   )NrN   rO   rd   )r   from_arraysr   r-   onesr2   r>   rM   repeatrJ   int64r4   rk   )r   r   r   r;   r[   s        r   $test_multindex_columns_pairwise_funcz1TestPairwise.test_multindex_columns_pairwise_func  s    (3*sCj)A#sTTTrwv888A##%%F(Ibi:::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#4#46H6H"IJJI I KJI [6677<<==5566	

 
I I
 
I* [7788==>>6677	

 
I I
 
I [<<==BBFLGGk''H%A% (     <;<<	
 "I I# "I( [ 788[==>>CCDD<<==	

 
9 9
 
 989* [--..3344,,--	

 
I I
 
I,1 1 10 0 020 0 0 0 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\   rq   r   ry   r   r   r   r   r   r   r   r   r   <module>r9     sw                                 , , , , , , 	Aq6Aq6Aq6Aq62QFCCC	Aq6Aq6Aq6Aq62QFCCC	Aq6Aq6Aq6Aq62S#JGGG	Aq6Aq6Aq6Aq62S!HEEE	Aq6Aq6Aq6Aq62S!HEEE	Aq6Aq6Aq6Aq62S!HEEE	C:SzC:SzBQPSHUUU	As8aX3x!S:QHMMM	Aq6Aq6Aq6As84sCjIII
    
 G G G
   L L LQ Q Q
7 
7 
7 %11@ @ 21@ FE?33% % 43%0 5588,,C C -,C; ; ;.
- 
- 
-
- 
- 
- MMNN 2 2 2  MMNN 4 4 4&a0 a0 a0 a0 a0 a0 a0 a0 a0 a0r   