+
    ÏÜ³j"›  ã                  óâ  € ^ RI Ht ^ RIt^ RIHt ^ RIHtHt ^ RIt	^ RI
Ht ^ RIHu Hu Ht ^ RIHt ^ RIHtHt ^ RIHt ^ R	IHt ^ R
IHt ^ RIHt ^ RIHt ^ RI H!t!H"t"H#t# ^ RI$H%t%H&t& ^ RI'H(t( ^ RI)H*t*H+t+ ^ RI,H-t-H.t. ^ RI/H0t0H1t1 ]'       d   ^ RI2H3t3H4t4H5t5 ^ RI6H7t7H8t8 ^ RI9H:t: R R lt;R R lt<]! R4       ! R R]04      4       t=]! R4       ! R R]1]=4      4       t> ! R R ]=4      t?R# )!é    )ÚannotationsN)Úpartial)ÚTYPE_CHECKINGÚcast)Ú	Timedelta)Ú
set_module)Úis_datetime64_dtypeÚis_numeric_dtype)ÚDatetimeTZDtype)Ú	ABCSeries)Úisna)Úcommon)Údtype_to_unit)ÚBaseIndexerÚExponentialMovingWindowIndexerÚGroupbyIndexer)Úget_jit_argumentsÚmaybe_use_numba)Úzsqrt)Úgenerate_numba_ewm_funcÚgenerate_numba_ewm_table_func)ÚEWMMeanStateÚgenerate_online_numba_ewma_func)Ú
BaseWindowÚBaseWindowGroupby)ÚTimedeltaConvertibleTypesÚTimeUnitÚnpt)Ú	DataFrameÚSeries)ÚNDFramec          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )é   Úcomassúfloat | NoneÚspanÚhalflifeÚalphaÚreturnÚfloat© )Úformats   "ÚW/home/luca/screen-checking/.venv/lib/python3.14/site-packages/pandas/core/window/ewm.pyÚ__annotate__r.   ?   s:   € ÷ ñ Øðà
ðð ðð ð	ð
 ñó    c                ó  € \         P                  ! WW#4      pV^8”  d   \        R4      hV e   V ^ 8  d   \        R4      hM¿Ve$   V^8  d   \        R4      hV^,
          ^,          p M˜Ve\   V^ 8:  d   \        R4      h^\        P                  ! \        P
                  ! R4      V,          4      ,
          p^V,          ^,
          p M9Ve+   V^ 8:  g   V^8”  d   \        R4      h^V,
          V,          p M\        R4      h\        V 4      # )é   z8comass, span, halflife, and alpha are mutually exclusivez comass must satisfy: comass >= 0zspan must satisfy: span >= 1z#halflife must satisfy: halflife > 0g      à?z"alpha must satisfy: 0 < alpha <= 1z1Must pass one of comass, span, halflife, or alpha)r   Úcount_not_noneÚ
ValueErrorÚnpÚexpÚlogr*   )r$   r&   r'   r(   Úvalid_countÚdecays   &&&&  r-   Úget_center_of_massr9   ?   sø   € ô ×'Ò'¨°hÓF€KØ�Q„ÜÐSÓTÐTð ÒØ�AŒ:ÜÐ?Ó@Ð@ð à	Ò	Ø�!Œ8ÜÐ;Ó<Ð<Ø˜•(˜a•‰Ø	Ò	Ø�qŒ=ÜÐBÓCÐCØ”B—F’Fœ2Ÿ6š6 #›;¨Õ1Ó2Õ2ˆØ�U•˜Q•‰Ø	Ò	Ø�AŒ:˜ œÜÐAÓBÐBØ�e•)˜uÕ$‰äÐLÓMÐMä�‹=Ðr/   c               ó$   € V ^8„  d   QhRRRRRR/# )r#   Útimesznp.ndarray | NDFramer'   ú(float | TimedeltaConvertibleTypes | Noner)   znpt.NDArray[np.float64]r+   )r,   s   "r-   r.   r.   `   s&   € ÷ 'ñ 'Øð'à6ð'ð ñ'r/   c                ó¢  € \        V P                  4      p\        RV4      p\        V \        4      '       d   V P
                  p \        P                  ! V P                  \        P                  4      \        P                  R7      p\        \        V4      P                  V4      P                  4      p\        P                  ! V4      V,          # )a­  
Return the diff of the times divided by the half-life. These values are used in
the calculation of the ewm mean.

Parameters
----------
times : np.ndarray, Series
    Times corresponding to the observations. Must be monotonically increasing
    and ``datetime64[ns]`` dtype.
halflife : float, str, timedelta, optional
    Half-life specifying the decay

Returns
-------
np.ndarray
    Diff of the times divided by the half-life
r   ©Údtype)r   r?   r   Ú
isinstancer   Ú_valuesr4   ÚasarrayÚviewÚint64Úfloat64r*   r   Úas_unitÚ_valueÚdiff)r;   r'   ÚunitÚ_timesÚ	_halflifes   &&   r-   Ú_calculate_deltasrL   `   sˆ   € ô* ˜Ÿ™Ó%€DÜ�
˜DÓ!€DÜ�%œ×#Ò#Ø—‘ˆÜ�ZŠZ˜Ÿ
™
¤2§8¡8Ó,´B·J±JÔ?€FÜ”i Ó)×1Ñ1°$Ó7×>Ñ>Ó?€IÜ�7Š7�6‹?˜YÕ&Ð&r/   zpandas.api.typingc                  óâ   a € ] tR t^~tRt. ROtRRR/R V 3R lllltR R ltR R	 ltRR
 R llt	RV 3R llt
]
tRR R lltRR R lltRR R lltRR R lltR R R lltR!R R lltRtV ;t# )"ÚExponentialMovingWindowaÄ  
Provide exponentially weighted (EW) calculations.

Exactly one of ``com``, ``span``, ``halflife``, or ``alpha`` must be
provided if ``times`` is not provided. If ``times`` is provided and ``adjust=True``,
``halflife`` and one of ``com``, ``span`` or ``alpha`` may be provided.
If ``times`` is provided and ``adjust=False``, ``halflife`` must be the only
provided decay-specification parameter.

Parameters
----------
com : float, optional
    Specify decay in terms of center of mass

    :math:`\alpha = 1 / (1 + com)`, for :math:`com \geq 0`.

span : float, optional
    Specify decay in terms of span

    :math:`\alpha = 2 / (span + 1)`, for :math:`span \geq 1`.

