U
    ¾mœdùû  ã                   @   sN  U d dl m Z  d dlmZ d dlmZ d dlmZ d dlZd dl	Z	d dl
Z
d dlmZ d dlmZ d dlZd dlmZmZmZmZmZmZ d dlmZ d d	lmZ d d
lmZ d dlmZm Z  d dl!m"Z"m#Z# d dl$m%Z% d dl&m'Z' e	 (¡ dd„ ƒZ)e	j(dd„ ƒZ*e	j(dd„ ƒZ+e	j(ddddgd�dd„ ƒZ,dd„ Z-dd„ Z.e	j/ 0d d!g¡e	j/ 0d"d#d$d%„ fd&d'd%„ fg¡d(d)„ ƒƒZ1d*d+„ Z2d,d-„ Z3e	j/ 0d d!g¡e	j/ 0d.d/d0d1g¡d2d3„ ƒƒZ4e	j/ 0d d!g¡d4d5„ ƒZ5e	j/ 0d d!g¡d6d7„ ƒZ6d8d9„ Z7d:d;„ Z8d<d=„ Z9d>d?„ Z:e	j/ 0d@dAdBdCdDdEdFg¡dGdH„ ƒZ;e	j/ 0dIdJdKg¡dLdM„ ƒZ<e	j/ 0dIdNdKg¡dOdP„ ƒZ=dQdR„ Z>dSdT„ Z?dUdV„ Z@dWdX„ ZAe	j/ 0dIdYdZd[d\g¡e	j/ 0d]d^d_d`dadbdcg¡ddde„ ƒƒZBdfdg„ ZCdhdi„ ZDdjdk„ ZEdldm„ ZFdndo„ ZGdpdq„ ZHe	j/ 0drdsdtdudvdwœgdxdtdudydwœgdKdzd{dKdwœgg¡d|d}„ ƒZId~d„ ZJd€d�„ ZKd‚dƒ„ ZLd„d…„ ZMe	j/ 0dId†d‡dˆd‰dŠd‹g¡dŒd�„ ƒZNe	j/ 0dŽd�d�g¡d‘d’„ ƒZOd“d”„ ZPd•d–„ ZQe	j/ 0d—d˜d™id˜edšƒid›dœd�œd˜džidŸd ig¡d¡d¢„ ƒZRe	j/ 0d˜d£d¤d¥d¦d§eSƒ g¡d¨d©„ ƒZTe	j/ 0dŸd£dªd§eSƒ g¡d«d¬„ ƒZUd­d®„ ZVd¯d°„ ZWd±d²„ ZXd³d´„ ZYdµd¶„ ZZd·d¸„ Z[d¹dº„ Z\d»d¼„ Z]d½d¾„ Z^d¿dÀ„ Z_dÁdÂ„ Z`dÃdÄ„ ZadÅdÆ„ ZbdÇdÈ„ Zce	j/ 0dIdÉdÊdËdÌdÍg¡dÎdÏ„ ƒZde	j/ 0dÐddÑgd#dÒgg¡dÓdÔ„ ƒZedÕdÖ„ Zfd×dØ„ ZgdÙdÚ„ ZhdÛdÜ„ ZidÝdÞ„ Zjdßdà„ Zke	j/ 0dádâdãdäe	jldåe	j/jmdædç�dè�g¡dédê„ ƒZndëdì„ Zodídî„ Zpdïdð„ Zqe dñdòd�ƒe dñdódôƒe dñdõdöƒe dñdódöƒe dñdòd÷ƒe dñdødùƒgZree esdú< erdd�… ejtg erd�dû…  ejtg erdûd…  Zuee esdü< ejtger ejtg Zve	j/ 0dýereuevg¡dþdÿ„ ƒZw�d �d„ Zx�d�d„ Zye	j/j0�d�dd%„ �dd%„ �dd%„ g�d�d	�d
g�d��d�d„ ƒZze	j/ 0�d�d�dg¡e	j/ 0�ddò�d�dg¡�d�d„ ƒƒZ{�d�d„ Z|�d�d„ Z}�d�d„ Z~�d�d„ Z�d�d„ Z€�d �d!„ Z��d"�d#„ Z‚�d$�d%„ Zƒ�d&�d'„ Z„�d(�d)„ Z…�d*�d+„ Z†e	j/ 0�dd�d�dôg¡e	j/ 0�d,�d-�d.�d/�d0�d1�d2�d3�d4�d5�d6g
¡�d7�d8„ ƒƒZ‡e	j/ 0�d9�d:�d;�d<�d=�d>�d?g¡�d@�dA„ ƒZˆe	j/ 0�dB�dC�dDg¡�dE�dF„ ƒZ‰e	j/ 0�dG�dH�dI�dJ�dK�dL�dMg¡eŠeŠeŠeŠeŠ�dNœ�dO�dP„ƒZ‹e	j/ 0�ddDdE�dQ�dRg¡�dS�dT„ ƒZŒ�dU�dV„ Z��dW�dX„ ZŽdS (Y  é    ©Údatetime)Úpartial)ÚStringIO)ÚListN)Úlib)ÚDatetimeNaTType)Ú	DataFrameÚSeriesÚ	TimedeltaÚ	TimestampÚisnaÚnotna)ÚGrouper©Ú
date_range)ÚPeriodÚperiod_range)ÚDatetimeIndexÚ_get_timestamp_range_edges)Úoffsets)ÚMinutec                   C   s   t S ©Nr   © r   r   úb/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/pandas/tests/resample/test_datetime_index.pyÚ_index_factory&   s    r   c                   C   s   dS )NÚMinr   r   r   r   r   Ú_index_freq+   s    r   c                 C   s   t j t| ƒ¡S r   )ÚnpÚrandomÚrandÚlen©Úindexr   r   r   Ú_static_values0   s    r$   ÚsÚmsÚusÚns)Úparamsc                 C   s   | j S r   )Úparam)Úrequestr   r   r   Úunit5   s    r,   c                 C   sL  |   |¡}tt dgt|ƒ ¡|dd�}ttdƒd�}| |¡}| ¡  dddd	d
dg}|D ]}|j	|d dd� q\ttdƒddd�}| |¡}| ¡  dddd	d
dg}|D ]}|j	|d dd� qª|j
dksÎt‚t| ¡ ƒ ¡ sât‚dgdgd  }|ddd… }	|	 |dd … ¡}	t|	dd�  |¡}	t||	d�}
| tj¡}t ||
¡ d S )Né   Úint64©r#   Údtypeé   ©ÚfreqÚsumÚmeanÚprodÚminÚmaxÚvarT©ZaltZnumeric_onlyÚright©r3   ÚclosedÚlabelé!
  i 
  r   éÿÿÿÿZ5Tr"   )Úas_unitr
   r   Úarrayr!   r   r   ÚgroupbyÚohlcÚ_cython_agg_generalZngroupsÚAssertionErrorr   r5   ÚallÚappendr   Úaggr4   ÚtmÚassert_series_equal)r#   r,   Údtir%   ÚbÚgÚfuncsÚfÚarrÚidxÚexpectÚresultr   r   r   Útest_custom_grouper:   s.    


rU   c                 C   sr   t tdƒddd�}|  |¡}ttj t|ƒd¡|dd�}| |¡ 	tj
¡}t|jƒdks\t‚t|jƒdksnt‚d S )Nr1   r;   r<   é
   Úfloat64r/   r?   )r   r   rA   r	   r   r   r    r!   rC   rI   r4   ÚcolumnsrF   r#   )r#   r,   rM   rL   ÚdfÚrr   r   r   Útest_custom_grouper_df^   s    
r[   z#_index_start,_index_end,_index_name)ú1/1/2000 00:00:00z1/1/2000 00:13:00r#   zclosed, expectedr;   c                 C   sH   t | d | dd…  ¡ | dd…  ¡ | dd …  ¡ gtddddd	�d
�S )Nr   r-   é   é   ú1/1/2000é   Ú5minr#   ©Úperiodsr3   Únamer"   ©r
   r5   r   ©r%   r   r   r   Ú<lambda>q   s   2þrg   Úleftc                 C   sB   t | d d…  ¡ | dd…  ¡ | dd …  ¡ gtddddd�d�S )	Nr1   rV   ú1/1/2000 00:05é   ra   r#   rb   r"   re   rf   r   r   r   rg   x   s   ,   ÿþc                 C   sL   | }|j  |¡|_ ||ƒ}|j  |¡|_ |jd|dd� ¡ }t ||¡ d S )Nra   r;   ©r=   r>   )r#   rA   Úresampler5   rJ   rK   )Úseriesr=   Úexpectedr,   r%   rT   r   r   r   Útest_resample_basich   s    ro   c                 C   s¢   t tdƒtdddd� | ¡dd�}| d¡ ¡ }t dd	d
