
    MhA                        S SK r S SKrS SKrS SKJr  S SKrS SKJrJ	r	  S SK
Jr  S SKJr  \R                  S 5       r\R                  S 5       r\R                  S 5       r " S S	5      r " S
 S5      rS rS r\R.                  R1                  S/ SQSS 4/ SQSS4/ SQSS4/ SQSS4/ SQSS4/ SS4/ SQSS 4/ SQSS4/ SQSS4/ SQSS4/ SQS S4/ SQSS4/5      S 5       r\R.                  R1                  SSS\R4                  \R4                  /S\R4                  S\R4                  /SS\R4                  /\R4                  SS S \R4                  S/\R4                  S S SSS//5      \R.                  R1                  S\R4                  S S/5      S 5       5       rS rS  rS! r\R.                  R1                  S\R4                  S/5      S" 5       rS# r S$ r!g)%    N)IntIndex)SparseDtypeisnaSparseArrayc                      [         R                  " [         R                  [         R                  SSS[         R                  SS[         R                  S/
5      $ )z<Fixture returning numpy array with valid and missing entries                  )nparraynan     W/var/www/html/env/lib/python3.13/site-packages/pandas/tests/arrays/sparse/test_array.pyarr_datar      s8     88RVVRVVQ1bffaBFFAFGGr   c                     [        U 5      $ )z-Fixture returning SparseArray from 'arr_data'r   )r   s    r   arrr      s     x  r   c                      [        / SQSS9$ )zEFixture returning SparseArray with integer entries and 'fill_value=0')
r   r   r	   r
   r   r   r   r   r   r   r   
fill_valuer   r   r   r   zarrr      s     5!DDr   c            
       @   \ rS rSr\R
                  R                  SSS\R                  /5      S 5       r	S r
\R
                  R                  S/ SQ\R                  " S	S
/5      S/5      S 5       rS rS r\R
                  R                  S/ SQSS4/ SS4S/SS4SS\R                  S/S\4/5      S 5       r\R
                  R                  S\R                  \R                  \R                  \R                  \R                  /S	\R                  \R                  S\R                  /S	\R                  SSS//5      \R
                  R                  SSS/5      S 5       5       r\R
                  R                  SSS/5      S 5       rS rS rS  rS! rS" rS#rg)$TestSparseArray#   r   r   Nc           	      "   [        [        R                  " / SQ5      SS9nUR                  SUS9n[	        U5      (       a  UR
                  R                  n[        [        R                  " USSSS/5      SS9n[        R                  " X45        g )N)r	   r   r   r   r   g       @r   r	   r   r   )	r   r   r   shiftr   dtypena_valuetmassert_sp_array_equal)selfr   sparseresexps        r   test_shift_fill_value%TestSparseArray.test_shift_fill_value$   ss     RXXo63Gll1l4
