
    Owg:                    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              rtd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        |      rK |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        }t/        j                  j0                        |j2                  gz   }t)        j4                  g |||      _        t        j                  j6                        }|dz
  gt/        t        |dz
              z   }j9                  |      j;                         nt)        j<                  t        t        j                              t        t        |            g      _        j?                  dd      j;                         t)        j<                  |gj                  gz         _        n8 t)        | j                  j                  gg g g      j                  d      j                  jA                  | j                  j0                        _        j                  jA                  |j0                  j                  j0                  z         _        S t        t        | j                              D ci c]#  }| |t        | j                  d d |f          % }} |||       S y tC        | |      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      P/var/www/horilla/myenv/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>`   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   tilelistr$   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<<+?+?%@' (,DLL,>,>'?<CTCTBU'U'1'='=8k8<8( &))<)<%=
%/!^$4tE*q.<Q7R$R	!'!6!6y!A!L!L!N'1'>'>"3t||#45uS=N7OP( "(!1!1!Q!7!B!B!D'1'>'>)Ndll^;(
 '($(JJ#=b"X !%'F "(!9!9$,,:L:L!M%||55 &&););;   s4<<01 1k$))AqD/4899G  +7D99u "z "$a00S !RHs   'W
=WW
(WW
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   zsqrtrW      s~    		" 1u !\"<<F4L
 M 88:F4LM s   BBc                *    | d|z  z   }|d| z  z   }||fS )Nr    )r?   r"   rB   rC   s       r   r+   r+      s%    q4xAq4xAa4Kr   )F)rA   bool)__doc__
__future__r   collectionsr   typingr   numpyr   pandas.core.dtypes.genericr   r   pandas.core.indexes.apir   r>   rW   r+   rY   r   r   <module>rb      s/    5 " #  
 /A1Hr   