gtdddd� | ¡dd�}t ||¡ | d¡ ¡ }t dddgtdddd� | ¡dd�}t ||¡ d S )Né	   r_   ÚT©rc   r3   ZInt64r/   Z3Trj   é   é   r-   r`   é   ZFloat64)	r
   Úranger   rA   rl   r4   rJ   rK   r5   )r,   ÚtsrT   rn   r   r   r   Útest_resample_integerarrayŠ   s&    ýýýrx   c                 C   sV   | }|j  |¡|_ | d¡ ¡ }ttdƒddd�}| |¡ dd„ ¡}t 	||¡ d S )NÚ5Minr1   rh   r<   c                 S   s   | d S ©Nr@   r   ©Úxr   r   r   rg   §   ó    z-test_resample_basic_grouper.<locals>.<lambda>)
r#   rA   rl   Úlastr   r   rC   rI   rJ   rK   )rm   r,   r%   rT   Úgrouperrn   r   r   r   Útest_resample_basic_grouper¢   s    r€   zkeyword,value)r>   Úrighttt)r=   r�   )Z
conventionZstartttc              	   C   sN   | j  |¡| _ d|› d|› d�}tjt|d�� | jd||iŽ W 5 Q R X d S )NzUnsupported value z for `ú`©Úmatchra   )ra   )r#   rA   ÚpytestÚraisesÚ
ValueErrorrl   )rm   ÚkeywordÚvaluer,   Úmsgr   r   r   Útest_resample_string_kwargs«   s    r‹   c                 C   sª   |dkrt  d¡ | }|j |¡|_t |¡}d|d< d|dd…< d|dd…< d|dd …< | |¡ |¡}td	d
ddd� |¡|_t	|j
dddd�|ƒƒ }t ||¡ d S )NrD   z!covered by test_resample_how_ohlcr   r-   r]   é   r^   rj   r_   r`   ra   r#   rb   r;   rk   )r…   Úskipr#   rA   r   Ú	ones_likerC   rI   r   Úgetattrrl   rJ   rK   )rm   Zdownsample_methodr,   r%   Ú	grouplistrn   rT   r   r   r   Útest_resample_how¼   s.    

   ÿþ ÿr‘   c                 C   s®   | }|j  |¡|_ t |¡}d|d< d|dd…< d|dd…< d|dd …< dd„ }t| |¡ |¡j ¡ t	d	d
ddd� |¡ddddgd�}|j
dddd� ¡ }t ||¡ d S )Nr   r-   r]   rŒ   r^   rj   c                 S   s6   t | ƒ ¡ rt tjd¡S | d |  ¡ |  ¡ | d gS ©Nr`   r   r@   ©r   rG   r   ÚrepeatÚnanr8   r7   ©Úgroupr   r   r   Ú_ohlcã   s    z%test_resample_how_ohlc.<locals>._ohlcr_   r`   ra   r#   rb   ÚopenÚhighÚlowÚclose©r#   rX   r;   rk   )r#   rA   r   rŽ   r	   rC   rI   ÚvaluesÚtolistr   rl   rD   rJ   Úassert_frame_equal)rm   r,   r%   r�   r˜   rn   rT   r   r   r   Útest_resample_how_ohlcÖ   s"    
ÿ
ûr¡   c                 C   sè   t jdt jd�}tdt|ƒdd� | ¡}t||dœ|d�}dd	d
„}G dd„ dƒ}| d¡ |¡}| d¡ dd„ ¡}| d¡ t	|ƒ¡}| d¡ t	|dd�¡}	| d¡ |ƒ ¡}
t
 ||¡ t
 ||¡ t
 ||	¡ t
 ||
¡ d S )Nr1   ©r0   ú
2014-01-01Úd©Ústartrc   r3   ©ÚAÚBr"   r-   c                 S   s   t t| ƒƒS r   ©ÚstrÚtype)r|   Úar   r   r   Úfnú   s    z'test_resample_how_callables.<locals>.fnc                   @   s   e Zd Zdd„ ZdS )z,test_resample_how_callables.<locals>.FnClassc                 S   s   t t|ƒƒS r   rª   )Úselfr|   r   r   r   Ú__call__þ   s    z5test_resample_how_callables.<locals>.FnClass.__call__N)Ú__name__Ú
__module__Ú__qualname__r°   r   r   r   r   ÚFnClassý   s   r´   ÚMc                 S   s   t t| ƒƒS r   rª   r{   r   r   r   rg     r}   z-test_resample_how_callables.<locals>.<lambda>rŒ   )r­   )r-   )r   Úaranger.   r   r!   rA   r	   rl   Úapplyr   rJ   r    )r,   ÚdataÚindrY   r®   r´   Zdf_standardZ	df_lambdaZ
df_partialZdf_partial2Zdf_classr   r   r   Útest_resample_how_callablesô   s    
rº   c                 C   sx  d}t jt|ƒdddgidd�}|j | ¡|_d |j_| d¡ ¡ }tddd	dd
git	dddd� | ¡d�}t
 ||¡ | d¡ ¡ }tdddddgit	dddd� | ¡d�}t
 ||¡ | d¡ ¡ }tdddgit	ddd
d� | ¡d�}t
 ||¡ | d¡ ¡ }tdddgit	ddd
d� | ¡d�}t
 ||¡ | d¡ ¡ }tdddgit	ddd
d� | ¡d�}t
 ||¡ d S )Naý  date,time,value
11-08-2014,00:00:01.093,1
11-08-2014,00:00:02.159,1
11-08-2014,00:00:02.667,1
11-08-2014,00:00:03.175,1
11-08-2014,00:00:07.058,1
11-08-2014,00:00:07.362,1
11-08-2014,00:00:08.324,1
11-08-2014,00:00:08.830,1
11-08-2014,00:00:08.982,1
11-08-2014,00:00:09.815,1
11-08-2014,00:00:10.540,1
11-08-2014,00:00:11.061,1
11-08-2014,00:00:11.617,1
11-08-2014,00:00:13.607,1
11-08-2014,00:00:14.535,1
11-08-2014,00:00:15.525,1
11-08-2014,00:00:17.960,1
11-08-2014,00:00:20.674,1
11-08-2014,00:00:21.191,1Ú	timestampÚdateÚtime)Zparse_datesZ	index_colZ6sr‰   r`   rp   rŒ   z
2014-11-08©r3   rc   r"   Z7srV   r-   Z11sr^   é   Z13sé   r]   Z17sé   rj   )ÚpdZread_csvr   r#   rA   rd   rl   r4   r	   r   rJ   r    )r,   r¸   rY   rT   rn   r   r   r   Útest_resample_rounding  sL    
ýþþ
þ
þ
þrÃ   c                 C   sh  t tdddƒtdddƒddd� | ¡}ttj t|ƒ¡|ƒ}| d¡ 	¡ }t|ƒdksZt
‚|jjd	d	d	gk ¡ stt
‚|jd
 |d ksŠt
‚|jd |d ks t
‚|jd |jd ks¸t
‚| d¡ 	¡ }t|ƒdksÖt
‚|jjd
d
gk ¡ sît
‚|jd
 |d k�st
‚|jd |d k�st
‚| d¡ 	¡ }t|ƒdk�s>t
‚|jjddgk ¡ �sXt
‚|jd
 |d k�spt
‚|jd |d k�sˆt
‚| d¡ 	¡ }t|ƒdk�s¨t
‚|jjddgk ¡ �sÂt
‚|jd
 |d k�sÚt
‚|jd |d k�sòt
‚| d¡ 	¡ }t|ƒdk�st
‚|jjddgk ¡ �s,t
‚|jd
 |d k�sDt
‚|jd |d k�s\t
‚| d¡ 	¡ }t|ƒdk�s|t
‚|jjddgk ¡ �s–t
‚|jd
 |d k�s®t
‚|jd |d k�sÆt
‚| d¡ 	¡ }t|ƒdk�sæt
‚|jjdd
ddddd
gk ¡ �s
t
‚|jd
 |d k�s"t
‚|jd |d k�s:t
‚|jd |d k�sRt
‚|jjdk�sdt
‚d S )NéÕ  r-   rV   ÚDr#   ©r¦   Úendr3   rd   zw-sunrj   r]   r   z1/2/2005z1/9/2005rŒ   r@   úW-MONz1/3/2005z	1/10/2005zW-TUEz1/4/2005úW-WEDz1/5/2005zW-THUz1/6/2005zW-FRIr`   z1/7/2005r©   ru   r1   )r   r   rA   r
   r   r   r    r!   rl   r~   rF   r#   Z	dayofweekrG   Úilocrd   ©r,   rL   r%   rT   r   r   r   Útest_resample_basic_from_dailyQ  s^    
 
  ÿþ$rÌ   c                 C   sö   t dddd� | ¡}td|d�}| d¡ ¡ }|jd |d ksDt‚tt dd	¡d
d„ t	dd	ƒD ƒd�}|j | ¡|_tt dd	¡t dddd� | ¡d�}| d¡ 
¡ }t |td|jd�¡ | d¡ ¡ }| d¡ ¡ }t ||¡ t ||¡ d S )Nz01-Jan-2014z05-Jan-2014rÅ   r2   r-   r"   r   ç      ð?r]   c                 S   s   g | ]}t d d|ddƒ‘qS )i·  r-   rs   r   r   ©Ú.0Úir   r   r   Ú
<listcomp>˜  s     zCtest_resample_upsampling_picked_but_not_correct.<locals>.<listcomp>Z19750101r1   rr   )r   rA   r
   rl   r5   r#   rF   r   r¶   rv   ÚcountrJ   rK   r4   )r,   Údatesrm   rT   r%   rn   Úresult1Úresult2r   r   r   Ú/test_resample_upsampling_picked_but_not_correct‹  s&    
 ÿ
