U
    Ãmœd%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s˜t‚t|ddd	d�}|jdks¶t‚|jd	ksÄt‚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s€t‚t|dddd�}|jdksžt‚t|dddd�}|jdks¼t‚t|ddd	d�}|jdksÚt‚t|dd
d�}|jd
ksöt‚|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s‚t‚t|dd	d�}|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 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s˜t‚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s€t‚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s„t‚t|ƒj|dgd�}t||ƒs¦t‚| r¸|j	dks¸t‚| rÂtj
ntj}t|ƒ |d d …d f ¡}t||ƒsðt‚| �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‚| �rÐd}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s t‚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s t‚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ƒrˆt t| ddd�tƒspt‚td dddd�d ksˆt‚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ƒr‚t t| ddd�tƒsjt‚td dddd�d ks‚t‚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\   $

 $

"

	 
ùÿ
	

