
    4iH                        S r SSKrSSKrSSKrSSKJr  SSKJr	  SSK
Jr  SSKJr  S\4S jr\R                   S 5       r\R                   " S\R$                  /S	9S
 5       r\R                   S 5       r\R                   " S\R$                  /S	9S 5       r\R                   " S\R$                  /S	9S 5       r\R                   " S\R$                  /S	9S 5       r\R                   " S\R$                  /S	9S 5       r\R                   S 5       r\R                   " S\R$                  /S	9S 5       r\R                   " S\R$                  /S	9S 5       r " S S\R8                  5      rS rg)aj  
This file contains a minimal set of tests for compliance with the extension
array interface test suite, and should contain no other tests.
The test suite for the full functionality of the array is located in
`pandas/tests/arrays/`.

The tests in this file are inherited from the BaseExtensionTests, and only
minimal tweaks should be applied to get the tests passing (by overwriting a
parent method).

Additional tests should either be added to one of the BaseExtensionTests
classes (if they are relevant for the extension interface for all dtypes), or
be added to the array-specific tests in `pandas/tests/arrays/`.

    NSparseDtype)SparseArray)basenc                    [         R                  R                  S5      n[         R                  " U 5      (       a  UR	                  US9nO/UR                  SSU[        S9nUS   US   :X  a  US==   S-  ss'   XSS S2'   U$ )N   )size   d   )r
   dtyper      )nprandomdefault_rngisnanuniformintegersint)
fill_valuer   rngdatas       d/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/pandas/tests/extension/test_sparse.py	make_datar      sz    
))


"C	xx
{{{"||As#|67d1gGqLGAJK    c                      [        5       $ Nr    r   r   r   r   (   s
    =r   )paramsc                 V    [        [        U R                  S5      U R                  S9nU$ )z)Length-10 SparseArray for semantics test.
   r   )r   r   param)requestress     r   r   r   -   s$     ir2w}}
