3
���hQA � @ s d dl Z d dlmZ d dlmZ d dlmZmZ d dlZ d dl
mZ d dlj
jjZd dlmZmZ d dlmZ d dlmZmZmZ d d lmZ d d
lmZ d dlm Z d dl!j"j#Z#d dl$m%Z%m&Z&m'Z' d d
l(m)Z)m*Z* dZ+ee, ee, ee, ee, e,d�dd�Z-G dd� de*�Z.dS )� N)�partial)�dedent)�Optional�Union)� Timedelta)�
FrameOrSeries�TimedeltaConvertibleTypes)�function)�Appender�Substitution�doc)�is_datetime64_ns_dtype)�ABCDataFrame)� DataError)�
_doc_template�_shared_docs�zsqrt)�_flex_binary_moment�_Rollingz�
Parameters
----------
bias : bool, default False
Use a standard estimation bias correction.
*args, **kwargs
Arguments and keyword arguments to be passed into func.
)�comass�span�halflife�alpha�returnc C s� t j| |||�}|dkr td��| d k r:| dk r�td��n�|d k r`|dk rRtd��|d d } nt|d k r�|dkrxtd��dtjtjd�| � }d| d } n6|d k r�|dks�|dkr�td ��d
| | } ntd��t| �S )N� z8comass, span, halflife, and alpha are mutually exclusiver z comass must satisfy: comass >= 0zspan must satisfy: span >= 1g @z#halflife must satisfy: halflife > 0g �?z"alpha must satisfy: 0 < alpha <= 1g �?z1Must pass one of comass, span, halflife, or alpha)�common�count_not_none�
ValueError�np�exp�log�float)r r r r Zvalid_countZdecay� r" |