
    .i*              
       0   d dl Zd dlZd dlmZ d dlmc mZ d dl	Z
d dl	mZmZ d dlmZ  ej                   ej"                  ej$                  ej&                  ej(                  ddgg d      d        Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zej<                  j?                  dddg      ej<                  j?                  dg d      d               Z d Z!d Z"d Z#d Z$d Z%d Z&ej<                  j?                  dddg      ej<                  j?                  dg d      ej<                  j?                  dg dg d fg d!g d"fg d#g d fg      d$                      Z'ej<                  j?                  dddg      d%        Z(ej<                  j?                  d&d'd(g      d)        Z)ejT                  ej<                  j?                  dddg      ej<                  j?                  d*d+ ejV                  d,      jX                  fd-g      d.                      Z-d/ Z.y)0    N)UnsupportedFunctionCall)	DataFrameSeriesInt64Float64)znp.int32znp.int64z
np.float32z
np.float64r   r   )paramsidsc                    | j                   }|}|dk(  rt        j                  }n|dk(  rt        j                  }t        j                  |      j
                  dk(  rt        j                  |      j                  nt        j                  |      j                  }t        j                  |      j
                  dk(  rt        j                  |      j                  nt        j                  |      j                  }|||fS )zZ
    Fixture of dtypes with min and max values used for testing
    cummin and cummax
    r   r   i)
paramnpint64float64dtypekindiinfominfinfomax)requestr   np_typemin_valmax_vals        b/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/tests/groupby/test_cumulative.pydtypes_for_minmaxr      s     MMEG((	)	** 88G!!S( 	XXg""  88G!!S( 	XXg""  7G$$    c                     t        dgdz  dd      } | j                  d      d   j                         }| j                  dd      d   j                  d	       }d|_        t        j                  ||       t        dgd
z  dd      } | d   j                  t              | d<   | j                  d      d   j                         }| j                  dd      d   j                  d       }d|_        t        j                  ||       y )Nb
      keyvaluer"   r#   F
group_keysc                 "    | j                         S Ncumprodxs    r   <lambda>z&test_groupby_cumprod.<locals>.<lambda>3       AIIK r   d   c                 "    | j                         S r'   r(   r*   s    r   r,   z&test_groupby_cumprod.<locals>.<lambda>:   r-   r   )	r   groupbyr)   applynametmassert_series_equalastypefloat)dfactualexpecteds      r   test_groupby_cumprodr:   .   s    	C52:2	3BZZw'//1Fzz%Ez27;AABWXHHM68,	C53;3	4BW+$$U+BwKZZw'//1Fzz%Ez27;AABWXHHM68,r   c                  <   t        dgdz  dd      } | j                  d      d   j                         }t        g dd      }t	        j
                  ||       | j                  dd	
      d   j                  d       }d|_        t	        j
                  ||       y )Nr      順 r!   r"   r#   )r=   l    d(	 l     I5 l      Fx:^ r2   Fr$   c                 "    | j                         S r'   r(   r*   s    r   r,   z/test_groupby_cumprod_overflow.<locals>.<lambda>J   s    !))+ r   )r   r0   r)   r   r3   r4   r1   r2   )r7   r8   r9   numpy_results       r   test_groupby_cumprod_overflowrA   ?   s    	C519w7	8BZZw'//1FMH 68,::e:6w?EEL  L6<0r   c                     t        ddt        j                  dgg dd      } | j                  d      j	                  dd      }t        dt        j                  t        j                  gg d	d
      }t        j                  ||       y )N   r    )rC   r    g      @)ar   crD   TF)numeric_onlyskipna)rC   r    g      @)r   rE   )r   r   nanr0   r)   r3   assert_frame_equalr7   resultr9   s      r   1test_groupby_cumprod_nan_influences_other_columnsrL   P   sq    	RVVQ	

B ZZ_$$$u$EF2662662EFH&(+r   c                    | d   }t        g dg dd      }g d}|j                  |      }t        d|i      j                  |      }|j                  d      j                         }t	        j
                  ||       |j                  dd	      j                  j                  d
       j                         }t	        j
                  ||       y )Nr   rC   rC   rC   rC   r    r    r    r       r<   rP   r    r    rP   r    rC   ABrP   rP   rP   r    r    r    r    rC   rS   rR   Fr$   c                 "    | j                         S r'   cumminr*   s    r   r,   ztest_cummin.<locals>.<lambda>i        r   )	r   r5   r0   rW   r3   rI   rS   r1   to_frame)r   r   base_dfexpected_minsr7   r9   rK   s          r   test_cumminr\   ^   s    a E 6=UVWG,M		B#}-.55e<HZZ_##%F&(+ZZZ.00667KLUUWF&(+r   c                 V   | d   }| d   }t        g dg dd      }g d}t        d|i      j                  |      }|j                  |      }||j                  dd	gdf<   |dz   |j                  dd
