o
    dJX                     @   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!g d"d#d$ Zd%d& Zejd'd(eed)ed*d+g d,d-ed.gd/eejgd) d0gd) g d1d-gd2eejgd) d3gd) g d4d-ggd5d6 Zd7d8 Z d9d: Z!ejd;g d<d=gg d>d?ggd@dA Z"dBdC Z#dDdE Z$dFdG Z%ejdHeejdIdJgd?d=ejdKdIgfeejdIdJgd?d?ejdKdIgfeejdIdJgd=d=ejdKdLgfeejdIdJgd=d?ejdKdLgfedIejdJgd?d=dMejdIgfedIejdJgd?d?dKejdIgfedIejdJgd=d=dMejdLgfedIejdJgd=d?dKejdLgfeejdIejejdJejgd?d=ejdNejejdIejgfeejdIejejdJejgd?d?ejdKejejdIejgfeejdIejejdJejgd=d=ejdNejejdLejgfeejdIejejdJejgd=d?ejdKejejdLejgfedIejdJdOgd?d=dNejdKdIgfedIejdJdOgd?d?dMejdKdIgfedIejdJdOgd=d=dNejdPdQgfedIejdJdOgd=d?dMejdPdLgfgdRdS Z&dTdU Z'dVdW Z(ejdXg dYdZd[ Z)ejdd d\gejd]g d^d_d` Z*ejd]dadbgdcdd Z+ejdg d-ejd]dadbgdedf Z,ejd]dadbgdgdh Z-ejd]g didjdk Z.ejd]g didldm Z/dndo Z0dpdq Z1drds Z2ejdtdadbgdudv Z3dwdx Z4ejdydbdagejdzd?d=gd{d| Z5ejd}e6e7gd~d Z8ejdydbdagejdzd?d=gejd}e6e7g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   a/var/www/html/visualizacion-main/env/lib/python3.10/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 d    n1 sGw   Y  tjt|d |ddd W d    n1 sdw   Y  tjt|d |ddd W d    n1 sw   Y  d}tjt|d |dd W d    n1 sw   Y  d}tjt|d |dd W d    n1 sw   Y  d}tjt|d |dd W d    n1 sw   Y  d}dD ]}tjt|d ||d W d    n1 sw   Y  qd 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)frame_or_seriescmsgr   r   r   r   test_constructor   sJ   



r1   c                  C   sR   d} t jt| d ttdjtdd W d    d S 1 s"w   Y  d S )Nz%times must be datetime64\[ns\] dtype.r!   r   times)r+   r,   r-   r   r*   r   r   aranger0   r   r   r   !test_ewma_times_not_datetime_type>   s   "r6   c                  C   sX   d} t jt| d ttdjtddd W d    d S 1 s%w   Y  d S )Nz,times must be the same length as the object.r!   r   r	   datetime64[ns]r2   	r+   r,   r-   r   r*   r   r   r4   astyper5   r   r   r   test_ewma_times_not_same_lengthD   s   ""r:   c                  C   sZ   d} t jt| d ttdjdtddd W d    d S 1 s&w   Y  d S )Nz/halflife must be a timedelta convertible objectr!   r   r   r7   r   r3   r8   r5   r   r   r   #test_ewma_halflife_not_correct_typeJ   s   $"r<   c                 C   sL   d}t jt|d ttdj| d W d    d S 1 sw   Y  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_timesr0   r   r   r    test_ewma_halflife_without_timesP   s   "r>   r3   
   zdatetime64[D]r7   2000Dfreq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   rF   r3         ?)r   rF   )r   r4   r   r   r   r   tmassert_frame_equal)r=   r3   rF   r   datar   resultexpectedr   r   r   "test_ewma_with_times_equal_spacingV   s   

rP   c                 C   sZ   | }d}t g d|}td}t|}|j||d }tg d}t|| d S )Nz23 days)z
2020-01-01z2020-01-10T00:04:05z2020-02-23T05:00:23   r;   )        gE(?g*M?)	r   tz_localizer   r4   r   r   r   rK   rL   )tz_aware_fixturetzr   r3   rM   r   rN   rO   r   r   r   %test_ewma_with_times_variable_spacingi   s   
rV   c                 C   sZ   t td}tdg}tjtdd |jd| |d W d    d S 1 s&w   Y  d S )Nr   NaTz$Cannot convert NaT values to integerr!   皙?)r   r   r3   )r   r*   r   r+   r,   r-   r   )r=   serr3   r   r   r   test_ewm_with_nat_raisesv   s
   