halflife : float, str, timedelta, optional
    Specify decay in terms of half-life

    :math:`\alpha = 1 - \exp\left(-\ln(2) / halflife\right)`, for
    :math:`halflife > 0`.

    If ``times`` is specified, a timedelta convertible unit over which an
    observation decays to half its value. Only applicable to ``mean()``,
    and halflife value will not apply to the other functions.

alpha : float, optional
    Specify smoothing factor :math:`\alpha` directly

    :math:`0 < \alpha \leq 1`.

min_periods : int, default 0
    Minimum number of observations in window required to have a value;
    otherwise, result is ``np.nan``.

adjust : bool, default True
    Divide by decaying adjustment factor in beginning periods to account
    for imbalance in relative weightings (viewing EWMA as a moving average).

    - When ``adjust=True`` (default), the EW function is calculated using weights
      :math:`w_i = (1 - \alpha)^i`. For example, the EW moving average of the series
      [:math:`x_0, x_1, ..., x_t`] would be:

    .. math::
        y_t = \frac{x_t + (1 - \alpha)x_{t-1} + (1 - \alpha)^2 x_{t-2} + ... + (1 -
        \alpha)^t x_0}{1 + (1 - \alpha) + (1 - \alpha)^2 + ... + (1 - \alpha)^t}

    - When ``adjust=False``, the exponentially weighted function is calculated
      recursively:

    .. math::
        \begin{split}
            y_0 &= x_0\\
            y_t &= (1 - \alpha) y_{t-1} + \alpha x_t,
        \end{split}
ignore_na : bool, default False
    Ignore missing values when calculating weights.

    - When ``ignore_na=False`` (default), weights are based on absolute positions.
      For example, the weights of :math:`x_0` and :math:`x_2` used in calculating
      the final weighted average of [:math:`x_0`, None, :math:`x_2`] are
      :math:`(1-\alpha)^2` and :math:`1` if ``adjust=True``, and
      :math:`(1-\alpha)^2` and :math:`\alpha` if ``adjust=False``.

    - When ``ignore_na=True``, weights are based
      on relative positions. For example, the weights of :math:`x_0` and :math:`x_2`
      used in calculating the final weighted average of
      [:math:`x_0`, None, :math:`x_2`] are :math:`1-\alpha` and :math:`1` if
      ``adjust=True``, and :math:`1-\alpha` and :math:`\alpha` if ``adjust=False``.

times : np.ndarray, Series, default None

    Only applicable to ``mean()``.

    Times corresponding to the observations. Must be monotonically increasing and
    ``datetime64[ns]`` dtype.

    If 1-D array like, a sequence with the same shape as the observations.

method : str {'single', 'table'}, default 'single'
    Execute the rolling operation per single column or row (``'single'``)
    or over the entire object (``'table'``).

    This argument is only implemented when specifying ``engine='numba'``
    in the method call.

    Only applicable to ``mean()``

Returns
-------
pandas.api.typing.ExponentialMovingWindow
    An instance of ExponentialMovingWindow for further exponentially weighted (EW)
    calculations, e.g. using the ``mean`` method.

See Also
--------
rolling : Provides rolling window calculations.
expanding : Provides expanding transformations.

Notes
-----
See :ref:`Windowing Operations <window.exponentially_weighted>`
for further usage details and examples.

Examples
--------
>>> df = pd.DataFrame({'B': [0, 1, 2, np.nan, 4]})
>>> df
     B
0  0.0
1  1.0
2  2.0
3  NaN
4  4.0

>>> df.ewm(com=0.5).mean()
          B
0  0.000000
1  0.750000
2  1.615385
3  1.615385
4  3.670213
>>> df.ewm(alpha=2 / 3).mean()
          B
0  0.000000
1  0.750000
2  1.615385
3  1.615385
4  3.670213

**adjust**

>>> df.ewm(com=0.5, adjust=True).mean()
          B
0  0.000000
1  0.750000
2  1.615385
3  1.615385
4  3.670213
>>> df.ewm(com=0.5, adjust=False).mean()
          B
0  0.000000
1  0.666667
2  1.555556
3  1.555556
4  3.650794

**ignore_na**

>>> df.ewm(com=0.5, ignore_na=True).mean()
          B
0  0.000000
1  0.750000
2  1.615385
3  1.615385
4  3.225000
>>> df.ewm(com=0.5, ignore_na=False).mean()
          B
0  0.000000
1  0.750000
2  1.615385
3  1.615385
4  3.670213

**times**

Exponentially weighted mean with weights calculated with a timedelta ``halflife``
relative to ``times``.

>>> times = ['2020-01-01', '2020-01-03', '2020-01-10', '2020-01-15', '2020-01-17']
>>> df.ewm(halflife='4 days', times=pd.DatetimeIndex(times)).mean()
          B
0  0.000000
1  0.585786
2  1.523889
3  1.523889
4  3.233686
NÚ	selectionc               óD   € V ^8„  d   QhRRRRRRRRRRR	R
RRRRRRRRRR/# )r#   Úobjr!   Úcomr%   r&   r'   r<   r(   Úmin_periodsú
int | NoneÚadjustÚboolÚ	ignore_nar;   únp.ndarray | NDFrame | NoneÚmethodÚstrr)   ÚNoner+   )r,   s   "r-   r.   Ú$ExponentialMovingWindow.__annotate__D  s…   € ÷ Jñ JàðJð ðJð ð	Jð
 ;ðJð ðJð  ðJð ðJð ðJð +ðJð ðJð 
