U
    *if2Q                     @   sB  d dl Zd dlZd dlmZ d dlmZmZmZm	Z	m
Z
mZmZ d dlmZ d dlmZ dd Zejddd	 Zejd
ddedggejddd Zejdddddddgdd Zejddejdejjdddg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,gd-d.d/gd0dgd-gd0d gfddgd-d.gd0d dgfddd,gd-d.d/gd0d ddgfgd,feddd,gd-d.d/gd0dgd-gd0d gfddgd-d.gd0d dgfddd,gd-d.d/gd0d ddgfgdfeddd,gd-d.d/gd0dgd-gd0d gfddgd-d.gd0d dgfddd,gd-d.d/gd0d ddgfgdfedgd-gd0g dfe i g fgdfedej"d,gej"d.d/gd0d1gej"gd0d gfdej"gej"d.gd0d dgfdej"d,gej"d.d/gd0d ddgfgd,fedej"d,gej"d.d/gd0d1gej"gd0d gfdej"gej"d.gd0d dgfdej"d,gej"d.d/gd0d ddgfgdfedej"d,gej"d.d/gd0d1gej"gd0d gfdej"gej"d.gd0d dgfdej"d,gej"d.d/gd0d ddgfgdfgd2d3 Z#ejd4e
ddd,gdgd gfddgd dgfddd,gd ddgfgd,fe
ddd,gdgd gfddgd dgfddd,gd ddgfgdfe
ddd,gdgd gfddgd dgfddd,gd ddgfgdfe
ddgdgd gfddgd dgfgdfe
ej"dgej"gd gfej"dgd dgfgdfe
g d5d6g dfgd7d8 Z$d9d: Z%d;d< Z&ejdd=d>gd?d@ Z'ejdAdd,dBdCgejddddDgejdEdFdGgejdHdFdGgejdIdJdKdLgdMdN Z(dOdP Z)dQdR Z*dSdT Z+dUdV Z,dWdX Z-dYdZ Z.ejjd[dej/fdd\d] fdd^d] fdd_d] fgddddgd`dadb Z0ejjd[dej/fdej1fdej2fdej3fgddddgd`dcdd Z4dedf Z5dgdh Z6ejdidjd] dkd] gdldm Z7ejdidnd] dod] dpd] dqd] drd] dsd] dtd] dud] dvd] dwd] dxd] dyd] dzd] d{d] d|d] gd}d~ Z8dd Z9dd Z:dd Z;dd Z<dd Z=dd Z>dd Z?dS )    N)UnsupportedFunctionCall)	DataFrameDatetimeIndexIndex
MultiIndexSeriesisnanotna)	Expandingc                  C   s.   t ddddtjdgi} |  | d  d S )NBr            )r   npnan	expandingsumdf r   U/home/mars/bis/venv/lib/python3.8/site-packages/pandas/tests/window/test_expanding.pytest_doc_string   s    r   zIignore:The `center` argument on `expanding` will be removed in the futurec                 C   s4   | t dj}|dd |ddd |ddd d S )N   r   min_periodsTr   centerF)ranger   )frame_or_seriescr   r   r   test_constructor   s    
r    w       @foor   c              	   C   sd   | t dj}d}tjt|d ||d W 5 Q R X d}tjt|d |d|d W 5 Q R X d S )Nr   zmin_periods must be an integermatchr   zcenter must be a booleanr   r   )r   r   pytestraises
ValueError)r   r!   r   msgr   r   r   test_constructor_invalid(   s    r*   methodstdmeanr   maxminvarc              	   C   sr   t tdddg}d}tjt|d t|| ddd W 5 Q R X tjt|d t|| tjd W 5 Q R X d S )	Nr   r      z2numpy operations are not valid with window objectsr$   r      dtype)r
   r   r&   r'   r   getattrr   float64)r+   er)   r   r   r   test_numpy_compat9   s    r8   expanderr   Zlsz,GH#16425 expanding with offset not supported)reason)Zmarksc                 C   sX   t  }t  |  }t|| t tg d}t tg d|  }t|| d S )Nindex)r   r   r   tmassert_frame_equalr   )r9   expectedresultr   r   r   test_empty_df_expandingF   s    rA   c                  C   s^   t tjg} | jdd }t dg}t|| | jdd }t tjg}t|| d S )Nr   r   g        r   )r   r   r   r   r   r=   assert_series_equal)xr@   r?   r   r   r   test_missing_minp_zeroa   s    
rD   c                 C   s   t td}|| }|dkr8t dd tdD }n*t tjgd dd td	d
D  gd }|jd	| d }t	|| d S )N)
      r   c                 S   s.   i | ]&}|t jgd  dd tddD  qS )r   c                 S   s   g | ]}t |qS r   float).0jr   r   r   
