
    .i.                        d Z ddlZddlZddlmZmZ ddlZddlm	Z	m
Z
mZmZmZmZmZ ddlmZ ej&                  j)                  ddddd	d
d ej*                  dej&                  j-                  d      g      dddg
      d        Zd Zd Zd Zd Zd Zej&                  j)                  ddej:                  fdej<                  fd	ej>                  fdej@                  fdejB                  fdejD                  fdejF                  fdd fdd fg	      d        Z$ej&                  j)                  ddej:                  fdd fd	d fdejD                  fdejF                  fg      d         Z%d! Z&ej&                  j)                  d"g d#      ej&                  j)                  d$ ed%       ed&      g      d'               Z'ej&                  j)                  d(g d)      d*        Z(ej&                  j)                  dg d+      d,        Z)ej&                  j)                  d-g d.      d/        Z*ej&                  j)                  d0d1d2g      ej&                  j)                  d3g d4      ej&                  j)                  d$ ejV                  g d5d67       ejV                  g d5d87       ejV                  g d9d:7       ejV                  g d9d;7       ejV                  g d<d=7      g      d>                      Z,y)?z
test cython .agg behavior
    N)is_float_dtypeis_integer_dtype)	DataFrameIndexNaTSeries	Timedelta	Timestampbdate_rangeop_namecountsumstdvarsemmeanmedianzignore::RuntimeWarning)marksprodminmaxc                 t    ddddddddddt         j                  t         j                  gddgdz  t         j                  j                  d      j	                  d      d	}t        |      }t         j                  |j                  dd
ddf<    fd}|j                  dgd      j                  d      }|D ci c]  \  }}| ||d          }}}t        d|i      }d|j                  _
         ||      }t        j                  ||       |j                  ddg      }i }	|D ]&  \  \  }
}} ||d         |	j                  |
i       |<   ( t        |	      j                  j                         }ddg|j                  _        d|_
         ||      d   } dv rt        j"                  ||       y y c c}}w )Nr      g      ?AB         r   r   C
   r    c                 &     t        |              S N)getattr)xr   s    h/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/tests/groupby/aggregate/test_cython.py<lambda>z(test_cythonized_aggers.<locals>.<lambda>7   s    &71g&(     )axis)r   r   )npnanrandomdefault_rngstandard_normalr   locdropgroupbyindexnametmassert_frame_equal