ñJr/   c          
     	ó  <€ \         ST `  TVf   ^M\        \        V4      ^4      R RR V
VR7       W n        W0n        W@n        WPn        Wpn        W€n	        W�n
        V P                  Ee¯   \        V P                  RR 4      p\        V4      '       g"   \        V\        4      '       g   \        R4      h\!        V P                  4      \!        V4      8w  d   \        R4      h\        V P                  \"        \$        P&                  \(        P*                  34      '       g   \        R4      h\-        V P                  4      P/                  4       '       d   \        R4      h\1        V P                  V P                  4      V n        \4        P6                  ! V P                  V P
                  V P                  4      ^ 8”  dQ   V P                  '       g   \9        R4      h\;        V P                  V P
                  R V P                  4      V n        R # R	V n        R # V P                  eK   \        V P                  \"        \$        P&                  \(        P*                  34      '       d   \        R
4      h\(        P>                  ! \        V P@                  PB                  ^ ,          ^,
          ^ 4      \(        PD                  R7      V n        \;        V P                  V P
                  V P                  V P                  4      V n        R # )NF)rQ   rS   ÚonÚcenterÚclosedrY   rO   r?   ztimes must be datetime64 dtype.z,times must be the same length as the object.z/halflife must be a timedelta convertible objectz$Cannot convert NaT values to integerzRNone of com, span, or alpha can be specified if times is provided and adjust=Falseg      ð?zKhalflife can only be a timedelta convertible argument if times is not None.r>   )#ÚsuperÚ__init__ÚmaxÚintrR   r&   r'   r(   rU   rW   r;   Úgetattrr	   r@   r   r3   ÚlenrZ   ÚdatetimeÚ	timedeltar4   Útimedelta64r   ÚanyrL   Ú_deltasr   r2   ÚNotImplementedErrorr9   Ú_comÚonesrQ   ÚshaperE   )ÚselfrQ   rR   r&   r'   r(   rS   rU   rW   r;   rY   rO   Útimes_dtypeÚ	__class__s   &&&&&&&&&&&$ €r-   rb   Ú ExponentialMovingWindow.__init__D  s2  ø€ ô 	‰ÑØØ(Ò0™´c¼#¸kÓ:JÈAÓ6NØØØØØð 	ô 	
ð ŒØŒ	Ø ŒØŒ
ØŒØ"ŒØŒ
Ø�:‰:Ó!Ü! $§*¡*¨g°tÓ<ˆKä# K×0Ò0Ü˜k¬?×;Ò;ä Ð!BÓCÐCÜ�4—:‘:‹¤# c£(Ô*Ü Ð!OÓPÐPÜ˜dŸm™m¬c´8×3EÑ3EÄrÇ~Á~Ð-V×WÒWÜ Ð!RÓSÐSÜ�D—J‘JÓ×#Ñ#×%Ò%Ü Ð!GÓHÐHÜ,¨T¯Z©Z¸¿¹ÓGˆDŒLô ×$Ò$ T§X¡X¨t¯y©y¸$¿*¹*ÓEÈÔIØ—{—{�{Ü-ð=óð ô /¨t¯x©x¸¿¹ÀDÈ$Ï*É*ÓU�–	à�–	à�}‰}Ò(¬ZØ—‘¤¤X×%7Ñ%7¼¿¹ÐH÷.ò .ô !ð)óð ô
 Ÿ7š7¤3 t§x¡x§~¡~°aÕ'8¸1Õ'<¸aÓ#@ÌÏ
É
ÔSˆDŒLÜ*ð —‘Ø—	‘	Ø—‘Ø—
‘
óˆDŽIr/   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r#   Ústartz
np.ndarrayÚendÚnum_valsrd   r)   r[   r+   )r,   s   "r-   r.   r\   �  s,   € ÷ ñ ØðØ&0ðØ<?ðà	ñr/   c                	ó   € R # ©Nr+   )rp   ru   rv   rw   s   &&&&r-   Ú_check_window_boundsÚ,ExponentialMovingWindow._check_window_bounds�  s   € ñ
 	r/   c               ó   € V ^8„  d   QhRR/# )r#   r)   r   r+   )r,   s   "r-   r.   r\   —  s   € ÷ 0ñ 0 [ñ 0r/   c                ó   € \        4       # )zK
Return an indexer class that will compute the window start and end bounds
)r   ©rp   s   &r-   Ú_get_window_indexerÚ+ExponentialMovingWindow._get_window_indexer—  s   € ô .Ó/Ð/r/   c               ó    € V ^8„  d   QhRRRR/# )r#   ÚenginerZ   r)   ÚOnlineExponentialMovingWindowr+   )r,   s   "r-   r.   r\   �  s   € ÷ '
ñ '
Øð'
à	&ñ'
r/   c                óø   € \        V P                  V P                  V P                  V P                  V P
                  V P                  V P                  V P                  V P                  VVV P                  R7      # )a÷  
Return an ``OnlineExponentialMovingWindow`` object to calculate
exponentially moving window aggregations in an online method.

Parameters
----------
engine: str, default ``'numba'``
    Execution engine to calculate online aggregations.
    Applies to all supported aggregation methods.

engine_kwargs : dict, default None
    Applies to all supported aggregation methods.

    * For ``'numba'`` engine, the engine can accept ``nopython``, ``nogil``
      and ``parallel`` dictionary keys. The values must either be ``True`` or
      ``False``. The default ``engine_kwargs`` for the ``'numba'`` engine is
      ``{'nopython': True, 'nogil': False, 'parallel': False}`` and will be
      applied to the function

Returns
-------
OnlineExponentialMovingWindow
)rQ   rR   r&   r'   r(   rS   rU   rW   r;   r‚   Úengine_kwargsrO   )rƒ   rQ   rR   r&   r'   r(   rS   rU   rW   r;   Ú
_selection)rp   r‚   r…   s   &&&r-   ÚonlineÚExponentialMovingWindow.online�  s_   € ô4 -Ø—‘Ø—‘Ø—‘Ø—]‘]Ø—*‘*Ø×(Ñ(Ø—;‘;Ø—n‘nØ—*‘*ØØ'Ø—o‘oô
ð 	
r/   c                ó,   <€ \         SV `  ! V.VO5/ VB # )a«  
Aggregate using one or more operations over the specified axis.

Parameters
----------
func : function, str, list or dict
    Function to use for aggregating the data. If a function, must either
    work when passed a Series/Dataframe or when passed to
    Series/Dataframe.apply.

    Accepted combinations are:

    - function
    - string function name
    - list of functions and/or function names, e.g. ``[np.sum, 'mean']``
    - dict of axis labels -> functions, function names or list of such.
*args
    Positional arguments to pass to `func`.
**kwargs
    Keyword arguments to pass to `func`.

Returns
-------
scalar, Series or DataFrame

    The return can be:

    * scalar : when Series.agg is called with single function
    * Series : when DataFrame.agg is called with a single function
    * DataFrame : when DataFrame.agg is called with several functions

See Also
--------
pandas.DataFrame.rolling.aggregate

Notes
-----
The aggregation operations are always performed over an axis, either the
index (default) or the column axis. This behavior is different from
`numpy` aggregation functions (`mean`, `median`, `prod`, `sum`, `std`,
`var`), where the default is to compute the aggregation of the flattened
array, e.g., ``numpy.mean(arr_2d)`` as opposed to
``numpy.mean(arr_2d, axis=0)``.

`agg` is an alias for `aggregate`. Use the alias.

Functions that mutate the passed object can produce unexpected
behavior or errors and are not supported. See :ref:`gotchas.udf-mutation`
for more details.

