
    JEfA                        d dl Z d dlZd dlZd dlmZ d dlZd dlmZm	Z	 d dl
mZ d dlmZ ej                  d        Zej                  d        Zej                  d        Z G d d	      Z G d
 d      Zd Zd Zej.                  j1                  dg ddd fg dddfg dddfg dddfg dddfg ddfg ddd fg dddfg dddfg dddfg dd dfg dddfg      d        Zej.                  j1                  dddej4                  ej4                  gdej4                  dej4                  gddej4                  gej4                  dd d ej4                  dgej4                  d d dddgg      ej.                  j1                  dej4                  d dg      d               Zd Zd  Zd! Zej.                  j1                  dej4                  dg      d"        Zd# Z d$ Z!y)%    N)IntIndex)SparseDtypeisnaSparseArrayc                      t        j                  t         j                  t         j                  dddt         j                  ddt         j                  dg
      S )z<Fixture returning numpy array with valid and missing entries                  )nparraynan     ^/var/www/VTS_Report/venv/lib/python3.12/site-packages/pandas/tests/arrays/sparse/test_array.pyarr_datar      s8     88RVVRVVQ1bffaBFFAFGGr   c                     t        |       S )z-Fixture returning SparseArray from 'arr_data'r   )r   s    r   arrr      s     x  r   c                       t        g dd      S )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            
       8   e Zd Zej                  j                  dddej                  g      d        Zd Z	ej                  j                  dg d ej                  dd	g      dg      d
        Zd Zd Zej                  j                  dg dddfg ddfdgddfddej                  dgdefg      d        Zej                  j                  dej                  ej                  ej                  ej                  ej                  gdej                  ej                  dej                  gdej                  dddgg      ej                  j                  dddg      d               Zej                  j                  dddg      d        Zd Zd Zd Zd  Zd! Zy)"TestSparseArrayr   r   Nc           	      &   t        t        j                  g d      d      }|j                  d|      }t	        |      r|j
                  j                  }t        t        j                  |ddddg      d      }t        j                  ||       y )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_valuez%TestSparseArray.test_shift_fill_value$   sr     RXXo63Gll1l4
++J"((J1a#;<M
  c*r   c                 <   t        dt        j                  dgt        j                        }d|_        |j                  dk(  sJ t        g ddt        j                        }d|_        |j                  dk(  sJ d}t        j                  t        |	      5  d
|_        d d d        |j                  d
k(  sJ t        j                  |_        t        j                  |j                        sJ t        g ddt        j                        }d|_        |j                  du sJ t        j                  t        |	      5  d|_        d d d        t        j                  |_        t        j                  |j                        sJ y # 1 sw Y   xY w# 1 sw Y   LxY w)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_valuez#TestSparseArray.test_set_fill_value.   s@   3,@~~""")B~~"""Q''SA 	! CN	!~~$$$xx'''-%rxxP~~%%%''SA 	CN	 xx'''	! 	!	 	s   F?FFFvalr	   r
   r   r	   r
   c                     t        g ddt        j                        }d}t        j                  t
        |      5  ||_        d d d        y # 1 sw Y   y xY w)Nr.   Fr+   zfill_value must be a scalarr,   )r   r   r3   pytestraises
ValueErrorr   )r$   r6   r   r4   s       r    test_set_fill_invalid_non_scalarz0TestSparseArray.test_set_fill_invalid_non_scalarI   sD    -%rxxP+]]:S1 	! CN	! 	! 	!s   AAc                     |j                         }|j                  |j                  usJ |j                  |j                  u sJ y N)copy	sp_valuessp_index)r$   r   arr2s      r   	test_copyzTestSparseArray.test_copyQ   s9    xxz~~S]]222}},,,r   c                 L    t        j                  |j                         |       y r>   )r"   assert_almost_equalto_dense)r$   r   r   s      r   test_values_asarrayz#TestSparseArray.test_values_asarrayV   s    
s||~x8r   zdata,shape,dtype)r   r   r   r   r   )r   )r   )r	   AB)r   c                 @    t        ||      }|j                  |k(  sJ y )Nr    )r   shape)r$   datarL   r    outs        r   
test_shapezTestSparseArray.test_shapeY   s"     $e,yyE!!!r   valsr   c                     t        j                  |      }t        ||      }|j                         }t	        j
                  ||       y Nr   )r   r   r   rF   r"   assert_numpy_array_equal)r$   rP   r   r   r&   s        r   test_dense_reprzTestSparseArray.test_dense_reprg   s8     xx~$:6lln