setdefaultTstacknamesassert_series_equal)r   datadfopgroupedcatgroupexpresultexpdcat1cat2s   `           r&   test_cythonized_aggersrF      s   , Aq!Q1abffbff=3Z!^YY""1%55b9D
 
4B&&BFF1R63;	(B ggse!g$,,S1G18
9:335:
9C
9
S#J
CCIIN[F&#& jj#s$GD& 9te*,U3Z.b!$'9
D/


!
!
#CCjCIIOCH[F/!
vs+ "! :s   ;F4c                     t        t        j                  j                  d      j	                  ddd      t        j                  j                  d      j	                  ddd      j                  d      d      } | j                  d      d   j                         }| j                  d      d   j                  t        j                        }t        j                  ||       y )	Nr   r      2   boolabrL   rM   )r   r*   r,   r-   integersastyper1   r   aggr4   r:   )framerB   expecteds      r&   test_cython_agg_booleanrS   O   s    &&q)221a<&&q)221a<CCFK	
E ]]3$))+F}}S!#&**2773H68,r(   c                     t        t        j                  j                  d      j	                  ddd      ddgdz  d      } d	}t        j                  t        |
      5  | j                  d      d   j                  d       d d d        t        t        j                  j                  d      j	                  ddd      ddgdz  d      } | dg   j                  | d         j                  d      }t        g | d   j                         j                         t        g d            }t        j                  ||       y # 1 sw Y   xY w)Nr   r   rH   rI   foobar   rK   KCannot use numeric_only=True with SeriesGroupBy.mean and non-numeric dtypesmatchrL   rM   Tnumeric_onlystrdtype)r2   columns)r   r*   r,   r-   rN   pytestraises	TypeErrorr1   r   sort_valuesdrop_duplicatesr   r4   r5   )rQ   msgrB   rR   s       r&   test_cython_agg_nothing_to_aggrg   ]   s.   ii##A&//1b9QS@STE XC	y	, 8c3$$$$78 ii##A&//1b9QS@STE C5\!!%*-222EF
Cj$$&668b&H
 &(+8 8s   %EEc            	      n   t        t        j                  j                  d      j	                  ddd      ddgdz  t        j                  ddd	
      d      } d}t        j                  t        |      5  | j                  d      j                  j                  d       d d d        y # 1 sw Y   y xY w)Nr   r   rH   rI   rU   rV   rW   nowr   )periodsfreq)rL   rM   datesrX   rY   rM   Tr[   )r   r*   r,   r-   rN   pd
date_rangera   rb   rc   r1   rl   r   )rQ   rf   s     r&   )test_cython_agg_nothing_to_agg_with_datesro   s   s    &&q)221a<"$]]5"5A	
E XC	y	, 9c  %%4%89 9 9s   6,B++B4c                     t        g dg dt        j                  j                  d      j	                  d      t        j                  j                  d      j	                  d      d      } | j                  d      d   j                  d       }t        d	d	d	d
ddd	d
gt        ddgd      d      }t        j                  ||       y )N)rU   rV   rU   rV   rU   rV   rU   rU   )onerq   twothreerr   rr   rq   rs   r      )r   r   r    Dr   r   c                 >    | j                         j                         S r#   )value_countsto_dictr%   s    r&   r'   z-test_cython_agg_return_dict.<locals>.<lambda>   s    ANN,<,D,D,F r(   r   )rr   rq   rs   rV   rU   r3   )r2   r3   )r   r*   r,   r-   r.   r1   rP   r   r   r4   r:   )r<   tsrR   s      r&   test_cython_agg_return_dictr|      s    	IM&&q)99!<&&q)99!<		

B 
C		!	!"F	GB1q	)1Q+KLUEN-H
 2x(r(   c                      t        dd      } t        g ddz  t        |       }|j                  d       }|j	                         }|j                  t        j                        j                  t              }t        j                  ||       y )Nz1/1/2000rI   )rj   )r   r   r    ru   Er!   )r_   r2   c                     | j                   S r#   )monthry   s    r&   r'   z&test_cython_fail_agg.<locals>.<lambda>   s
    177 r(   )
r   r   objectr1   r   rP   r*   rO   r4   r:   )drr{   r>   summedrR   s        r&   test_cython_fail_aggr      si    	Z	,B	)B.fB	GBjj*+G[[]F{{266"))&1H68,r(   z
op, targopfirstc                      | j                   d   S Nr   ilocry   s    r&   r'   r'      s    AFF1I r(   lastc                      | j                   d   S )Nr   ry   s    r&   r'   r'      s    166": r(   c                    t        t        j                  j                  d      j	                  d            }t        j                  j                  d      j                  ddd      j                  t              }| dk(  rddini }| d	vrd|d
<   |j                  |      j                  | d d      } |j                  |      j                  |fi |}t        j                  ||       y )Nr   i  r   rI   )sizer   ddofr   )r   r   r)   Taltr\   )r   r*   r,   r-   r.   rN   rO   floatr1   _cython_agg_generalrP   r4   r5   )r=   targopr<   labelskwargsrB   rR   s          r&   test__cython_agg_generalr      s     
299((+;;DA	BBYY""1%..q"4.@GGNF%Kfa[RF	""vZZ33BDt3TF%rzz&!%%f77H&(+r(   c                 h    t        |       dkD  rt        j                  |       S t        j                  S r   )lenr*   r   r+   ry   s    r&   r'   r'      s     SVaZRYYq\ RVV r(   c                 0    t        j                  | d      S )Nr   )r   )r*   r   ry   s    r&   r'   r'      s    "&&+ r(   c                 ^   t        g d      }t        ddd      }|j                  t        j                  |d   |      |      }|j                  | d d      }|j                  t        j                  |d   |      |      }|j                  fd      }t        j                  ||       y )	N   r      r   7   rH   observedTr   c                      |       S r#    )r%   r   s    r&   r'   z/test_cython_agg_empty_buckets.<locals>.<lambda>   s    vay r(   )	r   ranger1   rm   cutr   rP   r4   r5   )r=   r   r   r<   grpsgrB   rR   s    `      r&   test_cython_agg_empty_bucketsr      s     
<	 BB?D 	

266"Q%&
:A""24d"CF


