
    bMh8.                         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m	Z	m
Z
mZ d dlmZ d dlmZ d dlmZ ej        d             Zd Zd	 Zd
 Zd Zej                            d e	ddg           e	ddg           e	ddg          ej                            ddgddgg          g          d             Zd Zd Zej                             d          d             Z!ej                            ddi d fddd id fdddiej"        fdi dfddd idfdddiej"        fg          d             Z#ej                            ddej"        fd ej"        fd!d"d#g          d$             Z$d% Z%d& Z&ej                            d'di g d(fddd ig d(fdddidej"        dgfdddiej"        ej"        ej"        gfdi g d)fddd ig d)fdddidej"        dgfdddiej"        ej"        ej"        gfg          d*             Z'd+ Z(dS ),    )datetime)methodcallerN)	DataFrameIndexSeries	Timestamp)Grouper)
date_rangec                      t          t          j                            d                              d          t          dd                    S )N     z1/1/2000periodsindex)r   nprandomdefault_rngstandard_normalr
        g/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/resample/test_time_grouper.pytest_seriesr      sJ    
	a  0066T222   r   c                 |   t          ddd          }|                     |          }d }|                    |          }|                     d                               |          }|j                            d          |_        |j                            d          |_        t          j        ||           d S )NYErightfreqlabelclosedc                 :    |                                  dd          S )N)sort_valuesxs    r   fztest_apply.<locals>.f    s    }}rss##r   c                     | j         S Nyearr$   s    r   <lambda>ztest_apply.<locals>.<lambda>$       QV r   r   )r	   groupbyapplyr   	dropleveltmassert_series_equal)r   groupergroupedr&   appliedexpecteds         r   
test_applyr6      s    4ww???G!!'**G$ $ $ mmAG""#3#344::1==HM++A..GM^--a00HN7H-----r   c                    t           j        | d d d<   |                     d                                           }t	          ddd          }|                     |                                          }|j        |_        t          j        ||           |                     d                                          }|j        |_        t          j        ||           d S )N   c                     | j         S r(   r)   r$   s    r   r+   ztest_count.<locals>.<lambda>.   r,   r   r   r   r   )	r   nanr-   countr	   r   r0   r1   resample)r   r5   r2   results       r   
test_countr>   +   s    vK!""#3#344::<<H4ww???G  ))//11F\HN68,,,!!$''--//F\HN68,,,,,r   c                 j   |                      dd                                          }d}t          j        t          |          5  |                     d                               t          j                  }d d d            n# 1 swxY w Y   |j        |_        t          j	        ||           d S )Nr   r   )r    zusing SeriesGroupBy.prodmatchc                     | j         S r(   r)   r$   s    r   r+   z&test_numpy_reduction.<locals>.<lambda>?   s     r   )
r<   prodr0   assert_produces_warningFutureWarningr-   aggr   r   r1   )r   r=   msgr5   s       r   test_numpy_reductionrH   :   s    !!$w!77<<>>F
$C		#M	=	=	= F F&&'7'788<<RWEEF F F F F F F F F F F F F F F\HN68,,,,,s   4BBBc                  B   d} t          dd|           }t          ddd|          }t          d	
          }|                    |          \  }}|                    |d          }d }|                    |          }t          j        |j        |j                   d S )Nr   
2000-01-01D)startr   r      r   )opencloser   MEr   F)
group_keysc                 $    | d         | d         z  S )NrO   rN   r   )dfs    r   r&   ztest_apply_iteration.<locals>.fQ   s    '{RZ''r   )	r
   r   r	   _get_grouperr-   r.   r0   assert_index_equalr   )	NindrT   tgr2   _r3   r&   r=   s	            r   test_apply_iterationr[   E   s    A
<c1
=
=
=C	A**#	6	6	6B	d			B$$JGQ jjUj33G( ( ( ]]1F&,11111r   r   rM   r   abg?g@c                 B   t          |           j        }t          dt          t	          |                     i|           }d| d}t          j        t          |          5  |                    t          d                     d d d            d S # 1 swxY w Y   d S )Nr\   r   zVOnly valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of ''r@   rK   rQ   )
type__name__r   rangelenpytestraises	TypeErrorr-   r	   )r   namerT   rG   s       r   test_fails_on_no_datetime_indexrh   Y   s     ;;D	Cs5zz**+5	9	9	9B	;37	; 	; 	;  
y	,	,	, & &


7$$$%%%& & & & & & & & & & & & & & & & & &s   #$BBBc            	         d} t           j                            d                              | df          }t	          |g d          }t          ddd          t          ddd          t          ddd          t          ddd          t          ddd	          gdz  |d
<   |                    t          d
d                    }t          j	        |
                    t          ddd                    |d d d	                    t          j	        |
                    t          ddd                    |dd d	                    t          j	        |
                    t          ddd                    |dd d	                    t          j	        |
                    t          ddd                    |dd d	                    t          j	        |
                    t          ddd	                    |dd d	                    d S )N   r      ABCrK   columns  rM   r8      keyrK   rt   r   )r   r   r   r   r   r   r-   r	   r0   assert_frame_equal	get_group)ndatarT   r3   s       r   test_aaa_group_orderrz   n   s    	A9  ##33QF;;D	4!5!5!5	6	6	6Bq!q!q!q!q! 	

