3
���h�) � @ s� d Z ddlmZ ddlmZmZmZmZ ddlZ ddl
mZ ddlm
Z
ddlmZ ddlmZ d ZG d
d� d�ZG dd
� d
e�ZG dd� de�ZG dd� de�ZG dd� de�ZG dd� de�ZG dd� de�ZdS )zLIndexer objects for computing start/end window bounds for rolling operations� )� timedelta)�Dict�Optional�Tuple�TypeN)� calculate_variable_window_bounds)�Appender)�ensure_platform_int)�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
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 @ s` e Zd ZdZd
eej ed�dd�Ze e
�deee ee ee e
ejejf d�dd ��ZdS )�BaseIndexerz*Base class for window bounds calculations.Nr )�index_array�window_sizec K s2 || _ || _x |j� D ]\}}t| ||� qW dS )z�
Parameters
----------
**kwargs :
keyword arguments that will be available when get_window_bounds is called
N)r r
�items�setattr)�selfr r
�kwargs�key�value� r �=/tmp/pip-build-5_djhm0z/pandas/pandas/core/window/indexers.py�__init__* s zBaseIndexer.__init__)�
num_values�min_periods�center�closed�returnc C s t �d S )N)�NotImplementedError)r r r r r r r r �get_window_bounds9 s zBaseIndexer.get_window_bounds)Nr )r NNN)�__name__�
__module__�__qualname__�__doc__r �np�ndarray�intr r �get_window_bounds_doc�bool�strr r r r r r r ' |