++J"((J1a#;<M
  *r   c                 V   [        S[        R                  S/[        R                  S9nSUl        UR                  S:X  d   e[        / SQS[        R                  S9nSUl        UR                  S:X  d   eSn[
        R                  " [        US	9   S
Ul        S S S 5        UR                  S
:X  d   e[        R                  Ul        [        R                  " UR                  5      (       d   e[        / SQS[        R                  S9nSUl        UR                  SL d   e[
        R                  " [        US	9   SUl        S S S 5        [        R                  Ul        [        R                  " UR                  5      (       d   eg ! , (       d  f       N= f! , (       d  f       N\= f)N      ?g       @r   r
   )r	   r   r
   r   r   r!   zAAllowing arbitrary scalar fill_value in SparseDtype is deprecatedmatchg@TFTFT)
r   r   r   r   int64r#   assert_produces_warningFutureWarningisnanbool_)r%   r   msgs      r   test_set_fill_value#TestSparseArray.test_set_fill_value.   s<   3,@~~""")B~~"""Q''SA CN B~~$$$xx''''-%rxxP~~%%%''SACN B xx'''' BA BAs   F	<F	
F
F(valr	   r
   r   r	   r
   c                     [        / SQS[        R                  S9nSn[        R                  " [
        US9   Xl        S S S 5        g ! , (       d  f       g = f)Nr0   Fr-   zfill_value must be a scalarr.   )r   r   r5   pytestraises
ValueErrorr   )r%   r9   r   r6   s       r    test_set_fill_invalid_non_scalar0TestSparseArray.test_set_fill_invalid_non_scalarI   s9    -%rxxP+]]:S1 N 211s   A
Ac                     UR                  5       nUR                  UR                  Ld   eUR                  UR                  L d   eg N)copy	sp_valuessp_index)r%   r   arr2s      r   	test_copyTestSparseArray.test_copyQ   s9    xxz~~S]]222}},,,r   c                 N    [         R                  " UR                  5       U5        g rB   )r#   assert_almost_equalto_dense)r%   r   r   s      r   test_values_asarray#TestSparseArray.test_values_asarrayV   s    
s||~x8r   zdata,shape,dtype)r   r   r   r   r   )r   )r   )r	   AB)r   c                 :    [        XS9nUR                  U:X  d   eg )Nr!   )r   shape)r%   datarR   r!   outs        r   
test_shapeTestSparseArray.test_shapeY   s      $,yyE!!!r   valsr   c                     [         R                  " U5      n[        XS9nUR                  5       n[        R
                  " XA5        g Nr   )r   r   r   rK   r#   assert_numpy_array_equal)r%   rW   r   r   r'   s        r   test_dense_reprTestSparseArray.test_dense_reprg   s4     xx~$6lln
##C.r   fixr   r   c                 ~    UR                  U5      n[        R                  " U5      n[        R                  " XC5        g rB   )getfixturevaluer#   round_trip_pickler$   )r%   r]   requestobj	unpickleds        r   test_pickleTestSparseArray.test_picklew   s0    %%c*((-	
  0r   c                     [        / SQ5      n[        R                  " S 5         U H  nM     S S S 5        g ! , (       d  f       g = f)Nr:   )r   r#   r2   )r%   sp_arr_s      r   test_generator_warnings'TestSparseArray.test_generator_warnings}   s3    Y'''-  .--s	   
7
Ac                 z   [        [        R                  S/SS9n[        R                  " SS/5      nUR	                  U) S5      n[        SS/SS9n[
        R                  " X45        [        R                  " U5      nUR                  U) S5      n[
        R                  " U[        R                  " U5      5        g )Nr,   r   r   TFr	   )r   r   r   r   _wherer#   r$   pdSerieswhereassert_series_equal)r%   r   maskr'   r(   sers         r   test_where_retain_fill_value,TestSparseArray.test_where_retain_fill_value   s    2663-A6xxu&jj$"1c(q1
  *iiniiq!
sBIIcN3r   c                 8	   [        S[        R                  [        R                  S[        R                  /5      nUR                  S5      n[        / SQS[        R                  S9n[
        R                  " X#5        [        S[        R                  [        R                  S[        R                  /SS9nUR                  S5      n[        / SQS[        R                  S9n[
        R                  " X#5        [        S[        R                  SSS/5      nUR                  S5      n[        / SQS[        R                  S9n[
        R                  " X#5        [        S[        R                  SSS/SS9nUR                  S5      n[        / SQS[        R                  S9n[
        R                  " X#5        [        [        R                  [        R                  [        R                  [        R                  /5      nUR                  S5      n[        / S	QS[        R                  S9n[
        R                  " X#5        [        [        R                  [        R                  [        R                  [        R                  /SS9nUR                  S5      n[        / S	QS[        R                  S9n[
        R                  " X#5        [        / S
Q5      nUR                  S5      n[        / S
QSS9n[
        R                  " X#5        [        / SQ5      nUR                  [        [        R                  5      :X  d   eUR                  S:X  d   eUR                  S5      n[
        R                  " X!5        [        / SQSS9nUR                  [        [        R                  5      :X  d   eUR                  S:X  d   eUR                  S5      n[        / SQSS9n[
        R                  " X#5        [        / SQ[        R                  S9nUR                  [        [        R                  [        R                  S9:X  d   e[        R                  " UR                  5      (       d   eUR                  S5      n[        / SQSS9n[
        R                  " X#5        g )Nr	   r   )r	   rv   rv   r   rv   r-   r   r   )r	   rv   r   r   r   )rv   rv   rv   rv   )        rw   rw   rw   )r   r   r   r   )r   r   r   fillnafloat64r#   r$   r!   r   r1   r   r4   r%   sr'   r(   s       r   test_fillnaTestSparseArray.test_fillna   s2   BFFBFFArvv67hhrl,2::N
  *BFFBFFArvv61Ehhrl,"**M
  *BFFAq!,-hhrl*rL
  *BFFAq!,;hhrl*q

K
  *89hhrl*rL
  *8QGhhrl*q

K
  * ,-hhrl.2>
  * %ww+bhh////||q   hhrl
  (3ww+bhh////||q   hhrl,15
  * 8ww+bhh266BBBBxx%%%%hhrl,26
  *r   c                 $   [        S[        R                  [        R                  S[        R                  /5      nUR                  S5      n[        R                  " / SQ[        R
                  S9n[        R                  " UR                  5       U5        [        S[        R                  [        R                  S[        R                  /SS9nUR                  S5      n[        / SQS[        R
                  S9n[        R                  " X#5        g )Nr	   r   )r	   r   r   r   r   rQ   r   r   r-   )
r   r   r   rx   r   ry   r#   rZ   rK   r$   rz   s       r   test_fillna_overlap#TestSparseArray.test_fillna_overlap   s    BFFBFFArvv67 hhqkhhbjj9
##CLLNC8BFFBFFArvv61Ehhqk/arzzJ
  *r   c                 Z   [        [        S5      [        S5      SSSSSSSSSS/5      n[        R                  " / SQ[        R                  S9nUR                  5       u  n[        R                  " X#5        [        / SQ5      nUR                  5       u  n[        R                  " X#5        g )	Nr   r	   r   r
   r   )r
   r   	   rQ   )r   r   r	   r   r   r
   r   r   r   r   r   r   )r   floatr   r   int32nonzeror#   rZ   )r%   saexpectedresults       r   test_nonzeroTestSparseArray.test_nonzero   s    %,eaAq!Q1aQRST88IRXX6JJL	
##H5=>JJL	
##H5r   r   )__name__
__module____qualname____firstlineno__r<   markparametrizer   r   r)   r7   r   r?   rG   rL   objectrU   r[   rd   ri   rs   r|   r   r   __static_attributes__r   r   r   r   r   #   s   [[\AtRVV+<=+ >+(6 [[UY!Q0@)$LM! N!-
9 [[dD)tS$3$dF3		
""
 [[VVRVVRVVRVVRVV4266*1a 	
 [[\D!95/ 6/ [[UUFO41 51
4:+x+	6r   r   c                      \ rS rSr\R
                  R                  S\R                  " / SQ\	S9\
" \R                  " / SQ5      5      4\R                  " SS\R                  SS	/\	S9\
" \R                  " S
S\R                  SS/5      5      4/5      \R
                  R                  SSS/5      S 5       5       rS rS r\R
                  R                  SS\R                  /5      S 5       rS rS rS rS rS rSrg)TestSparseArrayAnalytics   zdata,expected)r	   r
   r   r   r   rQ   )r,         @g      @g      $@g      .@r	   r
   r   r   r,   r   g      @g      (@numpyTFc                    U(       a  [         R                  OS nU" [        U5      5      n[        R                  " XR5        U" [        U[         R
                  S95      n[        R                  " XR5        U" [        USS95      n[        R                  " XR5        U(       a  Sn[        R                  " [        US9   [         R                  " [        U5      [         R                  S9  S S S 5        Sn[        R                  " [        US9   [         R                  " [        U5      US9  S S S 5        g S	n[        R                  " S
U S35      n[        R                  " [        US9   [        U5      R                  US9  S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f! , (       d  f       g = f)Nc                 "    U R                  5       $ rB   )cumsum)r{   s    r   <lambda>6TestSparseArrayAnalytics.test_cumsum.<locals>.<lambda>   s
    188:r   r   r
   z&the 'dtype' parameter is not supportedr.   rQ   z$the 'out' parameter is not supported)rT   r	   zaxis(=z) out of bounds)axis)r   r   r   r#   r$   r   r<   r=   r>   r1   reescape)r%   rS   r   r   r   rT   r6   r   s           r   test_cumsum$TestSparseArrayAnalytics.test_cumsum   s8    $)=[&'
  /["&&9:
  /[!45
  /:Cz5		+d+288< 6 9Cz5		+d+5 65 D))fTF/:;Cz5D!((d(3 65 65 65
 65s$   >-FF+F/
F
F,/
F=c           	         [        S[        R                  S[        R                  S/5      n[        S[        R                  S[        R                  S/5      n[        R                  " [        U5      U5        [        R                  " [        R
                  " U5      U5        [        / SQSS9n[        / SQUR                  SS9n[        R                  " [        U5      U5        [        R                  " [        R
                  " U5      U5        [        / SQSS9n[        / S	QSS9n[        R                  " [        U5      U5        [        R                  " [        R
                  " U5      U5        [        S[        R                  S[        R                  S/5      n[        [        R                  " S[        R                  S[        R                  S/5      5      n[        R                  " [        R                  " U5      U5        [        / SQSS9n[        [        R                  " / SQ5      [        R                  " S5      S9n[        R                  " [        R                  " U5      U5        [        / S
QSS9n[        [        R                  " / S
Q5      [        R                  " S5      S9n[        R                  " [        R                  " U5      U5        g )Nr	   r
   r	   rv   r
   r   r   )r	   r
   r
   )sparse_indexr   rv   )r	   r	   r
   r
   r	   rv   r   r   r   )r   r   r   r#   r$   absrE   sin)r%   r&   r   r(   s       r   
test_ufunc#TestSparseArrayAnalytics.test_ufunc  s   aBFFB78aBFFA67
  Vf5
  8^:YV__QRS
  Vf5
  8^;,15
  Vc2
  5aBFFB78RVVQ2662$>?@
  8^:RVVN3q	J
  8^:RVVN3q	J
  8r   c                    [        S[        R                  S[        R                  S/5      n[        S[        R                  S[        R                  S/5      n[        R                  " [        R
                  " US5      U5        [        / SQSS9n[        / SQSS9n[        R                  " [        R
                  " US5      U5        [        / S	QS
S9n[        / SQSS9n[        R                  " [        R
                  " US5      U5        g )Nr	   r
   r   r   rv   r   r   )r
   r   r   rv   r   r   )r
   r   r	   rv   )r   r   r   r#   r$   add)r%   r&   r   s      r   test_ufunc_args(TestSparseArrayAnalytics.test_ufunc_args,  s    aBFFB78aBFFB78
  !2F;^:]q9
  !2F;^:]q9
  !2F;r   r   rw   c                 *   [        U/S-  SS/-   US9n[        R                  " U5      u  p4[        R                  " [        R                  " U5      5      u  pV[        R
                  " U[        XQS95        [        R
                  " U[        XaS95        g )N
   g?g@r   )r   r   modfasarrayr#   r$   )r%   r   r&   r1r2e1e2s          r   	test_modf"TestSparseArrayAnalytics.test_modf:  sr     j\B.#s;
SF+,
  [%KL
  [%KLr   c                 D    [        / SQSS9nUR                  nUS:X  d   eg )N)r	   r   r   r   r
   integerkind   r   nbytesr%   r   r   s      r   test_nbytes_integer,TestSparseArrayAnalytics.test_nbytes_integerC  s#    /	:||r   c                 D    [        / SQSS9nUR                  nUS:X  d   eg )N)r	   r
   r   r   r   blockr   r   r   r   s      r   test_nbytes_block*TestSparseArrayAnalytics.test_nbytes_blockI  s%    /8 ||r   c                 r    [        [        R                  " / SQ5      5      n[        R                  " U5        g )N)2012NN2013)r   rm   to_datetimer   r   )r%   r{   s     r   test_asarray_datetime640TestSparseArrayAnalytics.test_asarray_datetime64P  s!    'CDE


1r   c                 B    [        SS/5      nUR                  S:X  d   eg )Nr   r	   g      ?)r   densityr%   r   s     r   test_density%TestSparseArrayAnalytics.test_densityT  s"    1a&!{{c!!!r   c                 B    [        SS/5      nUR                  S:X  d   eg )Nr   r	   )r   npointsr   s     r   test_npoints%TestSparseArrayAnalytics.test_npointsX  s"    1a&!{{ar   r   N)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      s   [[ 6BHH%@AB
 !Q1-U;BHHc3T%BCD		
 [[WtUm44 5449:< [[\C=9M :M" r   r   c                     [        S[        R                  S/SS9n [        R                  U l        U R	                  5       n[        R
                  " U5      n[        R                  " / SQ5      n[        R                  " X5        g )Nr,   rw   r   )FTF)	r   r   r   r   r   r   r   r#   rZ   r   r   r   s      r   *test_setting_fill_value_fillna_still_worksr   ]  s^     sBFFC(S
9CVVCNXXZF ZZFxx,-H1r   c                  N   [        S[        R                  /SS9n [        R                  U l        [         R                  " [        R
                  " [        R                  /5      [        SS/5      [        [        [        R                  5      S9n[        R                  " X5        g )Nrw   r   r   r
   r	   )sparse_arrayr   r!   )r   r   r   r   _simple_newr   r   r   r   r#   r$   )r   r   s     r   test_setting_fill_value_updatesr   k  so    
sBFFm
2CVVCN &&XXrvvh'a!%%(H
 S+r   zarr,fill_value,loc)Nr	   r
   )r   Nr
   r	   )r   r	   Nr
   )r   r	   r	   NNr   )r	   r	   r	   r
   rv   )Nr	   r   r   Nr
   r   )Nr   r   r	   r
   r	   c                 @    [        XS9R                  5       nX2:X  d   eg rY   )r   _first_fill_value_loc)r   r   locr   s       r   test_first_fill_value_locr   x  s!    $ 4JJLF==r   r   r   c                     [        XS9R                  5       n[        R                  " U 5      R                  5       n[	        U[         5      (       d   e[
        R                  " U5      n[        R                  " X#5        g rY   )	r   uniquerm   rn   
isinstancer   r   r#   rZ   )r   r   abs       r   test_unique_na_fillr     s[     	C/668A
		#Aa%%%%


1A%r   c                      [        SS/5      n U R                  5       n[        S/5      n[        R                  " X5        g )Nr   )r   r   r#   r$   r   s      r   test_unique_all_sparser     s5    
q!f
CZZ\FA3HV.r   c                     [        / SQ5      n [        / SQSS9nU R                  SSSS.5      n[        R                  " X!5        U R                  [        R
                  " SSSS.5      5      n[        R                  " X!5        U R                  [        R
                  " SSSS.5      5      n[        / SQSS9n[        R                  " X!5        g )Nr   r	   r
   )r         r   r   r   r   )r   mapr#   r$   rm   rn   r   r   r   s      r   test_mapr     s    
i
 C<B7H WWr*+FV. WWRYY2"456FV. WWRYY2"456F<B7HV.r   c                      [        / SQ5      n [        / SQSS9nU R                  SSS.5      n[        R                  " X!5        g )Nr   )r   r   Nr   r   r   )r   r	   )r   r   r#   r$   r   s      r   test_map_missingr     s8    
i
 C>b9HWW^$FV.r   c                 t   [        [        R                  S/U S9n[        S/U S9n[        R                  " UR                  5       U5        [        R                  " SS/US.5      n[        R                  " S/US.[        R                  " S/5      S9n[        R                  " UR                  5       U5        g )Nr	   r   r,   r   )r   r   index)
r   r   r   r#   r$   dropnarm   	DataFrameIndexassert_equal)r   r   r(   dfexpected_dfs        r   test_dropnar     s     rvvqkj
9C
se

3CSZZ\3/	QF-	.B,,aSs3288QC=IKOOBIIK-r   c                  @   [         R                  " [        R                  " S5      5      R	                  S 5      n U R                  5       n[         R                  " [        S5       Vs0 s H  o"[        S/SS9_M     sn5      n[        R                  " X5        g s  snf )N)r   r   c                     [        U SS9$ )Nr   r   r   )xs    r   r   1test_drop_duplicates_fill_value.<locals>.<lambda>  s    ARS8Tr   r   rw   r   r   )
rm   r   r   zerosapplydrop_duplicatesranger   r#   assert_frame_equal)r   r   ir   s       r   test_drop_duplicates_fill_valuer    su    	bhhv&	'	-	-.T	UB!F||%PQ(S(QSEa @@(STH&+ Ts   (Bc                     [         R                  " [        / SQ5      / SQS.5      n [         R                  " [        / SQ5      / SQS.5      nU R                  U S   S:g     nUR                  US   S:g     n[        R
                  " X#5        [         R                  " [        SS/5      SS	/S.SS/S
9n[        R
                  " X#5        g )N)r   r   r   r:   )rN   rO   )r   r	   r   rO   r
   r   r	   r   r   )rm   r   r   r   r#   r  )df1df2r   r   s       r   test_zero_sparse_columnr
    s    
,,[3)D
EC
,,[3)D
ECWWSX]#Fwws3x1}%H&+||+q!f"5QFCAq6RH&+r   )"r   r   r   r<   pandas._libs.sparser   pandasrm   r   r   pandas._testing_testingr#   pandas.core.arrays.sparser   fixturer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r
  r   r   r   <module>r     s*   	   (   1 H H
 ! !
 E E
@6 @6Ft  t n2
, 	tQ	tQ	tQ	a(	tR 	T2	!4+	!1a(	!1a(	!1b)	1%	1%"#"
 		
Arvvrvv	
BFFArvv	
Arvv	Aq"&&!$	Aq!Q	 1~6& 7	&//$/ {3. 4.,	,r   