BuI jjU55566G'++HT1a,@,@AA2ccc7KKK'++HT1a,@,@AA2add8LLL'++HT1a,@,@AA2add8LLL'++HT1a,@,@AA2add8LLL'++HT1a,@,@AA2add8LLLLLr   c                    t           j                            d                              d          }t	          |g d          }g ddz  |d<   t	          |g d          }t          t          dd	d	          t          dd	d          t          dd	d
          t          dd	d          t          dd	d          gdz  d          |d<   |                    d          }|                    t          dd                    } t          ||                       } t          ||                       }t          dddd          |_        t          j        ||           dS )?Check TimeGrouper's aggregation is identical as normal groupby.r   rj   rk   rl   rp   rM   r   r8   rk   rs   rk   rt   rr   rM   r8   rs   M8[ns]dtyperK   ru   
2013-01-01rL   r   r   rg   N)r   r   r   r   r   r   r   r-   r	   getattrr
   r   r0   assert_equal)resample_methodry   	normal_dfdt_dfnormal_grouped
dt_groupedr5   	dt_results           r   test_aggregate_normalr      st    9  ##33G<<D$(<(<(<===I&*Ied$8$8$8999ET1a  T1a  T1a  T1a  T1a  	
 	 
 
 
E%L &&u--Nw5s;;;<<J7w~7799H4
O4466IlaeTTTHNOHi(((((r   z7if TimeGrouper is used included, 'nth' doesn't work yet)reasonc            	         t           j                            d                              d          } t	          | g d          }g ddz  |d<   t	          | g d          }t          dd	d	          t          dd	d          t          dd	d
          t          dd	d          t          dd	d          gdz  |d<   |                    d          }|                    t          dd                    }|                    d
          }t          dddd          |_
        |                    d
          }t          j        ||           dS )r|   r   r}   rl   rp   r~   rk   rt   rr   rM   r8   rs   rK   ru   r   r   N)r   r   r   r   r   r   r-   r	   nthr
   r   r0   rv   )ry   r   r   r   r   r5   r   s          r   test_aggregate_nthr      sT    9  ##33G<<D$(<(<(<===I&*Ied$8$8$8999Eq!q!q!q!q! 	

E%L &&u--Nw5s;;;<<J!!!$$HlaeTTTHNq!!I(I.....r   zmethod, method_args, unitsum	min_countrC   c                 D   t          dgdz  t          j        gdz  z   t          dd                    } t	          | fi ||                    d                    }t          j        dd	gd
d          }t          d|g|          }t          j	        ||           d S )Nr   r   2017rk   r   r   2dz
2017-01-01z
2017-01-03r   2Dr   r   g        )
r   r   r:   r
   r   r<   pdDatetimeIndexr0   r1   )methodmethod_argsunitserr=   exp_dtir5   s          r   !test_resample_entirely_nat_windowr      s     !qBF8a<'z&!/L/L/L
M
M
MC0\&00K00d1C1CDDFl;8RVWWWGsDk111H68,,,,,r   zfunc, fill_valueminmax)r   r   )rC   rM   )r;   r   c                    d}t           j                            d                              |df                              d          }t          |g d          }ddt           j        ddgdz  |d	<   t          |g d          }t          t          d
dd          t          d
dd          t          j
        t          d
dd          t          d
dd          gdz  d          |d	<   |                    d	          }|                    t          d	d                    } t          ||                       } t          ||                       }	t          |gdz  gdgg d          }
t          j        ||
g          }|                                }t!          dddd	|d	         j        j                  }|                    d           |_        t+          j        ||	           |	j        j        d	k    sJ d S )Nrj   r   rk   int64rl   rp   rM   rs   rt   rr   r   r   rK   ru   r8   )r   rq   r   rL   r   r   rg   r   )r   r   r   r   astyper   r:   r   r   r   NaTr-   r	   r   concat
sort_indexr
   _valuesr   
_with_freqr   r0   rv   rg   )func
fill_valuerx   ry   r   r   r   r   normal_resultr   padr5   dtis                r   test_aggregate_with_natr      s    	A9  ##33QF;;BB7KKD$(<(<(<===I1bfa+a/Ied$8$8$8999ET1a  T1a  FT1a  T1a  	
 	 
 
 
