
    .iX                        d dl Zd dlZd dlmZ d dlmc mZ d dl	m
Z
 d dlZd dlmZ d dlmZ ej$                  j'                  ddddgddggd	d
gd	dgd	dgdfdddgdej(                  gddggg dg dg ddfg      d        Zej$                  j'                  ddddgddggdd
gddgddgdfdddgdej(                  gddgej(                  dggg dg dg ddfg      d        Zej$                  j'                  ddddgd
d	gdd	gdd	gdfdddej(                  gg dg dg ddfg      d        Zej$                  j'                  ddddd ej(                  g ej0                  d!d!gdd g"      fdddd ej(                  g ej0                  g d#dd ej(                  g"      fg      d$        Zej$                  j'                  d%d ej0                  d&d'gdd gd()      fd ej0                  g d*dd ej(                  gd()      fg      d+        Zd, Zej$                  j'                  d- ej8                  d d.       ed/      ej<                  j?                  d0d1gd2d3g4      g      d5        Z ej$                  j'                  ddddgddggd	d
gddgddgdfdddgdej(                  gddggg dg d6g d7dfg      d8        Z!ej$                  jD                  ej$                  j'                  d9 ejF                  d:       ejF                  d;      f ejH                  d<       ejH                  d=      f ejJ                  d:       ejJ                  d;      fg      ej$                  j'                  d>dd?d!gfdg d@fg      dA                      Z&ej$                  j'                  dB ejN                  dddd ej(                  gg dCdDdEg dFidd ej(                  gdGH       ejN                  dddd ej(                  gg dCdDdEg dIiddJH       ejN                  dg dKg dCdDdEg dFiddLH       ejN                  dg dKg dCdDdEg dFiddMH      g      dN        Z(ej$                  j'                  dOddgdd gg      ej$                  j'                  dPdgdd gg      ej$                  j'                  dQddg      dR                      Z)dS Z*dT Z+ej$                  j'                  dUg dV      ej$                  j'                  dWddXdYdZd[d\d]d^d_d`dadbdc ejN                  dd ejX                  de      f      dgdhdig      ej$                  j'                  djddg      dk                      Z-ej$                  j'                  djddg      ej$                  j'                  dWe.dg      dl               Z/ej$                  j'                  dmg dn      do        Z0dp Z1ej$                  j'                  dqdrdsg      dt        Z2du Z3dv Z4y)w    N)Pandas4Warning)na_value_for_dtype)get_groupby_method_argszdropna, tuples, outputsTAB      *@Q^@     ^@      ?cdeF)r   皙(@r	   )r         m@r
   )r         (@r   c                    g dd|dddgg dg dg}t        j                  |g d	      }|j                  d
dg|       j                         }t         j                  j                  |t        d            }| s$|j                  ddt        j                  gd      }t        j                  ||      }t        j                  ||       y )Nr   r      r   r   r   r   r   r   r   r   r	   {      r   r   r   r   r   abr   r   r   columnsr   r   dropnaabnamesr   levelindexpd	DataFramegroupbysum
MultiIndexfrom_tupleslist
set_levelsnpnantmassert_frame_equal)	r    tuplesoutputsnulls_fixturedf_listdfgroupedmiexpecteds	            f/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/tests/groupby/test_groupby_dropna.py:test_groupby_dropna_multi_index_dataframe_nan_in_one_groupr>      s    0 		mT5"-"	G 
g'@	ABjj#sFj3779G		"	"6d	"	<B ]]Cbff-S]9||G2.H'8,    r   )r   g*@r	   r   )r   g     @m@r
   r   )r   r   r   r   c           	         g dd|dddgg d|dddd	gd|ddd	gg}t        j                  |g d
      }|j                  ddg|       j                         }t         j                  j                  |t        d            }| s5|j                  ddt        j                  gddt        j                  gg      }t        j                  ||      }	t        j                  ||	       y )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r!   r"   r&   r(   )
r    r5   r6   r7   nulls_fixture2r8   r9   r:   r;   r<   s
             r=   ;test_groupby_dropna_multi_index_dataframe_nan_in_two_groupsrB   9   s    0 		mT5"-"	aC(	naC(G 
g'@	ABjj#sFj3779G		"	"6d	"	<B ]]S#rvv.c2660BCD||G2.H'8,r?   zdropna, idx, outputs)r   r   r   )r	   r   r   )r
   r   r   )r   r   r   c                    g dg dg dg dg}t        j                  |g d      }|j                  d|       j                         }t        j                  |t        j                  |d	      
      }t        j                  ||       y )N)r   r   r   r   )Nr   r   r   )r   r	   r   r   )r   r   r   r   )r   r   r   r   r   r   r   namer&   )r)   r*   r+   r,   Indexr3   r4   )r    idxr6   r8   r9   r:   r<   s          r=   *test_groupby_dropna_normal_index_dataframerH   e   sp    $ 		G 
g';	<BjjVj,002G||G288Cc+BCH'8,r?   zdropna, idx, expectedr   r      r&   )rI   rI   rI   c                     t        j                  g d|      }|j                  d|       j                         }t	        j
                  ||       y )N)r      rI   rI   r&   r   )r%   r    )r)   Seriesr+   r,   r3   assert_series_equal)r    rG   r<   serresults        r=    test_groupby_dropna_series_levelrP      s?     ))L
,C[[q[0446F68,r?   zdropna, expected     @j@     u@	Max Speedr'   rE   )rQ   rR         4@c                     t        j                  g dg dd      }|j                  dddt        j                  g|       j                         }t        j                  ||       y )N)g     `x@rR   g      >@rU   )FalconrW   ParrotrX   rS   rT   r   r   r   )r)   rL   r+   r1   r2   meanr3   rM   )r    r<   rN   rO   s       r=   test_groupby_dropna_series_byrZ      sU     ))"6C [[#sC0[@EEGF68,r?   c                     t        j                  g dg dd      }|j                  d|       }|j                  j                  | k(  sJ y )Nr   r   r   Nr   rK   rI   Nr   r   r   r   )r)   r*   r+   _grouperr    )r    r9   gbs      r=   test_grouper_dropna_propagationra      s?    	O/B	CB	C	'B;;'''r?   r'      abcd)r   rK   )Rr   numcolr"   c                 <   dddd| rt         j                  ndgi}t        j                  g dg dd|      }|j	                  d| 	      }|j                  t              }t        j                  ||      }t        j                  ||       |dg   j                  t              }t        j                  ||      }t        j                  ||       |d   j                  t              }t        j                  |d   |d
      }t        j                  ||       y )Nr   rK   r   r\   r]   r^   r&   r   r   rT   )r1   r2   r)   r*   r+   	transformlenr3   r4   rL   rM   )r    r'   expected_datar9   r`   rO   r<   s          r=   +test_groupby_dataframe_slice_then_transformrk      s     1afBFF!<=M	O/B%	PB	C	'B\\#F||M7H&(+Y  %F||M7H&(+Ws#Fyys+5sCH68,r?   )r   r   r
   )r   r   r   c                    g dg dg dg dg}t        j                  |g d      }ddd	d
}|j                  ddg|       j                  |      }t         j                  j                  |t        d            }| s$|j                  ddt        j                  gd      }t        j                  ||      }t        j                  ||       y )Nr   )r   Nr   r   r   r   r   r   r   r,   maxminr   r   r   r   r!   r"   r   r   r$   r&   )r)   r*   r+   aggr-   r.   r/   r0   r1   r2   r3   r4   )	r    r5   r6   r8   r9   agg_dictr:   r;   r<   s	            r=   -test_groupby_dropna_multi_index_dataframe_aggrq      s    , 	$"	G 
g'@	ABU3Hjj#sFj377AG		"	"6d	"	<B ]]Cbff-S]9||G2.H'8,r?   zdatetime1, datetime2z
2020-01-01z
2020-02-01z-2 daysz-1 dayszdropna, valuesr   )r   rI      c           	      H   t        j                  g d||||||gd      }| r||g}n||t        j                  g}|j	                  d|       j                  ddi      }t        j                  d|it        j                  |d            }	t        j                  ||	       y )	N)r   rK   rI   rb      rr   )valuesdtrv   r   ru   r,   rD   r&   )	r)   r*   r1   r2   r+   ro   rF   r3   r4   )
r    ru   	datetime1	datetime2unique_nulls_fixtureunique_nulls_fixture2r9   indexesr:   r<   s
             r=   &test_groupby_dropna_datetime_like_datar|      s     
