o
    $j:                     @  sl   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Zdd Zdd ZdS )z/Common utility functions for rolling operations    )annotations)defaultdict)castN)ABCDataFrame	ABCSeries)
MultiIndexFpairwiseboolc                   s  t trt trt\}}||S t trddlm  d fdd}i t tr|du ru r]ttjD ]}j	d d |f j	d d |f |< q@|S jj
setdjj
smtd	jd
d\}}t||\}}jj}|D ]}	|	|v r|	|v r||	 ||	 |	< q |j|dS |du rttttjD ]8}ttjD ].}
|
|k r҈u r҈|
 | | |
< qtj	d d |f j	d d |
f  | |
< qqddlm jj}t|rfddttjD dddj_jjdkrqt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  }| n7t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 d S fddttjD |S t!S )Nr   	DataFramereturnr   c                   s>    | |j d}t|jdkr|j|j |_|S |j |_|S )N)indexr   )r   lencolumnscopy)dataZframe_templateresultr
    Z/var/www/html/Deteccion_Ine/venv/lib/python3.10/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   s    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  s2    | ]}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>)r   r   )"
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   r6      s   
,

$	

V
r6   c                 C  sr   t jdd t | }| dk }W d    n1 sw   Y  t| tr/|j r-d||< |S | r7d||< |S )Nignore)allr   )r#   Zerrstatesqrtr/   r   _valuesany)xr   maskr   r   r   zsqrt   s   



rA   c                 C  s    | d|  }|d|   }||fS )Nr   r   )r,   r    r7   r8   r   r   r   r*      s   r*   )F)r   r	   )__doc__
__future__r   collectionsr   typingr   numpyr#   Zpandas.core.dtypes.genericr   r   Zpandas.core.indexes.apir   r6   rA   r*   r   r   r   r   <module>   s     