##C.r   fixr   r   c                 |    |j                  |      }t        j                  |      }t        j                  ||       y r>   )getfixturevaluer"   round_trip_pickler#   )r$   rU   requestobj	unpickleds        r   test_picklezTestSparseArray.test_picklew   s2    %%c*((-	
  C0r   c                     t        g d      }t        j                  d       5  |D ]  } 	 d d d        y # 1 sw Y   y xY w)Nr7   )r   r"   r0   )r$   sp_arr_s      r   test_generator_warningsz'TestSparseArray.test_generator_warnings}   sA    Y'''- 	 	 	 	s   5>c                 ~   t        t        j                  dgd      }t        j                  ddg      }|j	                  | d      }t        ddgd      }t        j                  ||       t        j                  |      }|j                  | d      }t        j                  |t        j                  |             y )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_valuez,TestSparseArray.test_where_retain_fill_value   s    2663-A6xxu&jj$"1c(q1
  c*iiniiq!
sBIIcN3r   c                 |	   t        dt        j                  t        j                  dt        j                  g      }|j                  d      }t        g ddt        j                        }t        j                  ||       t        dt        j                  t        j                  dt        j                  gd      }|j                  d      }t        g ddt        j                        }t        j                  ||       t        dt        j                  dddg      }|j                  d      }t        g ddt        j                        }t        j                  ||       t        dt        j                  dddgd      }|j                  d      }t        g ddt        j                        }t        j                  ||       t        t        j                  t        j                  t        j                  t        j                  g      }|j                  d      }t        g d	dt        j                        }t        j                  ||       t        t        j                  t        j                  t        j                  t        j                  gd      }|j                  d      }t        g d	dt        j                        }t        j                  ||       t        g d
      }|j                  d      }t        g d
d      }t        j                  ||       t        g d      }|j                  t        t        j                        k(  sJ |j                  dk(  sJ |j                  d      }t        j                  ||       t        g dd      }|j                  t        t        j                        k(  sJ |j                  dk(  sJ |j                  d      }t        g dd      }t        j                  ||       t        g dt        j                        }|j                  t        t        j                  t        j                        k(  sJ t        j                  |j                        sJ |j                  d      }t        g dd      }t        j                  ||       y )Nr	   r   )r	   rk   rk   r   rk   r+   r   r   )r	   rk   r   r   r   )rk   rk   rk   rk   )        rl   rl   rl   )r   r   r   r   )r   r   r   fillnafloat64r"   r#   r    r   r/   r   r2   r$   sr&   r'   s       r   test_fillnazTestSparseArray.test_fillna   sC   BFFBFFArvv67hhrl,2::N
  c*BFFBFFArvv61Ehhrl,"**M
  c*BFFAq!,-hhrl*rL
  c*BFFAq!,;hhrl*q

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

K
  c* ,-hhrl.2>
  c* %ww+bhh////||q   hhrl
  a(3ww+bhh////||q   hhrl,15
  c* 8ww+bhh266BBBBxx%%%hhrl,26
  c*r   c                 2   t        dt        j                  t        j                  dt        j                  g      }|j                  d      }t        j                  g dt        j
                        }t        j                  |j                         |       t        dt        j                  t        j                  dt        j                  gd      }|j                  d      }t        g ddt        j
                        }t        j                  ||       y )Nr	   r   )r	   r   r   r   r   rK   r   r   r+   )
r   r   r   rm   r   rn   r"   rS   rF   r#   ro   s       r   test_fillna_overlapz#TestSparseArray.test_fillna_overlap   s    BFFBFFArvv67 hhqkhhbjj9
##CLLNC8BFFBFFArvv61Ehhqk/arzzJ
  c*r   c                 ^   t        t        d      t        d      ddddddddddg      }t        j                  g dt        j                        }|j                         \  }t        j                  ||       t        g d      }|j                         \  }t        j                  ||       y )	Nr   r	   r   r
   r   )r
   r   	   rK   )r   r   r	   r   r   r
   r   r   r   r   r   r   )r   floatr   r   int32nonzeror"   rS   )r$   saexpectedresults       r   test_nonzerozTestSparseArray.test_nonzero   s    %,eaAq!Q1aQRST88IRXX6JJL	