($%
	

B i(i0jjfj-118U2CDG||Xv.bhhwT6RSH'8,r?   z#dropna, data, selected_data, levels)
   r}         )groupsru   ru   )r   r   r   r   dropna_false_has_nan)id)r   r   r   dropna_true_has_nan)r   r   r   r   dropna_false_no_nandropna_true_no_nanc                    t        j                  |      }|j                  d|       }|j                  d       }t	        t        |d   |d   d            }t         j                  j                  |dd g      }| s|r|j                  |d      }t        j                  ||	      }	t        j                  ||	       y )
Nr   r   c                 T    t        j                  dt        t        |             i      S )Nru   )r)   r*   rangeri   )grps    r=   <lambda>z@test_groupby_apply_with_dropna_for_multi_index.<locals>.<lambda>G  s    ",,%C//J"K r?   ru   Fstrictr"   r$   r&   )r)   r*   r+   applytuplezipr-   r.   r0   r3   r4   )
r    dataselected_datalevelsr9   r`   rO   	mi_tuplesr;   r<   s
             r=   .test_groupby_apply_with_dropna_for_multi_indexr     s    L 
d	B	HV	,BXXKLFc$x.-*A%PQI		"	"9Xt4D	"	EB f]]6]2||M4H&(+r?   input_indexkeysseriesc                 \   t        j                  dt        j                  gddgddgd      }|j	                  |      }|r|d   }n| ddgk(  r|dgk(  r|dg   }| |j	                  |       }|j                  |d	      }|r|d   }|j                         }t        j                  ||       y )
Nr   rK   rI   r   r   r   r   r   r   Fr   )	r)   r*   r1   r2   	set_indexr+   r,   r3   assert_equal)r   r   r   objr<   r`   rO   s          r=   )test_groupby_dropna_with_multiindex_inputr   T  s    
 ,,RVVQQ	
