a
    PfZ                     @   s  d dl mZ d dlZd dlZd dlmZ d dlZd dlm	Z	m
Z
mZmZmZ d dlmZ d dlmZ ej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dg ddd Zdd Zej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(d0d1 Z)d2d3 Z*ejd4d5gd5d6ggd7d8 Z+ejd9d:d;gd<d= Z,d>d? Z-ejd4d5gd5d6ggd@dA Z.dBdC Z/dDdE Z0dFdG Z1dHdI Z2dJdK Z3ejdLdMdNgdOdP Z4dS )Q    )dedentN)is_platform_windows)	DataFrameIndexSeriesTimedeltaIndex	Timestamp)
date_rangec                   C   s<   t dgd dgd  dgd  tddtd	d
dddS )N                  (   AB1/1/2000sfreqperiodsindex)r   nparanger	    r   r   e/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/resample/test_resampler_grouper.py
test_frame   s    (r   c              	   C   s   ddl m} td}| | tjd ddJ |d" t| jdd W d    n1 s^0    Y  W d    n1 s|0    Y  d S )	Nr   )provisionalcompleterz    import numpy as np
    from pandas import Series, date_range
    data = np.arange(10, dtype=np.float64)
    index = date_range("2020-01-01", periods=len(data))
    s = Series(data, index=index)
    rs = s.resample("D")
    F)Zraise_on_extra_warningsignorezrs.r
   )	ZIPython.core.completerr    r   Zrun_celltmassert_produces_warninglistZ	CompleterZcompletions)ipr    coder   r   r   "test_tab_complete_ipython6_warning   s    


r'   c                  C   s  g dg dg dg dg dg dg dg dg d	g d
g
} t | g dd}t|j|_dd }d}tjt|d  |d|}W d    n1 s0    Y  d}tjt|d* |	dd
d }W d    n1 s0    Y  t|| t tddddg dg dd	d}dd }d}tjt|d  |d|}W d    n1 sj0    Y  d}tjt|d$ |d
d }W d    n1 s0    Y  t|| d S ) N)
2010-01-01r   r   )z
2010-01-02r   r   )z
2010-01-05r   r   )z
2010-01-10r      )z
2010-01-13r   r   )r(   r      )z
2010-01-03r   r   )z
2010-01-04r   r
   )z
2010-01-11r   r)   )z
2010-01-14r   r   )dateidZscorecolumnsc                 S   s   |  dd S )Nr+   D)	set_indexresampleasfreqxr   r   r   f_0E   s    z'test_deferred_with_groupby.<locals>.f_07DataFrameGroupBy.apply operated on the grouping columnsmatchr,   :DataFrameGroupBy.resample operated on the grouping columnsr+   r/   
2016-01-01   W)startr   r   r
   r
   r   r   )r*      r)   r   r+   groupvalc                 S   s   |  d S )N1D)r1   ffillr3   r   r   r   f_1X   s    z'test_deferred_with_groupby.<locals>.f_1rA   rC   )r   pdto_datetimer+   r"   r#   DeprecationWarninggroupbyapplyr0   r1   r2   assert_frame_equalr	   rD   )datadfr5   msgexpectedresultrE   r   r   r   test_deferred_with_groupby2   sJ    .804rQ   c                 C   s   |  d}|jdd }|dj }t|| |jd }t|| d}tjt|d  |d j}W d    n1 s0    Y  t|| d S )Nr   c                 S   s   |  d S N2s)r1   meanr3   r   r   r   <lambda>g       ztest_getitem.<locals>.<lambda>rS   r9   r7   )	rI   r   rJ   r1   rT   r"   assert_series_equalr#   rH   )r   grO   rP   rN   r   r   r   test_getitemd   s    
.rY   c                  C   s   ddddddg} t | tdddd}|d	d
}|d  }tjjddg|jgdd}t	ddg|dd}t
|| |d  }t
|| d S )Nr
   r   )r,   buyerr   r   r:   r   r   r,   rC   rZ   )r,   Nnamesr   name)r   r	   rI   r1   countrF   
