U
    Kvf%1                  
   @   s  d dl mZ d dlZd dlZd dlZd dlmZm	Z	m
Z
mZmZmZmZ d dlmZ ejddgddd	 Zd
d ZG dd dZdd Zdd Zdd Zdd ZG dd deZejeeedfddd Zdd Zdd Zdd Zd d! Zejd"d#e d$e!d$gd%fdd&d' Z"eje#d(d)dd*dfdd+d, Z$d-d. Z%d/d0 Z&ejd"d(e d1e!d2gfdd3d4 Z'ejd5e d5d6e(d7d8d9e)d(fdd:d; Z*d<d= Z+d>d? Z,ejddd@d$dAdBgddCdD Z-dEdF Z.dGdH Z/dS )I    )OrderedDictN)
array_likePandasWrapper	bool_like	dict_like
float_likeint_likestring_like)_right_squeezeTF)paramsc                 C   s   | j S Nparamrequest r   V/tmp/pip-unpacked-wheel-2v6byqio/statsmodels/tools/validation/tests/test_validation.py
use_pandas   s    r   c                 C   s^   | dkr"t d}|rZt|}n8| dkrDt d}|rZt|}nt t dd|  }|S )N   
         r      )npemptypdSeries	DataFramearange)Zdimr   outr   r   r   gen_data   s    

r!   c                   @   sZ   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Ze	j
jdddd Zdd ZdS )TestArrayLikec              	   C   s   t d|}t|d}|jdks"t|jdks0tt|tjksBtt|ddd}|jdks^tt|ddd}|jdksztt|dddd}|jdkstt|ddd	d}|jdkst|jd	ksttj	t
d
d t|ddd W 5 Q R X d S )Nr   ar   ndim)shaper   r&   r'   r   )r   r   a is required to have shapematch)r   r!   r   r&   AssertionErrorr'   typer   ndarraypytestraises
ValueErrorselfr   datar#   r   r   r   test_1d)   s     

zTestArrayLike.test_1dc              	   C   s  t d|}t|ddd}|jdks&t|jdks4tt|tjksFtt|ddd}|jdksbtt|dddd}|jdkstt|dddd}|jdkstt|dddd}|jdkstt|ddd	d}|jdkstt|dd
d}|jd
kst|jdksttj	t
dd t|dddd W 5 Q R X tj	t
dd t|dddd W 5 Q R X tj	t
dd t|dddd W 5 Q R X d}tj	t
|d t|ddd W 5 Q R X d}tj	t
|d t|ddd W 5 Q R X d S )Nr   r#   r%   r   )r   Nr(   )r   )Nr   )NN   )r   r   r   r)   r*   r$   )r   r   )Nr   z+a is required to have ndim 1 but has ndim 2r   a must have ndim <= 1Zmaxdimr,   )r4   r   r5   r#   r+   r   r   r   test_2d=   s<    
zTestArrayLike.test_2dc              	   C   sz  t dd}t|ddd}|jdks&t|jdks4tt|tjksFtt|dddd}|jdksdtt|dddd}|jdkstt|dd	d}|jd
ksttj	t
dd t|dddd W 5 Q R X tj	t
dd t|dddd W 5 Q R X d}tj	t
|d t|ddd W 5 Q R X d}tj	t
|d t|ddd W 5 Q R X d}tj	t
|d t|ddd W 5 Q R X d S )Nr7   Fr#   r%   )r         )r   Nr<   r(   )NNr<   r   )r   r;   r<   r   r   r)   r*   r$   )NNr   z+a is required to have ndim 2 but has ndim 3r   r8   r   r9   za must have ndim <= 2)r!   r   r'   r-   r&   r.   r   r/   r0   r1   r2   )r4   r5   r#   r+   r   r   r   test_3d`   s0    
zTestArrayLike.test_3dc              	   C   s   t d}t|ddd}|jdks&tt d}t|ddd}|jdksLtt d}t|ddd}|jdksrtt d}t|ddd}|jdkstt d	}tt t|ddd W 5 Q R X d S )
N)r   r   r   r#   r7   r%   r   )r   r   r   )r   r   )r   r   r   r   )r   r   r   r   r   r   )r   r   r   r'   r-   r0   r1   r2   )r4   r5   r#   r   r   r   test_right_squeeze_and_pad{   s    