C }}T"HC=	c
	"tu}SE?mmK(	T%	(BWVVXFOOFH%r?   c            	         dt         j                  ddt         j                  gg dd} t        j                  |       }|j	                  dd      }|j
                  }t         j                  }dt        j                  dd	g|
      dt        j                  dg|
      t         j                  t        j                  ddg|
      i}t        |j                         |j                         d      D ]  \  }}t        j                  ||        t        j                  t        |j                               d	         sJ t        |j                               dd	 ddgk(  sJ y )Ng1g2)r   r   rK   rI   rb   )groupr   r   Fr   r   rK   dtyperI   r   rb   Tr   )r1   r2   r)   r*   r+   indicesintparrayr   ru   r3   assert_numpy_array_equalisnanr/   r   )r   r9   r:   rO   r   r<   result_valuesexpected_valuess           r=   test_groupby_nan_includedr   r  s!   BFFD$7oND	d	Bjjj/G__FGGEbhh1vU+bhhs%(
!Qu-H
 +.*4+ D& 	##M?CD 88D'*+++q#d|333r?   c                      t        j                  t        j                  ddggg d      } | j	                  ddg      } | j                  ddgd      j                         }| }t        j                  ||       y )	Nr   r   r   r   r   r   Fr   )	r)   r*   r1   r2   r   r+   firstr3   r4   )r9   rO   r<   s      r=   &test_groupby_drop_nan_with_multi_indexr     se    	1~&	@B	sCj	!BZZc
5Z1779FH&(+r?   sequence)xyzyxxyzyzxzzzzzzyzxyyyyzzxyxyxyr   UInt8Int8UInt16Int16UInt32Int32UInt64Int64Float32Float64categorystringstring[pyarrow]pyarrow)marksdatetime64[ns]	period[D]zSparse[float]test_seriesc           	         |dv rddt         j                  d}nU|dv rddt         j                  d}n<|&|j                  d      rd	d
t         j                  d}nd	d
t        j                  d}t        j
                  t        j                  | D cg c]  }||   	 c}|      g dd      }|j                  ddd|d      }|r|d   }|j                         }i }	t        |       D ]  \  }
}|	j                  |d      |
z   |	|<    |dk(  rAt        j                  |	D cg c]  }||   	 c}|d   j                  j                  d      }nt        |t              rO|j                  d      r>t        j                   t        j"                  |	D cg c]  }||   	 c}|      d      }n)t        j                   |	D cg c]  }||   	 c}|d      }t        j                  |	j%                         |dd       }|s|j'                         }|s:|j)                         }|(|j                  d      r|d   j+                  |      |d<   t-        j.                  ||       y c c}w c c}w c c}w c c}w )N)r   r   xy)r   r   z)r   r   z
2016-01-01z
2017-01-01)IUFr   rK   r   )r   r   rK   rI   )keyr   r   F)r    sortas_indexobservedr   r   r   rD   Sparse)r   rE   )r'   rE   r   )r)   NA
startswithr1   r2   r*   rL   r+   r,   	enumerategetCategoricalIndexcat
categories
isinstancestrrF   r   ru   to_framereset_indexastyper3   r   )r   r   r   r   uniqueslabelr9   r`   rO   summedrG   r   r'   r<   s                 r=   test_no_sort_keep_nar     s:   P --#BEE2	1	1$<beeD		u//@./	99(CgenC5Q	

B 
E%ehQV	WBWVVXF F) 3
U

5!,s2u3
##!'(AWQZ(uIMM$$

 
E3	E$4$4X$>HH&9gen9Ge
 f=U'%.=UQVWyyCtLH$$&'')!1!1(!;&uo44U;HUOOOFH%E D  ) : >s   I#!I(I-I2c                    t        j                  dddgi      }t        j                  ||g|      }|r|d   n|}|j                  |d|       }|j	                         }	t        j
                  t        |j                        g      }
t        j                  ddgi|
      }|rt        j                  |	|d          y t        j                  |	|       y )	Nr   r   rK   r   F)r    r   rI   r&   )r)   r*   rL   r+   r,   rF   r   r   r3   rM   r4   )r   r   r7   rA   r   r9   r   r   r`   rO   r'   r<   s               r=   test_null_is_null_for_dtyper     s     
