U
    md%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   k/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/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)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-   )r5   r   r6   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 )Nr8   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   r9   r   r:   za must have ndim <= 2)r"   r   r(   r.   r'   r/   r   r0   r1   r2   r3   )r5   r6   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$   r8   r&   r   )r   r   r   )r   r   )r   r   r   r   )r   r   r   r   r   r   )r   r   r   r(   r.   r1   r2   r3   )r5   r6   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.   )r5   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   float32rE   r.   Zuint8)r5   rB   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.   r4   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   r0   r.   r4   r   r   r   
test_slice   s    
zTestArrayLike.test_sliceN)__name__
__module____qualname__r7   r;   r>   r?   rD   rG   r1   markZxfailrL   rM   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.   )rB   rC   r   r   r   test_right_squeeze   s    



rR   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   r0   rI   r.   rS   r   rT   r1   r2   r3   r(   )r   r$   bwrappedexpected_typer,   r   r   r   test_wrap_pandas   s4    

 &rY   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   rb      s     	r"   rS   r   rU   r.   ranger(   rT   listr$   rV   rW   expectedr   r   r   test_wrap_pandas_append   s    



rk   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=   Fr[   r\   Z
7_appendedr   c                 S   s   g | ]}|qS r   r   r_   r   r   r   rb      s     z6test_wrap_pandas_append_non_string.<locals>.<listcomp>c                 S   s   g | ]}| d qS rc   r   rd   r   r   r   rb      s     rf   ri   r   r   r   "test_wrap_pandas_append_non_string   s    



rl   c                   @   s   e Zd ZdS )
CustomDictN)rN   rO   rP   r   r   r   r   rm     s   rm   c                 C   s   | j S r   r   r   r   r   r   	dict_type  s    rn   c                 C   s6   | d k	r|  n| }t |ddd}t|t|s2td S )NvalueToptional)r   rI   r/   r.   )rn   valr!   r   r   r   test_optional_dict_like
  s    rs   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+   ro   Trp   r$   )r1   r2   	TypeErrorr   r+   r   r   r   test_optional_dict_like_error  s    ru   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 )NrZ   ro   rZ   bananaZcherryoptionsvalue must be a stringr+   r      4z1value must be one of: 'apple', 'banana', 'cherry'date)r	   r.   r1   r2   rt   r3   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 )NrZ   ro   rv   rx   Trp   )rq   ry   rz   r+   r   r{   )r	   r.   r1   r2   rt   r}   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   Trp   strictrq   r   )rI   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   )r1   r2   rt   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@        rZ   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   Trp   r   r   r   )rI   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   )r1   r2   rt   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   Trp   r   )rI   r   boolr.   r1   r2   rt   )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)r1   r2   rt   r   r   arrayr   r   r   r   r   test_not_bool_like  s    r   )0collectionsr   numpyr   Zpandasr   r1   Zstatsmodels.tools.validationr   r   r   r   r   r   r	   Z'statsmodels.tools.validation.validationr
   Zfixturer   r"   r#   rR   rY   rk   rl   dictrm   rn   rs   ru   r~   r   rF   r   r   r   r   r   r   r   complexZtimedelta64r   r   r   r   r   r   r   r   r   r   <module>   s\   $

 $

"

	 

	