A passed user-defined-function will be passed a Series for evaluation.

If ``func`` defines an index relabeling, ``axis`` must be ``0`` or ``index``.

Examples
--------
>>> df = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6], "C": [7, 8, 9]})
>>> df
   A  B  C
0  1  4  7
1  2  5  8
2  3  6  9

>>> df.ewm(alpha=0.5).mean()
          A         B         C
0  1.000000  4.000000  7.000000
1  1.666667  4.666667  7.666667
2  2.428571  5.428571  8.428571
)ra   Ú	aggregate)rp   ÚfuncÚargsÚkwargsrr   s   &&*,€r-   rŠ   Ú!ExponentialMovingWindow.aggregateÆ  s    ø€ ôL ‰wÒ  Ð7¨Ò7°Ñ7Ð7r/   c               ó   € V ^8„  d   QhRR/# ©r#   Únumeric_onlyrV   r+   )r,   s   "r-   r.   r\     s   € ÷ SJñ SJàñSJr/   c                ó>  € \        V4      '       d€   V P                  R8X  d   \        pM\        pV! R/ \	        V4      BRV P
                  RV P                  RV P                  R\        V P                  4      RR/B pV P                  VRR	7      # VR9   d}   Ve   \        R4      hV P                  f   R
MV P                  p\        \        P                  V P
                  V P                  V P                  VRR7      pV P                  VRVR7      # \        R4      h)a­  
Calculate the ewm (exponential weighted moment) mean.

Parameters
----------
numeric_only : bool, default False
    Include only float, int, boolean columns.

engine : str, default None
    * ``'cython'`` : Runs the operation through C-extensions from cython.
    * ``'numba'`` : Runs the operation through JIT compiled code from numba.
    * ``None`` : Defaults to ``'cython'`` or globally setting
      ``compute.use_numba``

engine_kwargs : dict, default None
    * For ``'cython'`` engine, there are no accepted ``engine_kwargs``
    * For ``'numba'`` engine, the engine can accept ``nopython``, ``nogil``
      and ``parallel`` dictionary keys. The values must either be ``True`` or
      ``False``. The default ``engine_kwargs`` for the ``'numba'`` engine is
      ``{'nopython': True, 'nogil': False, 'parallel': False}``

Returns
-------
Series or DataFrame
    Return type is the same as the original object with ``np.float64`` dtype.

See Also
--------
Series.ewm : Calling ewm with Series data.
DataFrame.ewm : Calling ewm with DataFrames.
Series.mean : Aggregating mean for Series.
DataFrame.mean : Aggregating mean for DataFrame.

Notes
-----
See :ref:`window.numba_engine` and :ref:`enhancingperf.numba` for
extended documentation and performance considerations for the Numba engine.

