3
���hד � @ s� d dl mZ d dlZd dlZd dlZd dlZd dljj Z
d dlmZ d dl
Zd dl
mZmZ d dljZd dlmZ d dljjZejZeed�Zejddgd �d
d� �ZG dd
� d
�ZG dd� d�Z G dd� d�Z!G dd� d�Z"G dd� d�Z#G dd� d�Z$dd� Z%ej&j'dej(dfej)dfej*dfej+dfej,dfej-dfej.dfej/dfej0dfej1dfg
�dd � �Z2ej&j'd!ej3ej4ej)ej+ej-ej5ej6ej7ej8ej9ej1ej0ej:ej;ej<g�d"d#� �Z=dS )$� )�partialN)�is_integer_dtype)�Series�isna)�
DatetimeArrayZ
complex128TF)�paramsc C s | j S )z5
Fixture to pass skipna to nanops functions.
)�param)�request� r
�:/tmp/pip-build-5_djhm0z/pandas/pandas/tests/test_nanops.py�skipna s r c @ sV e Zd Zdd� Zdd� ZdSdd�ZdTd d
�ZdUdd�ZdVd
d�ZdWdd�Z e
jjde
jejfe
jejfg�dd� �Zdd� Zdd� Zdd� Ze
jjdejejejejejeedd�g�dd� �Zdd� Ze
jjd ed!��d"d#� �Z e
jjd ed!��d$d%� �Z!e"j#e
jjd ed!��d&d'� ��Z$e
jjde
j%ej&fe
j'ej(fg�d(d)� �Z)dXd*d+�Z*d,d-� Z+d.d/� Z,dYd0d1�Z-e"j#d2d3� �Z.e"j#d4d5� �Z/d6d7� Z0d8d9� Z1d:d;� Z2d<d=� Z3d>d?� Z4e"j#d@dA� �Z5e"j#dBdC� �Z6e"j#dDdE� �Z7dFdG� Z8dHdI� Z9e
jjdJe:j;e
j<fe:j=e
j>fe:j?e
j@fe:jAe
jBfe:jCe
jDfe:jEe
jFfg�dKdL� �ZGdMdN� ZHdOdP� ZIdQdR� ZJdS )Z�TestnanopsDataFramec
C s� t jjd� dt_d}t jj|� | _t jj|� | _| j| jd | _t jj dd|�| _
t jj dd|�dk| _t j| j�j
d �| _t j| j�j
d
�| _t jj dd|�j
d�| _t jj dd|�j
d
�| _t jt j|�| _t j| j| jg�| _t j| j| jg�| _t j| j| jg�| _t j| j| jg�| _| jt j | _t j| j| jg�| _t j| j| jg�| _t j| j| j| jg�| _t j| j| j| jg�| _t j| jj
d�| j
j
d�| jj
d�| jj
d�| jj
d�| jj
d�| jj
d�| jj
d�g�| _ t j!dd��L | j| jd | _"t j| j| j"g�| _#| jd | _$t j| j| j$g�| _%W d Q R X | j| _&| j| _'| j| _(| j| _)| j| _*| j| _+| jd d �df | _,| jd d �df | _-| jd d �df | _.| jd d �df | _/| jd d �df | _0| jd d �df | _1d S )Ni�+ F� � y �?�
r � �S�Ui N zM8[ns]zm8[ns]�O�ignore)�invalid)r r i����)2�np�random�seed�nanops�_USE_BOTTLENECKZrandn� arr_float�
arr_float1�arr_complex�randint�arr_int�arr_bool�abs�astype�arr_str�arr_utf�arr_date�
arr_tdeltaZtile�nan�arr_nan�vstack�
arr_float_nan�arr_float1_nan�arr_nan_float1�arr_nan_nan�inf�arr_inf�
arr_float_inf�arr_nan_inf�arr_float_nan_inf�arr_nan_nan_inf�arr_obj�errstate�arr_nan_nanj�arr_complex_nan�arr_nan_infj�arr_complex_nan_infj�arr_float_2d�
arr_float1_2d�
arr_nan_2d�arr_float_nan_2d�arr_float1_nan_2d�arr_nan_float1_2d�arr_float_1d�
arr_float1_1d�
arr_nan_1d�arr_float_nan_1d�arr_float1_nan_1d�arr_nan_float1_1d)�self�methodZ arr_shaper
r
r �setup_method s`
z TestnanopsDataFrame.setup_methodc C s
t t_d S )N)�use_bnr r )rG rH r
r
r �teardown_method_ s z#TestnanopsDataFrame.teardown_methodTc C s: t |d|�}|dkrLt|d�rL|jrL|j|jkrLtj||jd gdd�d }ytj|||d� W n� tk
�r4 t|d�r�|j dkr�� t|d� s�|j j
dkr�� |j j
d kr�|j j
d kr�|j|j �}q�tr�d
nd}|j|�}|j|�}n|j j
d kr�� tjtj
|�tj
|�|d� tjtj|�tj|�|d� Y nX d S )
NZasm8r �shape)�axis)�check_dtype�dtypezm8[ns]�cr �c16�f8)rP r )�getattr�hasattr�ndimrL r �split�tm�assert_almost_equal�AssertionErrorrO �kindr# �has_c16�real�imag)rG �targ�resrM rN Z
cast_dtyper
r
r �
check_resultsb s.
z!TestnanopsDataFrame.check_resultsNc K sh �xt t|j��d g D ]�} |r$|n|}
|rR|rRt|
�j� rR||
fd| i|��}n||
fd| i|��}||f| |d�|��}| j||| |d� |r�||fd| i|��}| j||| |d� | d kr�||fd|i|��}| j||| |d� |o�| d kr||f|�}| j||| |d� qW |jdk�r$d S tj|dd d�}
tj|dd
d�}| j|||
|f|||d�|�� d S )NrM )rM r )rN r � r )rM )r rN �empty_targfunc���rc ) �list�rangerU r �allr` r �take�check_fun_data)rG �testfunc�targfunc� testarval� targarvalr rN rb �kwargsrM Z
targartempvalr^ r_ Z
testarval2Z
targarval2r
r
r rh � s: z"TestnanopsDataFrame.check_fun_datac
K sb |}|j d�r,t| |d d� �r,|d d� }t| |�}t| |�} | j|||| f||d�|�� d S )NZ_nan� )r rb ���ro )�endswithrT rS rh )
rG ri rj Ztestarr rb rm Ztargarrk rl r
r
r � check_fun� s
zTestnanopsDataFrame.check_func
K s� | j ||d|f| � | j ||d|f| � | j ||d|f| � | j ||d|f| � | jjd�| jjd�| jjd�g}
|r�| j ||d|f| � |r�| j ||d|f| � | j ||d|f| � |r�| j ||d |f| � |
| jjd�g7 }
|�r|| j� | j ||d
|f| � |
| jjd�g7 }
|�rhy|| j� W n tk
�r@ Y n(X | j ||d|f| � |
| jjd�g7 }
|�r�t j
|
�| _|dk�r�t| j
||d
�}| j ||d|f| � d S )Nr r+ r r! r r) r r8 r7 r& |