266"Q%&
:Auu()H&(+r(   c                    t        g ddg      }t        j                  dddt              }|j	                  t        j                  |d   |      |       j                  d	d d
      }t        j                  ddd      }t        dg dit        j                  |dd
            }| r||j                  dk7     }t        j                  ||       |j	                  t        j                  |d   |      |       j                  dd d
      }t        dg dit        j                  |dd
            }| r||j                  dk7     }t        j                  ||       y )Nr   rL   )r`   r   rW   rH   r^   r   r   Tr      )rk   )r   r   $   r   )r3   orderedr2   r   )r   r   i  r   r   )r   r*   arangeintr1   rm   r   r   interval_rangeCategoricalIndexrL   r4   r5   )r   r<   r   rB   	intervalsrR   s         r&   $test_cython_agg_empty_buckets_nanopsr      sH    
<#	/B99QAS)DZZr#w-ZAUU4d V F !!!Ra0I	m!!)#tDH HJJ!O,&(+ ZZr#w-ZAUUDt V F 	o!!)#tDH HJJ!O,&(+r(   r=   )r   r   r   r   r;   z2016-10-14 21:00:44.557z17088 days 21:00:44.557c                     t        ddg|t        gd      }t        ddgd      }t        d|t        gi|      }|j                  d      j	                  |       }t        j                  ||       y )Nr   r   rK   rL   rz   rM   r   )r   r   r   r1   	aggregater4   r5   )r=   r;   r<   r2   rR   rB   s         r&   "test_cython_with_timestamp_and_natr      sj     
!QtSk2	3B1a&s#E #c{+59HZZ_&&r*F(F+r(   rP   )r   r   r   r   r   r   r   r   ohlccumprodcumsumshiftanyallquantiler   r   rankcummincummaxc                 `   t        g dg dd      }d|j                  j                  d   j                  j                  _        |j                  dg      j                  d| i      }|j                         j                  dg      j                  d| i      }t        j                  ||       y )N)gffffff@g@g@gffffff@g      @)setosar   r   r   r   )sepal_lengthspeciesFr   r   r   )r   _mgrblocksvaluesflags	writeabler1   rP   copyr4   assert_equal)rP   r<   rB   rR   s       r&    test_read_only_buffer_source_aggr     s    6 
5I	

B 05BGGNN1"",ZZ$((.#)>?Fwwy  )-11>32GHHOOFH%r(   )
r   r   r   r   r   r   r   r   r   r   c                    t        ddgdz  t        j                  ddddddd	d
dt        j                  g
d      d      } t	        |j                  d      d   |              }|j                  |d   j                  d            } t	        |j                  d      d   |              }| dv rd}nd}|j                  |      }t        j                  ||       y )Nr   r   rH   r   r         r      rt   	   Int64r^   )r   r   float64)r   )r   r   FT)convert_integer)r   rm   arrayNAr$   r1   assignrO   convert_dtypesr4   r:   )r   r<   rB   df2rR   r   s         r&   test_cython_agg_nullable_intr   *  s    $ 
sa1aAq!Q1bee<GL	

B 4WRZZ_S)735F
))bgnnY/)
0C6ws{{3',g68H$$&&&GH68,r(   r_   )r   Float64booleanc                 H   t        ddgt        j                  dt        j                  g|       t        j                  ddg|       d      }|j	                  d      j                         }t        ddggt        dgd      ddgd	
      }t        j                  ||       y )Nr   r^   r   r   r   rz   r   r    r   )r2   r`   r_   )	r   rm   r   r   r1   r   r   r4   r5   )r_   r<   rB   rR   s       r&   &test_count_masked_returns_masked_dtyper   M  s    	Q1bee*E21a&.	

B ZZ_""$F
Qqc,sCjH &(+r(   with_naTFzop_name, action)	)r   	large_int)r   always_float)r   r   )r   r   )r   r   )r   preserve)r   r   )r   r   )r   r   )r   r   r   r   r   r^   Int8)g?g?g333333?g?Float32r   )TTFFr   c                 "   |rt         j                  | d<   t        g d| d      }|j                  d      }|dk(  rt        j                         }n|dk(  rYt        | j                        r| j                  }nt        | j                        r| j                  }nbt        j                         }nM|dk(  r7t        | j                        r| j                  }n&t        j                         }n|dk(  r| j                  } t        ||             }|d	   j                  k(  sJ |j                  |      }|d	   j                  |k(  sJ  t        |d	   |             }|j                  |k(  sJ |d	   j                  |      }|j                  |k(  sJ y )
Nr   )rL   rL   rM   rM   )keycolr   
always_intr   r   r   r   )rm   r   r   r1   
Int64Dtyper   r_   r   Float64Dtyper$   r   )r;   r   actionr   r<   r>   expected_dtyperB   s           r&   test_cython_agg_EA_known_dtypesr   ]  sZ   : %%Q	/=	>BjjG	;	$**%!ZZNdjj)!ZZN]]_N	>	!$**%!ZZN__.N	:	&WWg&(F%=.000w'F%=.000-WWU^W-/F<<>)))U^%%g.F<<>)))r(   )-__doc__numpyr*   ra   pandas.core.dtypes.commonr   r   pandasrm   r   r   r   r   r	   r
   r   pandas._testing_testingr4   markparametrizeparamfilterwarningsrF   rS   rg   ro   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r(   r&   <module>r      s:    
      ;;--.FGH		
 	(,)(,B-,,
9)(- 		299						%&	%&
	,	, 		CD	+,			,	,,B >?
Y019=V3WX	, @	, 	2&32&  --( "AB, C, T5M2" 
W-V,%Y7%Y7+9=	&*	# 38&*r(   