sQFm	$BYY~6eDF "S'bC	VE	5BVVXFHH(678E||S1#Je4H
vx}5
fh/r?   
index_kind)r   singlemultic                    t        j                  t         j                  j                  d      j	                  g dd      d       }t        j                  t        j                  |g d      t        d      d      }|j                         }t        j                  |g d	      j                  d
      |d<   |dk(  rdg}ne|dk(  r&dg}|j                  d      }|j                  d      }n:ddg}|d   |d<   |j                  ddg      }|d   |d<   |j                  ddg      }t        | |      }	t        | |      }
| dk(  r1|dk(  r,|	d   j                  |      f}	|
d   j                  |      f}
|j                  |d|||      }|s8| dv r4t        j                   t"        d      5   t%        ||       |	  d d d        y |j                  |||d      }| dk(  r	t&        }d}nd }d}t)        j*                  ||      5   t%        ||       |
 j-                         }d d d        d   j.                  j1                  d
g      |d<   |dk(  r"|d   j.                  j1                  d
g      |d<   |r*|dk(  r|j                  ddg      }n|j                  d      }| dv r|dk7  r|d   j2                  j5                         }|dk(  rA|D cg c]  }|d
k(  rt         j6                  n| }}t        j                  |g d      |d<   n9|D cg c])  }|dk(  r t         j6                  t         j6                  fn|+ }}||d<   | dk(  r*|j9                  ddi      }|r|d   j9                  d       }| dk(  r	t&        }d}nd }d}t)        j*                  ||      5   t%        ||       |	 }d d d        t)        j:                  |       y # 1 sw Y   y xY w# 1 sw Y   xY wc c}w c c}w # 1 sw Y   CxY w) NrK   r   rK   N   sizer   rK   rI   r   r~   r   r   )r   rK   rI   rb   rb   r   r   r   x2corrwithr   r   Fr    r   r   r   )idxminidxmaxz(empty group due to unobserved categories)matchT)r   r   r   z'DataFrameGroupBy.corrwith is deprecated r   )r   r   r   )rb   rb   r   )r1   appendrandomdefault_rngchoicer)   r*   Categoricalr   copyfillnar   r   dropr+   pytestraises
ValueErrorgetattrr   r3   assert_produces_warningr   r   remove_categoriesru   tolistr2   renamer   )reduction_funcr   r   r   r   ru   r9   	df_filledr   argsargs_filled	gb_keepna	gb_filledwarnmsgr<   r   rO   s                     r=   test_categorical_reducersr    s    YYryy,,Q/66|"6MtTF	nnV	:rK
B
 	I^^F|DKKANIcNWu	x	u\\#'',	T{c74\\3+&#C.	$''d4	">26D).)DK#