MultiIndexfrom_arraysr   r   r"   rW   )rL   rM   rrP   Zexp_mirO   r   r   r   test_getitem_multipleu   s    rd   c                  C   sf   t tdtddddd} | ddd	d
  }| djd	ddd
  }t|| d S )NZaabbbz1-1-2016r*   r[   r
   )r,   r+   rL   r+   r,   2DrL   on)	r   r$   r	   r0   rI   r1   sumr"   rW   )rM   exprP   r   r   r   )test_groupby_resample_on_api_with_getitem   s    rj   c                  C   sx  d} d\}}d}t ||dd}ttjdt||d}||| }tj| d}|	|
d}||| }|	|
d}	tjtd	d
  t|j|	j W d    n1 s0    Y  td}
tj| |
d}|	|
d}||| }|	|
d}t|| tdtdd  }tj| |d}|	|
d}||| }|	|
d}t|| t|| d S )NZ1399min)z1/1/2000 00:00:00z1/31/2000 00:00z1/15/2000 00:00:00Z1231minr   r   r   r`   zIndex are differentr7   r   )r   origini0u  )r	   r   r   randomdefault_rngstandard_normallenrF   GrouperrI   aggpytestraisesAssertionErrorr"   assert_index_equalr   r   rW   Z	Timedelta)r   r=   endmiddlerngtsZts2Zsimple_grouperZcount_tsZ	count_ts2rl   Zadjusted_grouperZadjusted_count_tsZadjusted_count_ts2Zorigin_futureZadjusted_grouper2Zadjusted2_count_tsZadjusted2_count_ts2r   r   r   test_groupby_with_origin   s2    .r{   c                  C   sX   t dddd} ttd| dd }tg dtjg dd	dd
d}t|| d S )Nr   r   minr   r   r   Z20s)r   r   r
   r
   r
   r   r   )z2000-01-01 00:00:00z2000-01-01 00:00:20z2000-01-01 00:00:40z2000-01-01 00:01:00z2000-01-01 00:01:20z2000-01-01 00:01:40z2000-01-01 00:02:00zdatetime64[ns])dtyper   )	r	   r   ranger1   nearestrF   DatetimeIndexr"   rW   )r   rP   rO   r   r   r   test_nearest   s    	r   f)firstlastmedianZsemrh   rT   r|   maxsizer`   r   ZbfillrD   r2   Zohlcc                    s   | d}|d}d}tjt|d t|  }W d    n1 sH0    Y  d}tjt|d" | fdd}W d    n1 s0    Y  t|| d S )Nr   rS   r9   r7   r6   c                    s   t | d  S rR   getattrr1   r3   r   r   r   rU      rV   ztest_methods.<locals>.<lambda>)rI   r1   r"   r#   rH   r   rJ   Zassert_equalr   r   rX   rc   rN   rP   rO   r   r   r   test_methods   s    

*0r   c                 C   s>   |  d}|d}|j }|jdd }t|| d S )Nr   rS   c                 S   s   |  d S rR   )r1   nuniquer3   r   r   r   rU      rV   z&test_methods_nunique.<locals>.<lambda>)rI   r1   r   r   rJ   r"   rW   )r   rX   rc   rP   rO   r   r   r   test_methods_nunique   s
    


r   Zstdvarc                    s   | d}|d}d}tjt|d  t| dd}W d    n1 sL0    Y  d}tjt|d" | fdd	}W d    n1 s0    Y  t|| d S )
Nr   rS   r9   r7   r
   Zddofr6   c                    s   t | d ddS )NrS   r
   r   r   r3   r   r   r   rU     rV   z&test_methods_std_var.<locals>.<lambda>)rI   r1   r"   r#   rH   r   rJ   rK   r   r   r   r   test_methods_std_var   s    

.0r   c                 C   s  |  d}|d}d}tjt|d |d }W d    n1 sJ0    Y  dd }d}tjt|d ||}W d    n1 s0    Y  t|| dd }d	}tjt|d ||}W d    n1 s0    Y  |d
}t|| d S )Nr   rS   r9   r7   c                 S   s   |  d S rR   )r1   rh   r3   r   r   r   r5     s    ztest_apply.<locals>.f_0c                 S   s   |  ddd S )NrS   c                 S   s   |   S Nrh   )yr   r   r   rU     rV   z)test_apply.<locals>.f_1.<locals>.<lambda>)r1   rJ   r3   r   r   r   rE     s    ztest_apply.<locals>.f_1r6   int64)	rI   r1   r"   r#   rH   rh   rJ   rK   Zastype)r   rX   rc   rN   rO   r5   rP   rE   r   r   r   
test_apply  s     