þrÖ   rP   r4   r5   r6   r7   r8   r9   c                 C   s>   t  ¡ }|j |¡|_tdd�}| |¡}|j| d dd� d S )Nrµ   r2   Tr:   )rJ   ÚmakeTimeDataFramer#   rA   r   rC   rE   )rP   r,   rY   rM   rN   r   r   r   Ú"test_resample_frame_basic_cy_funcs©  s
    

rØ   r3   r¨   rµ   c                 C   sF   t  ¡ }|j |¡|_| | ¡ ¡ }t  |d |d  | ¡ ¡ ¡ d S )Nr¨   )rJ   r×   r#   rA   rl   r5   rK   )r3   r,   rY   rT   r   r   r   Útest_resample_frame_basic_M_Aµ  s    rÙ   rÉ   c                 C   s,   t  ¡ }|j |¡|_|j| dd� ¡  d S )NÚperiod©Úkind)rJ   r×   r#   rA   rl   r5   )r3   r,   rY   r   r   r   Útest_resample_frame_basic_kind½  s    rÝ   c                 C   s–   t tdddƒtdddƒddd� | ¡}ttj t|ƒ¡|ƒ}| d¡ 	¡ }t|ƒdksZt
‚|d	 |d	 ksnt
‚|d
 |d
 ks‚t
‚|jjdks’t
‚d S )NrÄ   r-   rV   rÅ   r#   rÆ   r   i¡2  r   r@   )r   r   rA   r
   r   r   r    r!   rl   ÚffillrF   r#   rd   rË   r   r   r   Útest_resample_upsampleÄ  s    
 
  ÿþrß   c                 C   s¨   t ddgtdƒtdƒgd�}|j | ¡|_t dtjtjtjtjtjdgttdƒtdƒtdƒtd	ƒtd
ƒtdƒtdƒgdd�d�}|j | ¡|_t | 	d¡ 
¡ |¡ d S )Nr^   é   z2015-03-31 21:48:52.672000z2015-03-31 21:49:52.739000r"   z2015-03-31 21:48:50z2015-03-31 21:49:00z2015-03-31 21:49:10z2015-03-31 21:49:20z2015-03-31 21:49:30z2015-03-31 21:49:40z2015-03-31 21:49:50Ú10sr2   Ú10S)r
   r   r#   rA   r   ÚNaNr   rJ   rK   rl   r5   )r,   r%   rn   r   r   r   Útest_resample_how_methodÕ  s.    þþù	öþrä   c                 C   s€   t dddd� | ¡}tdtdddg|d	�iƒ}t ddd
d� | ¡}tdttt|ƒƒ|d	�idd�}| d¡ ¡ }t 	||¡ d S )NZ20150101Z20150331ZBM©r¦   rÇ   r3   r¨   rt   é)   é?   r"   r©   r.   r¢   )
r   rA   r	   r
   rv   r!   rl   r~   rJ   r    )r,   r#   rn   rY   rT   r   r   r   Útest_resample_extra_index_pointò  s     rè   c                 C   s^   t dddd� | ¡}ttj t|ƒ¡|ƒ}| d¡jdd�}|j	|j
ddd	�}t ||¡ d S )
Nr_   rj   Ú5trr   ÚtrŒ   ©ÚlimitrÞ   ©Úmethodrì   )r   rA   r
   r   r   Úrandnr!   rl   rÞ   Úreindexr#   rJ   rK   ©r,   Úrngrw   rT   rn   r   r   r   Útest_upsample_with_limitý  s
    ró   Z5DZ10Hry   râ   ÚruleÚYZ3MZ15DZ30HZ15MinZ30Sc                 C   s`   t dd|| d� |¡}ttj t|ƒ¡|ƒ}| |¡jdd�}|j	|j
ddd�}t ||¡ d S )Nr_   rj   )rc   r3   ÚtzrŒ   rë   Únearestrí   )r   rA   r
   r   r   rï   r!   rl   r÷   rð   r#   rJ   rK   )Ztz_aware_fixturer3   rô   r,   rò   rw   rT   rn   r   r   r   Ú test_nearest_upsample_with_limit  s    ÿrø   c                 C   sF  | }|j  |¡|_ ttdƒd�}| |¡ dd„ ¡}| d¡ ¡ }t|ƒt|ƒksVt	‚t|j
ƒdksht	‚|jd }|d |d	 ks†t	‚|d
 |d	d…  ¡ ks¢t	‚|d |d	d…  ¡ ks¾t	‚|d |d ksÒt	‚|jd }|d |d ksðt	‚|d
 |d d…  ¡ k�st	‚|d |d d…  ¡ k�s,t	‚|d |d k�sBt	‚d S )Nr1   r2   c                 S   s   | d S rz   r   r{   r   r   r   rg     r}   z$test_resample_ohlc.<locals>.<lambda>ry   r`   éþÿÿÿr™   iúÿÿÿrš   r@   r›   rœ   r   )r#   rA   r   r   rC   rI   rl   rD   r!   rF   rX   rÊ   r8   r7   )rm   r,   r%   r   rS   rT   Zxsr   r   r   Útest_resample_ohlc  s"    

rú   c                 C   s’   t dddd� | ¡}| t dddd� | ¡¡}ttt|ƒƒ|d�}|jd d…  d¡ ¡ }t	|t
ƒsht‚|jd d	…  d¡ ¡ }t	|t
ƒsŽt‚d S )
Nú1-1-2000ú	2-15-2000Úhr2   ú	4-15-2000ú	5-15-2000r"   Ú30Tz	4-14-2000)r   rA   Úunionr
   rv   r!   Úlocrl   rD   Ú
isinstancer	   rF   )r,   r#   r%   r­   rM   r   r   r   Útest_resample_ohlc_result,  s    r  c                 C   sŠ   t ddƒ | ¡}| tdƒtdƒtdƒtdƒg¡}tt t|ƒ¡|d�}| d¡ 	¡ }|j
t |d	 |d
 dd� | ¡d�}t ||¡ d S )Nz
2013-12-30z
2014-01-07r£   z
2013-12-31z
2014-01-04z
2014-01-05)r¸   r#   r©   r   r@   r2   r"   )r   rA   Zdropr   r	   r   r¶   r!   rl   r5   rð   rJ   r    )r,   rò   r#   rY   rT   rn   r   r   r   Ú$test_resample_ohlc_result_odd_period9  s    üÿ$r  c              
   C   s(  t tdd d�dtdd d�dtdd d�ditdd d�dtdd d�dtdd d�d	id
œƒjddgdd�}|j | ¡|_d|j_| d¡ ¡ }t	j
|d  d¡ ¡ |d  d¡ ¡ gd|jd�}|jjd dksÎt‚t ||¡ ddgddgg|_| d¡ ¡ }t	j ddddddddg¡|_t ||¡ d S )Nz2011-01-06 10:59:05©rö   iža  z2011-01-06 12:43:33i›c  z2011-01-06 12:54:09i /hYl    rT i áõ)ÚPRICEÚVOLUMEr  r  r-   ©ÚaxisZColsÚH)r
  Úkeysr   r­   rM   Úcr¤   )r­   r  r™   )r­   r  rš   )r­   r  r›   )r­   r  rœ   )rM   r¤   r™   )rM   r¤   rš   )rM   r¤   r›   )rM   r¤   rœ   )r	   r   rð   r#   rA   rX   rd   rl   rD   rÂ   ÚconcatÚnamesrF   rJ   r    Ú
MultiIndexÚfrom_tuples)r,   rY   ÚresÚexpr   r   r   Útest_resample_ohlc_dataframeK  sZ    
 
 
 ý
 
 
 ýúÿÿ ñ"ýøÿr  c                  C   sŽ   t tj dd¡ddddgdd„ tdƒD ƒd�} tj| jdd d …f< | jdd	d
