
    4iU                         S r SSKJrJrJr  SSKrSSKrSSKJs  J	r
  SSKrSSKJrJrJrJrJrJrJrJr  SSKJr  SSKJr  SSKJr  \R8                  S 5       r\R8                  S 5       r " S	 S
5      rg)z5
test with the TimeGrouper / grouping with datetimes
    )datetime	timedeltatimezoneN)	DataFrameDatetimeIndexIndex
MultiIndexSeries	Timestamp
date_rangeoffsets)Grouper)
BinGrouperc                      [        / SQ[        SSSSS5      [        SSSSS5      [        SSSS	S5      [        SSS
SS5      [        R                  [        SSSSS5      /S.5      n U $ )z
DataFrame used by groupby_with_truncated_bingrouper, made into
a separate fixture for easier reuse in
test_groupby_apply_timegrouper_with_nat_apply_squeeze
            	   r     r   r      r   r   
      r         )QuantityDate)r   r   pdNaT)dfs    g/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/pandas/tests/groupby/test_timegrouper.pyframe_for_truncated_bingrouperr#       sy     
+$1b!,$1b!,$Ar1-$Ar1-$1b!,
	

B I    c                     U n[        SSS9nUR                  U5      n[        UR                  R                  5      [        UR                  R
                  5      :w  d   eU$ )a  
GroupBy object such that gb._grouper is a BinGrouper and
len(gb._grouper.result_index) < len(gb._grouper.group_keys_seq)

Aggregations on this groupby should have

    dti = date_range("2013-09-01", "2013-10-01", freq="5D", name="Date")

As either the index or an index level.
r   5Dkeyfreq)r   groupbylen_grouperresult_indexcodes)r#   r!   tdggbs       r"   !groupby_with_truncated_bingrouperr1   7   sU     
(B
f4
(C	CB r{{''(C0A0A,BBBBIr$   c                      \ rS rSrS r\R                  R                  SSS/5      S 5       rS r	\R                  R                  S/ S	Q5      S
 5       r
S rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS  r \R                  RB                  S! 5       r"\#RH                  " S"5      S# 5       r%S$r&g%)&TestGroupByN   c                 :   [        SR                  5       / SQ[        SSSSS5      [        SSSSS5      [        SS	SS
S5      [        SS	SS	S5      [        SSSSS5      [        SSSSS5      /S.5      nUR                  SS9nX#4 GH  nUR	                  S/5      n[        SSSSSUR                  R                  S9n[        U(       a  SOSSS.US9nUR                  S[        05      nU(       a  UR                  SS05      nSUR                  S'   SUR                  S '   S!UR                  S"'   [        R                  " / S#QS$S%9UR                  / S&QS4'   UR                  S5      R                  5       n[        R                   " Xv5        UR#                  5       nUR%                  ['        SS'95      R                  5       n	[        R                   " X5        UR%                  ['        SS'95      R                  5       n
[        R                   " X5        GM     g )(NzCarl Carl Carl Carl Joe Carlr   r   r   r   r   r   r   r   r   r      r   r   Buyerr   r   r   byr   2013090120131205r&   left)r)   name	inclusiveunit )r8   r   indexr8   strCarlCarlCarl)r   r   CarlCarl)   r   Joe)r   r   )   rG   r   int64dtype)r   rG   r   r)   )r   splitr   sort_values	set_indexr   rC   r@   astypeobjectilocnparrayresamplesumtmassert_frame_equal
sort_indexr*   r   )selfusing_infer_stringdf_originaldf_reorderedr!   exp_dtiexpectedresult1	df_sortedresult2result3s              r"   test_groupby_with_timegrouper)TestGroupBy.test_groupby_with_timegrouperO   s     7==?/T1aQ/T1aQ/T2q"a0T2q"a0T2q"a0T1aQ/
  #..*.=-Bvh'B  XX]]G ! 2"qIH  '89H!#??GU+;<"0HMM$",HMM$#(HMM% +-88Jg+NHMM*a-(kk$'++-G!!'4I''T(:;??AG!!'4jjd!3488:G!!'4C .r$   should_sortTFc                 V   [        SR                  5       SR                  5       / SQ[        SSSSS5      [        SSSSS5      [        SS	SS
S5      [        SS	SS	S5      [        SSSSS5      [        SSSSS5      /S.5      nU(       a  UR                  SSS9nUR	                  SSS9nUR                  [        SS95      nUR                  (       d   e[        UR                  [        5      (       d   eUR                  n[        U[        5      (       d   e[        U5      S:X  d   eg )NzA A A A A BzCarl Mark Carl Joe Joe Carl)r   r   r      r   r   r   r   r   r   r   r   r   r   r6   r   Branchr8   r   r   r   Fr:   	ascendingr   drop6MErM   r   )r   rN   r   rO   rP   r*   r   
group_keys
isinstancer,   r   groupsdictr+   )r[   rg   r!   grs   s        r"   %test_groupby_with_timegrouper_methods1TestGroupBy.test_groupby_with_timegrouper_methods   s    
 '--/6<<>.T1aQ/T1aQ/T2q"a0T2q"a0T2q"a0T2q"a0	
  :?B\\&u\-JJwE*+|||!**j1111&$''''6{ar$   c                    [        SR                  5       SR                  5       / SQ[        SSSSS5      [        SSSSS5      [        SS	SS
S5      [        SS	SS	S5      [        SS	SS
S5      [        SS	SS	S5      [        SSSSS5      [        SSSSS5      /S.5      R                  S5      nUR	                  SSS9nX4 GHB  n[        SR                  5       / SQ[        SSSSS5      [        SSSSS5      [        SSSSS5      /S.5      R                  SS/5      nSnUR                  [        SS9S/5      R                  SS9n[        R                  " Xd5        [        SR                  5       / SQ[        SSSSS5      [        SSSSS5      [        SSSSS5      [        SSSSS5      /S.5      R                  SS/5      nUR                  [        S S9S/5      R                  SS9n[        R                  " Xd5        GME     [        SR                  5       SR                  5       / SQ[        SS	SSS5      [        SS	SSS5      [        SS	SS
S5      [        SS	SS	S5      [        SS	SS
S5      [        SS	SS	S5      [        SS	SSS5      [        SS	SSS5      /S.5      R                  S5      nUR	                  SSS9nX4 GHR  n[        S!R                  5       / S"Q[        SS	SSS5      [        SS	SSS5      [        SS	SSS5      [        SS	SSS5      [        SS	SSS5      /S.5      R                  SS/5      nUR                  [        S#S9S/5      R                  SS9n[        R                  " Xd5        UR                  [        S$S9S/5      R                  SS9n[        SR                  5       / SQ[        SS	SSS5      [        SS	SSS5      [        SS	SSS5      /S.5      R                  SS/5      n[        R                  " Xd5        UR                  5       nUR                  [        S$SS%9S/5      R                  SS9n[        R                  " Xd5        [        R                  " [        S&S'9   UR                  [        S$S(S%9S/5      R                  5         S S S 5        UR                  S5      nUR                  [        S$SS)9S/5      R                  SS9n[        R                  " Xd5        UR                  [        S$SS)9S/5      R                  SS9n[        R                  " Xd5        [        R                  " [        S*S'9   UR                  [        S$S(S)9S/5      R                  5         S S S 5        UR                  5       nUR                   ["        R$                  " S5      -   US'   UR                  [        S$SS%9S/5      R                  SS9n[        SR                  5       / SQ[        SS+S,SS5      [        SS+S,SS5      [        SS+S,SS5      /S.5      R                  SS/5      n[        R                  " Xd5        S-n[        R                  " [        US'9   UR                  [        S$SSS.9S/5      R                  5         S S S 5        [        S//S/['        [        SS	SSS5      /["        R$                  " 5       SS/9S09nUR                  [        S$S95      R                  SS9n[        R                  " Xd5        UR                  [        S$S9/5      R                  SS9n[        R                  " Xd5        UR                   R)                  S5      Ul        UR                   R*                  ["        R$                  " 5       :X  d   eUR                  [        S$SS%95      R                  SS9n[        R                  " Xd5        UR                  [        S$SS%9/5      R                  SS9n[        R                  " Xd5        GMU     g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f)1NzA A A A A A A Bz$Carl Mark Carl Carl Joe Joe Joe Carl)r   r   r   r   ri   r   r   r   r   r   r   r   r   r   r   r   r6   r   rj   r   r   Frl   zCarl Joe Mark)r   r   r      r7   r8   z!The default value of numeric_onlyYErM   T)numeric_onlyzCarl Mark Carl Joe)r   r   r   r      6MSzCarl Joe Mark Carl Joe)rG   ri   r      r   1D1MEr)   r(   z#'The grouper name foo is not found')matchfoo)r)   levelzThe level foo is not valid      z2The Grouper cannot specify both a key and a level!)r)   r(   r   r)   r>   columnsrC   )r   rN   r   rP   rO   r*   r   rW   rX   rY   reset_indexpytestraisesKeyError
ValueErrorcopyrC   r   MonthEndr   shiftr)   )r[   r]   rb   r!   r`   msgresults          r"    test_timegrouper_with_reg_groups,TestGroupBy.test_timegrouper_with_reg_groups   s4     +113?EEG4T1aQ/T1aQ/T2q"a0T2q"a0T2q"a0T2q"a0T2q"a0T2q"a0		
  )F
! 	$  ++zU+K	*B ,224 + r2q!4 r2q!4 r2q!4
 i)*  6CZZd!3W =>BBPTBUF!!&3 1779 - q!Q2 q!Q2 q!Q2 q!Q2		 i)*  ZZe!4g >?CCQUCVF!!&3= +@  +113?EEG4T2q"a0T2q"a0T2q"a0T2q"a0T2q"a0T2q"a0T2q"a0T2q"a0		
  )F
! 	$  ++zU+K	*B 5;;= 0 r1a3 r1a3 r1a3 r1a3 r1a3
 i)*  ZZd!3W =>BBPTBUF!!&3ZZe!4g >?CCQUCVF ,224 + r2q!4 r2q!4 r2q!4
 i)*  !!&3 !BZZe!@' JKOO! P F !!&3x/TU

GE:GDEIIK V f%BZZe6!BG LMQQ! R F !!&3ZZe1!=w GHLL! M F !!&3z1MN

Ge<gFGKKM O BG$4$4Q$77BvJZZe!@' JKOO! P F !,224 + r2q!4 r2q!4 r2q!4
 i)*  !!&3 GCz5

%V6BGL#% 6 !##dBAq129I9I9KRXH ZZU 3488d8KF!!&3ZZe!4 56:::MF!!&3%^^11!4HN>>&&'*:*:*<<<<ZZU ?@DDRVDWF!!&3ZZe!@ ABFF! G F !!&3Q +N VU ON0 65s$   =*` *`20+a 
`/	2
a	
a	r)   )DMErz   zQE-APRc                    [        [        R                  " / SQ5      / SQ/ SQ/ SQS.5      R                  S5      nUR	                  S5      S   R                  U5      R                  S	S
9R                  5       R                  SS/5      R                  5       R                  S5      nSUl        UR                  5       R	                  [        US9S/5      S   R                  5       n[        R                  " XC5        UR	                  [        US9S/5      S   R                  5       n[        R                  " XS5        g )N)2012100220121007201301302013020220130305r   20121207r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   )i  il  i  i     io  Z   i8  g  i-  r   i!  )r6      r   rI   '   r   r   r   -   "   r   r6   )dateuser_id
whole_costcost1r   r   r   r   )	min_countrJ   rM   )r   r   to_datetimerP   r*   rV   rW   dropnareorder_levelsrZ   rQ   r>   r   rX   assert_series_equal)r[   r)   r!   r`   ra   rc   s         r"   %test_timegrouper_with_reg_groups_freq1TestGroupBy.test_timegrouper_with_reg_groups_freq^  s      @ GA!#
F )F
G 	L JJy!,/Xd^S1SVX^VY/0Z\VG_ 	 % MMO##W$%7$CD\RVVX 	 	w1**g40)<=lKOOQ
w1r$   c                    [        SR                  5       / SQ[        SSSSS5      [        SSSSS5      [        SS	SS
S5      [        SS	SS	S5      [        SSSSS5      [        SSSSS5      /S.5      nUR                  SS9nUR                  / SQ   UR                  SS/   UR                  S/   /n/ SQnX4 Ha  nUR                  [        SSS95      n[        XCSS9 H7  u  px[        U5      n	UR                  U	5      n
[        R                  " X5        M9     Mc     UR                  S/   UR                  S/   UR                  S/   /n/ SQnX4 Hg  nUR                  S[        SSS9/5      n[        XSS9 H;  u  u  pn[        U5      n	UR                  X45      n
[        R                  " X5        M=     Mi     UR                  S5      nUR                  SS9nUR                  / SQ   UR                  SS/   UR                  S/   /nX4 H`  nUR                  [        SS95      n[        XCSS9 H7  u  px[        U5      n	UR                  U	5      n
[        R                  " X5        M9     Mb     g )NzCarl Joe Joe Carl Joe Carlr   r   r   r   r   r   r   r   r   r   r6   r   r   r7   r   r9   )r   r   r   r~   )
2013-09-30
2013-10-31
2013-12-31r   r   r   T)strict))rH   r   )Carlr   )rH   r   r8   rM   )r   rN   r   rO   rS   r*   r   zipr   	get_grouprX   rY   rP   )r[   r]   r^   expected_listdt_listr!   groupedtr`   dtr   g_listbs                r"   test_timegrouper_get_group&TestGroupBy.test_timegrouper_get_group  s     5;;=/T1aQ/T1aQ/T2q"a0T2q"a0T2q"a0T1aQ/
 #..*.= Y'aV$aS!

 =-Bjjd!?@G"7$Gq\ **2.%%f7  H . aS!aS!aS!

 X-Bjj'7&+I!JKG$'d$K q\ **A73%%f7 %L . "++F3"..*.= Y'aV$aS!
 -Bjjd!34G"7$Gq\ **2.%%f7  H .r$   c                    [        SS/SS/S.5      nUR                  5       n[        R                  " US   5      US'   S nUR	                  [        SS95      R                  U5      nUR	                  [        S	SS
95      R                  U5      n[        R                  " UR                  SS9UR                  SS95        g )N
10/10/2000
11/10/2000r   r   r   valuer   c                 >    [        U S   R                  5       /S5      $ )Nr   )rW   )r
   rW   xs    r"   sumfunc_seriesMTestGroupBy.test_timegrouper_apply_return_type_series.<locals>.sumfunc_series  s    1W:>>+,h77r$   r(   r   r   Trn   )
r   r   r   r   r*   r   applyrX   rY   r   )r[   r!   df_dtr   r`   r   s         r"   )test_timegrouper_apply_return_type_series5TestGroupBy.test_timegrouper_apply_return_type_series  s     | <BxPQ	uV}5f	8 ::g&1288HwDf=>DD^T
D)8+?+?T+?+J	
r$   c                    [        SS/SS/S.5      nUR                  5       n[        R                  " US   5      US'   S nUR	                  [        SS95      R                  U5      nUR	                  [        S	SS
95      R                  U5      n[        R                  " UR                  SS9UR                  SS95        g )Nr   r   r   r   r   r   c                 6    U R                   R                  5       $ N)r   rW   r   s    r"   sumfunc_valueKTestGroupBy.test_timegrouper_apply_return_type_value.<locals>.sumfunc_value  s    77;;= r$   r   r   r   Trn   )
r   r   r   r   r*   r   r   rX   r   r   )r[   r!   r   r   r`   r   s         r"   (test_timegrouper_apply_return_type_value4TestGroupBy.test_timegrouper_apply_return_type_value  s     | <BxPQ	uV}5f	! ::g&1288GwDf=>DD]S
D)8+?+?T+?+J	
r$   c                 2   Sn[        SSUS9n[        [        R                  " U5      [        R                  " U5      S.US9nUR	                  S 5      nUR
                  n[        [        [        UR                  5       5      5      [        5      (       d   eg )Ni  z2012/1/15min)startr)   periods)highlowrB   c                 X    [        U R                  U R                  U R                  5      $ r   )r   yearmonthdayr   s    r"   <lambda>?TestGroupBy.test_groupby_groups_datetimeindex.<locals>.<lambda>  s    x'Gr$   )r   r   rT   aranger*   rs   rr   nextiterkeysr   )r[   r   indr!   r   rs   s         r"   !test_groupby_groups_datetimeindex-TestGroupBy.test_groupby_groups_datetimeindex  sz    zHYYw'		'0BC3
 **GH $tFKKM23X>>>>r$   c           	         [        SSSS9n[        / SQ/ SQS.US9nUR                  SS	9R                  n/ S
QnU Vs0 s H  n[	        U5      [        U/SS9_M     nn[        R                  " X65        UR                  SS	9nU Hx  nUR                  U5      nUR                  US4   UR                  US4   //n[        U/SSUR                  S9n	[        U[        S5      U	S9n[        R                  " X65        Mz     g s  snf )Nz
2015/01/01r   r   )r   r>   )r   rG   r|   ri   r   )r   r   r   r~   r   ABrB   r   )z
2015-01-05z
2015-01-04z
2015-01-03z
2015-01-02z
2015-01-01r>   r   r   r   )r>   r)   rL   ABr   )r   r   r*   rs   r   r   rX   assert_dict_equalr   locrL   listrY   )
r[   rC   r!   r   datesr   r`   r   dataexpected_indexs
             r"   "test_groupby_groups_datetimeindex2.TestGroupBy.test_groupby_groups_datetimeindex2
  s   <@_?C5Q&)00VLQ
LQDIdO]D6??E 	 
 	V.**6**D&&t,FVVD#I&tSy(9:;D*V#U[[N !tDzPH!!&3 
s   Dc           	         / SQn[        / SQU[        R                  " SSS9SS/S-  S	.5      nUS
   R                  S 5      US
'   [	        / SQSS
S9n[        SS/S-  SS9n[        R                  " X4/5      n[        / SQ/ SQS.USS/S9nUR                  S
S/5      R                  5       n[        R                  " Xv5        [	        USS9n[        [        R                  " SSS9/ SQS.US9n[	        / SQSS9n[        / SQ/ SQS.USS/S9nUR                  S S!9R                  5       n[        R                  " Xv5        g )"N2011-07-19 07:00:002011-07-19 08:00:002011-07-19 09:00:00r   r   r   ar   r   r   r   r   rG   rJ   rK   r   r   r   )labelr   value1value2r   c                     [        U SS9$ )N
US/Pacifictz)r   )ds    r"   r   BTestGroupBy.test_groupby_groups_datetimeindex_tz.<locals>.<lambda>1  s    	!8Ur$   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  rC   r   z
Asia/Tokyor  r   r   r   r   r   r   rB   r   r   r   r   r   r|   r   r~   rG   r   r   )r   rT   r   r   r   r   r	   from_arraysr*   rW   rX   rY   )	r[   r   r!   exp_idx1exp_idx2exp_idxr`   r   didxs	            r"   $test_groupby_groups_datetimeindex_tz0TestGroupBy.test_groupby_groups_datetimeindex_tz  sg   
 7!))AW5a&1*	
 J--.UV:  
 #sag6((()=>)5GHx(
 Z12668
f/ U|4yy'2>PQ

  Q
  I6x(
 !$((*
f/r$   c                     [        S[        R                  " S5      4S[        R                  " S5      4/SS/S9nUR                  S5      R	                  5       nUS   S   [        S5      :X  d   eg )Nr   z
2012-07-03z
2012-07-04r   r   )r   )r   rT   
datetime64r*   firstr   )r[   r!   r   s      r"   &test_frame_datetime64_handling_groupby2TestGroupBy.test_frame_datetime64_handling_groupby^  sk    |,-2==3N/OP&M
 C&&(f~a Il$;;;;r$   c                    [        [        S5      / SQ/ SQS.5      nUR                  SSS9R                  R	                  S 5      n[        [        S	S
S9[        SS
S9[        SSS9[        SS
S9[        SSS9/S[        S9n[        R                  " X#5        S
nUR                  S5      R                  R                  U5      n[        R                  " U5      R                  R                  U5      n[        / SQ/ SQSS9n[        R                  " U5      R                  R                  U5      n[        R                  " X#5        g )Nr   )2000-01-28 16:47:002000-01-29 16:48:00z2000-01-30 16:49:002000-01-31 16:50:00z2000-01-01 16:50:00)America/Chicagor#  America/Los_Angelesr#  America/New_York)r   r   r  r  F)rq   c                 t    [         R                  " U 5      R                  R                  U R                  5      $ r   )r   r   r   tz_localizer>   r   s    r"   r   9TestGroupBy.test_groupby_multi_timezone.<locals>.<lambda>~  s"    bnnQ'**66qvv>r$   z2000-01-28 16:47:00-0600r#  r  z2000-01-29 16:48:00-0600z2000-01-30 16:49:00-0800r$  z2000-01-31 16:50:00-0600z2000-01-01 16:50:00-0500r%  r   )r>   rL   )r   r!  r"  )r   r   r   rC   r>   )r   ranger*   r   r   r
   r   rR   rX   r   r   r   r   r   r'  )r[   r!   r   r`   r  
res_values
exp_valuess          r"   test_groupby_multi_timezone'TestGroupBy.test_groupby_multi_timezoneg  s4   q
( DU388>>>
 49JK49JK49NO49JK49KL 

 	v0ZZ%**44R8

+..::2>Q


 >>*-00<<R@
v0r$   c                    / SQn[        / SQU Vs/ s H  n[        R                  " USS9PM     sn[        R                  " SSS9SS	/S
-  S.5      n[        R
                  " / SQSSS9n[        SS/S
-  SS9n[        R                  " XE/5      n[        / SQ/ SQS.USS/S9nUR                  SS/5      R                  5       n[        R                  " X5        [        R
                  " USS9n	[        [        R                  " SSS9/ SQS.U	S9n[        R
                  " / SQSS9n[        / SQ/ SQS.USS/S9nUR                  SS9R                  5       n[        R                  " X5        g s  snf ) Nr   r   hrM   rG   rJ   rK   r   r   r   )r  periodr  r  r
  r1  r   r   r   r  r   r  r  r  r  r  r  r  rB   r  r  r  r   r   )r   r   PeriodrT   r   PeriodIndexr   r	   r  r*   rW   rX   rY   )
r[   r   r  r!   r  r  r  r`   r   r  s
             r"   test_groupby_groups_periods'TestGroupBy.test_groupby_groups_periods  s{   
 7;@A5a299QS15A))AW5a&1*	
 >> 
 #sag6((()=>)5GHx(
 Xw/0446
f/ ~~e#.yy'2>PQ

 ..Q
  I6x(
 !$((*
f/_ Bs   E2
c                    [        SS/5      nUS   R                  S5      US'   [        US   R                  R                  [
        R                  5      (       d   eUR                  SS9R                  5       nUS   R                  n[        UR                  [
        R                  5      (       d   eUS   R                  SS9R                  5       nUR                  n[        UR                  [
        R                  5      (       d   eg )N)r        |>c )r   r7  r   zM8[ns]r   r   )	r   rQ   
issubclassrL   typerT   r  r*   r  )r[   r!   r   got_dts       r"   test_groupby_first_datetime64)TestGroupBy.test_groupby_first_datetime64  s    02JKL1X&1"Q%++**BMM::::!$**,&++r}}5555AQ'--/&++r}}5555r$   c                 N   [        [        S5      R                  S5      [        R                  " S5      S.5      nUR                  S5      S   R                  S 5      R                  S5      nUR                  S5      S   R                  5       n[        R                  " X25        g )N20130101sr   r   r   c                 "    U R                  5       $ r   )maxr   s    r"   r   9TestGroupBy.test_groupby_max_datetime64.<locals>.<lambda>  s
    r$   zM8[s])r   r   as_unitrT   r   r*   r   rQ   rA  rX   r   )r[   r!   r`   r   s       r"   test_groupby_max_datetime64'TestGroupBy.test_groupby_max_datetime64  s~     Yz2::3?biiPQlST::c?3'--.?@GGPC%))+
v0r$   c                     [        [        S5      [        S5      /S-  S.5      nUR                  S5      S   R	                  S5      n[        [        S5      /S-  SS9n[        R                  " X#5        g )Nr   z	2000-01-1r   r   r   minr   )r   r*  r   r*   	transformr
   rX   r   r[   r!   r   r`   s       r"   test_groupby_datetime64_32_bit*TestGroupBy.test_groupby_datetime64_32_bit  sh     U1XY{-C,Dq,HIJC%//69[12Q6SA
v0r$   c           
      @   [        [        R                  R                  S5      R	                  SSSS9[        SSSSS	9S
.5      nUR                  S5      R                  5       S   nUR                  S5      S   R                  5       n[        R                  " X#5        g )Nr   r   r   <   )sizez01/01/2000 00:00r?  UTC)r   r)   r  )factortimerP  rQ  )
r   rT   randomdefault_rngintegersr   r*   rA  rX   r   )r[   r!   df1df2s       r"   $test_groupby_with_timezone_selection0TestGroupBy.test_groupby_with_timezone_selection  s     ))//2;;Aqr;J"#5rPUV
 jj"&&(0jj"6*..0
s(r$   c                    [         R                  n[        S/[        R                  " U5      /S.5      nUS   S   R
                  U:X  d   e[        S/ SQ05      n[        R                  " U5      US'   US   S   R
                  U:X  d   eg )Nr   )r   r   r   r   r   r   r   r   )r   utcr   r   nowtzinfo)r[   r[  r!   s      r"   test_timezone_infoTestGroupBy.test_timezone_info  s     llaSS(9':;<#wqz  C'''Y'(,,s#3#wqz  C'''r$   c           	          [        / SQS-  [        SSSS9S.5      nUR                  S5      R                  R	                  5       n[        / S	Q[        / SQSS
9SS9n[        R                  " X#5        g )NrZ  r   r\  rG   rG  )r   r)   )r   r   r   )r   r   r   r   r   r)  )	r   r   r*   r   countr
   r   rX   r   rI  s       r"   test_datetime_countTestGroupBy.test_datetime_count  sb    a-*UAE*RS
 C&&,,.)5+EGT
v0r$   c           
      6   [        [        R                  SSS[        R                  /[        R                  [        SS9[        SS9[        SS9[        R                  /S.5      n[        R
                  " UR                  5      Ul        S	US
'   XR                  R                  5          nUR                  S
5      nUR                  S
5      n[        R                  " UR                  5       UR                  5       5        [        R                  " UR                  5       UR                  5       5        [        R                  " UR                  5       UR                  5       5        [        R                  " UR                  5       UR                  5       5        g )Nz2015-07-24 10:10z2015-07-25 11:11z2015-07-23 12:12r   )daysr   r   )r   tdr   group)r   rT   nanr   r   r   r   notnar*   rX   rY   rA  rG  r  last)r[   df_testdf_refgrouped_testgrouped_refs        r"   $test_first_last_max_min_on_time_data0TestGroupBy.test_first_last_max_min_on_time_data  s3     FF&&&FF FF1%1%1%FF
$ ^^GJJ/
))+,w/nnW-
koo/1A1A1CD
koo/1A1A1CD
k//1<3E3E3GH
k..0,2C2C2EFr$   c                    [        [        S5      [        R                  [        S5      // SQS.5      n[	        SSS9nUR                  U5      S   R                  5       nXR                  R                  5          R                  U5      S   R                  5       nUR                  R                  S 5      Ul	        [        R                  " X45        g )	Nz2016-06-28 09:35:35z2016-06-28 16:46:28)123)rQ  r   rQ  r0  r'   r   )r   r   r   r    r   r*   nuniquerQ  notnullrC   
_with_freqrX   r   )r[   testgrouperr   r`   s        r"   %test_nunique_with_timegrouper_and_nat1TestGroupBy.test_nunique_with_timegrouper_and_nat8  s     34FF34
 (	
 f3/g&v.668		))+,44W=fEMMO!2248
v0r$   c                 $   / SQ[        / SQSS9/ SQS.n[        U5      R                  S5      n[        SS	9nUR	                  U5      nUR                  5       nUR	                  U/5      nUR                  5       n[        R                  " XE5        g )
N)shanghaibeijingr}  )z2017-08-09 13:32:23z2017-08-11 23:23:15z2017-08-11 22:23:15zdatetime64[ns]rK   rZ  )locationrQ  r   rQ  r   rM   )r
   r   rP   r   r*   ra  rX   rY   )r[   
data_framery  r   r   r`   s         r"   !test_scalar_call_versus_list_call-TestGroupBy.test_scalar_call_versus_list_callK  s     <U& 

 z*44V<
s#$$W-$$gY/==?
f/r$   c           
      R   Sn[         R                  " SUSSS9n[        [        U5      US9nUR	                  UR
                  R                  5      R                  5       n[        [        U5      [        [        SUS-   5      UR                  S9S9n[        R                  " XE5        g )	Nr   z2018-01MMonth)r   r   r)   r>   rB   r   r   )r   period_ranger
   r*  r*   rC   r   rW   r   r>   rX   r   )r[   r   rC   period_seriesr   r`   s         r"   test_grouper_period_index%TestGroupBy.test_grouper_period_index_  s    W3W
 uW~U;&&}':':'@'@AEEG'N%a1(=EJJ"O
 	v0r$   c                 &   UnUS   R                  S 5      nUR                  nUS   R                  R                  n[	        SSSSUS9n[
        R                  " US/[        U5      -  /5      n[        / S	QUSS
9n[        R                  " X85        g )Nr   c                     S[        U 5      0$ )Nr   )r+   r   s    r"   r   RTestGroupBy.test_groupby_apply_timegrouper_with_nat_dict_returns.<locals>.<lambda>u  s    eSV_r$   r   
2013-09-01
2013-10-01r&   r)   r>   r@   r   )r   r   r   r   r   r   r   r)  )r   obj_valuesr@   r   r	   r  r+   r
   rX   r   )	r[   r1   r0   resr!   r@   dtimir`   s	            r"   4test_groupby_apply_timegrouper_with_nat_dict_returns@TestGroupBy.test_groupby_apply_timegrouper_with_nat_dict_returnsm  s     /n""#<=VV&z!!&&|$VRVW##S5'CH*<$=>/r
K
s-r$   c           	         UnUS   R                  S 5      nUR                  nUS   R                  R                  n[	        SSSSUS9n[        S[        R                  [        R                  [        R                  [        R                  [        R                  S	/UR                  S 5      SS
9n[        R                  " X75        g )Nr   c                 `    [        U 5      (       a  U R                  S   $ [        R                  $ )Nr   )r+   rS   rT   rh  r   s    r"   r   TTestGroupBy.test_groupby_apply_timegrouper_with_nat_scalar_returns.<locals>.<lambda>  s     #a&&QVVAY-Lbff-Lr$   r   r  r  r&   r  r   r   r)  )r   r  r  r@   r   r
   rT   rh  rw  rX   r   )r[   r1   r0   r  r!   r@   r  r`   s           r"   6test_groupby_apply_timegrouper_with_nat_scalar_returnsBTestGroupBy.test_groupby_apply_timegrouper_with_nat_scalar_returns~  s    
 /n""#LMVV&z!!&&|$VRVW;..&
 	s-r$   c           	      r   Un[        SSS9nUR                  U5      nUR                  S:X  d   eUR                  R                  R
                  S:X  d   eUR                  S 5      n[        [        S5      /US   R                  SS9n[        / SQ/U[        / S	QS
S9S9n[        R                  " XW5        g )Nr   100YEr'   r   c                     U S   S-  $ )Nr   r    r   s    r"   r   STestGroupBy.test_groupby_apply_timegrouper_with_nat_apply_squeeze.<locals>.<lambda>  s    :!2r$   r   )rL   r>   )$   rG   rG   r   r   )r   r   r   r   r   r   r   r  )r   r*   ngroups_selected_objrC   nlevelsr   r   r   rL   r   rX   rY   )r[   r#   r!   r/   r0   r  r  r`   s           r"   5test_groupby_apply_timegrouper_with_nat_apply_squeezeATestGroupBy.test_groupby_apply_timegrouper_with_nat_apply_squeeze  s     , &w/ZZ_ zzQ%%--222 hh23Y|,-RZ5E5EFS/
;

 	c,r$   c                 0   [         R                  " S5        UnUS   R                  S SS9nUS   R                  S5      n[        R                  " X45        US/   R                  S SS9nUS/   R                  S5      n[        R
                  " XV5        g )Nnumbar   c                 .    [         R                  " U 5      $ r   rT   nanmeanvaluesrC   s     r"   r   ITestGroupBy.test_groupby_agg_numba_timegrouper_with_nat.<locals>.<lambda>      "**V"4r$   )enginemeanc                 .    [         R                  " U 5      $ r   r  r  s     r"   r   r    r  r$   )r   importorskip	aggregaterX   r   rY   )r[   r1   r0   r   r`   	result_dfexpected_dfs          r"   +test_groupby_agg_numba_timegrouper_with_nat7TestGroupBy.test_groupby_agg_numba_timegrouper_with_nat  s     	G$ /J))4W * 
 j>++F3
v0
|$..4W / 
	 *&008
i5r$   pyarrowc           
      0   [        S/ SQ0[        [        S5      [        S5      [        S5      /SS9S9nUR                  [	        SS	95      nUR
                  R                  n[        [        S5      [        S5      /SS9n[        R                  " X45        g )
Nr   rZ  z
2013-01-01z
2013-01-02z&timestamp[ns, America/Denver][pyarrow]rK   rB   r   rM   )	r   r   r   r*   r   r,   r-   rX   assert_index_equal)r[   r!   r0   r   r`   s        r"   test_pyarrow_index_retention(TestGroupBy.test_pyarrow_index_retention  s     Y l+l+l+
 ?	
 ZZS)*))|$i&=>:
 	f/r$   r  N)'__name__
__module____qualname____firstlineno__re   r   markparametrizerv   r   r   r   r   r   r   r   r  r  r-  r4  r;  rD  rJ  rW  r^  rb  ro  rz  r  r  r  r  r  
single_cpur  rf  
skip_if_nor  __static_attributes__r  r$   r"   r3   r3   N   s   75r [[]T5M:  ; @s4j [[V%@A82 B82t@8D
"
"?4*=0~<01d;0z611)(1 GD1&0(1.".(-4 [[6 6* ]]90 0r$   r3   ) __doc__r   r   r   numpyrT   r   pandas.util._test_decoratorsutil_test_decoratorsrf  pandasr   r   r   r   r	   r
   r   r   r   pandas._testing_testingrX   pandas.core.groupby.grouperr   pandas.core.groupby.opsr   fixturer#   r1   r3   r  r$   r"   <module>r     s{       ) ) 	 	 	  / .  ,  ,J0 J0r$   