Sindbad~EG File Manager
�
Mٜg�9 � �" � d Z ddlmZ ddlmZ ddlZddlmZ ddl m
Z
ddlmZ ddl
mZ dd lmZ dd
lmZ dZ G d� d
� Z G d� de� Z G d� de� Z G d� de� Z G d� de� Z G d� de� Z G d� de� Z G d� de� Zy)zLIndexer objects for computing start/end window bounds for rolling operations� )�annotations)� timedeltaN)�
BaseOffset)� calculate_variable_window_bounds)�Appender)�ensure_platform_int)�
DatetimeIndex)�Nanoa�
Computes the bounds of a window.
Parameters
----------
num_values : int, default 0
number of values that will be aggregated over
window_size : int, default 0
the number of rows in a window
min_periods : int, default None
min_periods passed from the top level rolling API
center : bool, default None
center passed from the top level rolling API
closed : str, default None
closed passed from the top level rolling API
step : int, default None
step passed from the top level rolling API
.. versionadded:: 1.5
win_type : str, default None
win_type passed from the top level rolling API
Returns
-------
A tuple of ndarray[int64]s, indicating the boundaries of each
window
c �f � e Zd ZdZ d dd�Z ee� d dd�� Zy) �BaseIndexera�
Base class for window bounds calculations.
Examples
--------
>>> from pandas.api.indexers import BaseIndexer
>>> class CustomIndexer(BaseIndexer):
... def get_window_bounds(self, num_values, min_periods, center, closed, step):
... start = np.empty(num_values, dtype=np.int64)
... end = np.empty(num_values, dtype=np.int64)
... for i in range(num_values):
... start[i] = i
... end[i] = i + self.window_size
... return start, end
>>> df = pd.DataFrame({"values": range(5)})
>>> indexer = CustomIndexer(window_size=2)
>>> df.rolling(indexer).sum()
values
0 1.0
1 3.0
2 5.0
3 7.0
4 4.0
Nc �j � || _ || _ |j � D ] \ }}t | ||� � y �N)�index_array�window_size�items�setattr)�selfr r �kwargs�key�values �G/usr/local/lib/python3.12/site-packages/pandas/core/indexers/objects.py�__init__zBaseIndexer.__init__H s4 � � '���&��� �,�,�.�J�C���D�#�u�%� )� c � � t �r )�NotImplementedError�r �
num_values�min_periods�center�closed�steps r �get_window_boundszBaseIndexer.get_window_boundsQ s
� � "�!r )Nr )r �np.ndarray | Noner �int�return�None�r NNNN�r r$ r �
int | Noner zbool | Noner z
str | Noner! r) r% ztuple[np.ndarray, np.ndarray])�__name__�
__module__�__qualname__�__doc__r r �get_window_bounds_docr"