,((
r   c                  C   s   t dddd} tdtjdt| i| d}dd	 }|tjd
d	|}|
d
	|}t|| |d jtjd
ddd	|}|d 
d
	|}t|| d S )Nz1-1-2015z12-31-15r/   rk   col1r   rL   r   c                 S   s   t ddgddgd}|S )Nr
   r   abr   )r   )r4   r   r   r   r   r   /  s    z(test_apply_with_mutated_index.<locals>.fMEF)Z
group_keys)r	   r   r   rm   rn   rp   rI   rF   rq   rJ   r1   r"   rK   rW   )r   rM   r   rO   rP   r   r   r   test_apply_with_mutated_index(  s     r   c                     s   t jddg} tdddd}ttdgd dd	|| d
}dd |jD  |	d
 fdd}td	ddgg tddd	dt jddgd
}t|| d S )N)r   r    one)r   r   itwoz
2017-01-01Z15Minr   )r=   r   r   r      r   r   r.   c                 S   s&   i | ]}||d  dkrt jnt jqS )r   r   )r   rh   rT   ).0colr   r   r   
<dictcomp>C  rV   z1test_apply_columns_multilevel.<locals>.<dictcomp>hc                    s    | j  | S r   r_   r3   Zagg_dictr   r   rU   D  rV   z/test_apply_columns_multilevel.<locals>.<lambda>g        Z1h)rF   ra   from_tuplesr	   r   r   arrayZreshaper.   r1   rJ   r"   rK   )colsindrM   rP   rO   r   r   r   test_apply_columns_multilevel>  s    "r   c                  C   s|   dd } t ddddd}tg d|d	}tg d
|d	}|dj| |dd}t ddddd}tdg|d	}t|| d S )Nc                 S   s>   |   } || jd }|jd | }| ||k jd S )Nr   )Zsort_valuesZreindexr   ZfillnacumsumZiloc)Zseriesweightsqr   cutoffr   r   r   weighted_quantileP  s    z5test_apply_non_naive_index.<locals>.weighted_quantilez2017-6-23 18:00r   Z15minUTC)r   r   tz)      ?r
   r
   r
   r
   r   r   r   r   )g      d@[   A   +      
   r
   r   r/   g      ?)r   r   z2017-06-23 00:00:00+00:00)r   r   r   )r	   r   r1   rJ   r"   rW   )r   timesrL   r   rP   r   rO   r   r   r   test_apply_non_naive_indexO  s    r   c                 C   s   t ddd| d}t|g dg ddd}d	}tjt|d
( |djddd }W d    n1 sj0    Y  tj	g dtj
dtj	g dd|  ddg}tjj|dd gd}tg dg dd|d}t|| d S )Nz
2000-01-01re   r*   )r   r   unit)r   r   r
   r
   r   )r
   r
   r
   r
   r
   )col0r   )r   rL   r9   r7   r   Z1Wleft)label)r   r   r
   r   r~   )z
1999-12-26
2000-01-02r   r   zM8[]r\   )r   r   r   r   )r
   r
   r   r
   r   )r	   r   r"   r#   rH   rI   r1   rh   r   r   r   rF   ra   rb   rK   )r   r   rM   rN   rP   miZmindexrO   r   r   r    test_resample_groupby_with_labelb  s     6
r   c                 C   s   | }t g ddd}d}tjt|d$ |dd }W d    n1 sP0    Y  |jjdksjJ t	|jj
d | |dd	 }|jjdksJ t	|jj
d | d S )
N)r
   r   r   r   r   r9   r7   rS   r   r   r   )r   r"   r#   rH   rI   r1   rT   r   Znlevelsrv   levelsZrolling)r   rM   rO   rN   rP   r   r   r   test_consistency_with_windowy  s    2r   c                  C   sp   t tjddtdtddddd} |  }g d	|_|	d

 }| 	d

 }|j|_t|| d S )Nr   )r   r   Zaaa
