
    dB                     ^   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 d dl	m
Z d dlmZ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S )$    N)IntIndex)isna)SparseArraySparseDtypec                      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     a/var/www/html/t/fyr/venv311/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|_        |j        dk    sJ t          j        |_        t          j        |j                  sJ t          g d	d
t          j                  }d|_        |j        sJ t          j        |_        t          j        |j                  sJ d S )N      ?g       @r   r	   )r   r   r	   r   r   r    g@TFTFT)r   r   r   r   int64isnanbool_r$   r   s     r   test_set_fill_valuez#TestSparseArray.test_set_fill_value.   s   3,@@@~"""")))BBB~"""" ~$$$$ x'''''---%rxPPP~ x'''''''r   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 scalarmatch)r   r   r/   pytestraises
ValueErrorr   )r$   r2   r   msgs       r    test_set_fill_invalid_non_scalarz0TestSparseArray.test_set_fill_invalid_non_scalarU   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_copy]   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_asarrayb   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$   datarK   r    outs        r   
test_shapezTestSparseArray.test_shapee   s/     $e,,,yE!!!!!!r   valsr
   c                     t          j        |          }t          ||          }|                                }t	          j        ||           d S Nr   )r   r   r   rE   r"   assert_numpy_array_equal)r$   rO   r   r   r&   s        r   test_dense_reprzTestSparseArray.test_dense_reprs   sI     x~~$:666llnn
#C.....r   fixr   r   c                     |                     |          }t          j        |          }t          j        ||           d S r=   )getfixturevaluer"   round_trip_pickler#   )r$   rT   requestobj	unpickleds        r   test_picklezTestSparseArray.test_pickle   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 )Nr3   )r   r"   assert_produces_warning)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   r.   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
   rJ   r   r   r+   )
r   r   r   rm   r   rn   r"   rR   rE   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   	   rJ   )r   r   r   r   r   r	   r   r   r   r
   r   r   )r   floatr   r   int32nonzeror"   rR   )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__r7   markparametrizer   r   r(   r1   r   r;   rB   rF   objectrN   rS   r[   r`   ri   rq   rs   r|   r   r   r   r   r   #   sG       [\AtRV+<==+ + >=+%( %( %(N [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   rJ   )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 supportedr5   rJ   z$the 'out' parameter is not supported)rM   r   zaxis(=z) out of bounds)axis)r   r   r   r"   r#   r   r7   r8   r9   r-   reescape)r$   rL   rz   r   r   rM   r:   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#   absr@   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_args8  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_modfF  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_integerO  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_blockU  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_datetime64\  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   densityr0   s     r   test_densityz%TestSparseArrayAnalytics.test_density`  s,    1a&!!{c!!!!!!r   c                 B    t          ddg          }|j        dk    sJ d S )Nr   r   )r   npointsr0   s     r   test_npointsz%TestSparseArrayAnalytics.test_npointsd  s,    1a&!!{ar   N)r}   r~   r   r7   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"   rR   r   r{   rz   s      r   *test_setting_fill_value_fillna_still_worksr   i  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   w  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 rQ   )r   _first_fill_value_loc)r   r   locr{   s       r   test_first_fill_value_locr     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 rQ   )	r   uniquerc   rd   
isinstancer   r   r"   rR   )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   )!r   r   r   r7   pandas._libs.sparser   pandasrc   r   pandas._testing_testingr"   pandas.core.arrays.sparser   r   fixturer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>r      s}   				      ( ( ( ( ( (                        H H H
 ! ! !
 E E E
L6 L6 L6 L6 L6 L6 L6 L6^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   