o
    iy                     @   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
 d dlmZ d dlmZ ee ddde dddd	d
Ze
ejeeeZeeeeeed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dgddggdd  Z"d!d" Z#ej !d#g d$d%d& Z$d'd( Z%d)d* Z&d+d, Z'd-d. Z(ej !d/dd0gd1d2 Z)d3d4 Z*ej j!d5d6d7 d8d7 gd9d:gd;d<d= Z+d>d? Z,d@dA Z-dBdC Z.dDdE Z/dFdG Z0ej !d5dHgdIdJgddKidLdMdNgdOdP Z1dQdR Z2dSdT Z3dUdV Z4ej !dWg dXdYdZ Z5d[d\ Z6ej !d]d^d_d`g dadbdcdg dddedff
dgdhdidgdj d`dcdkg dldmdf
d^d_d`g dadbdcdng dodpdqf
d^d_d`g dadbdrdg dsdtdff
gdudv Z7ej !dwg dKdxdydzgifdKd{d|gdzgd}fdKej8dydzgifdLdxdyd~gifdLd{dyd~gifdLej8dyd~gifdHdxdydqgifdHd{dgdqgd}fdHej8dgdqgd}fdJdxdydgifdJd{dgdgd}fdJej8dgdgd}fddxdydqgifdd{dgdqgd}fdej8dgdqgd}fddxdydgifdd{dgdgd}fdej8dgdgd}fdIdxdydgifdId{dydgifdIej8dydgifdMdxdydgifdMd{dydgifdMej8dydgifddxdydgifddej8dydgifddxdydgifddej8dydgifddxdydgifddej8dydgifdd Z9ej !dwddKd{d|gfdKej8d|gfdddLej8dfddHd{dgfdHej8dgfddJd{dgfdJej8dgfddd{dgfdej8dgfddd{dgfdej8dgfgdd Z:ej !dg ddd Z;dS )    )datetimeN)lib)	DataFrameNamedAggSeries)
date_range     
   Min)startendfreqABCc                   C   s   t  S N)_test_framecopy r   r   b/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/pandas/tests/resample/test_resample_api.py
test_frame   s   r   c                  C   s<   t d} dt| v sJ t jddd} dt| v sJ d S )NHziDatetimeIndexResampler [freq=<Hour>, axis=0, closed=left, label=left, convention=start, origin=start_day]
2000-01-01)originzsDatetimeIndexResampler [freq=<Hour>, axis=0, closed=left, label=left, convention=start, origin=2000-01-01 00:00:00])test_seriesresamplestr)rr   r   r   test_str   s   
r    c                  C   sh   t d} |  }t|tsJ t|dksJ t  d} |  }t|ts*J t|dks2J d S )Nr      )r   r   mean
isinstancer   lento_framer   )r   resultr   r   r   test_api+   s   
r'   c                  C   s   t tddddg dg ddd} td	d
d tdd
d  }tjjdgd
 dgd
  |gddgd}t ddgd dg dgd  d
g i|d}| ddd dg }t	
|| d S )N
2016-01-01   W)r   periodsr   )r	   r	      r,   )            )dategroupvalr1   z
2016-01-03r0   r+   z
2016-01-17r	   r,   r2   namesr3   r-   r/   r.   indexc                 S   s   |  d S )N1D)r   ffillxr   r   r   <lambda>L       z+test_groupby_resample_api.<locals>.<lambda>)r   r   	set_indextolistpd
MultiIndexfrom_arraysgroupbyapplytmassert_frame_equal)dfir8   expectedr&   r   r   r   test_groupby_resample_api8   s    
(,rK   c                  C   s   t ddgd tdddtjdd} d}tjt|d	! | d
	d
d }| 	dj
dd
d }W d    n1 sAw   Y  t|| d S )Nr   r   r-   r(   r
   r4   )keydatesvalues!The default value of numeric_onlymatchrM   rL   Don)r   r   nprandomrandnrF   assert_produces_warningFutureWarningr?   rD   r   r"   rG   )rH   msgrJ   r&   r   r   r   test_groupby_resample_on_apiP   s   


r[   c                  C   s@  t dddtdddd} | d}|  }tjtd	d
 |dd }W d    n1 s/w   Y  t|| | jddd}td  |dd }W d    n1 sXw   Y  t|| t	j
t	ddgd|jg|_| jddd}td  |dd }W d    n1 sw   Y  t|| d S )Nr	   r,   r   r   2000r
   r4   r7   5DzNot prepending group keysrP   c                 S      | S r   r   r;   r   r   r   r=   i       z*test_resample_group_keys.<locals>.<lambda>F
group_keysc                 S   r_   r   r   r;   r   r   r   r=   o   r`   r   z
2000-01-06r-   Tc                 S   r_   r   r   r;   r   r   r   r=   y   r`   )r   r   r   r   rF   rX   rY   rE   rG   rA   rB   rC   to_datetimerepeatr8   )rH   grJ   r&   r   r   r   test_resample_group_keysd   s(   
rf   c                 C   sl   t d}| |  }|dd }t|| | d}| |  }|dd }t|| d S )Nr   c                 S      |   |   S r   maxr"   r;   r   r   r   r=          ztest_pipe.<locals>.<lambda>c                 S   rg   r   rh   r;   r   r   r   r=      rj   )r   r   ri   r"   piperF   assert_series_equalrG   )r   r   rJ   r&   r   r   r   	test_pipe}   s   

rm   c                 C   s   |  d}t|jj| j |  dd }|jj| jd ks J |  dd }t|jj| jddg  |  dd }t|jj| jddg  d S )Nr   r   r	   r\   r   )r   rF   assert_index_equal_selected_objcolumnsnamer   r   r   r   r   test_getitem   s   
rs   rL   rR   r   c                 C   sJ   | d}d}tjt|d ||   W d    d S 1 sw   Y  d S )Nr   z^\"Columns not found: 'D'\"$rP   )r   pytestraisesKeyError)rL   r   re   rZ   r   r   r   test_select_bad_cols   s
   

"rw   c                 C   s(   |  d}t|j |d   d S )Nr   r   )r   rF   rl   r   sumrr   r   r   r   test_attribute_access   s   
ry   attr)groupsngroupsindicesc                 C   sN   t dddd}ttt||d}|d}t||  |  t||  d S )N1/1/2012d   Sr+   r   r7   30s)r   r   rU   aranger$   r   getattrr"   )rz   rngtsrsr   r   r   test_api_compat_before_use   s   

r   c                 C   s   | }d|d< | d}|ddg  }tj|j |j gdd}t|| |g d  }d	}tjt	|d
 | }W d    n1 sHw   Y  t|| d S )NfoorR   r   r   r   r	   axisr   rO   rP   )
r   rx   rA   concatr   r   rF   rG   rX   rY   )r   rH   r   r&   rJ   rZ   r   r   r   tests_skip_nuisance   s   

r   c                  C   s`   t dddd} ttjt| dd| d}|d }tg d	t d
dddd}t|| d S )Nr~   r   r   r   int64dtyper7   20s)r      (   <   P   2012-01-01 00:00:00r-   r   r+   )	r   r   rU   r   r$   r   asfreqrF   rl   )r   r   r&   rJ   r   r   r   'test_downsample_but_actually_upsampling   s   r   c                  C   st   t dddd} ttt| | d}|jg d }|d  }tg dt	j
g d	d
ddd}t|| d S )Nr~   r   r   r   r7   )r   r	   r,      r-   r/                  2s)g      ?g      @g      @      @r         &@r   g      .@      0@r   r   r         9@r   r   g      >@)r   z2012-01-01 00:00:02z2012-01-01 00:00:04z2012-01-01 00:00:06z2012-01-01 00:00:08z2012-01-01 00:00:10z2012-01-01 00:00:12z2012-01-01 00:00:14z2012-01-01 00:00:16z2012-01-01 00:00:18z2012-01-01 00:00:20z2012-01-01 00:00:22z2012-01-01 00:00:24z2012-01-01 00:00:26z2012-01-01 00:00:28z2012-01-01 00:00:30zdatetime64[ns]2S)r   r   )r   r   rU   r   r$   ilocr   r"   r:   rA   DatetimeIndexrF   rl   )r   r   ts2r&   rJ   r   r   r   *test_combined_up_downsampling_of_irregular   s   *r   c                  C   s<   t d} t tjddd}| d}t|| d S )N20minr   r"   )r   r   rD   rA   Grouper	transformrF   rl   )r   rJ   r&   r   r   r   test_transform_series  s   