2012-01-01r   r   r}   r.   r   )r   r   cZ5s)r   r   rm   rn   ro   r$   r	   copyr.   r1   r   r"   rK   )rM   df2rO   rP   r   r   r   test_median_duplicate_columns  s    
r   c                  C   s   t tdtdddtddddd} | dd	d
 }tg dtddddd}t|| | ddd
 }t|| d S )Nr   r   )r   r   r   Z20minr}   r   r   c                 S   s
   | j  S r   )r   rh   rA   r   r   r   rU     rV   z0test_apply_to_one_column_of_df.<locals>.<lambda>)r   r      	   r;   c                 S   s   | d   S )Nr   r   r   r   r   r   rU     rV   )r   r   r	   r1   rJ   r   r"   rW   )rM   rP   rO   r   r   r   test_apply_to_one_column_of_df  s    r   c                  C   sn   t g dg dg dd} t| d | d< | djddd}|d	g  }|d	d
i}t|| d S )N)cat_1r   cat_2r   r   r   r   r   )r*   r      r   r;      r   2   )z2019-2-1z
2018-02-03	2020-3-112019-2-2r   z	2018-12-4r   z
2020-12-12)catnumr+   r+   r   ZYErf   r   rh   )	r   rF   rG   rI   r1   rh   rr   r"   rK   )rM   	resampledrO   rP   r   r   r   test_resample_groupby_agg  s    
r   c                  C   s   t d} tdgdgdt| gddd}|dd	d
 }|ddg}tddggtjjd| fgddgdddgd}t	
|| d S )Nz2021-02-28 00:00:00betaE   )classvaluer+   r   r   r   r   r   rh   r   r
   r\   r   )r   r   r   rI   r1   rr   rF   ra   r   r"   rK   )rz   rM   r   rP   rO   r   r   r   "test_resample_groupby_agg_listlike  s     r   keysr   r   c                 C   s   t g ddgtg d}d}tjt|d, || jtdd	 }W d    n1 sZ0    Y  t ddgdj
| d	d
j
tg dd}t| dkr| d |j_t|| d S )Nr   r   r   r9   r7   00:00:01ruler-   FdropT)appendr
   r   )r   r   r"   r#   rH   rI   r1   rF   to_timedeltarT   r0   rp   r   r_   rK   r   rM   rN   rP   rO   r   r   r   
test_empty  s    :r   consolidateTFc           	      C   s,  t dddd}td|tddd}td|tdd	}tj||gd
d}| rV| }d}tjt|d* |	dgj
ddd }W d    n1 s0    Y  tjjdgd dgd  tg dd dgddgd}tdgd dgd  g dd dgd tjgd  d|d}t|| d S )Nz
2020-01-01   r/   r}   r   rB   )keyr+   r   
col_objectr   )r   r+   r   T)Zignore_indexr9   r7   r   r<   r+   rf   r   )z
2020-01-05z
2020-01-12z
2020-01-19r   nsr\   )r   r*   r   )r   r   r   r   )r	   r   r   rF   concatZ_consolidater"   r#   rH   rI   r1   r|   ra   rb   rG   Zas_unitr   nanrK   )	r   datesZdf1r   rM   rN   rP   idxrO   r   r   r   .test_resample_groupby_agg_object_dtype_all_nan  s2    8	
r   c                  C   s   t tdddg dg ddd} | djd	d
ddg  }tjjg d| d
 jd d d gdd
gd}t dg di|d}t	
|| d S )Nr:   r   r=   r   r   r   r   r   r
   r
   r
   r
   )r
   r)   r*   r   r   r   r*   r
   r@   )rL   rA   re   r+   rf   rB   r   r   r
   r
   r   r\   )      @g      @g      @g      @r   )r   r	   rI   r1   rT   rF   ra   rb   Z_valuesr"   rK   rM   rP   mi_exprO   r   r   r   'test_groupby_resample_with_list_of_keys  s     
 r   c                 C   s   t g g dd}t|d |d< |d}d}tjt|d, || jt	dd
 }W d    n1 sp0    Y  t g ddj| dd	}t|d |d< |jdd