� ¡ }| j	dd„ d	d
� ¡ }dd„ tdƒD ƒ|_
t ||¡ d S )Nr`   rs   éÐ  c                 S   s   g | ]}t d |d dd�‘qS )r  r-   rµ   )ÚyearÚmonthr3   ©r   rÎ   r   r   r   rÑ   �  s     z+test_resample_dup_index.<locals>.<listcomp>r�   rj   ÚQr-   r	  c                 S   s   t | jd d ƒS )Nr-   rj   )Úintr  r{   r   r   r   rg   …  r}   z)test_resample_dup_index.<locals>.<lambda>c                 S   s   g | ]}t d |d dd�‘qS )r  r-   r  )r  Zquarterr3   r  rÎ   r   r   r   rÑ   †  s     )r	   r   r   rï   rv   r•   rÊ   rl   r5   rC   rX   rJ   r    )rY   rT   rn   r   r   r   Útest_resample_dup_index{  s    
ýr  c                 C   sš   t tdddƒtdddƒdd� | ¡}ttj t|ƒ¡|ƒ}|jdddd� 	¡ }| d	¡ 	¡ }t|ƒd
kslt
‚t|jjtjƒs€t
‚|jjt d¡ks–t
‚d S )NrÄ   r-   rV   rÅ   rå   r©   r;   rk   Z8Hrà   r¿   )r   r   rA   r
   r   r   r    r!   rl   r5   rF   r  r#   r3   r   Z
DateOffsetZHour)r,   rL   r%   ÚbsrT   r   r   r   Útest_resample_reresampleŠ  s    
 
 ÿþr  zfreq, expected_kwargsúA-DECZ1990Ú2000za-decrå   zA-JUNza-junz1990-01z2000-01c                 C   sT   | ddƒ}|j  |¡|_ |j|dd� ¡ }| |¡ ¡ }tf |Ž|_ t ||¡ d S )Nz1/1/1990r_   rÚ   rÛ   )r#   rA   rl   r5   r   rJ   rK   )Úsimple_date_range_seriesr3   Zexpected_kwargsr,   rw   rT   rn   r   r   r   Ú!test_resample_timestamp_to_period–  s    
r!  c                 C   s²   dd„ }t dddd� | ¡}ttj t|ƒ¡|d�}|jdd	d	d
� ¡ }|j	d |d k 
¡ sbt‚||dd… ƒ}|j	d |k 
¡ sˆt‚||dd … ƒ}|j	d |k 
¡ s®t‚d S )Nc                 S   s6   t | ƒ ¡ rt tjd¡S | d |  ¡ |  ¡ | d gS r’   r“   r–   r   r   r   r˜   «  s    ztest_ohlc_5min.<locals>._ohlcr\   z1/1/2000 5:59:50rá   r2   r"   ra   r;   rk   z1/1/2000 00:00r   r-   é   ri   z1/1/2000 5:55:01z1/1/2000 6:00:00)r   rA   r
   r   r   rï   r!   rl   rD   r  rG   rF   )r,   r˜   rò   rw   Ú	resampledr  r   r   r   Útest_ohlc_5minª  s    r$  c                 C   s�   t ddƒ | ¡}| d¡j}ttj t|ƒ¡|d�}| 	d¡ 
¡ }| dd„ ¡ 
¡ }t|ƒdksdt‚t |d	 |d
 ¡ t |d
 |d ¡ d S )Nr_   ú	2/29/2000r1   r"   rµ   c                 S   s   | j S r   )r  r{   r   r   r   rg   Å  r}   z,test_downsample_non_unique.<locals>.<lambda>rŒ   r   r-   )r   rA   r”   rž   r
   r   r   rï   r!   rl   r5   rC   rF   rJ   Zassert_almost_equal)r,   rò   Úrng2rw   rT   rn   r   r   r   Útest_downsample_non_unique¾  s    r'  c              	   C   s`   t ddƒ | ¡}| d¡j}ttj t|ƒ¡|d�}d}t	j
t|d�� | d¡ W 5 Q R X d S )Nr_   r%  rŒ   r"   z/cannot reindex on an axis with duplicate labelsrƒ   r©   )r   rA   r”   rž   r
   r   r   rï   r!   r…   r†   r‡   Úasfreq)r,   rò   r&  rw   rŠ   r   r   r   Útest_asfreq_non_uniqueË  s    r)  c                 C   sf   t ddƒ | ¡}ttj dt|ƒ¡|dddgd�}|jdd	d
� ¡ }|j	 d¡ ¡ j	}t
 ||¡ d S )Nr_   r%  rj   r­   rM   r  ©rX   r#   rµ   r-   r	  )r   rA   r	   r   r   rï   r!   rl   r5   rq   rJ   r    )r,   rò   rY   rT   rn   r   r   r   Útest_resample_axis1Ö  s
    "r+  rê   ré   Z15tZ30tZ4hZ12hc                 C   sz   t dddd� |¡}ttj t|ƒ¡|d�}tj|d d…< |dd … j| ddd� 	¡ }|j| ddd� 	¡ }t
 ||¡ d S )	Nz1/1/2000 04:00:00é€Q r%   rr   r"   rŒ   rh   rk   ©r   rA   r
   r   r   rï   r!   r•   rl   r5   rJ   rK   )r3   r,   rò   rw   rT   rn   r   r   r   Útest_resample_anchored_ticksß  s    r.  rÇ   r-   rŒ   c                 C   sb   dd„ }t dd| › d�dd� |¡}ttj t|ƒ¡|d�}t | 	d	¡ 
¡ | 	d	¡ |¡¡ d S )
Nc                 S   s   |   ¡ S r   )r4   r{   r   r   r   rg   ð  r}   z,test_resample_single_group.<locals>.<lambda>z2000-1-1z2000-z-10rÅ   r2   r"   rµ   )r   rA   r
   r   r   rï   r!   rJ   rK   rl   r4   r·   )rÇ   r,   Zmysumrò   rw   r   r   r   Útest_resample_single_groupî  s    r/  c                 C   sp   t ddgtdƒtdƒgd�}|j | ¡|_t dgttdƒgdd	� | ¡d�}| d¡ d
d„ ¡}t ||¡ d S )Ngš™™™™>@gš™™™™™?@z20070915 15:30:00z20070915 15:40:00r"   g      è?Z20070915rÅ   r2   c                 S   s
   t  | ¡S r   )r   Ústdr{   r   r   r   rg     r}   z0test_resample_single_group_std.<locals>.<lambda>)	r
   r   r#   rA   r   rl   r·   rJ   rK   )r,   r%   rn   rT   r   r   r   Útest_resample_single_group_std÷  s    þ ÿr1  c                 C   sd   t dddd� | ¡}ttj t|ƒ¡|d�}|jddd� ¡ }t d	d
dd� | ¡}t	 
|j|¡ d S )Nr\   z1/1/2000 02:00r%   r2   r"   ra   Z2min©Úoffsetú12/31/1999 23:57:00z1/1/2000 01:57©r   rA   r
   r   r   rï   r!   rl   r5   rJ   Úassert_index_equalr#   )r,   rò   rw   r#  Úexp_rngr   r   r   Útest_resample_offset  s    ÿr8  ÚkwargsÚoriginú1999-12-31 23:57:00z1970-01-01 00:02:00ÚepochÚ2m©r:  r3  z1999-12-31 12:02:00r3  z-3mc                 C   sb   t dddd� |¡}ttj t|ƒ¡|d�}t dddd� |¡}|jd	| Ž ¡ }t	 
|j|¡ d S )
Nú2000-01-01 00:00:00ú2000-01-01 02:00r%   r2   r"   r;  ú2000-01-01 01:57ra   )ra   r5  )r9  r,   rò   rw   r7  r#  r   r   r   Útest_resample_origin  s      ÿþrB  Zinvalid_valueZepchZstartdayZstarttz
2000-30-30c              	   C   sd   t dddd� |¡}ttj t|ƒ¡|d�}d| › d�}tjt	|d�� |j
d	| d
� W 5 Q R X d S )Nr?  r@  r%   r2   r"   z|'origin' should be equal to 'epoch', 'start', 'start_day', 'end', 'end_day' or should be a Timestamp convertible type. Got 'ú
' instead.rƒ   ra   ©r:  ©r   rA   r
   r   r   rï   r!   r…   r†   r‡   rl   )r:  r,   rò   rw   rŠ   r   r   r   Útest_resample_bad_origin*  s    
ÿrF  Z12dayysc              	   C   sd   t dddd� |¡}ttj t|ƒ¡|d�}d| › d�}tjt	|d�� |j
d	| d
� W 5 Q R X d S )Nr?  r@  r%   r2   r"   z6'offset' should be a Timedelta convertible type. Got 'rC  rƒ   ra   r2  rE  )r3  r,   rò   rw   rŠ   r   r   r   Útest_resample_bad_offset9  s
    rG  c                 C   sf  d\}}t ||dd� | ¡}ttj t|ƒ¡|d�}t dddd� | ¡}| d¡ ¡ }t	 
|j|¡ |jddd	� ¡ }t	 
|j|¡ t d
ddd� | ¡}|jddd	� ¡ }t	 
|j|¡ |jddd� ¡ }t	 
|j|¡ |jdddd� ¡ }t	 
|j|¡ t dddd� | ¡}|jddd	� ¡ }t	 
|j|¡ t dddd� | ¡}|jddd	� ¡ }t	 
|j|¡ d S )N)ú2000-10-01 23:30:00z2000-10-02 00:30:00Ú7minr2   r"   z2000-10-01 23:14:00z2000-10-02 00:22:00Z17minÚ	start_dayrD  rH  z2000-10-02 00:21:00r¦   Z23h30minr2  r>  z2000-10-01 23:18:00z2000-10-02 00:26:00r<  z2000-10-01 23:24:00z2000-10-02 00:15:00ú
2000-01-01r5  )r,   r¦   rÇ   rò   rw   r7  r#  r   r   r   Útest_resample_origin_prime_freqB  sZ      ÿþ  ÿþ  ÿþ  ÿþrL  c              	   C   s6  d}d}t ddd|d� | ¡}ttj t|ƒ¡|d�}t dd	d
|d� | ¡}|jd
dd� ¡ }t	 
|j|¡ |jd
dd� ¡ }t	 
|j|¡ |jd
ddd� ¡ }t	 
|j|¡ tjt|d�� |jd
dd� ¡  W 5 Q R X t dddd� | ¡}ttj t|ƒ¡|d�}tjt|d�� |jd
dd� ¡  W 5 Q R X d S )Nz4The origin must have the same timezone as the index.úEurope/Parisr?  r@  r%   ©r3   rö   r"   r;  rA  ra   z1999-12-31 23:57:00+00:00rD  z1999-12-31 12:02:00+03:00r<  r=  r>  rƒ   r4  r2   z12/31/1999 23:57:00+03:00)r   rA   r
   r   r   rï   r!   rl   r5   rJ   r6  r#   r…   r†   r‡   )r,   rŠ   rö   rò   rw   r7  r#  r   r   r   Útest_resample_origin_with_tzg  s>       ÿþ   ÿþrO  c                 C   sF  d\}}t ||dd� | ¡}tj t|ƒ¡}t||d�}|jddd� ¡ }|jddd� ¡ }t	 