gdf<   ||j                  g ddf<   |dz   |j                  dd
gdf<   |j                  d      j	                         }t        j                  ||d       |j                  dd      j                  j                  d       j                         }t        j                  ||d       y )Nr   rC   rN   rO   rQ   rT   rS   r          r    rP   r^      rR   T)check_exactFr$   c                 "    | j                         S r'   rV   r*   s    r   r,   z1test_cummin_min_value_for_dtype.<locals>.<lambda>}       AHHJ r   )
r   r5   locr0   rW   r3   rI   rS   r1   rY   )r   r   r   rZ   r[   r9   r7   rK   s           r   test_cummin_min_value_for_dtyperf   m   s   a E"G 6=UVWG,M#}-.55e<H		B!BFFAq63;!A+BFFAq63;&-HLLs"# '!HLL!QZZ_##%F&(=


35
)++112FGPPR  &(=r   c                 6   t        g dg dd      }|j                  ddi      }t        j                  |j                  g ddf<   t        dt        j                  dt        j                  dt        j                  d	t        j                  d
gi      }|j                  d      j                         }t        j                  ||       |j                  dd      j                  j                  d       j                         }t        j                  ||       y )NrN   rO   rQ   rS   r6   r   r    r<   r^   r<   r    rP   rC   rR   Fr$   c                 "    | j                         S r'   rV   r*   s    r   r,   z0test_cummin_nan_in_some_values.<locals>.<lambda>   rX   r   )r   r5   r   rH   re   r0   rW   r3   rI   rS   r1   rY   r   rZ   r9   rK   s       r   test_cummin_nan_in_some_valuesrk      s    6=UVWGnnc7^,G%'VVGKKc!"#2661bffaKLMH__S!((*F&(+.00667KLUUW  &(+r   c                      t        dgt        j                  dg      d      } t        t        j                  d      dgd      }| j	                  d      d   j                         }t        j                  ||       y NrC   2001rD   r   r   r   )indexr2   rD   )r   pdto_datetimer   r0   rW   r3   r4   r7   r9   rK   s      r   test_cummin_datetimert      b    	!2>>6(#;<	=BbnnV,QCcBHZZ_S!((*F8V,r   c                      t        g dg dd      } | j                  d      j                  j                         }t	        g dd      }t        j                  ||       y )NrC   r    rC   )rC   r    r    ro   rD   r   r>   )r   r0   r   rW   r   r3   r4   rJ   s      r   test_cummin_getattr_seriesrx      I    	3	4BZZ_%%'Fic*H68,r   methodrW   cummaxr   )UInt64r   r   r6   booleanc                    |dk(  rt         j                  nt        j                  }t	        g d|gdz  d      }|d   j                  |      |d<   |j                  d      }t	        d|gdz  i|      } t        ||              }t        j                  ||        t        |d   |              j                         }t        j                  ||       y )Nr6   rN      rQ   rS   rR   r   )r   rH   rq   NAr   r5   r0   getattrr3   rI   rY   )rz   r   itemrZ   groupedr9   rK   s          r   test_cummin_max_all_nan_columnr      s     g%266255D6dVaZHIG3<&&u-GCLooc"G#vz*%8H%WWf%'F(F+*WWS\6*,557F(F+r   c                    | d   }t        g dg dd      }g d}|j                  |      }t        d|i      j                  |      }|j                  d      j                         }t	        j
                  ||       |j                  dd	      j                  j                  d
       j                         }t	        j
                  ||       y )Nr   rN   rO   rQ   rP   r<   r<   r<   r    rP   rP   rP   rS   rR   Fr$   c                 "    | j                         S r'   r{   r*   s    r   r,   ztest_cummax.<locals>.<lambda>   rX   r   )	r   r5   r0   r{   r3   rI   rS   r1   rY   )r   r   rZ   expected_maxsr7   r9   rK   s          r   test_cummaxr      s    a E 6=UVWG,M		B#}-.55e<HZZ_##%F&(+ZZZ.00667KLUUWF&(+r   c                    | d   }| d   }t        g dg dd      }g d}|j                  |      }||j                  ddgdf<   t        d|i      j                  |      }||j                  g d	df<   |j                  d
      j	                         }t        j                  ||       |j                  d