MCJr   c                  F    [        [        R                  " S5      S-  5      $ )Nr!   r	   )r   r   onesr   r   r   data_for_twosr(   4   s    rwwr{Q''r   c                 J    [        [        R                  S/U R                  S9$ )zLength 2 array with [NA, Valid]r   r"   r   r   nanr#   r$   s    r   data_missingr-   9   s     {w}}==r   c                    ^  U 4S jnU$ )z1Return different versions of data for count timesc              3      >#    [        U 5       H-  n[        [        TR                  S5      TR                  S9v   M/     g 7f)Nr!   r"   )ranger   r   r#   )count_r$   s     r   gendata_repeated.<locals>.genC   s0     uAir:w}}UU s   >Ar   )r$   r3   s   ` r   data_repeatedr5   ?   s    V Jr   c                 .    [        / SQU R                  S9$ )N)r	   r   r   r"   )r   r#   r,   s    r   data_for_sortingr7   J   s    yW]];;r   c                 L    [        S[        R                  S/U R                  S9$ )Nr	   r   r"   r*   r,   s    r   data_missing_for_sortingr9   O   s    2661~'--@@r   c                      S $ )Nc                 h    [         R                  " U 5      =(       a    [         R                  " U5      $ r   )pdisna)leftrights     r   <lambda>na_cmp.<locals>.<lambda>V   s    rwwt}??r   r   r   r   r   na_cmprB   T   s    ??r   c           
      r    [        SS[        R                  [        R                  SSSS/U R                  S9$ )Nr   r	   r   r"   r*   r,   s    r   data_for_groupingrD   Y   s,    1bffbffaAq9gmmTTr   c                 Z    [        SS[        R                  SSSSSSS/
U R                  S9$ )Nr      r	   r   r"   r*   r,   s    r   data_for_comparerI   ^   s,    1bffb"aAq!<WWr   c                   8  ^  \ rS rSrS\S\4S jr\R                  R                  SSS/5      U 4S j5       r
\R                  R                  SSS/5      U 4S	 j5       rS
 rS r\R                  R                  S5      \R                  R                  SSS/\R                   R#                  SS/SS/S9/5      \R                  R                  SSS/5      U 4S j5       5       5       rU 4S jrU 4S jrU 4S jrU 4S jrU 4S jrU 4S jrS rU 4S jrU 4S jrS  rU 4S! jrS" r\R                  R?                  S#S$9U 4S% j5       r S& r!U 4S' jr"U 4S( jr#S)r$S* r%S+ r&\R                  R?                  S,S$9U 4S- j5       r'S. r(U 4S/ jr)S0 r*\R                  R                  S1S2S3/5      U 4S4 j5       r+\R                  RX                  \R                  R                  S5\RZ                  \R\                  \R^                  /5      U 4S6 j5       5       r0\R                  RX                  U 4S7 j5       r1\R                  R                  S8S9 S:\2" S;\3Rh                  /5      4S< S=\2" S;\3Rh                  /5      4\S:\2" S>S?/S?S@94\S=\2" S>\3Rh                  /5      4/5      SA 5       r5\R                  R                  SBS:S=/5      SC 5       r6\R                  R?                  \7SDSE9U 4SF j5       r8S:r9S:r:S:r;S:r<SG r=U 4SH jr>U 4SI jr?U 4SJ jr@SK\R\                  SL\24SM jrASL\24SN jrBSL\24SO jrCSL\24SP jrD\R                  R?                  SQS$9U 4SR j5       rE\R                  R?                  SSS$9\R                  R                  STSS/5      U 4SU j5       5       rFSVrGU =rH$ )WTestSparseArrayc   op_namereturnc                     g)NTr   )selfobjrM   s      r   _supports_reduction#TestSparseArray._supports_reductiond   s    r   skipnaTFc                 b  > US;   a9  [         R                  R                  SS9nUR                  R	                  U5        O_US;   aY  UR
                  R                  S:X  a?  U(       d8  [         R                  R                  SS9nUR                  R	                  U5        [        TU ]!  XU5        g )Nprodmedianvarstdsemskewkurt,This should be viable but is not implementedreasonsummaxminmeanfzgetting a non-nan float)	pytestmarkxfailnode
add_markerr   kindsupertest_reduce_series_numericrP   r   all_numeric_reductionsrT   r$   rh   	__class__s         r   rn   *TestSparseArray.test_reduce_series_numericg   s    ! &
 
 ;;$$E % D LL##D)"&CC

3&;;$$,E$FDLL##D)*4Pr   c                 b  > US;   a9  [         R                  R                  SS9nUR                  R	                  U5        O_US;   aY  UR
                  R                  S:X  a?  U(       d8  [         R                  R                  SS9nUR                  R	                  U5        [        TU ]!  XU5        g )NrV   r^   r_   ra   rf   z$ExtensionArray NA mask are different)	rg   rh   ri   rj   rk   r   rl   rm   test_reduce_framero   s         r   rt   !TestSparseArray.test_reduce_frame   s    ! &
 
 ;;$$E % D LL##D)"&CC

3&;;$$,R$SDLL##D)!$Gr   c                 n    UR                   [        [        S5      :X  a  [        R                  " S5        g g )Nr   zCan't store nan in int array.)r   r   r   rg   skiprP   r   s     r   _check_unsupported"TestSparseArray._check_unsupported   s'    ::S!,,KK78 -r   c                    [         R                  " SUS S 05      n[         R                  " S/ SQ05      n[         R                  " S/ SQ05      R                  S5      nX#U/n[         R                  " U5      n[         R                  " U Vs/ s H  owR	                  S 5      PM     sn5      n[
        R                  " Xh5        g s  snf )NAr   )r   r	   r   )abccategoryc                 T    [         R                  " U 5      R                  [        5      $ r   )r   asarrayastypeobject)ss    r   r@   :TestSparseArray.test_concat_mixed_dtypes.<locals>.<lambda>   s    rzz!}33F;r   )r<   	DataFramer   concatapplytmassert_frame_equal)	rP   r   df1df2df3dfsresultxexpecteds	            r   test_concat_mixed_dtypes(TestSparseArray.test_concat_mixed_dtypes   s     llCbq?+llC+,llC1299*Eo 399FIJcWW;<cJ
 	f/ Ks   Cz9ignore:The previous implementation of stack is deprecatedcolumnsr|   B)r|   r}   )r|   r~   outerinner)namesfuture_stackc                 &   > [         TU ]  XU5        g r   )rm   
