U
    -eJX                     @   s  d dl Zd dlZd dlmZmZmZmZ d dlm	Z
 dd Zdd Zdd Zd	d
 Zdd Zdd Zejdedddeddddedddddgejdd dgdd Zdd Zdd Zdd  Zejd!d"d#d$d%gd&d' Zd(d) Zejd*d+eed,ed-d.d/d.d0d1d2gd3ed4gd5eejgd, d6gd, d7d8d9d:d;gd3gd<eejgd, d=gd, d>d?d@dAdBgd3ggdCdD ZdEdF Z dGdH Z!ejdIdJdKdLdMgdNgdJdKdKdOgdPggdQdR Z"dSdT Z#dUdV Z$dWdX Z%ejdYeejdZd[gdPdNejd\dZgfeejdZd[gdPdPejd\dZgfeejdZd[gdNdNejd\d]gfeejdZd[gdNdPejd\d]gfedZejd[gdPdNd^ejdZgfedZejd[gdPdPd\ejdZgfedZejd[gdNdNd^ejd]gfedZejd[gdNdPd\ejd]gfeejdZejejd[ejgdPdNejd_ejejdZejgfeejdZejejd[ejgdPdPejd\ejejdZejgfeejdZejejd[ejgdNdNejd_ejejd]ejgfeejdZejejd[ejgdNdPejd\ejejd]ejgfedZejd[d`gdPdNd_ejd\dZgfedZejd[d`gdPdPd^ejd\dZgfedZejd[d`gdNdNd_ejdadbgfedZejd[d`gdNdPd^ejdad]gfgdcdd Z&dedf Z'dgdh Z(ejdid+d5d<gdjdk Z)ejdd dlgejdmd+d<d5gdndo Z*ejdmdpdqgdrds Z+ejdd dldgejdmdpdqgdtdu Z,ejdmdpdqgdvdw Z-ejdmd<d5d+gdxdy Z.ejdmd<d5d+gdzd{ Z/d|d} Z0d~d Z1dd Z2ejddpdqgdd Z3dd Z4ejddqdpgejddPdNgdd Z5ejde6e7gdd Z8ejddqdpgejddPdNgejde6e7gdd Z9dS )    N)	DataFrameDatetimeIndexSeries
date_rangec                  C   s0   t ddddtjdgi} |  | jdd  d S )NBr                  ?com)r   npnanewmmeandf r   ]/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/pandas/tests/window/test_ewm.pytest_doc_string   s    r   c              
   C   s  | t dj}|dd |dd |dd |dd |dd d	 |dd d
 |dd d d}tjt|d |ddd W 5 Q R X tjt|d |ddd W 5 Q R X tjt|d |ddd W 5 Q R X d}tjt|d |dd W 5 Q R X d}tjt|d |dd W 5 Q R X d}tjt|d |dd W 5 Q R X d}dD ]*}tjt|d ||d W 5 Q R X qPd S )N   r
   r         ?spanalphag      ?halflifer   r   )r   r   r   r   8comass, span, halflife, and alpha are mutually exclusivematchr   r   r   r   )r   r    comass must satisfy: comass >= 0      span must satisfy: span >= 1#halflife must satisfy: halflife > 0r   "alpha must satisfy: 0 < alpha <= 1)r&   r   )ranger   pytestraises
ValueError)Zframe_or_seriescmsgr   r   r   r   test_constructor   s8    



