Ë
    u™ãjt  ã                  óŽ   — d dl mZ d dlZd dlmZ d dlZd dlmZ erd dl	m
Z
 ej                  	 	 	 	 	 	 d	d„«       Z G d„ d«      Zy)
é    )ÚannotationsN)ÚTYPE_CHECKING)Úimport_optional_dependency)ÚCallablec                ó�   ‡— t         rddlŠnt        d«      Š‰j                  | |¬«      	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dˆfd„«       }|S )a*  
    Generate a numba jitted groupby ewma function specified by values
    from engine_kwargs.

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

    Returns
    -------
    Numba function
    r   NÚnumba)ÚnogilÚparallelc           	     óˆ  •— t        j                  | j                  «      }| d   j                  «       }	t        j                  |	«       j                  t         j                  «      }
t        j                  |
|k\  |	t         j                  «      |d<   t        dt        | «      «      D �]  }| |   }t        j                  |«       }|
|j                  t         j                  «      z  }
‰j                  t        |«      «      D ]�  }t        j                  |	|   «      se||   s|rŒ#||xx   |||dz
     z  z  cc<   ||   sŒ?|	|   ||   k7  r ||   |	|   z  |||   z  z   ||   |z   z  |	|<   |r||xx   |z  cc<   Œzd||<   Œ€||   sŒ†||   |	|<   Œ� t        j                  |
|k\  |	t         j                  «      ||<   �Œ ||fS )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                  €úd/var/www/html/python-recuperauto-other/env/lib/python3.12/site-packages/pandas/core/window/online.pyÚonline_ewmaz4generate_online_numba_ewma_func.<locals>.online_ewma*   s±  ø€ ô" —‘˜&Ÿ,™,Ó'ˆØ˜a‘y—~‘~Ó'ˆÜ—‘˜,Ó'Ð'×/Ñ/´·±Ó9ˆÜ—H‘H˜T _Ñ4°lÄBÇFÁFÓKˆˆq‰	ä�qœ#˜f›+Ó&ó 	PˆAØ˜‘)ˆCÜ!Ÿx™x¨›}˜nˆOØ�O×*Ñ*¬2¯8©8Ó4Ñ4ˆDØ—\‘\¤# c£(Ó+ò -�Ü—x‘x ¨Q¡Ô0Ø& qÒ)²ð ˜q›	 ]°f¸QÀ¹U±mÑ%CÑC›	Ø*¨1Ó-à+¨A™°#°a±&Ò8à%+¨A¡Y°¸a±Ñ%@ÀVÈcÐRSÉfÁ_Ñ$UØ%+¨A¡Y°Ñ%7ñ39 ¨Q¡ñ  &Ø & q£	¨VÑ 3¤	à,/  q¢	Ø$ QÓ'Ø&)¨!¡f�L ’Oð#-ô& Ÿ™ ¨Ñ!8¸,ÌÏÉÓOˆF�1‹Ið/	Pð2 �vˆ~Ðó    )r   ú
np.ndarrayr   r,   r   Úintr   Úfloatr   r.   r   r,   r    Úboolr!   r/   Úreturnztuple[np.ndarray, np.ndarray])r   r   r   Újit)r	   r
   r*   r   s      @r)   Úgenerate_online_numba_ewma_funcr2      s“   ø€ õ. Üä*¨7Ó3ˆà
‡Y�Y�U X€YÓ.ð.Øð.àð.ð ð.ð ð	.ð
 ð.ð ð.ð ð.ð ð.ð 
'ô.ó /ð.ð` Ðr+   c                  óL   — e Zd Z	 	 	 	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zy)ÚEWMMeanStatec                óÄ   — dd|z   z  }|| _         || _        || _        |rdn|| _        d|z
  | _        t        j                  | j                   d   «      | _        d | _        y )Nr   éÿÿÿÿ)	r   r    r!   r   r   r   Úonesr   Úlast_ewm)ÚselfÚcomr    r!   r   Úalphas         r)   Ú__init__zEWMMeanState.__init___   s]   € ð �s˜S‘yÑ!ˆØˆŒ
ØˆŒØ"ˆŒÙ#‘c¨ˆŒØ  5™[ˆÔÜ—g‘g˜dŸj™j¨™nÓ-ˆŒØ+/ˆ�r+   c           
     ó°   —  ||||| j                   | j                  | j                  | j                  | j                  «      \  }}|| _        |d   | _        |S ©Nr6   )r   r   r   r    r!   r8   )r9   r#   r   Úmin_periodsÚewm_funcr"   r   s          r)   Úrun_ewmzEWMMeanState.run_ewmo   sY   € ñ "ØØØØ×ÑØ�K‰KØ�K‰KØ�K‰KØ�N‰Nó	
‰ˆ�ð ˆŒØ˜r™
ˆŒØˆr+   c                ó`   — t        j                  | j                  d   «      | _        d | _        y r>   )r   r7   r   r   r8   )r9   s    r)   ÚresetzEWMMeanState.reset‡   s!   € Ü—g‘g˜dŸj™j¨™nÓ-ˆŒØˆ�r+   N)
r:   r.   r    r/   r!   r/   r   ztuple[int, ...]r0   ÚNone)
r#   r,   r   r,   r?   r-   r@   úlCallable[[np.ndarray, np.ndarray, int, float, float, np.ndarray, bool, bool], tuple[np.ndarray, np.ndarray]]r0   r,   )r0   rD   )Ú__name__Ú
__module__Ú__qualname__r<   rA   rC   © r+   r)   r4   r4   ^   sq   „ ð0àð0ð ð0ð ð	0ð
 ð0ð 
ó0ð à ðð ðð ð	ð

ðð 
óô0r+   r4   )r	   r/   r
   r/   r0   rE   )Ú
__future__r   Ú	functoolsÚtypingr   Únumpyr   Úpandas.compat._optionalr   Úcollections.abcr   Úcacher2   r4   rI   r+   r)   ú<module>rQ      s\   ðÝ "ã Ý  ã å >áÝ(ð ‡�ðLØðLàðLðòLó ðL÷^+ò +r+   