"rZ   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 )NrG   r   r@   rA   r?   rB   rH   r   r;   rH   rJ   r   )	r   r4   r   r   r   r   r   rK   assert_series_equal)r=   r   rM   r3   r   rN   rO   r   r   r   test_ewm_with_times_getitem~   s   
r]   arg)r   r   r   r   c                    sr   | dd|d|i}t tdtddjd	i |  fdd jD } d } fdd|jD }||ks7J d S )
Nr   adjust	ignore_nar[   c                       i | ]}|t  |qS r   getattr.0attrr   r   r   
<dictcomp>       z8test_ewm_getitem_attributes_retained.<locals>.<dictcomp>rH   c                    ra   r   rb   rd   rg   r   r   rh      ri   r   )r   r*   r   _attributes)r^   r_   r`   kwargsrO   	ewm_slicerN   r   rg   r   $test_ewm_getitem_attributes_retained   s   "rm   c                	   C   sV   t jtdd ttdjddtddddd	 W d    d S 1 s$w   Y  d S )
Nz)times is not supported with adjust=False.r!   r   rX   Fr@   rA   rB   )r_   r3   )r+   r,   NotImplementedErrorr   r*   r   r   r   r   r   r   #test_ewma_times_adjust_false_raises   s   "ro   zfunc, expectedr   r   r	   	   )gZP۶@rp   gW$%@gd~$I(@g7m+@r   r   r   dtype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   rq   rr   r
   r   )r   axis)r   r*   r   rc   rK   rL   )funcrO   float_numpy_dtyper   erN   r   r   r   test_float_dtype_ewma   s   'r~   c                  C   sb   t tdtddddd} tjtdd | jd	d
dd W d    d S 1 s*w   Y  d S )NrG   r@   rA   r?   rB   )rH   time_colztimes must be datetime64r!   z1 dayr   r   rI   )r   r   r4   r   r+   r,   r-   r   r   r   r   r   test_times_string_col_raises   s   "r   c                  C   sR   t tdjddd} tjtdd |   W d    d S 1 s"w   Y  d S )Nr   Fr   r_   z
sum is notr!   )r   r*   r   r+   r,   rn   sum)rM   r   r   r   (test_ewm_sum_adjust_false_notimplemented   s   
"r   zexpected_data, ignore)rG         @g      @g     &@F)rG   r   r   g      )@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   r   rK   r\   )expected_dataignorerM   rN   rO   r   r   r   test_ewm_sum   s   r   c                  C   sF   t td} d| d< | jddd  }t|d dk s!J d S )Ni  r   r   d   F)r   r_   g{Gz?)r   r   zerosr   r   r   abs)valsrN   r   r   r   test_ewma_adjust   s   r   c                 C   sN   t g d}| rt g d}nt g d}|jd| |d }t|| d S )N)rJ          @g      @g       @)rJ   g?gʍ"k@gY;@)rJ   gRTU?gS@g	@r   r   r_   r`   )r   r   r   rK   r\   )r_   r`   srO   rN   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 )NrJ   r   r   r   r	   )r   r   r   r   r   rK   r\   len)r   rN   r   r   r   test_ewma_nan_handling   s   (&r   zs, adjust, ignore_na, wrJ   g     @Y@gVUUUUU?gUUUUUU?gqq?gj/?g      I@gqq?g|	%?c                 C   sp   |  | t|  jdd}| jd||d }t|| |du r6| jd|d }t|| d S d S )Nffill)methodr   r   Fr   )multiplycumsumr   fillnar   r   rK   r\   )r   r_   r`   wrO   rN   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   ry   (   gVR?r   gƷC?r   g_!@r   gXlWY?r   )
r   randomrandnr4   NaNr   r   r   rK   r\   )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 d    n1 s/w   Y  |j	dd |j	d	d d
}tjt|d |j	dd W d    n1 sZw   Y  tjt|d |j	dd W d    n1 sww   Y  tjt|d |j	dd W d    n1 sw   Y  |j	dd |j	dd d}tjt|d |j	dd W d    n1 sw   Y  tjt|d |j	dd W d    n1 sw   Y  |j	d	d d}tjt|d |j	dd W d    n	1 sw   Y  tjt|d |j	dd W d    n	1 s w   Y  |j	d	d |j	dd tjt|d |j	dd W d    d S 1 sKw   Y  d S )Nr   ry   r   r%   r!   gr   rR   rX   r'   r   g?rJ   g?r(   r   r)   r   )
r   r   r   r4   r   r   r+   r,   r-   r   )r   r   r   r0   r   r   r   test_ewm_domain_checks  sT   
$r   r   )r   rt   ru   c                 C   s4   t g tjd}|d}t||  }t|| d S )Nrr   rQ   )r   r   float64r   rc   rK   assert_almost_equal)r   r   r   rN   r   r   r   test_ew_empty_series  s   
r   r   name)r   ru   rt   c                 C   s  t jd}t j|d d< t j|dd < t|}t|jddd| }|d d   s/J |dd   	 r;J t|jd| d| }|dkrc|d d   sVJ |dd   	 rbJ n|d d   soJ |dd   	 r{J ttt
djd| d| }t|td	d ttd
gjd| d| }|dkrt|td
g n
t|tt jg ttt djdd| }|jt jksJ d S )N2   r?   r   r   rF   rx   r   rr   r   rJ   )rF   r   )r   r   r   r   r   rc   r   isnaallanyobjectrK   r\   r4   rs   float_)rF   r   r   r   rN   result2r   r   r   test_ew_min_periods  s*   r   cov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
  sAJ t	|j
