
    [6gA                     d   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                            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                            dddej        ej        gdej        dej        gddej        gej        dd d ej        dgej        d d dddgg          ej                            dej        d dg          d                         Zd Zd  Zd! Zej                            dej        dg          d"             Zd# Z d$ Z!dS )%    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     d/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/pandas/tests/arrays/sparse/test_array.pyarr_datar      s1     8RVRVQ1bfaBFAFG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55!DDDDr   c            
          e Zd Zej                            dddej        g          d             Zd Z	ej                            dg d ej
        dd	g          dg          d
             Zd Zd Ze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                            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                            dddg          d                         Zej                            dddg          d             Zd Zd Zd Zd  Zd! ZdS )"TestSparseArrayr   r   Nc           	      .   t          t          j        g d          d          }|                    d|          }t	          |          r|j        j        }t          t          j        |ddddg          d          }t          j        ||           d S )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$   s     RXooo663GGGll1l44
 	,+J"(J1a#;<<MM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            n# 1 swxY w Y   |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            n# 1 swxY w Y   t          j        |_        t          j        |j                  sJ d S )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BB~""""Q'SAAA 	! 	! CN	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!~$$$$x'''''---%rxPPP~%%%%'SAAA 	 	CN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 x'''''''s$   B  B$'B$/EE
Evalr	   r
   r   r	   r
   c                     t          g ddt          j                  }d}t          j        t
          |          5  ||_        d d d            d S # 1 swxY w Y   d S )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   s    ---%rxPPP+]:S111 	! 	! CN	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s   AAAc                 n    |                                 }|j        |j        usJ |j        |j        u sJ d S N)copy	sp_valuessp_index)r$   r   arr2s      r   	test_copyzTestSparseArray.test_copyQ   s?    xxzz~S]2222},,,,,,r   c                 T    t          j        |                                |           d S r>   )r"   assert_almost_equalto_dense)r$   r   r   s      r   test_values_asarrayz#TestSparseArray.test_values_asarrayV   s#    
s||~~x88888r   zdata,shape,dtype)r   r   r   r   r   )r   )r   )r	   AB)r   c                 B    t          ||          }|j        |k    sJ d S )Nr    )r   shape)r$   datarL   r    outs        r   
test_shapezTestSparseArray.test_shapeY   s/     $e,,,yE!!!!!!r   valsr   c                     t          j        |          }t          ||          }|                                }t	          j        ||           d S Nr   )r   r   r   rF   r"   assert_numpy_array_equal)r$   rP   r   r   r&   s        r   test_dense_reprzTestSparseArray.test_dense_reprg   sI     x~~$:666llnn
#C.....r   fixr   r   c                     |                     |          }t          j        |          }t          j        ||           d S r>   )getfixturevaluer"   round_trip_pickler#   )r$   rU   requestobj	unpickleds        r   test_picklezTestSparseArray.test_picklew   s>    %%c**(--	
 C00000r   c                     t          g d          }t          j        d           5  |D ]}	 d d d            d S # 1 swxY w Y   d S )Nr7   )r   r"   r0   )r$   sp_arr_s      r   test_generator_warningsz'TestSparseArray.test_generator_warnings}   s    YYY'''-- 	 	  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   :>>c                    t          t          j        dgd          }t          j        ddg          }|                    | d          }t          ddgd          }t          j        ||           t          j        |          }|	                    | d          }t          j
        |t          j        |                     d S )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    263-A666xu&&jj$""1c(q111
 c***inniiq!!
sBIcNN33333r   c                 ^	   t          dt          j        t          j        dt          j        g          }|                    d          }t          g ddt          j                  }t          j        ||           t          dt          j        t          j        dt          j        gd          }|                    d          }t          g ddt          j                  }t          j        ||           t          dt          j        dddg          }|                    d          }t          g ddt          j                  }t          j        ||           t          dt          j        dddgd          }|                    d          }t          g ddt          j                  }t          j        ||           t          t          j        t          j        t          j        t          j        g          }|                    d          }t          g d	dt          j                  }t          j        ||           t          t          j        t          j        t          j        t          j        gd          }|                    d          }t          g d	dt          j                  }t          j        ||           t          g d
          }|                    d          }t          g d
d          }t          j        ||           t          g d          }|j        t          t          j	                  k    sJ |j
        dk    sJ |                    d          }t          j        ||           t          g dd          }|j        t          t          j	                  k    sJ |j
        dk    s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 |                    d          }t          g dd          }t          j        ||           d S )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   s   BFBFArv677hhrll,,,2:NNN
 c***BFBFArv61EEEhhrll,,,"*MMM
 c***BFAq!,--hhrll***rLLL
 c***BFAq!,;;;hhrll***q
KKK
 c***899hhrll***rLLL
 c***8QGGGhhrll***q
KKK
 c*** ,,,--hhrll...2>>>
 c*** %%w+bh//////|q    hhrll
 a(((333w+bh//////|q    hhrll,,,1555
 c*** 888w+bh26BBBBBBBx%%%%%hhrll,,,2666
 c*****r   c                    t          dt          j        t          j        dt          j        g          }|                    d          }t          j        g dt          j                  }t          j        |                                |           t          dt          j        t          j        dt          j        gd          }|                    d          }t          g ddt          j                  }t          j	        ||           d S )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    BFBFArv677 hhqkkhbj999
#CLLNNC888BFBFArv61EEEhhqkk///arzJJ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                  }|                                \  }t          j        ||           t          g d          }|                                \  }t          j        ||           d S )	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T8IIIRX666JJLL	
#Hf555===>>JJLL	
#Hf5555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   #   sF       [\AtRV+<==+ + >=+( ( (6 [UYYY!Q0@0@)$LMM! ! NM!- - -
9 9 9 [__dD)tS$3$dF3		
 " " "
 [VRVRVRVRV426*1a 	
  [\D!955/ / 65 / [UUFO441 1 541
  4 4 4:+ :+ :+x+ + +	6 	6 	6 	6 	6r   r   c                      e Zd Ze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                            dddg          d                         Zd Zd Zej                            ddej
        g          d             Zd Zd Zd Zd Zd ZdS )TestSparseArrayAnalyticszdata,expected)r	   r
   r   r   r   rK   )r*         @g      @g      $@g      .@r	   r
   r   r   r*   r   g      @g      (@numpyTFc                    |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            n# 1 swxY w Y   d}t          j        t          |          5  t          j        t          |          |           d d d            d S # 1 swxY w Y   d S d	}t          j        d
| d          }t          j        t          |          5  t          |                              |           d d d            d S # 1 swxY w Y   d S )Nc                 *    |                                  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   s    $=)=)=f[&&''
 h///f["&999::
 h///f[!44455
 h/// 	4:Cz555 = =	+d++28<<<<= = = = = = = = = = = = = = = 9Cz555 6 6	+d++55556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 D):T:::;;Cz555 4 4D!!((d(3334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4s6   .D  DD($EE E$GGG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        |          |           d S )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  sH   aBFB788aBFA677
 Vf555
 888^^^:::YYYV_QRSSS
 Vf555
 888^^^;;;,,,1555
 Vc222
 555aBFB788RVQ262$>??@@
 888^^^:::RVNNN33q		JJJ
 888^^^:::RVNNN33q		JJJ
 8888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          |           d S )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BFB788aBFB788
 !2!2F;;;^^^:::]]]q999
 !2!2F;;;^^^:::]]]q999
 !2!2F;;;;;r   r   rl   c                 J   t          |gdz  ddgz   |          }t          j        |          \  }}t          j        t          j        |                    \  }}t	          j        |t          ||                     t	          j        |t          ||                     d S )N
   g?g@r   )r   r   modfasarrayr"   r#   )r$   r   r%   r1r2e1e2s          r   	test_modfz"TestSparseArrayAnalytics.test_modf:  s     j\B.#s;
SSSBF++,,B
 [
%K%K%KLLL
 [
%K%K%KLLLLLr   c                 J    t          g dd          }|j        }|dk    sJ d S )N)r	   r   r   r   r
   integerkind   r   nbytesr$   r   r{   s      r   test_nbytes_integerz,TestSparseArrayAnalytics.test_nbytes_integerC  s0    ///	:::||||||r   c                 J    t          g dd          }|j        }|dk    sJ d S )N)r	   r
   r   r   r   blockr   r   r   r   s      r   test_nbytes_blockz*TestSparseArrayAnalytics.test_nbytes_blockI  s2    ///888 ||||||r   c                 t    t          t          j        g d                    }t          j        |           d S )N)2012NN2013)r   rc   to_datetimer   r   )r$   rp   s     r   test_asarray_datetime64z0TestSparseArrayAnalytics.test_asarray_datetime64P  s1    'C'C'CDDEE

1r   c                 B    t          ddg          }|j        dk    sJ d S )Nr   r	   g      ?)r   densityr$   r   s     r   test_densityz%TestSparseArrayAnalytics.test_densityT  s,    1a&!!{c!!!!!!r   c                 B    t          ddg          }|j        dk    sJ d S )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66HBH%@%@%@AABB
 !Q1-U;;;HBHc3T%BCCDD		
  [WtUm444 4 54 449 9 9:< < < [\C=99M M :9M      " " "         r   r   c                  
   t          dt          j        dgd          } t          j        | _        |                                 }t          j        |          }t          j        g d          }t          j        ||           d S )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   ]  su     sBFC(S
9
9
9CVCNXXZZF ZFx,,,--H11111r   c                  L   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
        | |           d S )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  s    
sBFm
2
2
2CVCN &Xrvh''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                 \    t          | |                                          }||k    sJ d S rR   )r   _first_fill_value_loc)r   r   locr{   s       r   test_first_fill_value_locr   x  s3    $ 444JJLLFS======r   r   r   c                    t          | |                                          }t          j        |                                           }t	          |t                     sJ t          j        |          }t          j        ||           d S rR   )	r   uniquerc   rd   
isinstancer   r   r"   rS   )r   r   abs       r   test_unique_na_fillr     sw     	CJ///6688A
	#Aa%%%%%

1A1%%%%%r   c                      t          ddg          } |                                 }t          dg          }t          j        ||           d S )Nr   )r   r   r"   r#   r   s      r   test_unique_all_sparser     sH    
q!f

CZZ\\FA3HVX.....r   c                     t          g d          } t          g dd          }|                     dddd          }t          j        ||           |                     t	          j        dddd                    }t          j        ||           |                     t	          j        dddd                    }t          g dd          }t          j        ||           d S )Nr   r	   r
   )r         r   r   r   r   )r   mapr"   r#   rc   rd   r   rz   r{   s      r   test_mapr     s    
iii
 
 C<<<B777H WWr**++FVX... WWRY2"445566FVX... WWRY2"445566F<<<B777HVX.....r   c                      t          g d          } t          g dd          }|                     ddd          }t          j        ||           d S )Nr   )r   r   Nr   r   r   )r   r	   )r   r   r"   r#   r   s      r   test_map_missingr     sY    
iii
 
 C>>>b999HWW^^$$FVX.....r   c                    t          t          j        dg|           }t          dg|           }t          j        |                                |           t          j        ddg|d          }t          j        dg|dt          j        dg                    }t          j	        |                                |           d S )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     rvqkj
9
9
9C
se

3
3
3CSZZ\\3///	QF--	.	.B,aSs3328QC==IIIKOBIIKK-----r   c                  "   t          j        t          j        d                                        d           } |                                 }t          j        d t          d          D                       }t          j        ||           d S )N)r   r   c                 $    t          | d          S )Nr   r   r   )xs    r   r   z1test_drop_duplicates_fill_value.<locals>.<lambda>  s    ARS8T8T8T r   c                 4    i | ]}|t          d gd          S )rl   r   r   r   ).0is     r   
<dictcomp>z3test_drop_duplicates_fill_value.<locals>.<dictcomp>  s)    SSSQQSEa @ @ @SSSr   r   )	rc   r   r   zerosapplydrop_duplicatesranger"   assert_frame_equal)r   r{   rz   s      r   test_drop_duplicates_fill_valuer     s|    	bhv&&	'	'	-	-.T.T	U	UB!!F|SS%PQ((SSSTTH&(+++++r   c                     t          j        t          g d          g dd          } t          j        t          g d          g dd          }| j        | d         dk             }|j        |d         dk             }t	          j        ||           t          j        t          ddg          dd	gdddg
          }t	          j        ||           d S )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3)))DD
E
EC
,[33)))DD
E
ECWSX]#Fws3x1}%H&(+++|+q!f"5"5QFCCAq6RR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 1 1 1 1 1 H H H
 ! ! !
 E E E
@6 @6 @6 @6 @6 @6 @6 @6Ft  t  t  t  t  t  t  t n2 2 2
, 
, 
, 	tQ	tQ	tQ			a(	tR 	T2	!	!	!4+	!	!	!1a(	!	!	!1a(	!	!	!1b)			1%			1% " # "
 		
Arvrv	
BFArv	
Arv	Aq"&!$	Aq!Q	 	 1~66& & 76	 	&/ / // / /$/ / / {33. . 43., , ,	, 	, 	, 	, 	,r   