r   rT   r1   c                 C   s   t tdddtddddd}d|_ttjddtd|d	}|t	j
d
dd}| dkr:|jdd}| }|jd
| d}|d}t|| d S )Nr   r	   r
   rR   r   r1   r,   ABrp   r8   r   r"   T)droprS   )r   r   rq   r   rU   rV   randlistrD   rA   r   r   reset_indexr   rF   rG   )rT   r8   rH   rJ   r   r&   r   r   r   test_transform_frame  s   
r   c                  C   s   t dddd} ttjt| dd| d}|d}| }|jd	d
}t	|| |
 }|jdd
}t	|| d}tjt|d |d W d    d S 1 sSw   Y  d S )Nr~   r
   r   r   r   r   r7   sr:   )methodbfillzTInvalid fill method\. Expecting pad \(ffill\), backfill \(bfill\) or nearest\. Got 0rP   r   )r   r   rU   r   r$   r   r:   fillnarF   rl   r   rt   ru   
ValueError)r   r   r   rJ   r&   rZ   r   r   r   test_fillna+  s   
"r   funcc                 C   s   | j dddS )Nr   Fra   )r   r;   r   r   r   r=   E  r>   r=   c                 C   s   | j tjddddS )Nr   r   Fra   )rD   rA   r   r;   r   r   r   r=   F  s    r   rD   )idsc                 C   s&   | t }|dd }t|t  d S )Nc                 S   r_   r   r   r;   r   r   r   r=   M  r`   z0test_apply_without_aggregation.<locals>.<lambda>)r   rE   rF   rl   )r   tr&   r   r   r   test_apply_without_aggregationB  s   
r   c                  C   s>   t jddjddd} | d dd }t|t d d S )Nr   )rq   r   Fra   c                 S   r_   r   r   r;   r   r   r   r=   S  r`   z1test_apply_without_aggregation2.<locals>.<lambda>)r   r%   r   rE   rF   rl   rename)groupedr&   r   r   r   test_apply_without_aggregation2Q  s   r   c                  C   sx   t tjddtddddg dd} | d}d	}tjt|d
 |	ddd W d    d S 1 s5w   Y  d S )N  r   r~   r   r   r   r8   rp   3Tz'Column\(s\) \['r1', 'r2'\] do not existrP   r"   rx   r1r2
r   rU   rV   rW   r   r   rt   ru   rv   aggrH   r   rZ   r   r   r   test_agg_consistencyW  s   
"r   c                  C   sx   t tjddtddddddgd} | d	}d
}tjt|d |	ddd W d    d S 1 s5w   Y  d S )Nr   r,   r~   r   r   r	   ar   r   z#Column\(s\) \[2, 'b'\] do not existrP   r"   rx   )r,   br   r   r   r   r   'test_agg_consistency_int_str_column_mixh  s   
"r   c               	   C   sD  t jd ttdddtddddd} d| _tt jddtd	| d
}|	 }|
 }tjjtd|jgddgd|_|d}||jddd|jddd|tjddg}|d  }|d  }|d  }|d  }	|d  }
|d  }tj|||	|
gdd}tjddgddgg|_|D ]2}||d krtnd }tj|dd |t jt jg}W d    n1 sw   Y  t|| qtj||
gdd}|D ]@}|t jt jd}tj||dd |jdt jfdt jfd}tj||dd |jtdt jtdt jd}tj||dd qtj||gdd}tjddg|_|D ]}|dddgi}t|| q+tj||gdd}ddg|_|D ]!}|d ddg}t|| |d jddd}t|| qNd}|D ]'}t j!tj"j#|d |ddddi W d    n	1 sw   Y  qttj|||	|gdd}tjg d|_|D ]+}t j!tj"j#|d |dddddd d W d    n	1 sw   Y  qtj|||	|
gdd}tjg d!|_|D ]}|ddgddgd}tj||dd qtj|||	|gdd}tjg d"|_d S )#N  r   r	   r
   rR   r   r1   r,   r   r   r8   r5   2DrS   levelr   r   r   r"   stdz)\['date'\] did not aggregate successfullyrP   r\   T
check_liker   r"   r   r   rx   )r"   rx   nested renamer is not supported)r   r   rx   )r   mean2)r   sum2)r   r   )r   r   r   r"   r   r   ))r   r   r"   )r   r   rx   )r   r   r"   )r   r   rx   )$rU   rV   seedr   r   rq   r   r   r   r   r   rA   rB   rC   ranger8   r   rD   r   r"   r   rx   r   from_productrp   rY   rF   rX   	aggregaterG   r   from_tuplesrt   ru   errorsSpecificationError)r8   rH   df_coldf_multr   casesa_meana_stda_sumb_meanb_stdb_sumrJ   r   warnr&   rZ   r   r   r   test_agg{  s   


r   c               	   C   sz  t jd ttdddtddddd} d| _tt jddtd	| d
}|	 }|
 }tjjtd|jgddgd|_|d}||jddd|jddd|tjddg}|D ]Y}|t jdd d}|d dd }tj|d  |gdd}	tj||	dd |jdt jfddd fd}tj||	dd |jtdt jtddd d}tj||	dd q\tj|d  |d  |d  |d  gdd}	tjg d|	_d}
|D ]|}tjt|
d |ddg t jt jd W d    n	1 sw   Y  tjt|
d |ddg jdt jfd t jfd W d    n	1 s*w   Y  tjt|
d |ddg jtdt jtd t jd W d    n	1 sUw   Y  qtj|d  |d   |d  |d   gdd}	tjg d!|	_|D ]}|d"d#gd$d#gd}tj||	dd q|D ]}|ddg d"d#gd$d#gd}tj||	dd qd%}
|D ]P}tjtj!j"|
d |d dd"d#gi W d    n	1 sw   Y  tjtj!j"|
d |d d"d#gd$d#gd W d    n	1 sw   Y  qd&}
|D ]*}tjt|
d |dg d"d#gd$d#gd W d    n	1 s4w   Y  qd S )'Nr   r   r	   r
   rR   r   r1   r,   r   r   r8   r5   r   rS   r   c                 S      t j| ddS Nr	   )ddofrU   r   r;   r   r   r   r=     r>   ztest_agg_misc.<locals>.<lambda>r\   r   c                 S   r   r   r   r;   r   r   r   r=     r>   r   r   Tr   c                 S   r   r   r   r;   r   r   r   r=     r>   c                 S   r   r   r   r;   r   r   r   r=     r>   ))result1r   )r   r   )result2r   )r   r   z1Column\(s\) \['result1', 'result2'\] do not existrP   )r   r   r   r   )r   r   r   r   rx   r   r"   r   z Column\(s\) \['B'\] do not exist)#rU   rV   r   r   r   rq   r   r   r   r   r   rA   rB   rC   r   r8   r   rD   r   r   rx   rE   r   rF   rG   r   r"   r   rp   rt   ru   rv   r   r   r   )r8   rH   r   r   r   r   r   r&   rcustomrJ   rZ   r   r   r   test_agg_misc  s   
,$,  r   minr"   ri   rx   prodmedianr\   c                 C   s   t jd ttdddtddddd}d|_tt jddtd	|d
j	}|j
ddd}tjtdd ||  W d    d S 1 sFw   Y  d S )Nr   r   r	   r
   rR   r   r1   r,   r   r   Mr   z"axis other than 0 is not supportedrP   )rU   rV   r   r   r   rq   r   r   r   Tr   rt   ru   NotImplementedErrorr   )r   r8   rH   resr   r   r   test_multi_agg_axis_1_raises=  s   "r   c               	   C   s  t jd ttdddtddddd} d| _tt jddtd	| d
}|	 }|
 }tjjtd|jgddgd|_|d}||jddd|jddd|tjddg}d}|D ]+}tjtjj|d |dddgidddgid W d    n1 sw   Y  q^|D ]X}tjtjj|d |ddg dddgidddgid W d    n1 sw   Y  tjtjj|d |dddgidddgid W d    n1 sw   Y  qd S )Nr   r   r	   r
   rR   r   r1   r,   r   r   r8   r5   r   rS   r   r   rP   r   r"   rx   r   r   rar   rbr\   )rU   rV   r   r   r   rq   r   r   r   r   r   rA   rB   rC   r   r8   r   rD   r   rt   ru   r   r   r   r   )r8   rH   r   r   r   r   rZ   r   r   r   r   test_agg_nested_dictsK  s@   
""r  c                  C   s   t dddddddt dddddddt ddddd	d
dg} t| d}d}tjt|d |ddgdgdgd W d    d S 1 sKw   Y  d S )Ni  r.   r	   r   g      ?g       @)dtr<   yr,   g      @g      ?r  z Column\(s\) \['z'\] do not existrP   30Tr"   r   rx   )r<   r  z)r   r   r?   rt   ru   rv   r   r   )datarH   rZ   r   r   r   &test_try_aggregate_non_existing_columnn  s    "r	  c                  C   s  t tdddtddddd} tjt| tjd}t| |dtjj	|| gdd	gd
d}td|i| d}d}t
jt|d |jddd W d    n1 sOw   Y  d}t
jt|d |jddd	d W d    n1 spw   Y  d}t
jt|d |jdddgd W d    n1 sw   Y  d}t
jt|d |jdddgd W d    n1 sw   Y  d}t
jt|d |jdd	d  W d    n1 sw   Y  t
jt|d |jddd  W d    n1 sw   Y  |d }d|j_|jddd }t|| d	|j_d}tjt|d |jdd	d }W d    n	1 s7w   Y  t|| d S )Nr   r	   r
   rR   r   r   )r1   r   vdr5   r7   r   zaOnly valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of 'Int64Index'rP   r   r   z2The Grouper cannot specify both a key and a level!r1   )rT   r   zunhashable type: 'list'rS   z#\"Level \['a', 'date'\] not found\"z|Upsampling from level= or on= selection is not supported, use \.set_index\(\.\.\.\) to explicitly set index to datetime-likerO   )r   r   rU   r   r$   r   r   rA   rB   rC   rt   ru   	TypeErrorr   r   rv   r   rx   r8   rq   rF   rG   rX   rY   )r8   r   rH   df_exprZ   expr&   r   r   r   test_selection_api_validation}  sT   r  col_name)t2t2xt2qT_2Mt2pt2mt2m1T2Mc                 C   s~   t ttdtddddd| gd}|ddg}t g d	tdd
dddtj| gdggdgdggdd}t	|| d S )N   z
2017-01-0115minzEurope/Berlin)r   r   r+   tzr   1dr"   )g     G@g     a@g     ph@rR   r   r   )levelscodes)
r   r   r   r   r   r   rA   rB   rF   rG   )r  rH   r&   rJ   r   r   r   *test_agg_with_datetime_index_list_agg_func  s   	
r  c                  C   s   t dddd} t| }|jdd t|| d}|d}ttd	td	g| d d d
 d}|d}t	
|| |d}t	
|| |d}t	
|| |d}t	
|| d S )Nz
2020-01-01z
2020-01-021hr   F)writer7   r9   r      lastfirstri   r   )r   rU   
zeros_likesetflagsr   r   rA   	Timestampr   rF   rl   )r8   arrserr   rJ   r&   r   r   r   test_resample_agg_readonly  s   

&



r*  zLstart,end,freq,data,resample_freq,origin,closed,exp_data,exp_end,exp_periodsz2000-10-01 23:30:00z2000-10-02 00:26:007min)	r   r   r.   	      r         r"  17minr   )r   r.     ?   z20001002 00:26:00r)   z20200101 8:26:35z20200101 9:31:5877s3   right)
r	   r.   r-   r.   r-   r.   r-   r.   r-   r.   z2020-01-01 09:30:45left)r   r.  r1  '   r"  z20001002 00:43:00r-   end_day)r   r   -   r9  z2000-10-02 00:29:00c
                 C   sT   t | ||d}
t||
d}|j|||d }t|t |||	dd}t|| d S )Nr   r7   )r   closed)r   r   r+   )r   r   r   rx   rF   rl   )r   r   r   r  resample_freqr   r:  exp_dataexp_endexp_periodsr   r   r   rJ   r   r   r   test_end_and_end_day_origin  s   Ar?  z#method, numeric_only, expected_dataTnumr   F
cat_1cat_2catr@  r   cat_1r   cat_2r$  r#  g      )@r   gH6%@)r   F!could not convert string to floatvarg      \@)rG  FrF  semg      @)rH  FrF  c              	   C   sr  t dddd}t dddd}tdd	gd
dgd|d}|d}|tju r(i }nd|i}t|| }|tju rC| dvrCt}	d|  d}
n| dv rT|durTt}	d|  d}
nd }	d}
tj|	|
dP t	|t
r| dkrktnt}tj||d |di |}W d    n1 sw   Y  n|di |}t||d}t|| W d    d S W d    d S 1 sw   Y  d S )N
2018-01-01r,   rR   r   
2018-12-31r	   YrD  rE  r-   r   rB  r7   numeric_only)r   ri   r$  r#  r   z2default value of numeric_only in DataFrameGroupBy.z is deprecated)r   r"   r   Tz-Dropping invalid columns in DataFrameGroupBy. rP   rG  r   )r   r   r   r   
no_defaultr   rY   rF   rX   r#   r   r  r   rt   ru   rG   )r   rL  expected_datar8   expected_indexrH   	resampledkwargsr   r   rZ   klass_r&   rJ   r   r   r   test_frame_downsample_method0  s<   *




" rU  )rx   Tr   )r   Tr   )r   Fr   r   )r   Tr   )ri   Tr   )r$  Tr   )r#  Tr   c           
   	   C   s6  t dddd}t dddd}tdd	g|d
}|d}t|| }|re|tjuretjtdd- t	j
tdd ||d W d    n1 sFw   Y  W d    d S W d    d S 1 s^w   Y  d S | dkrt	j
tdd ||d W d    d S 1 sw   Y  d S ||d}t||d
}	t||	 d S )NrI  r,   rR   r   rJ  r	   rK  rD  rE  r7   zThis will raise a TypeErrorrP   znot implement numeric_onlyrL  r   z"can't multiply sequence by non-int)r   r   r   r   r   rN  rF   rX   rY   rt   ru   r   r  rl   )
r   rL  rO  r8   rP  rH   rQ  r   r&   rJ   r   r   r   test_series_downsample_method  s,   

""
rW  r   )r   rE   r   c                 C   s  t jddd}| dkrGd}tjt|d t|| tj W d    n1 s)w   Y  t|| tjdd}|j	d	dd}t
|| d S d
}tjt|d t|| tj W d    n1 scw   Y  tjtdd t|| tjdd W d    d S 1 sw   Y  d S )Nr<   )rR   r   r   rO   rP   TrV  r"   z$The operation <function mean.*failedz"got an unexpected keyword argument)r   assignr   rF   rX   rY   r   rU   r"   r   rG   rt   ru   r  )r   rQ  rZ   r&   rJ   r   r   r   test_numeric_only_warning_numpy  s    "rY  )<r   numpyrU   rt   pandas._libsr   pandasrA   r   r   r   pandas._testing_testingrF   pandas.core.indexes.datetimesr   dtirV   r   r$   r   r   r   fixturer   r    r'   rK   r[   rf   rm   rs   markparametrizerw   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r	  r  r  r*  r?  rN  rU  rW  rY  r   r   r   r   <module>   s   

	
8

g[
#5

5	
 !
')