g(=QT*,"1~**4*8:

UXD8  I *>>]]H
 	6 /GI~.5	6 	!!$t!TI#7		#	#D	4 R579n5{COOQRSM%%77<HSMW!$++==qcB ))3+6H))#.H--*2G#%%,,.!7=>!QbffA->F>NN6iHHSMFLM!v+rvvrvv&1<MFM"HSM??Av;?7'..t4H#7		#	#D	4 ;3N3T:; OOFH%a	6 	R R ? N; ;s0   -OOO$.O)O.OO!.O7c                 2   t        j                  t         j                  j                  d      j	                  g dd      d       }t        j                  t        j                  |g d      t        d      d      }t        | |      }||d	   j                            d
   }| dk(  rt        t        t        |                  }n| dk(  rs|r4|r|d	   j                  d      dz
  }	nF|d	   j                  d      dz
  }	n-|j                  d |j                  d    d	   j                         }	t        |      |	gz  }n t!        ||       | }t        j                  d
|i      }
|j#                  d	d|||      }|j#                  d	d||      } t!        ||       | } t!        ||       | }t%        ||d	   j                            j                  j'                         |
j(                  j+                         d      D ]5  \  }}|j,                  dk(  r||j                  |<   %||j                  |df<   7 | dk(  r0||d	   j/                         |j1                  	      z  xx   dz  cc<   | dvr|j3                  d      }t5        j6                  ||       y )NrK   r   r   r   r   r   r~   r   r   r   cumcountngroupFr   r   r   r   T)r    r   r   r   )rankdiff
pct_changeshiftint64)r1   r   r   r   r   r)   r*   r   r   r   isnullr/   ri   nuniqueilocr'   r  r+   r   r  ru   ravelndimnotnullger   r3   r   )transformation_funcr   r   r   ru   r9   r  null_group_valuesnull_group_datana_groupnull_group_resultr  	gb_dropnarO   r<   r  values                    r=   test_categorical_transformersr)  R  sz   YYryy,,Q/66|"6MtTF	nnV	:rK
B ##6;D 2c7>>+,S1j(uS):%;<=		(c7??%?81< c7??%?81<ww;!2!8!8!;<SAIIKH/0H:=I'"35HI4Pc?%;<

EH4(  I 

3thT
JI4WY 34d;F6wy"56=H
2c7>>""))+  &&( +e
 ==A"'HMM$%*HMM$'"+ h&C"X[[%::;q@;"II??7+OOFH%r?   methodheadtailc                 L   t         j                  j                  d      j                  g dd      }t	        j
                  t	        j                  |g d      t        t        |            d      }|j                  dd|||	      } t        ||              }| d
