a
    Of:                     @  sp   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
ddZdd Zdd ZdS )z/Common utility functions for rolling operations    )annotations)defaultdict)castN)ABCDataFrame	ABCSeries)
MultiIndexFbool)pairwisec                   s  t tr,t tr,t\}}||S t trddlm  dd fdd}i t tr|du rXu rttjD ].}j	d d |f j	d d |f |< q|S jj
stdjj
std	jd
d\}}t||\}}jj}|D ]0}	|	|v r|	|v r||	 ||	 |	< q |j|dS q|du rttttjD ]x}ttjD ]b}
|
|k ru r|
 | | |
< n2tj	d d |f j	d d |
f  | |
< qqxddlm jj}t|rDfddttjD dddj_jjdkrttj_t|tt| }fddtjjD }tjj|jg }tjg |||d_tjj}|d gtt|d  }| nHtttjtt|g_dd t|gjg _n$ tjjgg g gdjddj jj_j |jjj _S n*fddttjD |S nt!S d S )Nr   	DataFramer   )returnc                   s<    | |j d}t|jdkr,|j|j |_n|j |_|S )N)indexr   )r   lencolumnscopy)dataZframe_templateresultr
    R/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/core/window/common.pydataframe_from_int_dict   s
    z3flex_binary_moment.<locals>.dataframe_from_int_dictFz'arg1' columns are not uniquez'arg2' columns are not uniqueouter)join)r   r   T)concatc                   s2   g | ]*  fd dt tjD ddqS )c                   s   g | ]}  | qS r   r   ).0j)iresultsr   r   
<listcomp>I       z1flex_binary_moment.<locals>.<listcomp>.<listcomp>T)ignore_index)ranger   r   )r   )arg2r   r   )r   r   r   G   s
   z&flex_binary_moment.<locals>.<listcomp>   )r   Zaxisc                 3  s0   | ](}t  j|tt j V  qd S N)nprepeatr   Zget_level_valuesr   r   r   )r!   r   r   r   	<genexpr>`   s
   
z%flex_binary_moment.<locals>.<genexpr>)names)levelscodesZfloat64)r   r   Zdtypec                   s*   i | ]"}|t  jd d |f  qS r#   )prep_binaryilocr&   )arg1r!   fr   r   
<dictcomp>   s   z&flex_binary_moment.<locals>.<dictcomp>)"
isinstancer   r+   r   Zpandasr   r    r   r   r,   Z	is_unique
ValueErroralignunionr   r   dictr   Znlevelsr   r   r$   Ztilelistr(   nameZfrom_arraysr)   Zreorder_levelsZ
sort_indexZfrom_productZ	swaplevelZ	set_namesflex_binary_moment)r-   r!   r.   r	   XYr   r   Zres_columnscolr   Zresult_indexZresult_levelZarg2_levelsZresult_namesZ
num_levelsZ	new_orderr   )r   r-   r!   r   r.   r   r   r   r7      s    

,

$

r7   c                 C  sp   t jdd" t | }| dk }W d    n1 s40    Y  t| tr\|j rld||< n| rld||< |S )Nignore)allr   )r$   Zerrstatesqrtr0   r   Z_valuesany)xr   maskr   r   r   zsqrt   s    
&


rA   c                 C  s    | d|  }|d|   }||fS )Nr   r   )r-   r!   r8   r9   r   r   r   r+      s    r+   )F)__doc__
__future__r   collectionsr   typingr   numpyr$   Zpandas.core.dtypes.genericr   r   Zpandas.core.indexes.apir   r7   rA   r+   r   r   r   r   <module>   s    