||¡ | d ¡}|jddd� ¡ }	|jddd� ¡ }
t	j
||	 |j¡d	d
� t	j
||
 |j¡d	d
� d\}}t ||dd� | ¡}t||d�}|jddd� ¡ }|jddd� ¡ }t	 
| d ¡| d ¡¡ t	 
| d ¡| d ¡¡ d S )N)z2000-10-01 23:30:00+0500z2000-12-02 00:30:00+0500rI  r2   r"   rÅ   r<  rD  Ú24HF)Z
check_freq)z2000-10-01 23:30:00+0200z2000-12-02 00:30:00+0200)r   rA   r   r   rï   r!   r
   rl   r5   rJ   rK   Útz_localizerö   )r,   r¦   rÇ   rò   Zrandom_valuesZts_1Zresult_1Zresult_2Zts_no_tzZresult_3Zresult_4Zts_2Zresult_5Zresult_6r   r   r   Ú-test_resample_origin_epoch_with_tz_day_vs_24hˆ  s&    
rR  c           
         sò  d‰ d&‡ ‡fdd„	}t dˆ d�}t dˆ d�}t||dd	� ˆ¡}tt t|ƒ¡|d
�}|ddgddgƒ}ddd|d fD ]"}|jd|d� ¡ }t	 
||¡ qvt dˆ d�}t dˆ d�}t||dd	� ˆ¡}tt t|ƒ¡|d
�}ddg}	|ddg|	ƒ}|jdddd� ¡ }t	 
||¡ ddg}	|ddg|	dd	�}|jdddd� ¡ }t	 
||¡ ddg}	|ddg|	ƒ}|jdddd� ¡ }t	 
||¡ dd g}	|dd!g|	ƒ}|jddd"d� ¡ }t	 
||¡ d#d$g}	|d!dg|	ƒ}|jddd%d� ¡ }t	 
||¡ d S )'NúAmerica/ChicagorÅ   c                    s*   t | t‡ fdd„|D ƒ|dd� ˆ¡d�S )Nc                    s   g | ]}t |ˆ d �‘qS )r  )r   )rÏ   rê   r  r   r   rÑ   ¬  s     zUtest_resample_origin_with_day_freq_on_dst.<locals>._create_series.<locals>.<listcomp>T)r3   Ú	ambiguousr"   )r
   r   rA   )rž   Z
timestampsr3   ©rö   r,   r   r   Ú_create_series¨  s      ÿþþzAtest_resample_origin_with_day_freq_on_dst.<locals>._create_seriesú
2013-11-02r  z2013-11-03 23:59Ú1hr2   r"   g      8@g      9@z
2013-11-03r<  r¦   rJ  rD  z2013-11-02 22:00-05:00z2013-11-03 22:00-06:00g      7@ç       @z-2Hr>  z2013-11-03 21:00-06:00g      6@ç      @rP  z2013-11-02 02:00-05:00z2013-11-03 02:00-06:00Ú2Hz2013-11-02 23:00-05:00z2013-11-03 23:00-06:00rÍ   z-1Hz2013-11-02 01:00-05:00z2013-11-03 01:00:00-0500Ú1H)rÅ   )r   r   rA   r
   r   Zonesr!   rl   r4   rJ   rK   )
r,   rV  r¦   rÇ   rò   rw   rn   r:  rT   Zexpected_tsr   rU  r   Ú)test_resample_origin_with_day_freq_on_dst¤  sD    	r]  c                 C   sz   t dddd� | ¡}ttj t|ƒ¡|d�}tj|d d…< |dd … jdddd	� 	¡ }|jdddd	� 	¡ }t
 ||¡ d S )
Nz1/1/2000 0:00:00é'  rq   rr   r"   rŒ   rÅ   rh   rk   r-  rñ   r   r   r   Útest_resample_daily_anchoredÛ  s    r_  c                 C   sZ   t ddƒ | ¡}ttj t|ƒ¡|d�}|jddd� ¡ }t	dddd	�}t
 |j|¡ d S )
Nr_   z
12/31/2000r"   rµ   rÚ   rÛ   zJan-2000zDec-2000r2   )r   rA   r
   r   r   rï   r!   rl   r5   r   rJ   r6  r#   )r,   rò   rw   rT   Z	exp_indexr   r   r   Ú&test_resample_to_period_monthly_bugletå  s
    r`  c                  C   s^   t tj ddd¡tdddd�dd�} |  ¡  d	¡ ¡  ¡ }|  d	¡ 	d
d„ ¡}t
 ||¡ d S )Nr   r1   é2   z
2012-01-01r  r¾   rW   r/   rÅ   c                 S   s   |   ¡ S r   ©r5   r{   r   r   r   rg   ù  r}   z&test_period_with_agg.<locals>.<lambda>)r
   r   r   Úrandintr   Úto_timestamprl   r5   Z	to_periodrI   rJ   rK   )Ús2rn   rT   r   r   r   Útest_period_with_aggð  s    ýrf  c                 C   s¸   dt dddddƒddfdt dddddƒddfdt ddddd	ƒddfdt dddddd
ƒddfg}tj|dd� d¡}|j | ¡|_| d¡ d¡ ¡ }| d¡ 	dd„ ¡}t
 ||¡ d S )Nr-   iÝ  rV   rÁ   é   r   rŒ   é   é   r"  )ÚIDr»   r¨   r©   ©rX   r»   rj  ra   c                 S   s   |   d¡ ¡ S )Nra   )rl   r4   r{   r   r   r   rg     r}   z(test_resample_segfault.<locals>.<lambda>)r   r	   Zfrom_recordsÚ	set_indexr#   rA   rC   rl   r4   r·   rJ   r    )r,   Zall_wins_and_wagersrY   rT   rn   r   r   r   Útest_resample_segfaultý  s    ü ÿþrm  c                 C   sˆ   t tdddd� | ¡ddddgtddd	d
gdd�dœƒ d¡}| d¡ ¡ }|jjt	j
ks^t‚| d¡ d¡ ¡ }|jjt	j
ks„t‚d S )Nz
2016-01-01r`   ÚWr¥   r-   rŒ   r1   r]   ru   r¿   Úint32r¢   )r¼   r—   Úvalr¼   Ú1Dr—   )r	   r   rA   r
   rl  rl   rÞ   rp  r0   r   ro  rF   rC   ©r,   rY   rT   r   r   r   Ú test_resample_dtype_preservation  s    
ýÿúrs  c                 C   sœ   t  d¡ dddddgi}t|tddƒ | ¡d�}| d	¡ d
¡ ¡ d  d¡}| d
¡d  ¡  d¡}t	 
||¡ | d
¡ ¡ d  d¡}t	 
||¡ d S )Nzscipy.interpolater­   r-   rj   r`   z
2017-01-01z
2017-01-04r"   rW   r  Zcubic)r…   Zimportorskipr	   r   rA   Úastyperl   r5   ZinterpolaterJ   rK   )r,   rY   rn   rT   r   r   r   Útest_resample_dtype_coercion#  s    
ru  c                 C   sX   t dddd� | ¡}ttj t|ƒ¡|d�}| d¡ ¡ }| d¡ ¡ }t	 
||¡ d S )Nr_   r©   rg  r¾   r"   rn  zW-SUN)r   rA   r
   r   r   rï   r!   rl   r5   rJ   rK   )r,   rò   rw   r#  rn   r   r   r   Útest_weekly_resample_buglet3  s
    rv  c                 C   s:   t dddd� | ¡}ttj t|ƒ¡|d�}| d¡ d S )Nú4/16/2012 20:00iˆ  rý   rr   r"   rµ   )r   rA   r
   r   r   rï   r!   rl   ©r,   rÓ   rw   r   r   r   Útest_monthly_resample_error=  s    ry  c                  C   sˆ   d} d}t t | ¡ddd�}ttt|ƒƒ|d�}| tjj 	d¡¡}| 
d¡}t t |¡ddd�}ttt|ƒƒ|td	�}t ||¡ d S )
Nl   û*dG@l   à*dG@rV   Z100nr¥   r"   éd   r5   r/   )r   rÂ   Úto_datetimer
   rv   r!   rl   Útseriesr   ZNanorI   ÚfloatrJ   rK   )r¦   Z	exp_startZindxrw   rZ   rT   Zexp_indxr  r   r   r   Útest_nanosecond_resample_errorE  s    
r~  c           	      C   s~  t dddd� |¡}t|j|d�}| d¡ ¡ }|jddd� ¡ jd	d
�}| jtddƒtddƒ 7  _|j |¡ 	d¡|_|jj
dksŒt‚t ||¡ |jddd� ¡ }|jddd�jddd� ¡ }|jd	d
�}|jtddƒ tddƒ |_|j |¡ 	d¡|_|jj
dk�st‚t ||¡ t dddd� |¡}t|j|d�}| d¡ ¡ }|jddd� ¡ jd	d
�}| jtddƒtddƒ 7  _d|jj_
tj|j_|j |¡|_t ||¡ |jddd� ¡ }|jddd�jdddd� ¡ }|jd	d
�}| jtddƒtddƒ 7  _d|jj_
tj|j_|j |¡|_t ||¡ | dddd�}|j |¡|_| d¡ ¡ }t|ƒdk�szt‚d S )Nz1/1/2012z4/1/2012Z100minr2   r"   rµ   rÚ   rÛ   rÇ   )Úhowr-   r(   rÅ   Zinferrh   )r=   r  )rÜ   r=   z2012-04-29 23:00z2012-04-30 5:00rý   )r   rA   r	   r  rl   r5   rd  r#   r   Ú
_with_freqr3   rF   rJ   r    ÚshiftÚ_datar   Z
no_defaultZ_freqr!   )	r   r,   rò   rY   rT   rn   r  rw   r#  r   r   r   Útest_resample_anchored_intradayU  sH    



rƒ  ÚMSZBMSzQS-MARzAS-DECzAS-JUNc                 C   s*   | ddƒ}|j  |¡|_ | |¡ ¡  d S )Nr_   z
12/31/2002)r#   rA   rl   r5   )r   r3   r,   rw   r   r   r   Ú!test_resample_anchored_monthstart…  s    
r…  z
label, secrY  z4.2c                 C   sn   t dddd�}t dddd�}| |¡}ttj d¡|d	�}|jd| d
� ¡ }|jd t	d|› d�ƒksjt
‚d S )Nz2014-10-14 23:06:23.206rj   Z400Lrr   z2014-10-15 23:00:00rŒ   Z2200Lr1   r"   )r>   r@   z2014-10-15 23:00:Z00)r   r  r
   r   r   rï   rl   r5   r#   r   rF   )r>   ÚsecZindex1Úindex2r#   r%   rT   r   r   r   Útest_resample_anchored_multidayŒ  s    
rˆ  c                 C   sf   t dddd� | ¡}ttj t|ƒ¡|d�}|jdddd	� ¡ }t d
ddd� | ¡}t	 
|j|¡ d S )Nr_   rs   rê   rr   r"   ré   r;   rh   rk   z1999-12-31 23:55r`   r5  )r,   rò   rw   rT   Zex_indexr   r   r   Útest_corner_casesŸ  s
    r‰  c                 C   s8   | dddd�d d… }|  d¡ ¡ }t|ƒdks4t‚d S )Nz2007-01z2010-05rµ   r2   r   r  )rl   r5   r!   rF   )Zsimple_period_range_seriesZlen0ptsrT   r   r   r   Útest_corner_cases_periodª  s    rŠ  c                 C   s\   | dddd�}|j  |¡|_ |jddd� ¡ }t|ƒdks>t‚|j d	 td