test_stack)rP   r   r   r   rq   s       r   r   TestSparseArray.test_stack   s     	4,7r   c                 F   > U R                  U5        [        TU ]	  X5        g r   )ry   rm   test_concat_columnsrP   r   na_valuerq   s      r   r   #TestSparseArray.test_concat_columns   s    %#D3r   c                 F   > U R                  U5        [        TU ]	  X5        g r   )ry   rm   'test_concat_extension_arrays_copy_falser   s      r   r   7TestSparseArray.test_concat_extension_arrays_copy_false   s    %7Gr   c                 F   > U R                  U5        [        TU ]	  X5        g r   )ry   rm   
test_alignr   s      r   r   TestSparseArray.test_align       %4*r   c                 F   > U R                  U5        [        TU ]	  X5        g r   )ry   rm   test_align_framer   s      r   r    TestSparseArray.test_align_frame   s    % 0r   c                 F   > U R                  U5        [        TU ]	  X5        g r   )ry   rm   test_align_series_framer   s      r   r   'TestSparseArray.test_align_series_frame   s    %'7r   c                 F   > U R                  U5        [        TU ]	  X5        g r   )ry   rm   
test_merger   s      r   r   TestSparseArray.test_merge   r   r   c                    [         R                  " U[        [        U5      5       Vs/ s H  nSU-  PM
     snS9n[        R
                  " UR                  R                  5      (       aU  [        R
                  " UR                  S5      5      (       a(  [        R
                  " UR                  S   5      (       d   eO$UR                  S5      UR                  S   :X  d   eUR                  S5      UR                  S   :X  d   eg s  snf )Nr	   )indexrH   r   )
r<   Seriesr0   lenr   r   valuesr   getiloc)rP   r   isers       r   test_getTestSparseArray.test_get   s    iiE#d)4D$E4DqQU4D$EF88CJJ))**88CGGAJ''BHHSXXa[,A,AAA,A771:!,,,wwqzSXXa[((( %Fs   D	
c                    > UR                   R                  [        R                  R	                  SS95        [
        TU ]  U5        g )NzSparseArray getitem buggyr_   )rj   rk   rg   rh   ri   rm   test_array_item_with_indexrP   r   r$   rq   s      r   r   *TestSparseArray.test_array_item_with_index   s5     1 19T 1 UV*40r   c                 F   > U R                  U5        [        TU ]	  X5        g r   )ry   rm   test_reindexr   s      r   r   TestSparseArray.test_reindex   s    %T,r   c                    [        U5      n[        [        [        R                  " UR
                  R                  5      5      n[        SS/US9nUR	                  5       n[        R                  " XT5        UR                  S5      n[        [        [        R                  " UR
                  R                  5      5      n[        SS/SUS9n[        R                  " UR	                  5       U5        g )NTFr   r   r   r   )r   r   boolr<   r=   r   r   r   assert_sp_array_equalfillnaassert_equal)rP   r-   sarrexpected_dtyper   r   s         r   	test_isnaTestSparseArray.test_isna   s    <($T277<3E3E3P3P+QRe}NC
  2 {{1~$T277<3E3E3P3P+QRu~%~V
		X.r   c                 $   > [         TU ]  U5        g r   )rm   test_fillna_no_op_returns_copyr   s      r   r   .TestSparseArray.test_fillna_no_op_returns_copy   s    .t4r   c                    UR                  5       nSUl        UR                  US   5      nUS   US   :X  d   e[        R                  " X!5        UR                  US   SS9nUS   US   :X  d   e[        R                  " X!5        g )NTr   r   Fcopy)r   	_readonlyr   r   assert_extension_array_equal)rP   r-   r   r   s       r   test_fillna_readonly$TestSparseArray.test_fillna_readonly   s       "\!_-ayLO+++
''; \!_59ayLO+++
'';r   Unsupportedr_   c                 "   > [         TU ]  5         g r   )rm   test_fillna_seriesrP   r-   rq   s     r   r   "TestSparseArray.test_fillna_series  s    
 	"$r   c                 r   US   n[         R                  " USS/S.5      R                  U5      n[         R                  " UR                  5      (       a  [        UR                  U5      nOUR                  n[         R                  " UR                  X"/US9SS/S.5      n[        R                  " X55        g )Nr   r	   )r|   r   r   )
r<   r   r   r=   r   r   r   _from_sequencer   r   )rP   r-   r   r   r   r   s         r   test_fillna_frame!TestSparseArray.test_fillna_frame  s    !!_
L1v>?FFzR77<**++ 2 2J?E &&E<<!00*1IQV0WV
 	f/r   c                    > [         R                  " [        SS9   [        TU ]  U5        S S S 5        g ! , (       d  f       g = fNzlimit must be Nonematchrg   raises
ValueErrorrm   test_fillna_limit_framer   s     r   r   'TestSparseArray.test_fillna_limit_frame  ,    ]]:-ABG+L9 CBB	   4
Ac                    > [         R                  " [        SS9   [        TU ]  U5        S S S 5        g ! , (       d  f       g = fr   r   r   s     r   test_fillna_limit_series(TestSparseArray.test_fillna_limit_series$  r   r   zSparse[bool]c                    UR                  SS/5      n[        R                  " SU0SS9nUR                  S   nUR	                  U5      n[        UR                  S5      (       a/  UR                  R                  UR                  R                  L d   eUR                  R                  R                  5       UR                  5       L d   eg )Nr   r|   Fr   )r   r   blocks)taker<   r   r   r   hasattr_mgrr   r   r|   _valuesto_dense)rP   r-   arrdf
filled_valr   s         r   test_fillna_copy_frame&TestSparseArray.test_fillna_copy_frame+  s    A'\\3*51WWT]
:&277H%%99>>V]]%7%7777tt||$$&#,,.888r   c                    UR                  SS/5      n[        R                  " USS9nUS   nUR                  U5      nUR                  UR                  L d   eUR                  R                  5       UR                  5       L d   eg )Nr   Fr   r   )r   r<   r   r   r   r   )rP   r-   r   r   r   r   s         r   test_fillna_copy_series'TestSparseArray.test_fillna_copy_series6  st    A'ii%(V
J'{{fnn,,,{{##%777r   zNot Applicablec                 $   > [         TU ]  U5        g r   )rm   test_fillna_length_mismatchr   s     r   r  +TestSparseArray.test_fillna_length_mismatch@  s    +L9r   c                    US   US   :w  d   e[        U5      nUS S u  pE[        R                  " UR                  XDXU/UR                  S95      n[
        R                  " / SQ5      nUR                  U5      n[        SS5      n	[        R                  " UR                  XDX"/U	S95      n
[        R                  " X5        UR                  XEXE/UR                  S9n[
        R                  " / SQ5      nUR                  X{5      n[        R                  " UR                  XEXU/UR                  S95      n
[        R                  " X5        g )	Nr   r   r	   r   )TTFFfloatg        )TFTT)typer<   r   r   r   r   arraywherer   r   assert_series_equal)rP   r   r   clsr}   r~   r   condr   	new_dtyper   others               r   test_where_series!TestSparseArray.test_where_seriesD  s    Aw$q'!!!4jBQxii**A!<tzz*JKxx234-	99h9K
 	v0""A!<tzz"Bxx124'99S//qDJJ/OP
v0r   c                    > [         R                  " USS9   [        TU ]  X#5        S S S 5        g ! , (       d  f       g = f)NF)check_stacklevel)r   assert_produces_warningrm   test_searchsorted)rP   performance_warningr7   	as_seriesrq   s       r   r  !TestSparseArray.test_searchsortedZ  s/    ''(;eTG%&6B UTTs   0
>c                     UR                  S5      nUR                  S   UR                  S'   UR                  S   UR                  S   :w  d   eg )Nr   r   )shift_sparse_values)rP   r   r   s      r   test_shift_0_periods$TestSparseArray.test_shift_0_periods^  sN    A!%!4!4Q!7A$$Q'6+@+@+CCCCr   methodargmaxargminc                 H   > U R                  U5        [        TU ]	  XU5        g r   )ry   rm   test_argmin_argmax_all_na)rP   r  r   r   rq   s       r   r  )TestSparseArray.test_argmin_argmax_all_nae  s"     	%)&Ar   boxc                 H   > U R                  U5        [        TU ]	  XX45        g r   )ry   rm   test_equals)rP   r   r   r  r!  rq   s        r   r#  TestSparseArray.test_equalsk  s"     	%DI;r   c                 $   > [         TU ]  U5        g r   )rm   &test_equals_same_data_different_object)rP   r   rq   s     r   r&  6TestSparseArray.test_equals_same_data_different_objectq  s    6t<r   zfunc, na_action, expectedc                     U $ r   r   r   s    r   r@   TestSparseArray.<lambda>x      qr   Ng      ?c                     U $ r   r   r)  s    r   r@   r*  y  r+  r   ignorez1.0r+   r"   c                     [        S[        R                  /5      nUR                  XS9n[        R
                  " XS5        g )Nr   	na_action)r   r   r+   mapr   r   )rP   funcr0  r   r   r   s         r   test_mapTestSparseArray.test_mapu  s4     Arvv;'$4