##Hf5=>JJL	
##Hf5r   )__name__
__module____qualname__r9   markparametrizer   r   r(   r5   r   r<   rC   rG   objectrO   rT   r\   r`   ri   rq   rs   r|   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                      e Zd Zej                  j                  d ej                  g de       e	 ej                  g d            f ej                  ddej                  ddge       e	 ej                  d	d
ej                  ddg            fg      ej                  j                  dddg      d               Zd Zd Zej                  j                  ddej                  g      d        Zd Zd Zd Zd Zd Zy)TestSparseArrayAnalyticszdata,expected)r	   r
   r   r   r   rK   )r*         @g      @g      $@g      .@r	   r
   r   r   r*   r   g      @g      (@numpyTFc                 r   |rt         j                  nd } |t        |            }t        j                  ||        |t        |t         j
                              }t        j                  ||        |t        |d            }t        j                  ||       |rd}t        j                  t        |      5  t        j                  t        |      t         j                         d d d        d}t        j                  t        |      5  t        j                  t        |      |       d d d        y d	}t        j                  d
| d      }t        j                  t        |      5  t        |      j                  |       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w# 1 sw Y   y xY w)Nc                 "    | j                         S r>   )cumsum)rp   s    r   <lambda>z6TestSparseArrayAnalytics.test_cumsum.<locals>.<lambda>   s    188: r   r   r
   z&the 'dtype' parameter is not supportedr,   rK   z$the 'out' parameter is not supported)rN   r	   zaxis(=z) out of bounds)axis)r   r   r   r"   r#   r   r9   r:   r;   r/   reescape)r$   rM   rz   r   r   rN   r4   r   s           r   test_cumsumz$TestSparseArrayAnalytics.test_cumsum   sW    $)=[&'
  h/["&&9:
  h/[!45
  h/:Cz5 =		+d+288<= 9Cz5 6		+d+56 6 D))fTF/:;Cz5 4D!((d(34 4= =6 6
4 4s$   </F!F!0F-F!F*-F6c           	         t        dt        j                  dt        j                  dg      }t        dt        j                  dt        j                  dg      }t        j                  t        |      |       t        j                  t        j
                  |      |       t        g dd      }t        g d|j                  d      }t        j                  t        |      |       t        j                  t        j
                  |      |       t        g dd      }t        g d	d      }t        j                  t        |      |       t        j                  t        j
                  |      |       t        dt        j                  dt        j                  dg      }t        t        j                  dt        j                  dt        j                  dg            }t        j                  t        j                  |      |       t        g dd      }t        t        j                  g d      t        j                  d            }t        j                  t        j                  |      |       t        g d
d      }t        t        j                  g d
      t        j                  d            }t        j                  t        j                  |      |       y )Nr	   r
   r	   rk   r
   r   r   )r	   r
   r
   )sparse_indexr   rk   )r	   r	   r
   r
   r	   rk   r   r   r   )r   r   r   r"   r#   absrA   sin)r$   r%   r{   r'   s       r   
test_ufuncz#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                 (   t        dt        j                  dt        j                  dg      }t        dt        j                  dt        j                  dg      }t        j                  t        j
                  |d      |       t        g dd      }t        g dd      }t        j                  t        j
                  |d      |       t        g d	d
      }t        g dd      }t        j                  t        j
                  |d      |       y )Nr	   r
   r   r   rk   r   r   )r
   r   r   rk   r   r   )r
   r   r	   rk   )r   r   r   r"   r#   add)r$   r%   r{   s      r   test_ufunc_argsz(TestSparseArrayAnalytics.test_ufunc_args,  s    aBFFB78aBFFB78
  !2F;^:]q9
  !2F;^:]q9
  !2F;r   r   rl   c                 :   t        |gdz  ddgz   |      }t        j                  |      \  }}t        j                  t        j                  |            \  }}t	        j
                  |t        ||             t	        j
                  |t        ||             y )N
   g?g@r   )r   r   modfasarrayr"   r#   )r$   r   r%   r1r2e1e2s          r   	test_modfz"TestSparseArrayAnalytics.test_modf:  sz     j\B.#s;
SBF+,B
  [
%KL
  [
%KLr   c                 H    t        g dd      }|j                  }|dk(  sJ y )N)r	   r   r   r   r
   integerkind   r   nbytesr$   r   r{   s      r   test_nbytes_integerz,TestSparseArrayAnalytics.test_nbytes_integerC  s#    /	:||r   c                 H    t        g dd      }|j                  }|dk(  sJ y )N)r	   r
   r   r   r   blockr   r   r   r   s      r   test_nbytes_blockz*TestSparseArrayAnalytics.test_nbytes_blockI  s%    /8 ||r   c                 n    t        t        j                  g d            }t        j                  |       y )N)2012NN2013)r   rc   to_datetimer   r   )r$   rp   s     r   test_asarray_datetime64z0TestSparseArrayAnalytics.test_asarray_datetime64P  s!    'CDE


1r   c                 @    t        ddg      }|j                  dk(  sJ y )Nr   r	   g      ?)r   densityr$   r   s     r   test_densityz%TestSparseArrayAnalytics.test_densityT  s"    1a&!{{c!!!r   c                 @    t        ddg      }|j                  dk(  sJ y )Nr   r	   )r   npointsr   s     r   test_npointsz%TestSparseArrayAnalytics.test_npointsX  s"    1a&!{{ar   N)r}   r~   r   r9   r   r   r   r   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s   [[ 6HBHH%@AB
 !Q1-U;HBHHc3T%BCD		
 [[WtUm44 5449:< [[\C=9M :M" r   r   c                     t        dt        j                  dgd      } t        j                  | _        | j	                         }t        j
                  |      }t        j                  g d      }t        j                  ||       y )Nr*   rl   r   )FTF)	r   r   r   r   r   r   r   r"   rS   r   r{   rz   s      r   *test_setting_fill_value_fillna_still_worksr   ]  s`     sBFFC(S
9CVVCNXXZF ZZFxx,-H1r   c                  V   t        dt        j                  gd      } t        j                  | _        t        j                  t        j
                  t        j                  g      t        ddg      t        t        t        j                              }t        j                  | |       y )Nrl   r   r   r
   r	   )sparse_arrayr   r    )r   r   r   r   _simple_newr   r   r   rv   r"   r#   )r   rz   s     r   test_setting_fill_value_updatesr   k  sq    
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
   rk   )Nr	   r   r   Nr
   r   )Nr   r   r	   r
   r	   c                 H    t        | |      j                         }||k(  sJ y rR   )r   _first_fill_value_loc)r   r   locr{   s       r   test_first_fill_value_locr   x  s%    $ 4JJLFS==r   r   r   c                     t        | |      j                         }t        j                  |       j                         }t	        |t               sJ t        j                  |      }t        j                  ||       y rR   )	r   uniquerc   rd   