dd�ksXt‚d S )Nz
2000-04-28z2000-04-30 11:00rý   r2   rµ   rÚ   rÛ   r-   r   z2000-04)r#   rA   rl   r5   r!   rF   r   )r   r,   rw   rT   r   r   r   Útest_corner_cases_date²  s
    r‹  c                 C   s>   t dddd� | ¡}ttj t|ƒ¡|d�}| d¡ ¡  d S )Nrw  iPÃ  r%   rr   r"   r¤   )	r   rA   r
   r   r   rï   r!   rl   r5   rx  r   r   r   Útest_anchored_lowercase_buglet»  s    rŒ  c                 C   sR   t dddd� | ¡}ttj t|ƒ¡|d�}| d¡ ddg¡}t	|t
ƒsNt‚d S )	Nú
2012-06-12r`   rý   rr   r"   Z20minr5   r4   )r   rA   r
   r   r   rï   r!   rl   Ú	aggregater  r	   rF   )r,   rò   rw   rT   r   r   r   Útest_upsample_apply_functionsÂ  s    r�  c                 C   sr   t dddd� | ¡}ttj t|ƒ¡|d�}| tj t|ƒ¡¡}| 	d¡ 
¡ }| ¡  	d¡ 
¡ }t ||¡ d S )Nr�  éÈ   rý   rr   r"   rÅ   )r   rA   r
   r   r   rï   r!   ZtakeZpermutationrl   r4   Z
sort_indexrJ   rK   )r,   rò   rw   rT   r  r   r   r   Útest_resample_not_monotonicÌ  s    r‘  r0   r.   ro  rW   Zfloat32z-Empty groups cause x.mean() to return float64)Úreason)Zmarksc              
   C   s„   t ddgtddddddƒtddddddƒg| d�}| d¡ dd	„ ¡}| d¡}t ||¡ | d¡ ¡ }| d¡}t ||¡ d S )
Nr-   rŒ   éÜ  r   r1   r/   rq   c                 S   s   |   ¡ S r   rb  r{   r   r   r   rg   ì  r}   z/test_resample_median_bug_1688.<locals>.<lambda>)r	   r   rl   r·   r(  rJ   r    Zmedian)r0   rY   rT   r  r   r   r   Útest_resample_median_bug_1688×  s    "ý

r”  c                 C   sþ   | ddƒ}|j  |¡|_ | d¡ dd„ ¡}| d¡ ¡ }t ||¡ | d¡ ¡ }d|_| d¡ ¡ }d|_| d¡ dd„ d	d„ g¡}ddg|_	t |d |¡ t |d |¡ | d¡ 
d
d„ dd„ dœ¡}tj|d |dd� tj|d |dd� d S )Nr_   z4/1/2000rµ   c                 S   s   |   ¡ S r   rb  r{   r   r   r   rg   ù  r}   z+test_how_lambda_functions.<locals>.<lambda>ÚfooÚbarc                 S   s   |   ¡ S r   rb  r{   r   r   r   rg     r}   c                 S   s   | j dd�S ©Nr-   )Zddof©r0  r{   r   r   r   rg     r}   c                 S   s   |   ¡ S r   rb  r{   r   r   r   rg   
  r}   c                 S   s   | j dd�S r—  r˜  r{   r   r   r   rg   
  r}   )r•  r–  F)Zcheck_names)r#   rA   rl   r·   r5   rJ   rK   rd   r0  rX   rŽ  )r   r,   rw   rT   r  Zfoo_expZbar_expr   r   r   Útest_how_lambda_functionsõ  s$    


ÿr™  c                 C   sR   t ddddƒ}t ddddƒ}t||d	d
� | ¡}tddi|d�}| d¡ ¡  d S )NiÏ  rj   r-   r1   r“  ru   r"  r`   Z30minr2   rœ   r"   ZAS)r   r   rA   r	   rl   r4   )r,   r¦   rÇ   Zbad_indrY   r   r   r   Útest_resample_unequal_times  s
    rš  c           	      C   sÂ   t dddd� | ¡}tt d¡|d�}tj|d< t |d |d	 d
d� | ¡}|j|dd�}|j|ddd�}|j|ddd�}| d¡j	dd�}| d¡ 	¡ }t
 ||¡ t
 ||¡ t
 ||¡ d S )Nz
