
    Oh	F                        d dl Z d dlZd dlZd dlm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j2                  j5                  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j2                  j5                  dddej8                  ej8                  gdej8                  dej8                  gddej8                  gej8                  dd d ej8                  dgej8                  d d dddgg      ej2                  j5                  dej8                  d dg      d               Zd  Zd! Zd" Z ej2                  j5                  dej8                  dg      d#        Z!d$ Z"d% Z#d& Z$y)'    N)IntIndex)np_version_gt2)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     m/var/www/html/diagnosisapp-backend/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   r4   pytestraises
ValueErrorr   )r%   r7   r   r5   s       r    test_set_fill_invalid_non_scalarz0TestSparseArray.test_set_fill_invalid_non_scalarJ   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_copyR   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_asarrayW   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%   datarM   r!   outs        r   
test_shapezTestSparseArray.test_shapeZ   s"     $e,yyE!!!r   valsr   c                     t        j                  |      }t        ||      }|j                         }t	        j
                  ||       y Nr   )r   r   r   rG   r#   assert_numpy_array_equal)r%   rQ   r   r   r'   s        r   test_dense_reprzTestSparseArray.test_dense_reprh   s8     xx~$:6lln
##C.r   fixr   r   c                 |    |j                  |      }t        j                  |      }t        j                  ||       y r?   )getfixturevaluer#   round_trip_pickler$   )r%   rV   requestobj	unpickleds        r   test_picklezTestSparseArray.test_picklex   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)Nr8   )r   r#   r1   )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
   rl   rl   r   rl   r,   r   r   )r
   rl   r   r   r   )rl   rl   rl   rl   )        rm   rm   rm   )r   r   r   r   )r   r   r   fillnafloat64r#   r$   r!   r   r0   r   r3   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   rL   r   r   r,   )
r   r   r   rn   r   ro   r#   rT   rG   r$   rp   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   	   rL   )r   r   r
   r   r   r   r   r   r   r   r   r   )r   floatr   r   int32nonzeror#   rT   )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__r:   markparametrizer   r   r)   r6   r   r=   rD   rH   objectrP   rU   r]   ra   rj   rr   rt   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   rL   )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)rq   s    r   <lambda>z6TestSparseArrayAnalytics.test_cumsum.<locals>.<lambda>   s    188: r   r   r   z&the 'dtype' parameter is not supportedr-   rL   z$the 'out' parameter is not supported)rO   r
   zaxis(=z) out of bounds)axis)r   r   r   r#   r$   r   r:   r;   r<   r0   reescape)r%   rN   r{   r   r   rO   r5   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
   rl   r   r   r   )r
   r   r   )sparse_indexr   rl   )r
   r
   r   r   r
   rl   r   r   r   )r   r   r   r#   r$   absrB   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   rl   r   r   )r   r   r   rl   r   r   )r   r   r
   rl   )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   rm   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_integerD  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_blockJ  s%    /8 ||r   c                 n    t        t        j                  g d            }t        j                  |       y )N)2012NN2013)r   rd   to_datetimer   r   )r%   rq   s     r   test_asarray_datetime64z0TestSparseArrayAnalytics.test_asarray_datetime64Q  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_densityU  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_npointsY  s"    1a&!{{ar   N)r~   r   r   r:   r   r   r   r   rw   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+   rm   r   )FTF)	r   r   r   r   r   r   r   r#   rT   r   r|   r{   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 )Nrm   r   r   r   r
   )sparse_arrayr   r!   )r   r   r   r   _simple_newr   r   r   rw   r#   r$   )r   r{   s     r   test_setting_fill_value_updatesr   l  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   rl   )Nr
   r   r   Nr   r   )Nr   r   r
   r   r
   c                 H    t        | |      j                         }||k(  sJ y rS   )r   _first_fill_value_loc)r   r   locr|   s       r   test_first_fill_value_locr   y  s%    $ 4JJLFS==r   r   r   c                     t        | |      j                         }t        j                  |       j                         }t	        |t               sJ t        j                  |      }t        j                  ||       y rS   )	r   uniquerd   re   
isinstancer   r   r#   rT   )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$   rd   re   r   r{   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$   dropnard   	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   rm   r   r   )
rd   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(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   r8   )rI   rJ   )r   r
   r   rJ   r   r   r
   r   r   )rd   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   c                    t        j                  |      }t        j                  ||        t        j                  |      }t        j                  |      }t        j                  ||      rJ t        j
                  |d      }t        j
                  |d      }t        j                  ||      rJ t        sy d}t        j                  t        |      5  t        j
                  |d       d d d        t        t        j
                  g d            }t        j
                  |d      }t        j
                  |d      }t        j                  ||      sJ y # 1 sw Y   pxY w)NT)r@   zGStarting with NumPy 2.0, the behavior of the 'copy' keyword has changedr-   Fr8   )
r   r   r#   rT   may_share_memoryr   r   r1   r2   r   )	r   r   r|   result_copy1result_copy2r5   rC   result_nocopy1result_nocopy2s	            r   test_array_interfacer     s   ZZ_F1 ::c?L::c?L""<>>> 88Cd+L88Cd+L""<>>>
SC		#	#M	= "
5!" rxx	*+DXXd/NXXd/N~~>>>" "s   EE()%r   r   r   r:   pandas._libs.sparser   pandas.compat.numpyr   pandasrd   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   r   <module>r      s2   	   ( .   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   