z(TestArrayLike.test_right_squeeze_and_padc                 C   sF   t d}|d d d }t|ddd}|jd r4t|jd sBtd S )Nr   r   r#   T)
contiguousZC_CONTIGUOUS)r   r   r   flagsr-   )r4   xyr#   r   r   r   test_contiguous   s
    
zTestArrayLike.test_contiguousc                 C   sN   t d}t|dt jd}|jt jks*tt|dt jd}|jt jksJtd S )Nr   r#   )dtype)r   r   r   float32rD   r-   Zuint8)r4   rA   r#   r   r   r   
test_dtype   s
    
zTestArrayLike.test_dtypezFailing for now)reasonc                 C   sD   t d|}t|d}t|j|tr*tt|j|tr@td S )Nr   r#   )r!   r   
isinstanceTdotr-   r3   r   r   r   test_dot   s    

zTestArrayLike.test_dotc                 C   s6   t d|}t|ddd}t|dd  tjks2td S )Nr   r#   r%   r   )r!   r   r.   r   r/   r-   r3   r   r   r   
test_slice   s    
zTestArrayLike.test_sliceN)__name__
__module____qualname__r6   r:   r=   r>   rC   rF   r0   markZxfailrK   rL   r   r   r   r   r"   (   s   #
r"   c                  C   s   t d} t| }|jdks tt d} t| }|jdks@tt d} t| }|jdks`tt d} t| }|jdkstd S )N)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   r
   r'   r-   )rA   rB   r   r   r   test_right_squeeze   s    



rQ   c              	   C   s  t d| }t dd}t||}| r,tjntj}t||s@t| rR|j	d ksRtt|j|dd}t||srt| r|j	dkstt|j|dgd}t||st| r|j	dkst| rtj
ntj}t||d d d f }t||st| r
|jd dks
tt|j|d d d f dgd}t||s:t| rR|jdgksRt| rd}tjt|d" t||d d d d f  W 5 Q R X d}tjt|d& t||d |jd d	   W 5 Q R X d S )
Nr   Fname)columnsr   z!Can only wrap 1 or 2-d array_liker*   z6obj must have the same number of elements in axis 0 asr   )r!   r   wrapr   r   r   r/   rH   r-   rR   r   rS   r0   r1   r2   r'   )r   r#   bwrappedZexpected_typer+   r   r   r   test_wrap_pandas   s4    

 &rW   c                  C   s   t dd} d| _t dd}t| j|dd}d}|j|ks>tt dd} d	d
 t| jd D | _t dd}t| j|dd}dd
 | jD }t|j|kstd S )Nr   TappleFappendedappendZapple_appendedr   c                 S   s   g | ]}d t | qS )Zapple_)str.0ir   r   r   