2002-02-02r`   r   rr   ç      @r"   rŒ   r   r@   Z10Tr2   Úbfill)r#   rî   )r#   rî   rì   rí   Z10Minrë   )r   rA   r
   r   r¶   rã   rð   Zreindex_likerl   rœ  rJ   rK   )	r,   Zi30r%   Zi10Zs10Zs10_2ZrlZr10_2Zr10r   r   r   Útest_resample_consistency  s    
r�  éÞ  rV   rp   rj   r^   r1   r¿   ru   ri  Údates1r`   Údates2rÓ   c                 C   s`  t | t t| ƒ¡dœƒ}| d¡ d¡ ¡ }tdddddgddd	�}t d
dddddgi|d�}|d  ¡  	¡ r||j
 d ¡|_
t ||¡ | tddd�¡ ¡ }t ||¡ t | t t| ƒ¡t t| ƒ¡dœƒ}| d¡ d¡ ¡ }t dddddgdddddgdœ|d
dgd�}|d  ¡  	¡ �r.|j
 d ¡|_
t ||¡ | tddd�¡ ¡ }t ||¡ d S )Nr§   r¨   rµ   z
2014-07-31z
2014-08-31z
2014-09-30z
2014-10-31z
2014-11-30)r3   rd   r©   r-   r   rŒ   r"   )r3   Úkey)r¨   r©   ÚC)r©   r¢  r¢  r�   )r	   r   r¶   r!   rl  rl   rÒ   r   r   Úanyr#   r€  rJ   r    rC   r   )rÓ   rY   rT   Zexp_idxrn   r   r   r   Útest_resample_timegrouperB  s2    ý$ýr¤  c                 C   sæ   t tdƒdtdƒditdƒdtdƒdidœƒ}|j | ¡|_| d¡}| tdd	�¡}| tdd	�¡j d
d„ ¡}|j	dks€t
‚||fD ]}|j ¡ }t ||¡ qˆ|j d¡ ¡ }t ||¡ |j tdd	�¡ ¡ }t ||¡ d S )Nz2015-06-05 00:00:00Z
0010100903z2015-06-08 00:00:00Z
0010150847z
2015-06-05z
2015-06-08)rj  ZDATErÅ   r2   c                 S   s   |   ¡ S r   ©Únuniquer{   r   r   r   rg   t  r}   z'test_resample_nunique.<locals>.<lambda>rj  )r	   r   r#   rA   rl   rC   r   rj  r·   rd   rF   r¦  rJ   rK   )r,   rY   rZ   rN   rn   rê   rT   r   r   r   Útest_resample_nuniquec  s2      þ  þûÿ

r§  c                 C   sb   t jdd� ¡ }|j | ¡|_tjj|j 	¡ gd ddgd�|_| 
d¡ ¡ }t  |j|j¡ d S )Nrq  r2   rŒ   Zlev0Zlev1)r  rX  )rJ   r×   Úabsr#   rA   rÂ   r  Zfrom_arraysrX   rŸ   rl   r¦  r6  rr  r   r   r   Ú2test_resample_nunique_preserves_column_level_names‚  s     ÿr©  Úfuncc                 C   s   |   ¡ S r   r¥  r{   r   r   r   rg   �  r}   c                 C   s   |   tj¡S r   )rI   r
   r¦  r{   r   r   r   rg   ‘  r}   c                 C   s
   |   d¡S )Nr¦  )rI   r{   r   r   r   rg   ’  r}   r¦  Zseries_nuniqueZnunique_str)Zidsc           	      C   sr   t dddd� |¡}t dddd� |¡}| |¡}ttt|ƒƒ|dd�}| d	¡}| ¡ }| |ƒ}t 	||¡ d S )
Nrû   rü   rý   r2   rþ   rÿ   r.   r/   rµ   )
r   rA   rH   r
   rv   r!   rl   rÒ   rJ   rK   )	rª  r,   r#   r‡  Zindex3r%   rZ   rT   rn   r   r   r   Ú#test_resample_nunique_with_date_gap�  s    

r«  Únr^  i † Úkrz  iè  c                 C   s<  t j d¡}td| d dd� |¡}t| d| | | ¡ d¡| || ¡d�}| 	d	¡ 
¡ }t|j ¡ |j ¡ d	d
� |¡}|j}t j|j|jdd�}	t  ||	f¡}
||
 |	|
  }}	t jd|dd … |d d… kf }|t jd|	dd … |	d d… kf O }t j|	| d t|ƒd�jddd�}t||d�}t ||¡ d S )NiÒ  z
2015-08-27rV   rq   r¥   r   r.   r"   r   rå   r;   ©ZsideTr-   r@   ©Z	minlengthF©Úcopy)r   r   ZRandomStater   rA   r
   rc  rt  Úchoicerl   r¦  r#   r7   r8   rž   ÚsearchsortedZlexsortZr_Úbincountr!   rJ   rK   )r¬  r­  r,   ZprngÚdrrw   rh   ÚixÚvalsÚbinsZsorterÚmaskrQ   r;   r   r   r   Útest_resample_group_info£  s    ( "&$rº  c           	      C   s¾   d}t d|dd� | ¡}ttj |¡tj ||¡d�}| d¡ ¡ }t |j	 
¡ |j	 ¡ dd� | ¡}tj|j|j	jdd	�}tj|t|ƒd
 d�d
d … jddd�}t||d�}t ||¡ d S )Nr^  z
2015-09-19rq   rr   r"   Z7Trå   r;   r®  r-   r¯  r.   Fr°  )r   rA   r
   r   r   rï   r²  rl   Úsizer#   r7   r8   r³  rž   r´  r!   rt  rJ   rK   )	r,   r¬  rµ  rw   rh   r¶  r¸  rp  r;   r   r   r   Útest_resample_sizeÀ  s     (r¼  c                  C   s°   t ddgdgd�} ttj| jdd�j d¡j d¡ƒ}t d	d
gdgd�}ttj|jdd�j d¡j d¡dd�}t ddg|d�}|jdd� 	¡ }t ddg|d�}t
 ||¡ d S )Nid=XitKXrw   rk  r%   ©r,   ÚUTCzEurope/Madridi 8XiFXr  r2   r1   r"   ©rô   )r	   r   rÂ   r{  rw   ÚdtrQ  Ú
tz_convertrl   r4   rJ   r    )Zdf1Zdti1Zdf2Zdti2rY   rT   rn   r   r   r   Útest_resample_across_dstÏ  s*    ÿþÿÿþürÂ  c                 C   sŽ   t ddgdd� d¡ | ¡}tddg|d�}| td	d
�¡ ¡ }tddddd� | ¡}t |ƒ}tdgtj	gd  dg |d�}t
 ||¡ d S )Nl   @jÈ$ l   ÀS*~«Q$ r¾  r  rS  r-   rŒ   r"   Z1dr2   z
2016-11-02z
2016-11-24r¤   rN  rÍ   rt   rY  )r   rÁ  rA   r	   rC   r   r~   r   r   r•   rJ   r    )r,   r#   rY   rT   Zexpected_index_valuesrn   r   r   r   Ú!test_groupby_with_dst_time_changeï  s&    ÿþÿ   ÿþ rÃ  c                 C   sà  t tddddƒgdd� | ¡}tdg|d�}t |j ¡ d	d
� | ¡}tdg|d�}t |jd	d� 	¡ |¡ |jdd� 	¡  t |jdd� 	¡ tdgt tdddƒgddd� | ¡d�¡ t
ddddd� | ¡}t|jƒ}t|||dœ|dd�}ddddœ}t | d¡ |¡dddg tddd d!d"d#gd$d%d&d'd(d)gdd*d*d*d+d,gdœt
d-d.ddd� | ¡d�d/¡ t | d0¡ |¡dddg tddd!d#gd$d&d(d)gdd1d2d,gdœt
d-d3d0dd� | ¡d�d4¡ t | d¡ |¡dddg tddd5gd$d6d)gdd7d8gdœt
d9d:ddd� | ¡d�d;¡ t | d<¡ |¡dddg tdd5gd6d)gd5d8gdœt
d9d:d<dd� | ¡d�d=¡ |d>d?… }t | d	¡ ddddœ¡dddg td@dAdBd#gdCdDd(dEgddFddgdœt
d>d?d	dd� | ¡d�dG¡ d S )HNr“  r^   r`   é   z
US/Easternr  r1   r"   rÅ   r2   r¿  r„  r-   ©rö   r3   z
2013-09-30rW  Z30MinrM  rN  )r­   rM   r  r.   r/   r7   r8   rÒ   rÈ   r­   rM   r  r   é0   i€  éÐ  i   ir  é/   i  iÏ  i  iq  i2  éP  iR  éÁ   z	9/30/2013z	11/4/2013zW-MON Frequencyz2W-MONi   i¢  z
11/11/2013z2W-MON Frequencyi  i  iÒ  é1   z9/1/2013z	11/1/2013zMS FrequencyZ2MSz2MS Frequencyz
10/26/2013z
10/29/2013ià  i  iB  i  iA  i¡  ra  zD Frequency)r   r   rA   r	   r#   Ú	normalizerJ   r    rl   r4   r   rv   r»  rI   )r,   rL   rY   rn   rž   r  Zdf_dailyr   r   r   Útest_resample_dst_anchor  sê      ÿþþþ
   ÿþ
ý   ÿþú
ô


ý   ÿþú
ô   ÿþþø   ÿþþøÿ