''9r   r0  c                     Sn[         R                  " [        US9   UR                  S US9  S S S 5        g ! , (       d  f       g = f)Nz-fill value in the sparse values not supportedr   c                 "    [         R                  $ r   )r   r+   r)  s    r   r@   1TestSparseArray.test_map_raises.<locals>.<lambda>  s    rvvr   r/  )rg   r   r   r1  )rP   r   r0  msgs       r   test_map_raisesTestSparseArray.test_map_raises  s4     >]]:S1HH%H; 211s	   7
Azno sparse StringDtype)r   r`   c                 $   > [         TU ]  U5        g r   )rm   test_astype_string)rP   r   nullable_string_dtyperq   s      r   r<  "TestSparseArray.test_astype_string  s     	"4(r   c                 R    UR                   S:X  a  [        R                  " S5        g g )Nr   z=Incorrected expected from Series.combine and tested elsewhere)r   rg   rw   rx   s     r   _skip_if_different_combine*TestSparseArray._skip_if_different_combine  s"    ??a KKWX	  r   c                 F   > U R                  U5        [        TU ]	  X5        g r   )r@  rm   test_arith_series_with_scalarrP   r   all_arithmetic_operatorsrq   s      r   rC  -TestSparseArray.test_arith_series_with_scalar  s    ''--dMr   c                 F   > U R                  U5        [        TU ]	  X5        g r   )r@  rm   test_arith_series_with_arrayrD  s      r   rH  ,TestSparseArray.test_arith_series_with_array  s    ''-,TLr   c                    > UR                   R                  S:w  a  OCUR                  S5      S;  a.  [        R                  R                  SS9nUR                  U5        [        TU ]!  X5        g )Nr   r2   )	mulrmulfloordiv	rfloordivtruedivrtruedivpowmodrmodz result dtype.fill_value mismatchr_   )	r   r   striprg   rh   ri   applymarkerrm   test_arith_frame_with_scalar)rP   r   rE  r$   rh   rq   s        r   rV  ,TestSparseArray.test_arith_frame_with_scalar  se    ::  A%%++C0 
9
 

 ;;$$,N$OD%,TLr   r   rI   c                 (   UnU" X$5      n[        U[        R                  5      (       aC  [        U[        R                  5      (       d   e[        UR                  [        5      (       d   eO[        U[
        5      (       d   eUR                  R                  [        R                  :X  d   e[        U[        R                  5      (       aj  U" UR                  UR                  R                  5      n[        U" UR                  5       [        R                  " U5      5      U[        R                  S9nO[        R                  " U" [        R                  " UR                  5      [        R                  " U5      5      5      n[        U" UR                  5       [        R                  " U5      5      U[        R                  S9n[        U[        R                  5      (       a  [        R                  " U5      n[        R                  " Xh5        g )Nr   )
isinstancer<   r   r   r   r   subtyper   bool_r   r   r   r   allr   r   )	rP   r   rI   comparison_opr  opr   r   r   s	            r   _compare_otherTestSparseArray._compare_other  st    $,eRYY''fbii0000fllK8888fk2222||##rxx///eRYY'',779Q9QRJ"#,,.

50AB%hhH 2::.99:BJJu<MNJ ##,,.

50AB%hhH
 eRYY''yy*H
)r   c                     [         R                  " U5      nU R                  X1US5        U R                  X1US5        U R                  X1US5        U R                  X1U[        R                  5        g )Nr   r   rG   )r<   r   r_  r   r+   )rP   rI   r]  r   s       r   test_scalarTestSparseArray.test_scalar  s]    ii()C=!DC=!DC="EC="&&Ir   c                 4   UR                   R                  S:X  a>  UR                  S;   a.  [        R                  R                  SS9nUR                  U5        [        R                  " SSS5      n[        R                  " U5      nU R                  XaX%5        g )Nr   )eqgeleWrong fill_valuer_      r!   )r   r   __name__rg   rh   ri   rU  r   linspacer<   r   r_  )rP   rI   r]  r$   rh   r   r   s          r   
test_arrayTestSparseArray.test_array  s    !!,,1m6L6L Q
 7

 ;;$$,>$?D%kk"a$ii()C=Fr   c                 <   UR                   R                  S:X  a>  UR                  S:w  a.  [        R                  R                  SS9nUR                  U5        [        R                  " U5      nUS-   nU R                  XQX&5        US-  nU R                  XQX&5        g )Nr   gtrh  r_   r   r	   )
r   r   rk  rg   rh   ri   rU  r<   r   r_  )rP   rI   r]  r$   rh   r   r   s          r   test_sparse_array!TestSparseArray.test_sparse_array  s    !!,,1m6L6LPT6T;;$$,>$?D%ii()"C=F"C=Fr   zDifferent reprc                 $   > [         TU ]  X5        g r   )rm   test_array_repr)rP   r   r
   rq   s      r   rt  TestSparseArray.test_array_repr  s    +r   zresult does not match expectedas_indexc                 $   > [         TU ]  X5        g r   )rm   test_groupby_extension_agg)rP   rv  rD   rq   s      r   rx  *TestSparseArray.test_groupby_extension_agg  s     	*8Gr   r   )Irk  
__module____qualname____firstlineno__strr   rR   rg   rh   parametrizern   rt   ry   r   filterwarningsr<   
MultiIndexfrom_tuplesr   r   r   r   r   r   r   r   r   r   r   r   r   ri   r   r   r   r   _combine_le_expected_dtyper   r   r  r  r  r  r  fails_arm_wheelsr  r   r   r#  r&  r   r   r+   r3  r9  	TypeErrorr<  series_scalar_excframe_scalar_exc
divmod_excseries_array_excr@  rC  rH  rV  r_  rb  rm  rq  rt  rx  __static_attributes____classcell__)rq   s   @r   rK   rK   c   s      [[Xe}5Q 6Q0 [[Xe}5H 6H090 [[C [[#JMM%%Z('0B & 	
 [[^dE];8 <84H+18+)1
-/5< [[m,% -%0(:
:
 "0	98 [[./: 0:1,CD [[X(';<B =B
 [[!![[URXXryy",,$GH< I "< [[!!= "= [[#$S"&&M :;(Kbff$>?$UENuEF(K89		
:: [[[4*:;< << [[i0GH) I)
 JYNMM$"*99"*0;"*HJK JG; G	G+ 	G [[./, 0, [[>?[[Z$7H 8 @Hr   rK   c                 6    U R                  5       [        L d   eg r   )construct_array_typer   r   s    r   test_array_type_with_argr    s    %%';666r   )__doc__numpyr   rg   pandasr<   r   pandas._testing_testingr   pandas.arraysr   pandas.tests.extensionr   r   r   fixturer   r+   r   r(   r-   r5   r7   r9   rB   rD   rI   ExtensionTestsrK   r  r   r   r   <module>r     s         % '
S 
   266{# $ ( ( 266{#> $>
 266{# $ 266{#< $< 266{#A $A @ @ 266{#U $U 266{#X $X^Hd)) ^HB7r   