isinstancer   r   r"   rS   )r   r   abs       r   test_unique_na_fillr     s\     	CJ/668A
		#Aa%%%


1A1%r   c                      t        ddg      } | j                         }t        dg      }t        j                  ||       y )Nr   )r   r   r"   r#   r   s      r   test_unique_all_sparser     s7    
q!f
CZZ\FA3HVX.r   c                     t        g d      } t        g dd      }| j                  dddd      }t        j                  ||       | j                  t	        j
                  dddd            }t        j                  ||       | j                  t	        j
                  dddd            }t        g dd      }t        j                  ||       y )Nr   r	   r
   )r         r   r   r   r   )r   mapr"   r#   rc   rd   r   rz   r{   s      r   test_mapr     s    
i
 C<B7H WWr*+FVX. WWRYY2"456FVX. WWRYY2"456F<B7HVX.r   c                      t        g d      } t        g dd      }| j                  ddd      }t        j                  ||       y )Nr   )r   r   Nr   r   r   )r   r	   )r   r   r"   r#   r   s      r   test_map_missingr     s:    
i
 C>b9HWW^$FVX.r   c                 |   t        t        j                  dg|       }t        dg|       }t        j                  |j                         |       t        j                  ddg|d      }t        j                  dg|dt        j                  dg            }t        j                  |j                         |       y )Nr	   r   r*   r   )r   r   index)
r   r   r   r"   r#   dropnarc   	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            
      <   t        j                  t        j                  d            j	                  d       } | j                         }t        j                  t        d      D ci c]  }|t        dgd       c}      }t        j                  ||       y c c}w )N)r   r   c                     t        | d      S )Nr   r   r   )xs    r   r   z1test_drop_duplicates_fill_value.<locals>.<lambda>  s    ARS8T r   r   rl   r   r   )
rc   r   r   zerosapplydrop_duplicatesranger   r"   assert_frame_equal)r   r{   irz   s       r   test_drop_duplicates_fill_valuer     su    	bhhv&	'	-	-.T	UB!F||%PQ(SQQSEa @@STH&(+ Ts   %Bc                     t        j                  t        g d      g dd      } t        j                  t        g d      g dd      }| j                  | d   dk7     }|j                  |d   dk7     }t	        j
                  ||       t        j                  t        ddg      dd	gdddg
      }t	        j
                  ||       y )N)r   r   r   r7   )rH   rI   )r   r	   r   rI   r
   r   r	   r   r   )rc   r   r   r   r"   r   )df1df2r{   rz   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   r9   pandas._libs.sparser   pandasrc   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   