k(  r|d d d   }|dk(  |dk(  j                         dk  z  |dk(  |dk(  j                         dk  z  z  |d k(  |d k(  j                         dk  z  z  }| d
k(  r|d d d   }||   }	t        j                  ||	       y )NrK   r   r   r   r   r   r   Fr   r,  r   rt   )r1   r   r   r   r)   r*   r   r   ri   r+   r  cumsumr3   r4   )
r*  r   r   r   ru   r9   r`   rO   maskr<   s
             r=   test_categorical_head_tailr1    s-    YY""1%,,\2>F	nnV	:s6{AST
B 
Cth	WB WR "F" A+6Q;..0A5	6aKVq[002a78	: dN$668A=>	@ 	 DbDz$xH&(+r?   c                     t         j                  j                  d      j                  g dd      } t	        j
                  t	        j                  | g d      t        t        |             d      }|j                  ddd	      }|j                  d
       }|j                         }t        j                  ||       y )NrK   r   r   r   r   r   r   Fr    r   c                 "    | j                         S Nr,   r   s    r=   r   z&test_categorical_agg.<locals>.<lambda>  s    aeeg r?   )r1   r   r   r   r)   r*   r   r   ri   r+   ro   r,   r3   r4   ru   r9   r`   rO   r<   s        r=   test_categorical_aggr9    s    YY""1%,,\2>F	nnV	:s6{AST
B 
C	6BVV%&FvvxH&(+r?   c                     t         j                  j                  d      j                  g dd      } t	        j
                  t	        j                  | g d      t        t        |             d      }|j                  ddd	      }|j                  d
       }|j                  d      }t        j                  ||       y )NrK   r   r   r   r   r   r   Fr3  c                 "    | j                         S r5  r6  r7  s    r=   r   z,test_categorical_transform.<locals>.<lambda>  s    AEEG r?   r,   )r1   r   r   r   r)   r*   r   r   ri   r+   rh   r3   r4   r8  s        r=   test_categorical_transformr<    s    YY""1%,,\2>F	nnV	:s6{AST
B 
C	6B\\+,F||E"H&(+r?   )5numpyr1   r  pandas.errorsr   pandas.util._test_decoratorsutil_test_decoratorstdpandas.core.dtypes.missingr   pandasr)   pandas._testing_testingr3   pandas.tests.groupbyr   markparametrizer2   r>   rB   rH   rL   rP   rZ   ra   
RangeIndexr/   r-   from_productrk   rq   arm_slow	Timestamp	TimedeltaPeriodr|   paramr   r   r   r   
skip_if_nor   objectr   r  r)  r1  r9  r<   r?   r=   <module>rT     sC     ( ) ) 9   8  3Z#s$.e}D#;G	
 3Z#rvvc
3))&	
&-'&-0  3Z#s$.e}D#;G	
 3Z#rvvc
RVVSMB..+	
&-'&-2 	Sz&$udm3PT+VW#rvv))&	
--  	S#rvv&			1a&c
(KL#sBFF#BIIiS"&&'9:	

-
- 	yryy%SzLMBII*3RVV2D;W	
	-	-( aV
""FJ#7u~"N--(  3Z#s$.e}C:F	
 3Z#rvvc
3))%	
&-'&-. 	l	#\R\\,%?@	i	 ,",,y"9:	<	 )"))L"9: )TB7OeZ=P+QR- S -: )S#rvv.:JK|$#rvv%	
 	S#rvv.:JKy!$	
 	+7GH|$$	
 	+7GH|$#	
/"F,G"F,$ usCj(AB3%#s!45D%=1& 2 6 C&64(, 	 &mbmmI.FG#, u61& 7-H1&h u664.10 2 70" 'CDS& ES&l0&f FF#34, 5,2	,	,r?   