Examples
--------
>>> ser = pd.Series([1, 2, 3, 4])
>>> ser.ewm(alpha=0.2).mean()
0    1.000000
1    1.555556
2    2.147541
3    2.775068
dtype: float64
ÚsinglerR   rU   rW   ÚdeltasÚ	normalizeTÚmean©ÚnameNú+cython engine does not accept engine_kwargs©rR   rU   rW   r”   r•   ©r˜   r‘   ú)engine must be either 'numba' or 'cython'r+   ©ÚcythonN)r   rY   r   r   r   rm   rU   rW   Útuplerk   Ú_applyr3   r;   r   Úwindow_aggregationsÚewm©rp   r‘   r‚   r…   r‹   Úewm_funcr”   Úwindow_funcs   &&&&    r-   r–   ÚExponentialMovingWindow.mean  s  € ôl ˜6×"Ò"Ø�{‰{˜hÔ&Ü.‘ä4�Ùñ Ü# MÓ2ñà—I‘Iðð —{‘{ðð Ÿ.™.ð	ô
 ˜TŸ\™\Ó*ðð òˆHð —;‘;˜x¨f�;Ó5Ð5ØÐ'Ô'ØÒ(Ü Ð!NÓOÐOà!ŸZ™ZÒ/‘T°T·\±\ˆFÜ!Ü#×'Ñ'Ø—I‘IØ—{‘{ØŸ.™.ØØôˆKð —;‘;˜{°Àl�;ÓSÐSäÐHÓIÐIr/   c               ó   € V ^8„  d   QhRR/# r�   r+   )r,   s   "r-   r.   r\   e  s   € ÷ UJñ UJàñUJr/   c                óª  € V P                   '       g   \        R4      hV P                  e   \        R4      h\        V4      '       d€   V P                  R8X  d   \
        pM\        pV! R/ \        V4      BRV P                  RV P                   RV P                  R\        V P                  4      R	R
/B pV P                  VRR7      # VR9   d}   Ve   \        R4      hV P                  f   RMV P                  p\        \        P                   V P                  V P                   V P                  VR
R7      pV P                  VRVR7      # \        R4      h)a™  
Calculate the ewm (exponential weighted moment) sum.

Parameters
----------
numeric_only : bool, default False
    Include only float, int, boolean columns.
engine : str, default None
    * ``'cython'`` : Runs the operation through C-extensions from cython.
    * ``'numba'`` : Runs the operation through JIT compiled code from numba.
    * ``None`` : Defaults to ``'cython'`` or globally setting
      ``compute.use_numba``
engine_kwargs : dict, default None
    * For ``'cython'`` engine, there are no accepted ``engine_kwargs``
    * For ``'numba'`` engine, the engine can accept ``nopython``, ``nogil``
      and ``parallel`` dictionary keys. The values must either be ``True`` or
      ``False``. The default ``engine_kwargs`` for the ``'numba'`` engine is
      ``{'nopython': True, 'nogil': False, 'parallel': False}``

Returns
-------
Series or DataFrame
    Return type is the same as the original object with ``np.float64`` dtype.

See Also
--------
Series.ewm : Calling ewm with Series data.
DataFrame.ewm : Calling ewm with DataFrames.
Series.sum : Aggregating sum for Series.
DataFrame.sum : Aggregating sum for DataFrame.

Notes
-----
See :ref:`window.numba_engine` and :ref:`enhancingperf.numba` for extended
documentation and performance considerations for the Numba engine.

Examples
--------
>>> ser = pd.Series([1, 2, 3, 4])
>>> ser.ewm(alpha=0.2).sum()
0    1.000
1    2.800
2    5.240
3    8.192
dtype: float64
z(sum is not implemented with adjust=FalseNz!sum is not implemented with timesr“   rR   rU   rW   r”   r•   FÚsumr—   r™   rš   r›   rœ   r+   r�   )rU   rl   r;   r   rY   r   r   r   rm   rW   rŸ   rk   r    r3   r   r¡   r¢   r£   s   &&&&    r-   r©   ÚExponentialMovingWindow.sume  sB  € ðh �{�{ˆ{Ü%Ð&PÓQÐQØ�:‰:Ò!Ü%Ð&IÓJÐJÜ˜6×"Ò"Ø�{‰{˜hÔ&Ü.‘ä4�Ùñ Ü# MÓ2ñà—I‘Iðð —{‘{ðð Ÿ.™.ð	ô
 ˜TŸ\™\Ó*ðð  òˆHð —;‘;˜x¨e�;Ó4Ð4ØÐ'Ô'ØÒ(Ü Ð!NÓOÐOà!ŸZ™ZÒ/‘T°T·\±\ˆFÜ!Ü#×'Ñ'Ø—I‘IØ—{‘{ØŸ.™.ØØôˆKð —;‘;˜{°À\�;ÓRÐRäÐHÓIÐIr/   c               ó    € V ^8„  d   QhRRRR/# ©r#   ÚbiasrV   r‘   r+   )r,   s   "r-   r.   r\   ¼  s   € ÷ ,Eñ ,E˜ð ,E°Dñ ,Er/   c                ó<  € V'       db   V P                   P                  ^8X  dG   \        V P                   P                  4      '       g"   \	        \        V 4      P                   R24      hV P                  e   \	        R4      h\        V P                  WR7      4      # )aÆ  
Calculate the ewm (exponential weighted moment) standard deviation.

Parameters
----------
bias : bool, default False
    Use a standard estimation bias correction.
numeric_only : bool, default False
    Include only float, int, boolean columns.

Returns
-------
Series or DataFrame
    Return type is the same as the original object with ``np.float64`` dtype.

See Also
--------
Series.ewm : Calling ewm with Series data.
DataFrame.ewm : Calling ewm with DataFrames.
Series.std : Aggregating std for Series.
DataFrame.std : Aggregating std for DataFrame.

Examples
--------
>>> ser = pd.Series([1, 2, 3, 4])
>>> ser.ewm(alpha=0.2).std()
0         NaN
1    0.707107
2    0.995893
3    1.277320
dtype: float64
z$.std does not implement numeric_onlyz!std is not implemented with times)r­   r‘   )
Ú_selected_objÚndimr
   r?   rl   ÚtypeÚ__name__r;   r   Úvar©rp   r­   r‘   s   &&&r-   ÚstdÚExponentialMovingWindow.std¼  s†   € ÷D Ø×"Ñ"×'Ñ'¨1Ô,Ü$ T×%7Ñ%7×%=Ñ%=×>Ò>ô &Ü˜“:×&Ñ&Ð'Ð'KÐLóð ð �:‰:Ò!Ü%Ð&IÓJÐJÜ�T—X‘X 4�XÓCÓDÐDr/   c               ó    € V ^8„  d   QhRRRR/# r¬   r+   )r,   s   "r-   r.   r\   ê  s   € ÷ /Lñ /L˜ð /L°Dñ /Lr/   c                óæ   a€ V P                   e   \        R4      h\        P                  p\	        VV P
                  V P                  V P                  VR7      oV3R lpV P                  VRVR7      # )a¼  
Calculate the ewm (exponential weighted moment) variance.

Parameters
----------
bias : bool, default False
    Use a standard estimation bias correction.
numeric_only : bool, default False
    Include only float, int, boolean columns.

Returns
-------
Series or DataFrame
    Return type is the same as the original object with ``np.float64`` dtype.

See Also
--------
Series.ewm : Calling ewm with Series data.
DataFrame.ewm : Calling ewm with DataFrames.
Series.var : Aggregating var for Series.
DataFrame.var : Aggregating var for DataFrame.

Examples
--------
>>> ser = pd.Series([1, 2, 3, 4])
>>> ser.ewm(alpha=0.2).var()
0         NaN
1    0.500000
2    0.991803
3    1.631547
dtype: float64
z!var is not implemented with times)rR   rU   rW   r­   c                ó   <€ S! WW#V 4      # ry   r+   )ÚvaluesÚbeginrv   rS   Úwfuncs   &&&&€r-   Úvar_funcÚ-ExponentialMovingWindow.var.<locals>.var_func  s   ø€ Ù˜¨¸&ÓAÐAr/   r³   r›   )	r;   rl   r¡   Úewmcovr   rm   rU   rW   r    )rp   r­   r‘   r¥   r½   r¼   s   &&&  @r-   r³   ÚExponentialMovingWindow.varê  si   ø€ ðB �:‰:Ò!Ü%Ð&IÓJÐJÜ)×0Ñ0ˆÜØØ—	‘	Ø—;‘;Ø—n‘nØô
ˆõ	Bð �{‰{˜8¨%¸lˆ{ÓKÐKr/   c               ó(   € V ^8„  d   QhRRRRRRRR/# ©r#   ÚotherúDataFrame | Series | NoneÚpairwiseúbool | Noner­   rV   r‘   r+   )r,   s   "r-   r.   r\     s8   € ÷ Z
ñ Z
à(ðZ
ð ðZ
ð ð	Z
ð
 ñZ
r/   c                ó´   a aa€ S P                   e   \        R4      h^ RIHo S P	                  RV4       VVV 3R lpS P                  S P                  WWT4      # )aæ  
Calculate the ewm (exponential weighted moment) sample covariance.

Parameters
----------
other : Series or DataFrame , optional
    If not supplied then will default to self and produce pairwise
    output.
pairwise : bool, default None
    If False then only matching columns between self and other will be
    used and the output will be a DataFrame.
    If True then all pairwise combinations will be calculated and the
    output will be a MultiIndex DataFrame in the case of DataFrame
    inputs. In the case of missing elements, only complete pairwise
    observations will be used.
bias : bool, default False
    Use a standard estimation bias correction.
numeric_only : bool, default False
    Include only float, int, boolean columns.

Returns
-------
Series or DataFrame
    Return type is the same as the original object with ``np.float64`` dtype.

See Also
--------
Series.ewm : Calling ewm with Series data.
DataFrame.ewm : Calling ewm with DataFrames.
Series.cov : Aggregating cov for Series.
DataFrame.cov : Aggregating cov for DataFrame.

Examples
--------
>>> ser1 = pd.Series([1, 2, 3, 4])
>>> ser2 = pd.Series([10, 11, 13, 16])
>>> ser1.ewm(alpha=0.2).cov(ser2)
0         NaN
1    0.500000
2    1.524590
3    3.408836
dtype: float64
z!cov is not implemented with times©r    Úcovc                óü  <€ SP                  V 4      pSP                  V4      pSP                  4       pSP                  e   SP                  MVP                  pVP	                  \        V4      VSP                  SP                  SP                  R7      w  rg\        P                  ! VVVSP                  VSP                  SP                  SP                  S
4	      pS	! W€P                  V P                  RR7      # )N©Ú
num_valuesrS   r_   r`   ÚstepF©Úindexr˜   Úcopy)Ú_prep_valuesr   rS   Úwindow_sizeÚget_window_boundsrf   r_   r`   rÍ   r¡   r¿   rm   rU   rW   rÏ   r˜   )ÚxÚyÚx_arrayÚy_arrayÚwindow_indexerrS   ru   rv   Úresultr    r­   rp   s   &&       €€€r-   Úcov_funcÚ-ExponentialMovingWindow.cov.<locals>.cov_funcT  sê   ø€ Ø×'Ñ'¨Ó*ˆGØ×'Ñ'¨Ó*ˆGØ!×5Ñ5Ó7ˆNð ×#Ñ#Ò/ð × Ò à#×/Ñ/ð ð
 (×9Ñ9Ü˜w›<Ø'Ø—{‘{Ø—{‘{Ø—Y‘Yð :ó ‰JˆEô )×/Ò/ØØØð × Ñ ØØ—	‘	Ø—‘Ø—‘ØóˆFñ ˜&¯©°a·f±fÀ5ÔIÐIr/   ©r;   rl   Úpandasr    Ú_validate_numeric_onlyÚ_apply_pairwiser¯   )rp   rÃ   rÅ   r­   r‘   rÚ   r    s   f&&f& @r-   rÉ   ÚExponentialMovingWindow.cov  sW   ú€ ðd �:‰:Ò!Ü%Ð&IÓJÐJå!à×#Ñ# E¨<Ô8÷	Jð> ×#Ñ#Ø×Ñ °ó
ð 	
r/   c               ó$   € V ^8„  d   QhRRRRRR/# ©r#   rÃ   rÄ   rÅ   rÆ   r‘   rV   r+   )r,   s   "r-   r.   r\   w  s-   € ÷ ]
ñ ]
à(ð]
ð ð]
ð ñ	]
r/   c                ó°   a a€ S P                   e   \        R4      h^ RIHo S P	                  RV4       VV 3R lpS P                  S P                  WWC4      # )a¡  
Calculate the ewm (exponential weighted moment) sample correlation.

Parameters
----------
other : Series or DataFrame, optional
    If not supplied then will default to self and produce pairwise
    output.
pairwise : bool, default None
    If False then only matching columns between self and other will be
    used and the output will be a DataFrame.
    If True then all pairwise combinations will be calculated and the
    output will be a MultiIndex DataFrame in the case of DataFrame
    inputs. In the case of missing elements, only complete pairwise
    observations will be used.
numeric_only : bool, default False
    Include only float, int, boolean columns.

Returns
-------
Series or DataFrame
    Return type is the same as the original object with ``np.float64`` dtype.

See Also
--------
Series.ewm : Calling ewm with Series data.
DataFrame.ewm : Calling ewm with DataFrames.
Series.corr : Aggregating corr for Series.
DataFrame.corr : Aggregating corr for DataFrame.

Examples
--------
>>> ser1 = pd.Series([1, 2, 3, 4])
>>> ser2 = pd.Series([10, 11, 13, 16])
>>> ser1.ewm(alpha=0.2).corr(ser2)
0         NaN
1    1.000000
2    0.982821
3    0.977802
dtype: float64
z"corr is not implemented with timesrÈ   Úcorrc                ób  <a
aa€ SP                  V 4      pSP                  V4      pSP                  4       pSP                  e   SP                  MVP                  oVP	                  \        V4      SSP                  SP                  SP                  R7      w  oo
V
VVV3R lp\        P                  ! RR7      ;_uu_ 4        V! W#4      pV! W"4      pV! W34      pV\        Wx,          4      ,          p	R R R 4       S! X	V P                  V P                  RR7      #   + '       g   i     L0; i)NrË   c                ó|   <€ \         P                  ! V SSSVSP                  SP                  SP                  R 4	      # )T)r¡   r¿   rm   rU   rW   )ÚXÚYrv   rS   rp   ru   s   &&€€€€r-   Ú_covÚ<ExponentialMovingWindow.corr.<locals>.cov_func.<locals>._cov¾  s=   ø€ Ü*×1Ò1ØØØØØØ—I‘IØ—K‘KØ—N‘NØó
ð 
r/   Úignore)ÚallFrÎ   )rÑ   r   rS   rÒ   rÓ   rf   r_   r`   rÍ   r4   Úerrstater   rÏ   r˜   )rÔ   rÕ   rÖ   r×   rØ   ré   rÉ   Úx_varÚy_varrÙ   rv   rS   ru   r    rp   s   &&        @@@€€r-   rÚ   Ú.ExponentialMovingWindow.corr.<locals>.cov_func­  s  û€ Ø×'Ñ'¨Ó*ˆGØ×'Ñ'¨Ó*ˆGØ!×5Ñ5Ó7ˆNð ×#Ñ#Ò/ð × Ò à#×/Ñ/ð ð
 (×9Ñ9Ü˜w›<Ø'Ø—{‘{Ø—{‘{Ø—Y‘Yð :ó ‰JˆE�3÷ð ô —’ ×*Ö*Ù˜7Ó,�Ù˜WÓ.�Ù˜WÓ.�Øœu U¥]Ó3Õ3�÷	 +ñ
 ˜&¨¯©°a·f±fÀ5ÔIÐI÷ +×*ús   Ã1DÄD.	rÜ   )rp   rÃ   rÅ   r‘   rÚ   r    s   f&&& @r-   rä   ÚExponentialMovingWindow.corrw  sX   ù€ ð^ �:‰:Ò!Ü%Ð&JÓKÐKå!à×#Ñ# F¨LÔ9ö#	JðJ ×#Ñ#Ø×Ñ °ó
ð 	
r/   )	rm   rk   rU   r(   rR   r'   rW   r&   r;   )	rR   r&   r'   r(   rS   rU   rW   r;   rY   )	NNNNr   TFNr“   )ÚnumbaNry   )FNN©FF©NNFF©NNF)r²   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú_attributesrb   rz   r   r‡   rŠ   Úaggr–   r©   rµ   r³   rÉ   rä   Ú__static_attributes__Ú__classcell__©rr   s   @r-   rN   rN   ~   sx   ø† ñvòp
€KñJð ÷Jó JõXõ0÷'
÷RF8ðP €C÷SJ÷jUJ÷n,E÷\/L÷bZ
÷x]
õ ]
r/   rN   c                  ó€   a € ] tR tRtRt]P                  ]P                  ,           tRR/R V 3R llltR R lt	R	t
V ;t# )
ÚExponentialMovingWindowGroupbyi×  z>
Provide an exponential moving window groupby implementation.
Ú_grouperNc               ó   € V ^8„  d   QhRR/# ©r#   r)   r[   r+   )r,   s   "r-   r.   Ú+ExponentialMovingWindowGroupby.__annotate__ß  s   € ÷ 	ñ 	¸tñ 	r/   c               	óf  <€ \         SV `  ! V.VO5R V/VB  VP                  '       gˆ   V P                  ex   \        P
                  ! \        V P                  P                  P                  4       4      4      p\        V P                  P                  V4      V P                  4      V n        R# R# R# )r  N)ra   rb   Úemptyr;   r4   ÚconcatenateÚlistr  Úindicesrº   rL   Útaker'   rk   )rp   rQ   r  rŒ   r�   Úgroupby_orderrr   s   &&$*, €r-   rb   Ú'ExponentialMovingWindowGroupby.__init__ß  s�   ø€ Ü‰Ò˜ÐA˜tÒA¨hÐA¸&ÒAà�y�yˆy˜TŸZ™ZÒ3äŸNšN¬4°·±×0EÑ0E×0LÑ0LÓ0NÓ+OÓPˆMÜ,Ø—
‘
—‘ Ó.Ø—‘óˆDŽLñ 4‰yr/   c               ó   € V ^8„  d   QhRR/# )r#   r)   r   r+   )r,   s   "r-   r.   r  ê  s   € ÷ ñ  ^ñ r/   c                óP   € \        V P                  P                  \        R7      pV# )zk
Return an indexer class that will compute the window start and end bounds

Returns
-------
GroupbyIndexer
)Úgroupby_indicesrØ   )r   r  r	  r   )rp   rØ   s   & r-   r   Ú2ExponentialMovingWindowGroupby._get_window_indexerê  s&   € ô (Ø ŸM™M×1Ñ1Ü9ô
ˆð Ðr/   )rk   )r²   rö   r÷   rø   rù   rN   rú   r   rb   r   rü   rý   rþ   s   @r-   r   r   ×  s<   ø† ñð *×5Ñ5Ð8I×8UÑ8UÕU€Kð	¨D÷ 	ò 	÷ó r/   r   c                  ó¢   a € ] tR tRtRRR/R V 3R lllltR R ltRR ltRR	 R
 lltRR R lltRR R llt	RR R llt
RRRR/R ltRtV ;t# )rƒ   iù  NrO   c               óH   € V ^8„  d   QhRRRRRRRRRRR	R
RRRRRRRRRRRR/# )r#   rQ   r!   rR   r%   r&   r'   r<   r(   rS   rT   rU   rV   rW   r;   rX   r‚   rZ   r…   zdict[str, bool] | Noner)   r[   r+   )r,   s   "r-   r.   Ú*OnlineExponentialMovingWindow.__annotate__ú  s�   € ÷ %Eñ %Eàð%Eð ð%Eð ð	%Eð
 ;ð%Eð ð%Eð  ð%Eð ð%Eð ð%Eð +ð%Eð ð%Eð .ð%Eð 
ñ%Er/   c               	ó  <€ V	e   \        R4      h\        SV `	  VVVVVVVVV	VR7
       \        V P                  V P
                  V P                  VP                  4      V n        \        V
4      '       d   W n
        W°n        R # \        R4      h)Nz0times is not implemented with online operations.)
rQ   rR   r&   r'   r(   rS   rU   rW   r;   rO   z$'numba' is the only supported engine)rl   ra   rb   r   rm   rU   rW   ro   Ú_meanr   r‚   r…   r3   )rp   rQ   rR   r&   r'   r(   rS   rU   rW   r;   r‚   r…   rO   rr   s   &&&&&&&&&&&&$€r-   rb   Ú&OnlineExponentialMovingWindow.__init__ú  s“   ø€ ð  ÒÜ%ØBóð ô 	‰ÑØØØØØØ#ØØØØð 	ô 	
ô " $§)¡)¨T¯[©[¸$¿.¹.È#Ï)É)ÓTˆŒ
Ü˜6×"Ò"Ø ŒKØ!.ÖäÐCÓDÐDr/   c               ó   € V ^8„  d   QhRR/# r  r+   )r,   s   "r-   r.   r  !  s   € ÷ ñ �tñ r/   c                ó:   € V P                   P                  4        R# )z-
Reset the state captured by `update` calls.
N)r  Úresetr~   s   &r-   r  Ú#OnlineExponentialMovingWindow.reset!  s   € ð 	�
‰
×ÑÖr/   c                	ó   € \        R 4      h)zaggregate is not implemented.©rl   )rp   r‹   rŒ   r�   s   &&*,r-   rŠ   Ú'OnlineExponentialMovingWindow.aggregate'  s   € Ü!Ð"AÓBÐBr/   c               ó   € V ^8„  d   QhRR/# )r#   r­   rV   r+   )r,   s   "r-   r.   r  *  s   € ÷ =ñ =˜ñ =r/   c                	ó   € \        R 4      h)zstd is not implemented.r  )rp   r­   rŒ   r�   s   &&*,r-   rµ   Ú!OnlineExponentialMovingWindow.std*  ó   € Ü!Ð";Ó<Ð<r/   c               ó$   € V ^8„  d   QhRRRRRR/# râ   r+   )r,   s   "r-   r.   r  -  s(   € ÷ >ñ >à(ð>ð ð>ð ñ	>r/   c                	ó   € \        R 4      h)zcorr is not implemented.r  )rp   rÃ   rÅ   r‘   s   &&&&r-   rä   Ú"OnlineExponentialMovingWindow.corr-  s   € ô "Ð"<Ó=Ð=r/   c               ó(   € V ^8„  d   QhRRRRRRRR/# rÂ   r+   )r,   s   "r-   r.   r  5  s2   € ÷ =ñ =à(ð=ð ð=ð ð	=ð
 ñ=r/   c                	ó   € \        R 4      h)zcov is not implemented.r  )rp   rÃ   rÅ   r­   r‘   s   &&&&&r-   rÉ   Ú!OnlineExponentialMovingWindow.cov5  s   € ô "Ð";Ó<Ð<r/   c               ó    € V ^8„  d   QhRRRR/# r¬   r+   )r,   s   "r-   r.   r  >  s   € ÷ =ñ =˜ð =°Dñ =r/   c                	ó   € \        R 4      h)zvar is not implemented.r  r´   s   &&&r-   r³   Ú!OnlineExponentialMovingWindow.var>  r!  r/   ÚupdateÚupdate_timesc               óè  € / pV P                   P                  ^8H  pVe   \        R4      h\        P                  ! \        V P                   P                  R	,          ^,
          ^ 4      \        P                  R7      pVeÅ   V P                  P                  f   \        R4      h^pVP                  VR&   V'       d>   V P                  P                  \        P                  R3,          p	VP                  VR&   M%V P                  P                  p	VP                  VR&   \        P                  ! W‘P!                  4       34      p
M�^ pV P                   P                  VR&   V'       d   V P                   P                  VR&   MV P                   P                  VR&   V P                   P#                  \        P                  4      P!                  4       p
\%        R
/ \'        V P(                  4      B pV P                  P+                  V'       d   T
MV
R\        P                  3,          VV P,                  V4      pV'       g   VP/                  4       pWÈR pV P                   P0                  ! V3/ VB pV# )a3  
Calculate an online exponentially weighted mean.

Parameters
----------
update: DataFrame or Series, default None
    New values to continue calculating the
    exponentially weighted mean from the last values and weights.
    Values should be float64 dtype.

    ``update`` needs to be ``None`` the first time the
    exponentially weighted mean is calculated.

update_times: Series or 1-D np.ndarray, default None
    New times to continue calculating the
    exponentially weighted mean from the last values and weights.
    If ``None``, values are assumed to be evenly spaced
    in time.
    This feature is currently unsupported.

Returns
-------
DataFrame or Series

Examples
--------
>>> df = pd.DataFrame({"a": range(5), "b": range(5, 10)})
>>> online_ewm = df.head(2).ewm(0.5).online()
>>> online_ewm.mean()
      a     b
0  0.00  5.00
1  0.75  5.75
>>> online_ewm.mean(update=df.tail(3))
          a         b
2  1.615385  6.615385
3  2.550000  7.550000
4  3.520661  8.520661
>>> online_ewm.reset()
>>> online_ewm.mean()
      a     b
0  0.00  5.00
1  0.75  5.75
Nz update_times is not implemented.r>   z;Must call mean with update=None first before passing updaterÏ   :NNNÚcolumnsr˜   éÿÿÿÿr+   )r¯   r°   rl   r4   rn   rc   ro   rE   r  Úlast_ewmr3   rÏ   Únewaxisr.  r˜   r  Úto_numpyÚastyper   r   r…   Úrun_ewmrS   ÚsqueezeÚ_constructor)rp   r+  r,  rŒ   r�   Úresult_kwargsÚis_frameÚupdate_deltasÚresult_fromÚ
last_valueÚnp_arrayÚ	ewma_funcrÙ   s   &$$*,        r-   r–   Ú"OnlineExponentialMovingWindow.meanA  s  € ðX ˆØ×%Ñ%×*Ñ*¨aÑ/ˆØÒ#Ü%Ð&HÓIÐIÜŸšÜ�×"Ñ"×(Ñ(¨Õ,¨qÕ0°!Ó4¼B¿J¹Jô
ˆð ÒØ�z‰z×"Ñ"Ò*Ü ØQóð ð ˆKØ%+§\¡\ˆM˜'Ñ"ßØ!ŸZ™Z×0Ñ0´·±¸Q°Õ?�
Ø+1¯>©>�˜iÒ(à!ŸZ™Z×0Ñ0�
Ø(.¯©�˜fÑ%Ü—~’~ z·?±?Ó3DÐ&EÓF‰HàˆKØ%)×%7Ñ%7×%=Ñ%=ˆM˜'Ñ"ßØ+/×+=Ñ+=×+EÑ+E�˜iÒ(à(,×(:Ñ(:×(?Ñ(?�˜fÑ%Ø×)Ñ)×0Ñ0´·±Ó<×EÑEÓGˆHÜ3ñ 
Ü × 2Ñ 2Ó3ñ
ˆ	ð —‘×#Ñ#ß ‰H h¨q´"·*±*¨}Õ&=ØØ×ÑØó	
ˆ÷ Ø—^‘^Ó%ˆFØ˜Ð%ˆØ×#Ñ#×0Ò0°ÑI¸=ÑIˆØˆr/   )r  r‚   r…   )
NNNNr   TFNrò   Nry   )Frõ   rô   ró   )r²   rö   r÷   rø   rb   r  rŠ   rµ   rä   rÉ   r³   r–   rü   rý   rþ   s   @r-   rƒ   rƒ   ù  sV   ø† ñ%Eð ÷%Eó %EõNôC÷=÷>÷=÷=ðV ð V°D÷ Vò Vr/   rƒ   )@Ú
__future__r   rg   Ú	functoolsr   Útypingr   r   Únumpyr4   Úpandas._libs.tslibsr   Ú pandas._libs.window.aggregationsÚ_libsÚwindowÚaggregationsr¡   Úpandas.util._decoratorsr   Úpandas.core.dtypes.commonr	   r
   Úpandas.core.dtypes.dtypesr   Úpandas.core.dtypes.genericr   Úpandas.core.dtypes.missingr   Úpandas.corer   Úpandas.core.arrays.datetimeliker   Úpandas.core.indexers.objectsr   r   r   Úpandas.core.util.numba_r   r   Úpandas.core.window.commonr   Úpandas.core.window.numba_r   r   Úpandas.core.window.onliner   r   Úpandas.core.window.rollingr   r   Úpandas._typingr   r   r   rÝ   r   r    Úpandas.core.genericr!   r9   rL   rN   r   rƒ   r+   r/   r-   Ú<module>rW     sÛ   ðÝ "ã Ý ÷ó
 å )ß >Ó >Ý .÷õ 6Ý 0Ý +å Ý 9÷ñ ÷
õ ,÷÷÷÷
 ÷ñ ÷õ ,õõB'ñ< ÐÓ ôU
˜jó U
ó !ðU
ñp ÐÓ ôÐ%6Ð8Oó ó !ðôB^Ð$;ö ^r/   