d
d   rOJ d S )Nr   indexr   0   r?   r   ry   r   r      )r   r   r   r   r*   r   ilocrc   r   isnanvaluesr   r   )r   rH   r   rN   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	  sAJ t	|j
d	d   rOJ 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   ry   r   rx   rr   rJ   )r   r   r   r   r*   r   r   rc   r   r   r   r   r   r   rK   r\   )r   rF   rH   r   rN   emptyr   r   r   test_ewm_corr_cov_min_periods  s   r   c                 C   s~   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 d    d S 1 s8w   Y  d S )	Nr   r   r?   z#other must be a DataFrame or Seriesr!   ry   r   r   )r   r   r   r   r*   r   r+   r,   r-   rc   r   )r   rH   r0   r   r   r   *test_different_input_array_raise_exception4  s   ""r   )ru   rt   r   c                 C   &   t | jdd| }t|tsJ d S Nr?   r   )rc   r   
isinstancer   )seriesr   series_resultr   r   r   test_ewma_series?     r   c                 C   r   r   )rc   r   r   r   )framer   frame_resultr   r   r   test_ewma_frameE  r   r   c                 C   s   | j dd }| j dd }t|| d}tjt|d | j ddd W d    n1 s1w   Y  d}tjt|d |     W d    d S 1 sQw   Y  d S )	N      #@r   ry   r   r    r!   r   1Must pass one of comass, span, halflife, or alphar   r   rK   r   r+   r,   r-   r   rH   r   r0   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 d    n1 s1w   Y  tjt|d | j d
dd W d    n1 sOw   Y  tjt|d | j d
ddd W d    n1 snw   Y  d}tjt|d |    W d    d S 1 sw   Y  d S )NgH+@r   rG   r   r    r!   ry   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 d    n1 sw   Y  d}t jt|d |jddd W d    n1 s:w   Y  t jt|d |jddd W d    n1 sXw   Y  t jt|d |jddd W d    d S 1 sww   Y  d S )	Nr   r!   r    rG   r
   r#   )r   r   r   )r+   r,   r-   r   )r   r   r0   r   r   r   test_ewm_alpha_argh  s   
"r   r{   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   rF   r   F)check_names)rc   r   locslicer   	droplevelrK   r\   )r{   r   rN   rO   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 urT||d}|r0dd	gng d}|| |gjd
dt}t|j	|ksLJ t
|| d S d S )Nr   r   rQ   r   r   r/   r/   r   numeric_onlyr   r   Tdrop)r   r9   r   r   rc   aggreset_indexfloatlistcolumnsrK   rL   )	arithmetic_win_operatorsr   kernelr   r   oprN   r   rO   r   r   r   test_numeric_only_frame  s   
r   r   use_argc                 C   s   t g dddd}|d t|d< |r|fnd}|jddd}t|| }||d	|i}|r3d
dgng d}|| t}	|rC|	fnd}
|	jddd}t|| }||
d	|i}t|| d S )Nr   r   rQ   r   rQ   r   r/   r   r   r   r   r   r   )r   r9   r   r   rc   r   rK   rL   )r   r   r   r   r^   r   r   rN   r   df2arg2ewm2op2rO   r   r   r    test_numeric_only_corr_cov_frame  s   

r   rs   c           
      C   s   | }t dg|d}|jddd}t||d }|d u rd S |rG|tu rGd| d}tjt|d ||d W d    d S 1 s@w   Y  d S ||d}||gjd	d
	t
}	t||	 d S )Nr   rr   r   r   ExponentialMovingWindow.  does not implement numeric_onlyr!   r   Tr   )r   r   rc   r   r+   r,   rn   r   r   r9   r   rK   r\   )
r   r   rs   r   rY   r   r   r0   rN   rO   r   r   r   test_numeric_only_series  s   "
r   c                 C   s   t g d|d}|r|fnd}|jddd}t|| }|rH|tu rHd|  d}tjt|d	 ||d
|i W d    d S 1 sAw   Y  d S ||d
|i}	|t}
|rY|
fnd}|
jddd}t|| }||d
|i}t	
|	| d S )Nr   rr   r   r   r   r   r   r   r!   r   )r   r   rc   r   r+   r,   rn   r9   r   rK   r\   )r   r   r   rs   rY   r^   r   r   r0   rN   ser2r   r   r   rO   r   r   r   !test_numeric_only_corr_cov_series  s    
"

r   ):numpyr   r+   pandasr   r   r   r   pandas._testing_testingrK   r   r1   r6   r:   r<   r>   markparametrizer4   r9   rS   rP   rV   rZ   r]   rm   ro   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   intr   r   r   r   r   r   r   <module>   s   +






$	
	








 
	)
)



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