<listcomp>v   s     z2test_expanding_axis.<locals>.<dictcomp>.<listcomp>r2      )r   r   r   rI   ir   r   r   
<dictcomp>v   s      z'test_expanding_axis.<locals>.<dictcomp>rF   r   c                 S   s   g | ]}t |qS r   rG   rM   r   r   r   rK   z   s     z'test_expanding_axis.<locals>.<listcomp>r2      rE   axis)
r   r   ZonesZ_get_axis_numberr   r   r   r   r=   r>   )Z
axis_framer   rR   r?   r@   r   r   r   test_expanding_axiso   s    
*rS   c                 C   s>   | t djdd }| tjtjdddg}t|| d S )Nr   r2   r         @      @      @r   r   countr   r   r=   assert_equalr   r@   r?   r   r   r   %test_expanding_count_with_min_periods   s    r[   c                 C   sN   dddt jdddg}ddd	d	d
ddg}| |  }| |}t|| d S )Nr   r   r2   r   r   r1         ?r"   rT   rU   rV   g      @)r   r   r   rX   r=   rY   )r   valuesZexpected_countsr@   r?   r   r   r   9test_expanding_count_default_min_periods_with_null_values   s
    r^   c                 C   sD   | t djdd }| tjtjtjtjtjg}t|| d S )Nr   r1   r   rW   rZ   r   r   r   =test_expanding_count_with_min_periods_exceeding_series_length   s    r_   zdf,expected,min_periodsr2   r   r   r1   )Ar   r\   c                 C   s8   dd |D }t || |D ]\}}t|| qd S )Nc                 S   s   g | ]\}}t ||d qS r;   )r   rI   r]   r<   r   r   r   rK      s     z1test_iter_expanding_dataframe.<locals>.<listcomp>)zipr   r=   r>   )r   r?   r   actualr   r   r   test_iter_expanding_dataframe   s    ?re   zser,expected,min_periodsZint64r3   c                 C   s8   dd |D }t || |D ]\}}t|| qd S )Nc                 S   s   g | ]\}}t ||d qS ra   )r   rb   r   r   r   rK      s     z.test_iter_expanding_series.<locals>.<listcomp>)rc   r   r=   rB   )serr?   r   rd   r   r   r   test_iter_expanding_series   s    rg   c               	   C   sl   t  } tt | jdd W 5 Q R X tt | jdd W 5 Q R X td  |   W 5 Q R X d S )NT)r   F)r   r=   Zassert_produces_warningFutureWarningr   r   r   r   r   test_center_deprecate_warning   s    ri   c                 C   sX   | dddg}|   }t|tr2t|d j}ttjgdgd  }t	|| d S )Nr   r   r   g۞?)
r   Zsem
isinstancer   r   r]   r   r   r=   rB   )r   objr@   r?   r   r   r   test_expanding_sem   s    
rl   skewkurtc                 C   sL   t tjd}t|d|  }|d }t|d|  }t|| d S )NrE   r2   i  )r   r   randomrandr5   r   r=   rB   )r+   sr?   r@   r   r   r   ,test_expanding_skew_kurt_numerical_stability  s
    rr   windowrE   rF   ZaveragepctTF	ascending	test_datadefault
