
    `Vg                        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	Zd
 Zd ZddZy)z/Common utility functions for rolling operations    )annotations)defaultdict)castN)find_stack_level)ABCDataFrame	ABCSeries)
MultiIndexc                   t        | t              r(t        t              rt        |       \  }} |||      S t        | t              rsddlm 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 )N)indexr   )r   lencolumns)dataframe_templateresultr   s      Z/var/www/html/hubwallet-dev/venv/lib/python3.12/site-packages/pandas/core/window/common.pydataframe_from_int_dictz3flex_binary_moment.<locals>.dataframe_from_int_dict   sA    t>+?+?@F6>>"Q&!/!7!7!G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>c   sK      '
 !"	 II $ = =a @ #Fs4<</@ @'s   AA)names)levelscodesfloat64)r   r   dtype)"
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9y "~ "$a00U !RJ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   zsqrtrV      s~    		" 1u !\"<<F4L
 M 88:F4L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   c           	         |duxr t        |      dkD  }|duxr t        |      dkD  }|r|rd}n|rd}n|rd}nd}|dk7  r9t        j                  d| d| j                   d	| d
t        t                      yy)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   )clskernelrZ   r[   	warn_argswarn_kwargsmsgs          r   maybe_warn_args_and_kwargsri      s     D 2SY]I$8VqK[		
by!#d3<<.& B? ? #')	
 r   )F)re   strreturnNone)__doc__
__future__r   collectionsr   typingr   r`   numpyr   pandas.util._exceptionsr   pandas.core.dtypes.genericr   r   pandas.core.indexes.apir	   r=   rV   r*   ri   rX   r   r   <module>ru      s:    5 " #    4
 /B1J 
r   