o
    5c                     @  s   d Z ddlmZ ddlmZ ddlmZ ddlZddlZ	ddl
mZ ddlmZmZ ddlmZ dd
dZdd Zdd ZdddZdS )z/Common utility functions for rolling operations    )annotations)defaultdict)castN)find_stack_level)ABCDataFrame	ABCSeries)
MultiIndexFc                   s  t trt trt\}}||S t trddlm   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
sdtdjj
slt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rpt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   	DataFramec                   s.    | |j d}t|jdkr|j|j |_|S )N)indexr   )r   lencolumns)dataframe_templateresultr	    O/var/www/html/gps/gps/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>L   s    z1flex_binary_moment.<locals>.<listcomp>.<listcomp>T)ignore_index)ranger   r   )r   )arg2r   r   )r   r   r   J   s    z&flex_binary_moment.<locals>.<listcomp>   )r   axisc                 3  s2    | ]}t  j|tt j V  qd S N)nprepeatr   get_level_valuesr   r   r   )r   r   r   r   	<genexpr>c   s    

z%flex_binary_moment.<locals>.<genexpr>)names)levelscodesfloat64)r   r   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   pandasr
   r   r   r   r-   	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)r.   r   r/   pairwiseXYr   r   res_columnscolr   result_indexresult_levelarg2_levelsresult_names
num_levels	new_orderr   )r
   r.   r   r   r/   r   r   r   rB      s   
,

$	

X
rB   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"   errstatesqrtr1   r   _valuesany)xr   maskr   r   r   zsqrt   s   



rV   c                 C  s    | d|  }|d|   }||fS )Nr   r   )r.   r   rD   rE   r   r   r   r,      s   r,   kernelstrreturnNonec                 C  s   |duo	t |dk}|duot |dk}|r|rd}n|r d}n|r%d}nd}|dkrAtjd| d| j d	| d
tt d dS dS )a  
    Warn for deprecation of args and kwargs in rolling/expanding functions.

    Parameters
    ----------
    cls : type
        Class to warn about.
    kernel : str
        Operation name.
    args : tuple or None
        args passed by user. Will be None if and only if kernel does not have args.
    kwargs : dict or None
        kwargs passed by user. Will be None if and only if kernel does not have kwargs.
    Nr   zargs and kwargsargskwargs zPassing additional z to .zj has no impact on the result and is deprecated. This will raise a TypeError in a future version of pandas.)category
stacklevel)r   warningswarn__name__FutureWarningr   )clsrW   r[   r\   	warn_argswarn_kwargsmsgr   r   r   maybe_warn_args_and_kwargs   s    
ri   )F)rW   rX   rY   rZ   )__doc__
__future__r   collectionsr   typingr   ra   numpyr"   pandas.util._exceptionsr   pandas.core.dtypes.genericr   r   pandas.core.indexes.apir   rB   rV   r,   ri   r   r   r   r   <module>   s    
 