d
d}t| dkr| d |j_t|| d S )N)r   r   r+   r-   r+   r9   r7   r   r   Fr   T)r   r   r
   r   )r   rF   rG   r0   r"   r#   rH   rI   r1   r   rT   rp   r   r_   rK   r   r   r   r   test_resample_no_index(  s    
:r   c                  C   s   t ttg dddd} | g djtdd }tg d}t tjt	j
d	d
gt	jd|gg dg dgd dgdd}tj||t  d d S )N)2018-01-01 00:00:002018-01-01 12:00:002018-01-02 00:00:00r+   r   r   )r   r   r
   z06:00:00r   )r   z2018-01-01 06:00:00r  r  r   r
   r   )r   r   r   r
   )r   r
   r   r   )r   codesr]   )Zcheck_index_type)r   r   rF   rG   rI   r1   r   rT   ra   r   r   Zintpr"   rK   r   )rM   rP   r   rO   r   r   r   test_resample_no_columns:  s(     	r  c                  C   s   t dgd dgd  dgd  dgd  tddtddddd	} d
}tjt|d$ | dd	 }W d    n1 s0    Y  t
jjg dt
jddgd ddgdd gd}td|d	}t|| d S )Nr
   r   r   r   r   z31/12/2000 18:00r   r   r   r9   r7   r   r/   r>   z
2000-12-31z
2001-01-01zM8[ns]r   r\   )r   r   r   r	   r"   r#   rH   rI   r1   r   rF   ra   rb   r   r   rW   )rM   rN   rP   r   rO   r   r   r   )test_groupby_resample_size_all_index_sameY  s$    22r  c                  C   s   t g dg ddtddddd} | d	d
dg  }tjjg d| jd d d gd	dgd}t dg di|d}t	
|| d S )Nr   r   r
   r;   r
   r*   r   r   r?   rA   rB   r:   r   r+   r=   r   r_   r   rA   re   rB   r   r   r\   g       @g      @g      @r   r   r	   rI   r1   rT   rF   ra   rb   r   r"   rK   r   r   r   r   0test_groupby_resample_on_index_with_list_of_keysq  s     r  c                  C   s   t g dg dg dg ddtdddd	d
} | ddddg  }tjjg d| jd d d gddgd}t g dg dd|d
}t	
|| d S )Nr   r  )r   r)   r
   r   r   r   r
   r   )r
   r;   r
   r;   r   r
   r   r*   )rA   	first_val
second_valZ	third_valr:   r   r+   r  r   rA   re   r  r  r   r   r\   r	  )      @r  g      @r  )r  r  r
  r   r   r   r   >test_groupby_resample_on_index_with_list_of_keys_multi_columns  s&    	r  c                  C   sz   t g dg ddttdddddd	} | d
}|d}tjtdd |dg  W d    n1 sl0    Y  d S )Nr   r  r  r:   r   r   r+   r   r   rA   re   zColumns not foundr7   Zval_not_in_dataframe)r   r   r	   rI   r1   rs   rt   KeyError)rM   gbrsr   r   r   ?test_groupby_resample_on_index_with_list_of_keys_missing_column  s    



r  kinddatetimeperiodc                 C   s   t tg dg dg dd}|d}|dd jd| d	 }td
dg}| dkrj|jdd}tj	j
ddg|gddgd}tg d|dd}t|| d S )N)z20181101 1100z20181101 1200z20181102 1300z20181102 1400)r   r   r   r   )r
   r   r   r;   )r  rA   r   r  rA   r   r/   )r  z
2018-11-01z
2018-11-02r  rk   r   r   r\   )r
   r   r   r;   r^   )r   rF   rG   r0   rI   r1   r   r   Z	to_periodra   Zfrom_productr   r"   rW   )r  rM   rP   Zdt_levelZexpected_indexrO   r   r   r   test_groupby_resample_kind  s&    	

r  )5textwrapr   numpyr   rs   Zpandas.compatr   ZpandasrF   r   r   r   r   r   Zpandas._testingZ_testingr"   Zpandas.core.indexes.datetimesr	   Zfixturer   r'   rQ   rY   rd   rj   r{   r   markZparametrizer   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`   
2
)
	
$

!
