
    Eg:                    h    d Z ddlmZ ddlmZ ddlmZ ddlZddl	m
Z
mZ ddlmZ dddZd Zd ZdS )z/Common utility functions for rolling operations    )annotations)defaultdict)castN)ABCDataFrame	ABCSeries)
MultiIndexFpairwiseboolc           
     "    t           t                    r4t          t                    rt                     \  }} ||          S t           t                    rddlm dfd}i t          t                    r|du r u r]t          t           j                            D ]/}  j	        d d |f         j	        d d |f                   |<   0 |           S  j        j
        st          d          j        j
        st          d                               d	
          \  }}t          ||          \  }} j                            j                  }|D ]%}	|	|v r|	|v r ||	         ||	                   |	<   & |j        |          S |du rt          t                     t          t           j                            D ]}t          t          j                            D ]^}
|
|k     r u r|
         |         |         |
<   $ t           j	        d d |f         j	        d d |
f                    |         |
<   _ddlm  j                            j                  }t          |          r fdt          t           j                            D             dd           j        _        j        j        dk    rt'          t(          j                  _        t+          j        |t                    t          |          z            }fdt          j        j                  D             }t/          j        j                  |j        gz   }t)          j        g |||          _        t          j        j                  }|dz
  gt/          t          |dz
                      z   }                    |                                          nt)          j        t          t          j                            t          t          |                    g          _                            dd                                          t)          j        |gj        gz             _        n0 t)           j        j        gg g g          j        d          j                              j        j                  _        j                             |j        j        j        z             _        S d S  fdt          t           j                            D              |           S tC                     S )Nr   )	DataFramereturnr   c                     | |j                   }t          |j                  dk    r|j        |j                 |_        n|j                                        |_        |S )N)indexr   )r   lencolumnscopy)dataframe_templateresultr   s      N/var/www/sysmax/venv/lib/python3.11/site-packages/pandas/core/window/common.pydataframe_from_int_dictz3flex_binary_moment.<locals>.dataframe_from_int_dict   s]    Yt>+?@@@F6>""Q&&!/!7!G!/!7!<!<!>!>M    Fz'arg1' columns are not uniquez'arg2' columns are not uniqueouter)join)r   r   T)concatc           
         g | ]; fd t          t          j                            D             d          <S )c                ,    g | ]}         |         S  r   ).0jiresultss     r   
<listcomp>z1flex_binary_moment.<locals>.<listcomp>.<listcomp>I   s!     Q Q Q1A Q Q Qr   T)ignore_index)ranger   r   )r   r!   arg2r   r"   s    @r   r#   z&flex_binary_moment.<locals>.<listcomp>G   sl       
 !"	 #F Q Q Q Q Qc$,>O>O8P8P Q Q Q-1    r      )r$   axisc              3     K   | ]S}t          j        j                            |          t	                    t	          j                  z            V  Td S N)nprepeatr   get_level_valuesr   )r   r!   r&   r   s     r   	<genexpr>z%flex_binary_moment.<locals>.<genexpr>`   sp       ' '
 !"	 I $ = =a @ @ #Fs4</@/@ @ ' ' ' ' ' 'r   )names)levelscodesfloat64)r   r   dtypec           
     V    i | ]%}| t          j        d d |f                    &S r*   )prep_binaryiloc)r   r!   arg1r&   fs     r   
<dictcomp>z&flex_binary_moment.<locals>.<dictcomp>   sJ        11k$)AAAqD/4889  r   )r   r   )"
isinstancer   r5   r   pandasr   r%   r   r   r6   	is_unique
ValueErroralignunionr   r   dictr   nlevelsr   r   r+   tilelistr/   namefrom_arraysr0   reorder_levels
sort_indexfrom_product	swaplevel	set_namesflex_binary_moment)r7   r&   r8   r	   XYr   r!   res_columnscolr    result_indexresult_levelarg2_levelsresult_names
num_levels	new_orderr   r   r   r"   s   ```              @@@@r   rK   rK      s+   $	"" @1z$	'B'B @14&&1qAww	D,	'	' |1$$$$$$	 	 	 	 	 	 dL)) m	:5  4<<"3t|#4#455 I I%&QtyA	!!!Q$%H%H

227DAAA<1 J()HIII<1 J()HIII::d:99DAq&q!,,DAq"&,"4"4T\"B"BK* = =!88q+,1QsVQsV+<+<GCL$9WAG[QQQQT!!%d++s4<0011  A"3t|#4#455  q55TT\\,3AJqMGAJqMM,-A!,TYqqq!t_di1o!N!N-GAJqMM *)))))#z//
;;|$$ ;#V     
 &+3t|+<+<%=%=   &*
 
 
F &*\FN |+a// (,J'E'E (*w(#f++\9J9J*J( (' ' ' ' '
 &+4<+?%@%@' ' ' (,DL,>'?'?<CTBU'U'1'=8k8<8( ( ( &))<%=%=
%/!^$4tE*q.<Q<Q7R7R$R	!'!6!6y!A!A!L!L!N!N'1'>"3t|#4#455uS=N=N7O7OP( ( "(!1!1!Q!7!7!B!B!D!D'1'>)Ndl^;( (
 'Y($(J#=b"X   !%'  F "(!9!9$,:L!M!M%|55 &);;    i "!l     s4<0011  G +*7D999 "$a000r   c                .   t          j        d          5  t          j        |           }| dk     }d d d            n# 1 swxY w Y   t          | t                    r|j                                        rd||<   n|                                rd||<   |S )Nignore)allr   )r+   errstatesqrtr:   r   _valuesany)xr   masks      r   zsqrtr_      s    		"	"	"  1u               !\"" < 	F4L88:: 	F4LMs   =AAc                *    | d|z  z   }|d| z  z   }||fS )Nr   r   )r7   r&   rL   rM   s       r   r5   r5      s%    q4xAq4xAa4Kr   )F)r	   r
   )__doc__
__future__r   collectionsr   typingr   numpyr+   pandas.core.dtypes.genericr   r   pandas.core.indexes.apir   rK   r_   r5   r   r   r   <module>rh      s    5 5 " " " " " " # # # # # #                 
 / . . . . .A1 A1 A1 A1 A1H      r   