r0   c               	   C   s<   d} t jt| d  ttdjtdd W 5 Q R X d S )Nz%times must be datetime64\[ns\] dtype.r!   r   times)r+   r,   r-   r   r*   r   r   aranger/   r   r   r   !test_ewma_times_not_datetime_type>   s    r5   c               	   C   sB   d} t jt| d& ttdjtddd W 5 Q R X d S )Nz,times must be the same length as the object.r!   r   r	   datetime64[ns]r1   	r+   r,   r-   r   r*   r   r   r3   astyper4   r   r   r   test_ewma_times_not_same_lengthD   s    r9   c               	   C   sD   d} t jt| d( ttdjdtddd W 5 Q R X d S )Nz/halflife must be a timedelta convertible objectr!   r   r   r6   r   r2   r7   r4   r   r   r   #test_ewma_halflife_not_correct_typeJ   s    r;   c              	   C   s6   d}t jt|d ttdj| d W 5 Q R X d S )NzKhalflife can only be a timedelta convertible argument if times is not None.r!   r   r   )r+   r,   r-   r   r*   r   )halflife_with_timesr/   r   r   r    test_ewma_halflife_without_timesP   s    r=   r2   
   zdatetime64[D]r6   2000DfreqZperiodsUTCmin_periodsr   c                 C   s`   | }t d}t j|d d d< td|i}|j|||d }|jd|d }t|| d S )N      $@r   Ar   rD   r2         ?)r   rD   )r   r3   r   r   r   r   tmassert_frame_equal)r<   r2   rD   r   datar   resultexpectedr   r   r   "test_ewma_with_times_equal_spacingV   s    

rN   c                 C   s^   | }d}t dddg|}td}t|}|j||d }tddd	g}t|| d S )
Nz23 daysz
2020-01-01z2020-01-10T00:04:05z2020-02-23T05:00:23   r:           gE(?g*M?)	r   tz_localizer   r3   r   r   r   rI   rJ   )Ztz_aware_fixturetzr   r2   rK   r   rL   rM   r   r   r   %test_ewma_with_times_variable_spacingi   s    
rS   c              	   C   sD   t td}tdg}tjtdd |jd| |d W 5 Q R X d S )Nr   ZNaTz$Cannot convert NaT values to integerr!   皙?)r   r   r2   )r   r*   r   r+   r,   r-   r   )r<   serr2   r   r   r   test_ewm_with_nat_raisesv   s    
rV   c                 C   st   | }t d}t j|d d d< tdddd}t||d}|j||dd	  }|jd
dd	  }t|| d S )NrE   r   r?   r@   r>   rA   rF   r   r:   rF   rH   r   )	r   r3   r   r   r   r   r   rI   assert_series_equal)r<   r   rK   r2   r   rL   rM   r   r   r   test_ewm_with_times_getitem~   s    
rY   argr   r   r   r   c                    sn   | dd|d|i}t tdtddjf |  fdd jD } d } fdd|jD }||ksjtd S )	Nr   adjust	ignore_narW   c                    s   i | ]}|t  |qS r   getattr.0attrr   r   r   
<dictcomp>   s      z8test_ewm_getitem_attributes_retained.<locals>.<dictcomp>rF   c                    s   i | ]}|t  |qS r   r]   r_   rb   r   r   rc      s      )r   r*   r   _attributesAssertionError)rZ   r[   r\   kwargsrM   Z	ewm_slicerL   r   rb   r   $test_ewm_getitem_attributes_retained   s    rg   c                	   C   s@   t jtdd( ttdjddtddddd	 W 5 Q R X d S )
Nz)times is not supported with adjust=False.r!   r   rT   Fr?   r@   rA   )r[   r2   )r+   r,   NotImplementedErrorr   r*   r   r   r   r   r   r   #test_ewma_times_adjust_false_raises   s       ri   zfunc, expectedr   r   r	   	   gZP۶@gW$%@gd~$I(@g7m+@r   r   r   dtypeZstdgɬv@gW2@g.@g> @g@gG@varg      2@g=Զm5@   gˁj۶@@g@m[D@ggܶmH@c                 C   sP   t tdtddtdddd|d}|jd	d
d}t||  }t|| d S )Nr         r>      r   rk   rl   r
   r   )r   Zaxis)r   r*   r   r^   rI   rJ   )funcrM   Zfloat_numpy_dtyper   erL   r   r   r   test_float_dtype_ewma   s    ' ru   c               	   C   sL   t tdtddddd} tjtdd | jd	d
dd W 5 Q R X d S )NrE   r?   r@   r>   rA   )rF   time_colztimes must be datetime64r!   z1 dayr   rv   rG   )r   r   r3   r   r+   r,   r-   r   r   r   r   r   test_times_string_col_raises   s
    rw   c               	   C   s<   t tdjddd} tjtdd |   W 5 Q R X d S )Nr   Fr   r[   z
sum is notr!   )r   r*   r   r+   r,   rh   sum)rK   r   r   r   (test_ewm_sum_adjust_false_notimplemented   s    rz   zexpected_data, ignorerE   g      @g      @g     &@Fg      )@Tc                 C   s<   t ddtjdg}|jd|d }t | }t|| d S )Nr>   r   r
   )r   r\   )r   r   r   r   ry   rI   rX   )Zexpected_dataignorerK   rL   rM   r   r   r   test_ewm_sum   s    r|   c                  C   sF   t td} d| d< | jddd  }t|d dk sBtd S )Ni  r   r   d   F)r   r[   g{Gz?)r   r   Zzerosr   r   ry   absre   )valsrL   r   r   r   test_ewma_adjust   s    r   c                 C   sZ   t ddddg}| r&t ddddg}nt ddd	d
g}|jd| |d }t|| d S )NrH          @g      @g       @g?gʍ"k@gY;@gRTU?gS@g	@r   r[   r\   )r   r   r   rI   rX   )r[   r\   srM   rL   r   r   r   test_ewma_cases   s    r   c                  C   s   t dgtjgd  dg } | jdd }t|t dgt|   t tjgd dg tjgd  dg } | jdd }t|t tjgd dgd   d S )NrH   r   r   r   r	   )r   r   r   r   r   rI   rX   len)r   rL   r   r   r   test_ewma_nan_handling   s    (r   zs, adjust, ignore_na, wrH   g     @Y@gVUUUUU?gUUUUUU?gqq?gj/?g      I@gqq?g|	%?c                 C   sl   |  | t|  jdd}| jd||d }t|| |dkrh| jd|d }t|| d S )NZffill)methodr   r   Frx   )multiplyZcumsumr   Zfillnar   r   rI   rX   )r   r[   r\   wrM   rL   r   r   r   test_ewma_nan_handling_cases
  s     "r   c                  C   s   t jd} t dd}t j| |< t| }|jdd }|jdd }|jdd	 }|jd
d }t	|| t	|| t	|| d S )Nr}   rr   (   gVR?r   gƷC?r   g_!@r   gXlWY?r   )
r   randomrandnr3   NaNr   r   r   rI   rX   )arrlocsr   abr.   dr   r   r   test_ewm_alpha  s    
r   c               	   C   s  t jd} t dd}t j| |< t| }d}tjt|d |j	dd W 5 Q R X |j	dd |j	d	d d
}tjt|d |j	dd W 5 Q R X tjt|d |j	dd W 5 Q R X tjt|d |j	dd W 5 Q R X |j	dd |j	dd d}tjt|d |j	dd W 5 Q R X tjt|d |j	dd W 5 Q R X |j	d	d d}tjt|d |j	dd W 5 Q R X tjt|d |j	dd W 5 Q R X |j	d	d |j	dd tjt|d |j	dd W 5 Q R X d S )Nr}   rr   r   r%   r!   gr   rP   rT   r'   r   g?rH   g?r(   r   r)   r   )
r   r   r   r3   r   r   r+   r,   r-   r   )r   r   r   r/   r   r   r   test_ewm_domain_checks  sB    
r   r   c                 C   s4   t g tjd}|d}t||  }t|| d S )Nrl   rO   )r   r   float64r   r^   rI   assert_almost_equal)r   r   r   rL   r   r   r   test_ew_empty_series  s    
r   r   namec                 C   s  t jd}t j|d d< t j|dd < t|}t|jddd| }|d d   s^t	|dd   
 rvt	t|jd| d| }|dkr|d d   st	|dd   
 rt	n0|d d   st	|dd   
 rt	tttdjd| d| }t|td	d ttd
gjd| d| }|dkr^t|td
g nt|tt jg ttt djdd| }|jt jkst	d S )N2   r>   r   r   rD   rq   r   rl   r   rH   )rD   r   )r   r   r   r   r   r^   r   Zisnaallre   anyobjectrI   rX   r3   rm   Zfloat_)rD   r   r   r   rL   Zresult2r   r   r   test_ew_min_periods  s*    
r   ZcovZcorrc                 C   s   t tjdtdd}|dd  tjd }tj|d d< tj|jdd < t|jddd	| |}t	|j
d d
  stt	|j
d
d   rtd S )Nr   indexr   0   r>   r   rr   r   r      )r   r   r   r   r*   r   ilocr^   r   isnanvaluesr   re   r   )r   rF   r   rL   r   r   r   test_ewm_corr_cov  s    r   c                 C   s  t tjdtdd}|dd  tjd }tj|d d< tj|jdd < t|jd|d| |}t	|j
d d	  stt	|j
d	d   rtt g tjd
}t|jd|d| |}t|| tt dgjd|d| t dg}t|t tjg d S )Nr   r   r   r   r>   r   rr   r   rq   rl   rH   )r   r   r   r   r*   r   r   r^   r   r   r   r   re   r   r   rI   rX   )r   rD   rF   r   rL   emptyr   r   r   test_ewm_corr_cov_min_periods  s    r   c              	   C   sh   t tjdtdd}tj|d d< d}tjt|d& t	|j
ddd| tjd W 5 Q R X d S )	Nr   r   r>   z#other must be a DataFrame or Seriesr!   rr   r   r   )r   r   r   r   r*   r   r+   r,   r-   r^   r   )r   rF   r/   r   r   r   *test_different_input_array_raise_exception4  s
    r   c                 C   s&   t | jdd| }t|ts"td S Nr>   r   )r^   r   
isinstancer   re   )seriesr   Zseries_resultr   r   r   test_ewma_series?  s    r   c                 C   s&   t | jdd| }t|ts"td S r   )r^   r   r   r   re   )framer   Zframe_resultr   r   r   test_ewma_frameE  s    r   c              	   C   s   | j dd }| j dd }t|| d}tjt|d | j ddd W 5 Q R X d}tjt|d |     W 5 Q R X d S )	N      #@r   rr   r   r    r!   r   1Must pass one of comass, span, halflife, or alphar   r   rI   r   r+   r,   r-   r   rF   r   r/   r   r   r   test_ewma_span_com_argsK  s    r   c              	   C   s   | j dd }| j dd }t|| d}tjt|d | j ddd	 W 5 Q R X tjt|d | j d
dd W 5 Q R X tjt|d | j d
ddd W 5 Q R X d}tjt|d |    W 5 Q R X d S )NgH+@r   rE   r   r    r!   rr   r   r$   r   )r   r   )r   r   r   r   r   r   r   r   r   test_ewma_halflife_argX  s    r   c              	   C   s   | }d}t jt|d |  W 5 Q R X d}t jt|d |jddd W 5 Q R X t jt|d |jddd W 5 Q R X t jt|d |jddd W 5 Q R X d S )	Nr   r!   r    rE   r
   r#   )r   r   r   )r+   r,   r-   r   )r   r   r/   r   r   r   test_ewm_alpha_argh  s    r   rs   c                 C   sn   t |jddd|  }|jtd dfdf }|jd|_t |d jddd| |d }tj||dd d S )Nr>   r   r   rD   r   F)Zcheck_names)r^   r   locslicer   Z	droplevelrI   rX   )rs   r   rL   rM   r   r   r   test_ewm_pairwise_cov_corrx  s
     r   c           	      C   s   | }t dgddd}|d t|d< |jddd}t||d }|d k	r||d}|r`dd	gndd	dg}|| |gjd
