
    Mh                    Z    S SK Jr  S SKJr  S SKrS SKJr        SS jr " S S5      r	g)	    )annotations)TYPE_CHECKINGN)import_optional_dependencyc                   ^ [         (       a  SSKmO[        S5      mTR                  XUS9                SU4S jj5       nU$ )a3  
Generate a numba jitted groupby ewma function specified by values
from engine_kwargs.

Parameters
----------
nopython : bool
    nopython to be passed into numba.jit
nogil : bool
    nogil to be passed into numba.jit
parallel : bool
    parallel to be passed into numba.jit

Returns
-------
Numba function
r   Nnumba)nopythonnogilparallelc           	       > [         R                  " U R                  5      nU S   R                  5       n	[         R                  " U	5      ) R                  [         R                  5      n
[         R                  " X:  U	[         R                  5      US'   [        S[        U 5      5       GH*  nX   n[         R                  " U5      ) nXR                  [         R                  5      -  n
TR                  [        U5      5       H  n[         R                  " X   5      (       dq  X   (       d  U(       d_  X^==   X1US-
     -  -  ss'   X   (       a@  X   X   :w  a  X^   X   -  XLU   -  -   X^   U-   -  X'   U(       a  X^==   U-  ss'   M  SX^'   M  M  M  X   (       d  M  X   X'   M     [         R                  " X:  U	[         R                  5      X'   GM-     X4$ )z
Compute online exponentially weighted mean per column over 2D values.

Takes the first observation as is, then computes the subsequent
exponentially weighted mean accounting minimum periods.
r            ?)npemptyshapecopyisnanastypeint64wherenanrangelenprange)valuesdeltasminimum_periodsold_wt_factornew_wtold_wtadjust	ignore_naresultweighted_avgnobsicuris_observationsjr   s                  K/var/www/html/env/lib/python3.13/site-packages/pandas/core/window/online.pyonline_ewma4generate_online_numba_ewma_func.<locals>.online_ewma%   s   " &,,'ay~~',''//9HHT4lBFFKq	q#f+&A)C!xx}nO**28844D\\#c(+xx00&) 	]QUm%CC	*-+#&8%+Y%@VRSf_$U%+Y%739  & &	V 3	,/	 .	 2; %''&)fLO# ,& !8,OFI/ '2 ~    )r   
np.ndarrayr   r-   r   intr   floatr   r/   r   r-   r    boolr!   r0   )r   r   r   jit)r   r	   r
   r*   r   s       @r)   generate_online_numba_ewma_funcr2   
   s    , }*73
YYYA... . 	.
 . . . . B.` r,   c                  .    \ rS rSrSS jrS rSS jrSrg)EWMMeanStateY   c                    SSU-   -  nX@l         XPl        X l        X0l        U(       a  SOUU l        SU-
  U l        [        R                  " U R                  U R                   S-
     5      U l        S U l	        g )Nr   r   )
axisr   r    r!   r   r   r   onesr   last_ewm)selfcomr    r!   r7   r   alphas          r)   __init__EWMMeanState.__init__Z   sc    sSy!	
"#c 5[ggdjjQ78r,   c           
         U" UUUU R                   U R                  U R                  U R                  U R                  5      u  pVX`l        US   U l        U$ )N)r   r   r   r    r!   r9   )r:   r#   r   min_periodsewm_funcr"   r   s          r)   run_ewmEWMMeanState.run_ewme   sS    !KKKKKKNN	
 r
r,   c                |    [         R                  " U R                  U R                  S-
     5      U l        S U l        g )Nr   )r   r8   r   r7   r   r9   )r:   s    r)   resetEWMMeanState.resett   s*    ggdjjQ78r,   )r    r7   r!   r9   r   r   r   r   N)returnNone)__name__
__module____qualname____firstlineno__r=   rC   rF   __static_attributes__ r,   r)   r4   r4   Y   s    	r,   r4   )r   r0   r	   r0   r
   r0   )

__future__r   typingr   numpyr   pandas.compat._optionalr   r2   r4   rO   r,   r)   <module>rT      s?    "    >LLL L^ r,   