
    i                    f    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y)z/Common utility functions for rolling operations    )annotations)defaultdict)castN)ABCDataFrame	ABCSeries)
MultiIndexc                   t        | t              r(t        t              rt        |       \  }} |||      S t        | t              r^ddlm dfd}i }t        t              r|du r"| u rZt        t        | j                              D ]0  } || j                  d d |f   j                  d d |f         ||<   2  |||       S | j                  j                  st        d      j                  j                  st        d      | j                  d      \  }}t        ||      \  }}| j                  j                  j                        }	|	D ]  }
|
|v s|
|v s |||
   ||
         ||
<      ||j                  |		      S |d
u rt        t               }t        t        | j                              D ]t  }t        t        j                              D ]Q  }||k  r| u r||   |   ||   |<    |t        | j                  d d |f   j                  d d |f          ||   |<   S v ddlm} | j                  j                  j                        }t        |      r5 |t        t        | j                              D cg c]<  } |t        t        j                              D cg c]
  }||   |    c}d
      > c}}d
d      | j                  _        j                  j$                  dkD  r
t'        t(        j                        _        t+        j,                  |t              t        |      z        }fdt        j                  j$                        D        }g j                  j.                  |j0                  }t)        j2                  g |||      _        t        j                  j4                        }|dz
  gt        |dz
        }j7                  |      j9                         nt)        j:                  t        t        j                              t        t        |            g      _        j=                  dd      j9                         t)        j:                  |j                  g      _        n8 t)        | j                  j                  gg g g      j                  d      j                  j?                  | j                  j.                        _        j                  j?                  |j.                  j                  j.                  z         _        S t        t        | j                              D ci c]#  }| |t        | j                  d d |f          % }} |||       S y tA        | |      S c c}w c c}}w c c}w )Nr   )	DataFramec                     | |j                         }t        |j                        dkD  r |j                  |j                     |_        |S |j                  j                         |_        |S )N)indexr   )r   lencolumnscopy)dataframe_templateresultr
   s      V/app/cer_product_mecsu/.venv/lib/python3.12/site-packages/pandas/core/window/common.pydataframe_from_int_dictz3flex_binary_moment.<locals>.dataframe_from_int_dict   s`    t>+?+?@F6>>"Q&!/!7!7!G M "0!7!7!<!<!>M    Fz'arg1' columns are not uniquez'arg2' columns are not uniqueouter)join)r   r   T)concat)ignore_index   )r   axisc              3     K   | ]R  }t        j                  j                  j                  |      t	              t	        j                        z         T y w)N)nprepeatr   get_level_valuesr   ).0iarg2r   s     r   	<genexpr>z%flex_binary_moment.<locals>.<genexpr>a   sK      '
 !"	 II $ = =a @ #Fs4<</@ @'s   AA)names)levelscodesfloat64)r   r   dtype)returnr
   )!
isinstancer   prep_binaryr   pandasr
   ranger   r   iloc	is_unique
ValueErroralignunionr   r   dictr   nlevelsr   r   r   tiler$   namefrom_arraysr%   reorder_levels
sort_indexfrom_product	swaplevel	set_namesflex_binary_moment)arg1r"   fpairwiseXYr   resultsr!   res_columnscoljr   result_indexresult_levelarg2_levelsresult_names
num_levels	new_orderr
   r   s    `                 @@r   r=   r=      s#   $	"z$	'B4&1Aw	D,	'$	 dL)5 4<"3t||#45 I%&tyyA		!Q$%H
I27DAA<<11()HII<<11()HII::d:9DAq&q!,DAq"&,,"4"4T\\"BK* =!8q+,QsVQsV+<GCL= %WAGG[QQT!%d+s4<<01 A"3t||#45 q5TT\,3AJqMGAJqM,-!,TYYq!t_dii1o!N-GAJqM *#zz//

;|$# &+3t||+<%=
 !"	 #8=c$,,>O8P Q1A Q-1 &*
F &*\\FN ||++a/ (,J'E (*ww(#f+\9J*J('
 &+4<<+?+?%@' (P););'O\=N=N'O'1'='=8k8<8( &)"LL//&
 &0!^$LeJN6K$L	!'!6!6y!A!L!L!N'1'>'>"3t||#45uS=N7OP( "(!1!1!Q!7!B!B!D'1'>'>)4<<8(
 '($(JJ#=b"X !%'F "(!9!9$,,:L:L!M%||55 &&););;   s4<<01 1k$))AqD/4899G  +7D99y "~ "$a00W !RLs   'V=
=V8V=
7(W8V=
c                   t        j                  d      5  t        j                  |       }| dk  }d d d        t        | t              r!j
                  j                         rd|<   S j                         rd|<   S # 1 sw Y   QxY w)Nignore)allr   )r   errstatesqrtr*   r   _valuesany)xr   masks      r   zsqrtrV      s~    		" 1u !\"<<F4L M 
tM s   BBc                *    | d|z  z   }|d| z  z   }||fS )Nr    )r>   r"   rA   rB   s       r   r+   r+      s%    q4xAq4xAa4Kr   )F)r@   bool)__doc__
__future__r   collectionsr   typingr   numpyr   pandas.core.dtypes.genericr   r   pandas.core.indexes.apir   r=   rV   r+   rX   r   r   <module>ra      s/    5 " #  
 /C1Lr   