duplicatesnansc           	   	      s   d}|dkr t tj|d}nN|dkr>t tjd|d}n0|dkrnt tjddd	tjtjtj g|d}||  fd
d}|| j	 d}t
|| d S )NrF   rw   )datarx   r2   ry   r\   g      ?g      ?c                    s   | j  djd S )Nr+   rt   ru   )rankilocrC   ru   r+   rt   r   r   <lambda>"      ztest_rank.<locals>.<lambda>r{   )r   r   ro   rp   choicer   infr   applyr}   r=   rB   )	rs   r+   rt   ru   rv   lengthrf   r?   r@   r   r   r   	test_rank  s     
r   c                 C   sZ   |   }|tjt| d d }| |}|jt|dd|}t	|| d S Nr   rs   r   )
Zdropnar   ro   randnlenr   corrrollingr=   assert_almost_equalseriesr`   r   r@   rolling_resultr   r   r   test_expanding_corr)  s
    r   c                 C   s2   | j dd }t|| jt| dd  d S )Nr   r   r   )r   rX   r=   r   r   r   )r   r@   r   r   r   test_expanding_count4  s
     r   c                 C   s6   |   d}| jt| ddd}t|| d S )N      ?r   r   )r   quantiler   r   r=   r   )r   r@   r   r   r   r   test_expanding_quantile;  s    r   c                 C   sV   | }|t jt| d d }| |}|jt|dd|}t|| d S r   )	r   ro   r   r   r   covr   r=   r   r   r   r   r   test_expanding_covC  s
    r   c                 C   s2   |    }| jt| dd }t|| d S Nr   r   )r   r   r   r   r=   r>   framer@   r   r   r   r   test_expanding_cov_pairwiseN  s    r   c                 C   s2   |    }| jt| dd }t|| d S r   )r   r   r   r   r=   r>   r   r   r   r   test_expanding_corr_pairwiseV  s    r   zfunc,static_compc                 C   s   t j| ddS Nr   rQ   r   r-   r   r   r   r   r   a  r   r   c                 C   s   t j| ddS r   )r   r.   r   r   r   r   r   b  r   c                 C   s   t j| ddS r   )r   r/   r   r   r   r   r   c  r   )Zidsc                 C   s   |t ttdt jgd  }t|jddd|  }t||sFt||d d }|t	krpt
|d | nt
j|jd |dd d S )NrE   r   r   r   rR   rL   FZcheck_names)r   arraylistr   r   r5   r   rj   AssertionErrorr   r=   r   rB   r~   )funcstatic_compr   rz   r@   r?   r   r   r   test_expanding_func]  s    "r   c                 C   sL  t tjd}t|jddd|  }|d d   s>tt	
|jd ||d d  t|jddd|  }t|jd stt|jd	 stt tjd
}t|jddd|  }t|d stt|d stt|jddd|  }t|jddd|  }t	
|| t|jddd|  }t	
|jd ||d d  d S )N2      r   r      r|            rF   r   r2   r   r   )r   r   ro   r   r5   r   r   allr   r=   r   r~   r	   )r   r   rf   r@   ser2result0result1r   r   r   test_expanding_min_periodss  s     r   c                 C   s   | \}}|t ttdt jgd  }|jddjdd ||d}t||sTt|t	krt
|d t j|d d d	d
 n(t
j|jd t j|d d d	d
dd d S )NrE   r   r   c                 S   s   |   S Nr-   r   r   r   r   r     r   z&test_expanding_apply.<locals>.<lambda>rawengine	   rL   r   rQ   Fr   )r   r   r   r   r   r   r   rj   r   r   r=   r   r-   rB   r~   )engine_and_rawr   r   r   rz   r@   r   r   r   test_expanding_apply  s    "  $  r   c                 C   s|  | \}}t tjd}|jddjdd ||d}|d d   sLtt	
|jd t|d d  |jd	djd
d ||d}t|jd stt|jd stt tjd}|jddjdd ||d}t|d stt|d st|jddjdd ||d}|jddjdd ||d}t	
|| |jddjdd ||d}t	
|jd t|d d  d S )Nr   r   r   c                 S   s   |   S r   r   r   r   r   r   r     r   z2test_expanding_min_periods_apply.<locals>.<lambda>r   r   r|   r   c                 S   s   |   S r   r   r   r   r   r   r     r   r   r   rF   r   c                 S   s   |   S r   r   r   r   r   r   r     r   r2   r   r   c                 S   s   |   S r   r   r   r   r   r   r     r   r   c                 S   s   |   S r   r   r   r   r   r   r     r   c                 S   s   |   S r   r   r   r   r   r   r     r   )r   r   ro   r   r   r   r   r   r   r=   r   r~   r-   r	   )r   r   r   rf   r@   r   r   r   r   r   r    test_expanding_min_periods_apply  sR                 r   fc                 C   s   | j ddj| ddS Nr   r   Tpairwiser   r   r   r   r   r   r     r   c                 C   s   | j ddj| ddS r   r   r   r   r   r   r   r     r   c                 C   s   t  }t tdgddtg ddd}|d d|d< t t|j|jgtg d}t tj|j|jgddgdtdgdddd	}| |}t|| | |}t|| d S )
Nar#   namebarcolumnsr<   r6   r<   r   )names)r<   r   r4   )	r   r   astyper   Zfrom_productr<   r   r=   r>   )r   df1df2df1_expecteddf2_expected
df1_result
df2_resultr   r   r   *test_moment_functions_zero_length_pairwise  s     	 r   c                 C   s   |    S r   )r   rX   r   r   r   r   r     r   c                 C   s   | j ddj| ddS Nr   r   Fr   r   r   r   r   r   r     r   c                 C   s   | j ddj| ddS r   r   r   r   r   r   r     r   c                 C   s   | j dd S Nr   r   )r   r.   r   r   r   r   r     r   c                 C   s   | j dd S r   )r   r/   r   r   r   r   r     r   c                 C   s   | j dd S r   )r   r   r   r   r   r   r     r   c                 C   s   | j dd S r   )r   r-   r   r   r   r   r     r   c                 C   s   | j dd S r   )r   r,   r   r   r   r   r     r   c                 C   s   | j dd S r   )r   r0   r   r   r   r   r     r   c                 C   s   | j dd S r   )r   rm   r   r   r   r   r     r   c                 C   s   | j dd S r   )r   rn   r   r   r   r   r     r   c                 C   s   | j dddS )Nr   r   r   )r   r   r   r   r   r   r     r   c                 C   s   | j dd S r   )r   Zmedianr   r   r   r   r     r   c                 C   s   | j ddjtddS )Nr   r   Fr   r   r   r   r   r   r   r   r     r   c                 C   s   | j ddjtddS )Nr   r   Tr   r   r   r   r   r   r     r   c           
      C   s|   t tjd}|}t }|}tdgd}|d d|d< |}| |}t|| | |}t|| | |}	t|	| d S )Nr3   r   r   r6   )r   r   r6   r   r   r=   rB   r>   )
r   rq   Z
s_expectedr   r   r   r   Zs_resultr   r   r   r   r   !test_moment_functions_zero_length  s    r   c                 C   s:   | \}}t g tjd}t|| jdd ||d d S )Nr3   c                 S   s   |   S r   r   r   r   r   r   r     r   z3test_expanding_apply_empty_series.<locals>.<lambda>r   )r   r   r6   r=   rB   r   r   )r   r   r   rf   r   r   r   !test_expanding_apply_empty_series  s     r   c                 C   sP   | \}}t d d d g}|jddjdd ||d}t dddg}t|| d S )	Nr   r   c                 S   s   t | S r   )r   r   r   r   r   r     r   z4test_expanding_apply_min_periods_0.<locals>.<lambda>r   r\   r"   rT   )r   r   r   r=   rB   )r   r   r   rq   r@   r?   r   r   r   "test_expanding_apply_min_periods_0  s
    r   c                  C   s   t dddgdddgd} t ddgddgd}|  |}t d d dg}t|| t dd dgdddgd}|  |}t|| t ddd	gdddgd} t dd
d	gdddgd}|  |}t d d d dg}t|| d S )Nr   r   r2   r   r;   r"         rE   r   g      @)r   r   r   r=   rB   s1s2r@   r?   Zs2ar   r   r   test_expanding_cov_diff_index  s    r   c                  C   s   t dddgdddgd} t ddgddgd}|  |}t d d dg}t|| t dd dgdddgd}|  |}t|| t ddd	gdddgd} t dd
d	gdddgd}|  |}t d d d dg}t|| d S )Nr   r   r2   r   r;   r\   r   r   rE   r   )r   r   r   r=   rB   r   r   r   r   test_expanding_corr_diff_index2  s    r   c            	      C   sn  t ddgddgddggtddgdd	d
} t ddgddggddgtddgdd	d}t ddgd d gddggtddgdd	d
}t ddgddggddgtddgdd	d}|  j|ddjd }|  j|ddjd }| j|ddjd }| j|ddjd }t ddgddggtddgdd	tddgdd	d}t|| t|| t|| t|| d S )Nr   r   r2   r   r   r`   r   r#   r   r   r   r   r1   XYTr   g      g      g      g      $r   )r   r   r   r   locr=   r>   	r   Zdf1ar   Zdf2ar   Zresult2Zresult3Zresult4r?   r   r   r   'test_expanding_cov_pairwise_diff_lengthE  s8    *     r   c            	      C   sn  t ddgddgddggddgttdddd	} t ddgddggtd
dgddddgd}t ddgd d gddggddgttdddd	}t ddgddggtd
dgddddgd}|  j|ddjd }|  j|ddjd }| j|ddjd }| j|ddjd }t ddgddggddgtddgd	}t|| t|| t|| t|| d S )Nr   r   r2   r   r`   r   r   r   r   r   r   r   r1   r   r   Tr   g      )r   r   r   r   r   r   r=   r>   r   r   r   r   (test_expanding_corr_pairwise_diff_lengthb  sB            
r   c                 C   s   dd }| \}}t tjdd}| jtj||dd }| j|||dd}t|| | j||d	did
}t|| d S )Nc                 S   s   t | | S r   r   )rC   constr   r   r   
mean_w_arg  s    z4test_expanding_apply_args_kwargs.<locals>.mean_w_argrF   r2   )r   r   g      4@)rF   )r   r   argsr   )r   kwargs)	r   r   ro   rp   r   r   r-   r=   r>   )r   r   r   r   r   r?   r@   r   r   r    test_expanding_apply_args_kwargs  s    r   )@numpyr   r&   Zpandas.errorsr   Zpandasr   r   r   r   r   r   r	   Zpandas._testingZ_testingr=   Zpandas.core.windowr
   r   markfilterwarningsr    Zparametrizer   r*   r8   paramZxfailrA   rD   rS   r[   r^   r_   r   re   rg   ri   rl   rr   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   <module>   sD  $	





	"
"
"=
<<<(.


	





"

'

	