dt}t|j	|kst
t|| d S )Nr   r   rO   r   r   r.   r.   r   numeric_onlyr   r   TZdrop)r   r8   r   r   r^   aggreset_indexfloatlistcolumnsre   rI   rJ   )	arithmetic_win_operatorsr   kernelr   r   oprL   r   rM   r   r   r   test_numeric_only_frame  s    
r   r   use_argc                 C   s   t dddgddd}|d t|d< |r2|fnd}|jddd}t|| }||d|i}|rhd	d
gnd	d
dg}|| t}	|r|	fnd}
|	jddd}t|| }||
d|i}t|| d S )Nr   r   rO   r   r.   r   r   r   r   r   )r   r8   r   r   r^   r   rI   rJ   )r   r   r   r   rZ   r   r   rL   r   Zdf2arg2ewm2op2rM   r   r   r    test_numeric_only_corr_cov_frame  s    

r   rm   c           
   	   C   s   | }t dg|d}|jddd}t||d }|d kr8d S |rv|tkrvd| d}tjt|d ||d W 5 Q R X n0||d}||gjd	d
	t
}	t||	 d S )Nr   rl   r   r   ExponentialMovingWindow.  does not implement numeric_onlyr!   r   Tr   )r   r   r^   r   r+   r,   rh   r   r   r8   r   rI   rX   )
r   r   rm   r   rU   r   r   r/   rL   rM   r   r   r   test_numeric_only_series  s    
r   c              	   C   s   t dddg|d}|r|fnd}|jddd}t|| }|rz|tkrzd|  d}tjt|d	 ||d
|i W 5 Q R X nX||d
|i}	|t}
|r|
fnd}|
jddd}t|| }||d
|i}t	
|	| d S )Nr   r   rO   rl   r   r   r   r   r!   r   )r   r   r^   r   r+   r,   rh   r8   r   rI   rX   )r   r   r   rm   rU   rZ   r   r   r/   rL   Zser2r   r   r   rM   r   r   r   !test_numeric_only_corr_cov_series  s    


r   ):numpyr   r+   Zpandasr   r   r   r   Zpandas._testingZ_testingrI   r   r0   r5   r9   r;   r=   markZparametrizer3   r8   rQ   rN   rS   rV   rY   rg   ri   r*   r   r   ru   rw   rz   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   intr   r   r   r   r   r   r   <module>   s  +





$
	
	








 	
)
)