d      j                  j                  d       j                         }t        j                  ||       y )Nr   r    rN   rO   rQ   r   r^   rS   r`   rR   Fr$   c                 "    | j                         S r'   r   r*   s    r   r,   z1test_cummax_min_value_for_dtype.<locals>.<lambda>   rd   r   )
r   r5   re   r0   r{   r3   rI   rS   r1   rY   )r   r   r   rZ   r   r7   r9   rK   s           r   test_cummax_min_value_for_dtyper      s    a E"G 6=UVWG,M		B!BFFAq63;#}-.55e<H&-HLLs"#ZZ_##%F&(+


35
)++112FGPPR  &(+r   c                 6   t        g dg dd      }|j                  ddi      }t        j                  |j                  g ddf<   t        dt        j                  dt        j                  dt        j                  dt        j                  dgi      }|j                  d	      j                         }t        j                  ||       |j                  d	d
      j                  j                  d       j                         }t        j                  ||       y )NrN   rO   rQ   rS   r6   rh   r<   rP   rR   Fr$   c                 "    | j                         S r'   r   r*   s    r   r,   z0test_cummax_nan_in_some_values.<locals>.<lambda>   rX   r   )r   r5   r   rH   re   r0   r{   r3   rI   rS   r1   rY   rj   s       r   test_cummax_nan_in_some_valuesr      s     6=UVWGnnc7^,G%'VVGKKc!"#2661bffaKLMH__S!((*F&(+.00667KLUUW  &(+r   c                      t        dgt        j                  dg      d      } t        t        j                  d      dgd      }| j	                  d      d   j                         }t        j                  ||       y rm   )r   rq   rr   r   r0   r{   r3   r4   rs   s      r   test_cummax_datetimer      ru   r   c                      t        g dg dd      } | j                  d      j                  j                         }t	        g dd      }t        j                  ||       y )Nrw   )r    rC   rC   ro   rD   )r    rC   r    r   r>   )r   r0   r   r{   r   r3   r4   rJ   s      r   test_cummax_getattr_seriesr      ry   r   c                  T   t        t        d      D  cg c]  } t        j                  j                  | z   ! c}       }t        d||j                  j                  d      d      }|j                  d      }|j                         }|ddg   }t        j                  ||       y c c} w )Nr_   rC   zM8[ns]rR   rS   CrR   rS   r   )r   rangerq   NaT_valuer   _valuesviewr0   r{   r3   rI   )nserr7   gbresexps         r   &test_cummax_i8_at_implementation_boundr      s     U1X6"&&--!#6
7C	3;;+;+;H+EF	GB	CB
))+C
c3Z.C#s# 7s   $B%)r6   r   r   zgroups,expected_datarC   rC   rC   )rC   NNrC   r    rP   rC   Nr    )rC   rP   rP   c                    t        dt        g d|      i      }|j                         }|j                  |      d   } t	        ||       d      }t        ||d      }t        j                  ||       t        j                  ||       y )NrD   r   r   FrG   )r   r2   )r   r   copyr0   r   r3   rI   r4   )	rz   r   groupsexpected_datar7   origr   rK   r9   s	            r   test_cummin_max_skipnar     s{     
CE:;	<B779D	F	C	 B WR .Fm5s;H "d#68,r   c                 B   t        t        j                  ddgg dd      }|j                  g d      ddg   } t	        ||       d      }t        t        j                  t        j                  t        j                  gg dd      }t        j                  ||       y )	N       @)r   r   r   ro   r   rD   r   Fr   )r   r   rH   r0   r   r3   rI   )rz   r7   r   rK   r9   s        r   $test_cummin_max_skipna_multiple_colsr     sz     
"&&#s+/B	CB	I	Sz	*B WR .F7oNOH&(+r   funcr)   cumsumc                 \   t        g dg dd      }|j                  d      }d}t        j                  t        |      5   t        ||       ddd	       d d d        t        j                  t        |      5   t        ||       d
       d d d        y # 1 sw Y   AxY w# 1 sw Y   y xY w)Nrw   r   rQ   rR   z+numpy operations are not valid with groupby)matchrC   r    rP   )foo)r   r0   pytestraisesr   r   )r   r7   gmsgs       r   test_numpy_compatr   &  s     
3	4B


3A
7C	.c	: "4Aq!"	.c	:  4Q   " "   s   B9B"B"B+z	dtype,valr|   uint64)r   l         c                     |t         j                  g}t        ddg|d|      }|j                  d      }|j	                  |       }t        d|i|      }t        j                  ||       y )NrC   )grpr   r   r   r   )rq   r   r   r0   	transformr3   rI   )rz   r   valdatar7   r   rK   r9   s           r   #test_nullable_int_not_cast_as_floatr   4  sd     <D	Aq6-U	;BjjGv&F#tE2H&(+r   c                 F   t        ddt        j                  gdt        j                  dgg dgg d      }t        dt        j                  gt        j                  dgddggdd	g      }|j                  d
|       j	                         }t        j                  ||       y )NrC   r    	   )rP   r<   r   r   )columnsr<   rS   r   rR   )as_index)r   r   rH   r0   r   r3   rI   )r   r7   r9   rK   s       r   test_cython_api2r   D  s    
 
Q266NQNI>	XB1bff+{QF;c3ZPHZZhZ/668F&(+r   )/numpyr   r   pandas.errorsr   pandas.util._test_decoratorsutil_test_decoratorstdpandasrq   r   r   pandas._testing_testingr3   fixtureint32r   float32r   r   r:   rA   rL   r\   rf   rk   rt   rx   markparametrizer   r   r   r   r   r   r   r   r   r   skip_if_32bitr   r   r   r    r   r   <module>r      s3     1 ) )   HHbhh

BJJKP%	%6-"1",,>*,-- Hh#78"TU, V 9,, ,(,--	$ Hh#78"?@	O$	L!	O$- A 9- Hh#78, 9, )X!67
  8
  Hh#788XRXXh/3346JK, 9 
,,r   