E%L &&u--Nw5s;;;<<J1GND1133M)
D))++I
j\A%&qc;O;O;O
P
P
PCy--..H""$$H
5\!&  C ^^D))HN(I...?5((((((r   c                     d} t           j                            d                              | df                              d          }t          |g d          }ddt           j        ddgdz  |d	<   t          |g d          }t          t          d
dd          t          d
dd          t          j
        t          d
dd          t          d
dd          gdz  d          |d	<   |                    d	          }|                    t          d	d                    }|                                }|                                }t          dgdg          }t          j        ||g          }	|	                                }	t#          dddd	|d	         j        j                                      d           |	_        t-          j        |	|           |j        j        d	k    sJ d S )Nrj   r   rk   r   rl   rp   rM   rs   rt   rr   r   r   rK   ru   r   r8   r   r   r   )r   r   r   r   r   r   r:   r   r   r   r   r-   r	   sizer   r   r   r
   r   r   r   r   r0   r1   rg   )
rx   ry   r   r   r   r   r   r   r   r5   s
             r   test_aggregate_with_nat_sizer      s   
A9  ##33QF;;BB7KKD$(<(<(<===I1bfa+a/Ied$8$8$8999ET1a  T1a  FT1a  T1a  	
 	 
 
 
E%L &&u--Nw5s;;;<<J"''))M!!I
!QC
 
 
 Cy--..H""$$H5\!&   j N 8Y///?5((((((r   c                      t          t          dd                    } d}| |k    sJ t          t          ddd                    } d}| |k    sJ d S )Nrm   hru   zTimeGrouper(key='A', freq=<Hour>, axis=0, sort=True, dropna=True, closed='left', label='left', how='mean', convention='e', origin='start_day')rJ   )rt   r   originzTimeGrouper(key='A', freq=<Hour>, axis=0, sort=True, dropna=True, closed='left', label='left', how='mean', convention='e', origin=Timestamp('2000-01-01 00:00:00')))reprr	   )r=   r5   s     r   	test_reprr   '  sy    'c,,,--F	. 
 X'cLAAABBF	C 
 Xr   z$method, method_args, expected_values)rM   r   rM   )rM   rM   rM   c                    t          dt          ddd                    }|                    d          }t          j        g dd	d
          } t          | fi ||          }t          ||          }t          j        ||           d S )NrM   r   r   r   r   r   r   30min)z2017-01-01T00:00:00z2017-01-01T00:30:00z2017-01-01T01:00:00r   r   )r   r
   r<   r   r   r   r0   r1   )r   r   expected_valuesr   	resampledr   r=   r5   s           r   test_upsample_sumr   :  s     *VQSAAA
B
B
BCW%%IMMM  E
 1\&00K00;;FoU333H68,,,,,r   c                     g dg dd} t          |           }t          ddd          |d<   d	}t          j        t          |
          5  |                    d                              d                              d                              d          }d d d            n# 1 swxY w Y   dgdz  dgz   }t          t          dd                    t          d          gz   }t          j                            ||gddg          }t          g ddgdz  dgz   d|          }t          j        ||           d S )N)
      	   )2   <   r   )pricevolumez
01/01/2018r8   Wr   week_startingz:DataFrameGroupBy.resample operated on the grouping columnsr@   r   1Dlinear)r   r      r   z
2018-01-07z
2018-01-21z
2018-01-14)names)g      $@gm۶m#@gn۶m۶#@g%I$I#@g۶m۶m#@g$I$I#@gI$I$#@g      #@gm۶m"@gn۶m۶"@g%I$I"@g۶m۶m"@g$I$I"@gI$I$"@g      "@g      &@g      I@)ry   r   )r   r
   r0   rD   rE   	set_indexr-   r<   interpolatelistr   r   
MultiIndexfrom_arraysrv   )drT   rG   r=   r   r   expected_indr5   s           r   !test_groupby_resample_interpolater   T  s   ++66A	1B$\13GGGB
FC		#M	=	=	= 
 
LL))WXXd^^[[))	 	
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 TBY"FL,??@@,D M =,,	) -  L
   $ frkRD('
 
* -  H0 &(+++++s   AB''B+.B+))r   operatorr   numpyr   rd   pandasr   r   r   r   r   pandas._testing_testingr0   pandas.core.groupby.grouperr	   pandas.core.indexes.datetimesr
   fixturer   r6   r>   rH   r[   markparametrizer   r   rh   rz   r   xfailr   r:   r   r   r   r   r   r   r   r   r   <module>r      s         ! ! ! ! ! !                           / / / / / / 4 4 4 4 4 4   . . . - - -- - -2 2 2( q!fsCjsCj
!!Aq6C:"677	 	& 	& 	&M M M,) ) ): STT/ / UT/2 	A	a !$	a "&)	Q	+q!1%	+q!26*
 
- -
 
- RV_ubfoz;M )) ))	 ))X%) %) %)P  & *	III	a ))),	a 1bfa.1	a 262626":;	YYY	+q!999-	+q!Arvq>2	+q!BFBFBF#;<	 
- 
- 
-2, 2, 2, 2, 2,r   