<listcomp>   s     z+test_wrap_pandas_append.<locals>.<listcomp>c                 S   s   g | ]}|d  qS Z	_appendedr   r^   cr   r   r   r`      s     	r!   rR   r   rT   r-   ranger'   rS   listr#   rU   rV   expectedr   r   r   test_wrap_pandas_append   s    



ri   c                  C   s   t dd} d| _t dd}t| j|dd}d}|j|ks>tt dd} d	d
 t| jd D | _t dd}t| j|dd}dd
 | jD }t|j|kstd S )Nr   Tr<   FrY   rZ   Z
7_appendedr   c                 S   s   g | ]}|qS r   r   r]   r   r   r   r`      s     z6test_wrap_pandas_append_non_string.<locals>.<listcomp>c                 S   s   g | ]}| d qS ra   r   rb   r   r   r   r`      s     rd   rg   r   r   r   "test_wrap_pandas_append_non_string   s    



rj   c                   @   s   e Zd ZdS )
CustomDictN)rM   rN   rO   r   r   r   r   rk     s   rk   c                 C   s   | j S r   r   r   r   r   r   	dict_type  s    rl   c                 C   s6   | d k	r|  n| }t |ddd}t|t|s2td S )NvalueToptional)r   rH   r.   r-   )rl   valr    r   r   r   test_optional_dict_like
  s    rq   c               	   C   s   d} t jt| d tg ddd W 5 Q R X t jt| d tdhddd W 5 Q R X t jt| d tdddd W 5 Q R X d S )Nz5value must be a dict or dict_like \(i.e., a Mapping\)r*   rm   Trn   r#   )r0   r1   	TypeErrorr   r*   r   r   r   test_optional_dict_like_error  s    rs   c               	   C   s   t dd} | dkstt dddd} | dks0ttjtdd t dd W 5 Q R X tjtdd t dd W 5 Q R X tjtd	d t d
ddd W 5 Q R X d S )NrX   rm   rX   ZbananaZcherryoptionsvalue must be a stringr*   r      4z1value must be one of: 'apple', 'banana', 'cherry'date)r	   r-   r0   r1   rr   r2   r    r   r   r   test_string  s    
r{   c               	   C   s   t dd} | dkstt dddd} | dks0tt d ddd} | d ksJtt d dddd} | d ksfttjtdd	 t d
ddd W 5 Q R X tjtdd	 t dddd W 5 Q R X d S )NrX   rm   rt   ru   Trn   )ro   rv   rw   r*   r   rx   )r	   r-   r0   r1   rr   rz   r   r   r   test_optional_string,  s"    
   r|   g      ?g?g333333?y333333?        c                 C   s   | j S r   r   r   r   r   r   floatingA  s    r}   r   y333333?      ?z3.2c                 C   s   | j S r   r   r   r   r   r   not_floatingF  s    r~   c                 C   s   t t| dtstt t| dddts,ttd dddd ksBtt | ttjttjfrt t| dddtspttd ddddd kstd S )Nr}   Trn   strictro   r   )rH   r   floatr-   intr   integerZinexact)r}   r   r   r   test_float_likeK  s    r   c              	   C   s$   t t t| d W 5 Q R X d S )Nr}   )r0   r1   rr   r   )r~   r   r   r   test_not_float_likeT  s    r   g      @g      @c                 C   s   | j S r   r   r   r   r   r   r   Y  s    r   g	@y      @       @yffffff@        rX   y      ?        c                 C   s   | j S r   r   r   r   r   r   not_integer^  s    r   c                 C   s   t t| dtstt t| dddts,ttd dddd ksBtt | ttjfrt t| dddtsjttd ddddd kstd S )Nr   Trn   r}   r   r   )rH   r   r   r-   r   r   )r   r   r   r   test_int_likem  s    r   c              	   C   s$   t t t| d W 5 Q R X d S )Nr   )r0   r1   rr   r   )r   r   r   r   test_not_int_likev  s    r   r   r#    c                 C   s   | j S r   r   r   r   r   r   boolean{  s    r   c              	   C   sv   t t| dtsttd dddd ks*tt | trNt t| dddtsrtn$tt t| ddd W 5 Q R X d S )Nr   Trn   r   )rH   r   boolr-   r0   r1   rr   )r   r   r   r   test_bool_like  s    
r   c                	   C   s.   t t ttddgt W 5 Q R X d S )NT)r0   r1   rr   r   r   arrayr   r   r   r   r   test_not_bool_like  s    r   )0collectionsr   Znumpyr   Zpandasr   r0   Zstatsmodels.tools.validationr   r   r   r   r   r   r	   Z'statsmodels.tools.validation.validationr
   Zfixturer   r!   r"   rQ   rW   ri   rj   dictrk   rl   rq   rs   r{   r|   rE   r   r}   r   r~   r   r   r   complexZtimedelta64r   r   r   r   r   r   r   r   r   r   <module>   s\   $

 $

"

	 

	