ý   ÿþú
òrÍ  c                 C   sˆ   t  d¡}tdddƒ}t| |¡ddd� | ¡}td|d	� d
¡ ¡ }tdt	j
gd dg t| |¡dd
d� | ¡d	�}t ||¡ d S )NzEurope/Berlinrž  rV   é   r`   r[  rr   r1   r"   r  ç      @rj   ru   )ÚpytzÚtimezoner   r   ZlocalizerA   r
   rl   r5   r   r•   rJ   rK   )r,   rö   rÀ  rÓ   rT   rn   r   r   r   Útest_downsample_across_dstc  s    
þrÒ  c                 C   sp   t tdddddgdd� | ¡dd	d
ddgd�}| d¡ ¡ }t ddgtddgddd� | ¡d�}t ||¡ d S )Nz
2017-03-25z
2017-03-26z
2017-03-27z
2017-03-28z
2017-03-29úEurope/Amsterdamr  r^   rs   rÀ   é   ri  )r#   r¸   Z1WrÄ  é*   z
2017-04-02rn  rÅ  r"   )r	   r   rA   rl   r4   rJ   r    )r,   rY   rT   rn   r   r   r   Ú!test_downsample_across_dst_weeklyp  s*    þýû  ÿþþrÖ  c                 C   sb   t ddddd� | ¡}t|tjd�}| d¡ ¡ }tt ddd	dd
� | ¡tjd�}t ||¡ d S )Nz
2013-04-01z
2013-05-01zEurope/Londonr  rÅ  r/   rn  z
2013-04-07r1   )r3   rc   rö   )	r   rA   r
   r   rW   rl   r5   rJ   rK   )r,   rR   r%   rT   rn   r   r   r   Ú#test_downsample_across_dst_weekly_2ƒ  s    ÿÿür×  c           	      C   sº   t ddddƒ}t ddddƒ}t||dd� | ¡}| d¡ d	¡}ttt|ƒƒƒ}t||d
�}| 	t
dd�¡ ¡ }tddd�jd	dd�}t|dd� | ¡}tdddg|d
�}t ||¡ d S )Niâ  r^   rj   rs   r1   r\  r2   r¾  zAmerica/Havanar"   rq  z
2018-11-03©rc   T)rT  rÅ   g      @g      <@g     @F@)r   r   rA   rQ  rÁ  Úlistrv   r!   r	   rC   r   r5   r   rJ   r    )	r,   r¦   rÇ   r#   r¸   Z	dataframerT   rL   rn   r   r   r   Útest_downsample_dst_at_midnight“  s     ÿrÚ  c           	      C   sü   t tjdtjddgƒ}tdddddg|d	�}|j | ¡|_t dddgƒ | ¡}td
ddg|d	�}t | d¡ 	¡ |¡ t ddgƒ | ¡}tddg|d	�}t | d¡ 	¡ |¡ t dgƒ | ¡}tdg|d	�}t | d¡ 	¡ |¡ t | d¡ 	¡ |¡ d S )Nz1970-01-01 00:00:00z1970-01-01 00:00:01z1970-01-01 00:00:02rŒ   rj   r1   ru   r^   r"   rZ  g      @g      &@Z1srÏ  Z2sZ3sZ60s)
r   rÂ   ÚNaTr	   r#   rA   rJ   r    rl   r5   )	r,   r#   ÚframeZindex_1sZframe_1sZindex_2sZframe_2sZindex_3sZframe_3sr   r   r   Útest_resample_with_nat¥  s4    ûÿ	ÿþÿrÝ  c                 C   s¬   t dddƒt dddƒg}td|i|d�}|j | ¡|_tt dddƒtjt dddƒgtddd	d
� | ¡dd�}| d	¡ 	¡ d }t
 ||¡ |d  d	¡ 	¡ }t
 ||¡ d S )Nià  r-   ri  é   r»   r"   z
2016-01-15rj   Z2Drr   )r#   rd   )r   r	   r#   rA   r
   rÂ   rÛ  r   rl   ÚfirstrJ   rK   )r,   rÓ   rY   r  r  r   r   r   Útest_resample_datetime_valuesÆ  s    ýrà  c                 C   sâ   dd„ }| j  |¡| _ d}|  d¡ ||¡}|  d¡ ¡  |¡}t ||¡ |  d¡j||d�}|  d¡ ¡  |¡}t ||¡ tdddœt	d	dd
�d�}| 
d¡ d¡ ||¡ t¡}| 
d¡ d¡ ¡  |¡}t ||¡ d S )Nc                 S   s   t  | ¡| S r   )r   r5   )r¸   Úadd_argr   r   r   rP   Ý  s    z3test_resample_apply_with_additional_args.<locals>.frV   rÅ   )rá  r-   rŒ   r§   Z2017rØ  r"   r¨   )r#   rA   rl   r·   r5   ÚmultiplyrJ   rK   r	   r   rC   rI   rt  r}  r    )rm   r,   rP   Ú
multiplierrT   rn   rY   r   r   r   Ú(test_resample_apply_with_additional_argsÛ  s    rä  zn1, freq1, n2, freq2)é   ÚSç      à?r   )é<   ræ  r-   r   )i  ræ  r-   r  )rè  r   r-   r  )i`T  ræ  g      Ð?rÅ   )r,  ræ  r-   rÅ   )iÀ¨  ræ  rç  rÅ   )i   r   r-   rÅ   )rs   r  rç  rÅ   )é   r  r-   rÅ   c                 C   sx   | | }|| }t dtdd|d� |¡d�}|tt|ƒƒ }| t|ƒ| ¡ ¡ }	| t|ƒ| ¡ ¡ }
t 	|	|
¡ d S )Nr   z19910905 13:00z19911005 07:00r2   r"   )
r
   r   rA   rv   r!   rl   r«   r5   rJ   rK   )Zn1Zfreq1Zn2Zfreq2r­  r,   Zn1_Zn2_r%   rÔ   rÕ   r   r   r   Ú test_resample_equivalent_offsetsó  s    þrê  z"first,last,freq,exp_first,exp_last)Ú19910905Ú19920406rÅ   rë  Ú19920407)z19910905 00:00ú19920406 06:00rÅ   rë  rí  )ú19910905 06:00rî  r  rï  z19920406 07:00)Z19910906rì  rµ   Ú19910831Ú19920430)rð  rñ  rµ   rð  Ú19920531)z1991-08z1992-04rµ   rð  rò  c                 C   sz   t | ƒ} |  | j¡ |¡} t |ƒ}| |j¡ |¡}t|ƒ}t|ƒ}tjj |¡}t	| ||dd�}||f}||ksvt
‚d S )Nr(   r½  )r   rd  r3   rA   r   rÂ   r|  ZfrequenciesZ	to_offsetr   rF   )rß  r~   r3   Z	exp_firstÚexp_lastr,   rT   rn   r   r   r   Útest_get_timestamp_range_edges  s    rô  Ú
duplicatesTFc                 C   s°   t dddd� |¡}ttdƒ|d�}t||d dœƒ}| rDddg|_| d	¡ tj	¡}ttj
d
dgddgddgddggtjd�tddddgdd� |¡|jd�}t ||¡ d S )Nz
2012-01-31rµ   rs   ©r¦   r3   rc   r"   rŒ   r§   r¨   r  r   ré  rè  éÒ   rÉ  rÇ  iÞ  i´  r¢   z
2012-03-31z
2012-06-30z
2012-09-30z
2012-12-31úQ-DECr2   r�   )r   rA   r
   rv   r	   rX   rl   r·   r   r6   rB   r.   r   rJ   r    )rõ  r,   r#   rw   rY   rT   rn   r   r   r   Útest_resample_apply_product,  s"    
&
 ÿþûrù  z$first,last,freq_in,freq_out,exp_last)ú
2020-03-28ú
2020-03-31rÅ   rP  z2020-03-30 01:00)rú  ú
2020-10-27rÅ   rP  ú2020-10-27 00:00)ú
2020-10-25rü  rÅ   rP  z2020-10-26 23:00)rú  rû  rP  rÅ   z2020-03-30 00:00)rú  rü  rP  rÅ   rý  )rþ  rü  rP  rÅ   z2020-10-26 00:00)rß  r~   Úfreq_inÚfreq_outró  c           	      C   sV   t dt| ||dd� |¡ƒ}| |¡ ¡ }t dt| ||dd� |¡ƒ}t ||¡ d S )NrÍ   rÓ  rN  )r
   r   rA   rl   rÞ   rJ   rK   )	rß  r~   rÿ  r   ró  r,   rw   rT   rn   r   r   r   Ú#test_resample_calendar_day_with_dstA  s    ' ÿþr  rß  r~   c                 C   sn   t dddd� |¡}tdtjtjg|ƒ}t| d¡| ƒdd�}ttjgtd	gd
d� |¡d�}t 	||¡ d S )NZ2020rµ   rj   rö  r-   r  rŒ   )Z	min_countrû  rø  r2   r"   )
r   rA   r
   r   r•   r�   rl   r   rJ   rK   )rª  r,   r#   ÚserrT   rn   r   r   r   Ú+test_resample_aggregate_functions_min_counts  s    þr  c                 C   s”   t tdddd� |¡dgdddgd | d	�}|j|jd
k |jdkB d d …f }| d¡ ¡ }t dtjdgdgtdddd� |¡d�}t	 
||¡ d S )NrK  z2000-01-03 23Z12Hrå   r|   r   r-   rŒ   )r#   rX   r¸   r0   z
2000-01-02z
2000-01-03rÅ   r*  )r	   r   rA   r  r#   rl   r8   r   r•   rJ   r    )Zany_unsigned_int_numpy_dtyper,   rY   rT   rn   r   r   r   Útest_resample_unsigned_int€  s$    ÿú"
ÿýr  c                  C   s¤   t ddddd�} tdddd	d
ddddd	d
ddddd	d
g| d�}| d¡ ¡ }tt dddddddddg	¡ d¡dd�}tdddddddddg	|d�}t 	||¡ d S )Nz
0300-01-01rK  r%   Z100Y)r,   r3   r-   r`   rŒ   r¿   r1   ru   r"   Z200Yz
0300-12-31z
0500-12-31z
0700-12-31z
0900-12-31z
1100-12-31z
1300-12-31z
1500-12-31z
1700-12-31z
1900-12-31zdatetime64[s]z200A-DECr2   rÍ   rZ  g      @r›  )
r   r
   rl   r5   r   r   rB   rt  rJ   rK   )rR   r  rT   Zexpected_idxrn   r   r   r   Útest_long_rule_non_nano˜  s,    .÷ÿôòr  )�r   Ú	functoolsr   Úior   Útypingr   Únumpyr   r…   rÐ  Zpandas._libsr   Zpandas._typingr   ZpandasrÂ   r	   r
   r   r   r   r   Zpandas._testingZ_testingrJ   Zpandas.core.groupby.grouperr   Zpandas.core.indexes.datetimesr   Zpandas.core.indexes.periodr   r   Zpandas.core.resampler   r   Zpandas.tseriesr   Zpandas.tseries.offsetsr   Zfixturer   r   r$   r,   rU   r[   ÚmarkZparametrizero   rx   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.  r/  r1  r8  rB  ÚobjectrF  rG  rL  rO  rR  r]  r_  r`  rf  rm  rs  ru  rv  ry  r~  rƒ  r…  rˆ  r‰  rŠ  r‹  rŒ  r�  r‘  r*   Zxfailr”  r™  rš  r�  rŸ  Ú__annotations__rÛ  r   Zdates3r¤  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>   sò    



$
þþþøþ		þþ	þ
þ
D:


	0ýþ
	


úþ
 ÿ

%!7

0

	
ÿþüþ






ú
2ÿ
 ýù	 a!öþúþâþ$    ÿ