
    Mh[F                        S r SSKrSSKrSSKJ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 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\R:                  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)PerformanceWarningSparseDtype)SparseArray)basec                    [         R                  R                  S5      n[         R                  " U 5      (       a  UR	                  SS9nO/UR                  SSS[        S9nUS   US   :X  a  US==   S-  ss'   XSS S2'   U$ )N   d   )size   )r   dtyper      )nprandomdefault_rngisnanuniformintegersint)
fill_valuerngdatas      T/var/www/html/env/lib/python3.13/site-packages/pandas/tests/extension/test_sparse.py	make_datar      sz    
))


"C	xx
{{{$||AsC|87d1gGqLGAJK    c                      [        5       $ Nr    r   r   r   r   *   s
    =r   )paramsc                 T    [        [        U R                  5      U R                  S9nU$ )z*Length-100 PeriodArray for semantics test.r   )r   r   param)requestress     r   r   r   /   s"     i.7==
ICJr   c                  F    [        [        R                  " S5      S-  5      $ )Nr
   r	   )r   r   onesr   r   r   data_for_twosr'   6   s    rwws|a'((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,   ;   s     {w}}==r   c              #   "   ^ #    U 4S jnUv   g7f)z1Return different versions of data for count timesc              3      >#    [        U 5       H,  n[        [        TR                  5      TR                  S9v   M.     g 7f)Nr!   )ranger   r   r"   )count_r#   s     r   gendata_repeated.<locals>.genE   s.     uAi67==QQ s   =A Nr   )r#   r2   s   ` r   data_repeatedr4   A   s     R Is   c                 .    [        / SQU R                  S9$ )N)r	   r   r   r!   )r   r"   r+   s    r   data_for_sortingr6   L   s    yW]];;r   c                 L    [        S[        R                  S/U R                  S9$ )Nr	   r   r!   r)   r+   s    r   data_missing_for_sortingr8   Q   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>X   s    rwwt}??r   r   r   r   r   na_cmprA   V   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_groupingrC   [   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_comparerH   `   s,    1bffb"aAq!<WWr   c                     ^  \ 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S rU 4S  jrU 4S! jr\R                  R=                  S"S#9U 4S$ j5       rS% 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&S- r'\R                  R                  S.S/S0/5      U 4S1 j5       r(\R                  RR                  \R                  R                  S2\RT                  \RV                  \RX                  /5      U 4S3 j5       5       r-\R                  RR                  U 4S4 j5       r.\R                  R                  S5S6 S7\/" S8\0Rb                  /5      4S9 S:\/" S8\0Rb                  /5      4\S7\/" S;S</S<S=94\S:\/" S;\0Rb                  /5      4/5      S> 5       r2\R                  R                  S?S7S:/5      S@ 5       r3\R                  R=                  \4SASB9U 4SC j5       r5S7r6S7r7S7r8S7r9SD r:U 4SE jr;U 4SF jr<U 4SG jr=SH\RV                  SI\/4SJ jr>SI\/4SK jr?SI\/4SL jr@SI\/4SM jrA\R                  R=                  SNS#9U 4SO j5       rB\R                  R=                  SPS#9\R                  R                  SQSS/5      U 4SR j5       5       rCSSrDU =rE$ )TTestSparseArraye   op_namereturnc                     g)NTr   )selfobjrL   s      r   _supports_reduction#TestSparseArray._supports_reductionf   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rO   r   all_numeric_reductionsrS   r#   rg   	__class__s         r   rm   *TestSparseArray.test_reduce_series_numerici   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 )NrU   r]   r^   r`   re   z$ExtensionArray NA mask are different)	rf   rg   rh   ri   rj   r   rk   rl   test_reduce_framern   s         r   rs   !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   rf   skiprO   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)	rO   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   )rl   
test_stack)rO   r   r   r   rp   s       r   r   TestSparseArray.test_stack   s     	4,7r   c                 F   > U R                  U5        [        TU ]	  X5        g r   )rx   rl   test_concat_columnsrO   r   na_valuerp   s      r   r   #TestSparseArray.test_concat_columns   s    %#D3r   c                 F   > U R                  U5        [        TU ]	  X5        g r   )rx   rl   '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   )rx   rl   
test_alignr   s      r   r   TestSparseArray.test_align       %4*r   c                 F   > U R                  U5        [        TU ]	  X5        g r   )rx   rl   test_align_framer   s      r   r    TestSparseArray.test_align_frame   s    % 0r   c                 F   > U R                  U5        [        TU ]	  X5        g r   )rx   rl   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   )rx   rl   
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	   )indexrG   r   )
r;   Seriesr/   lenr   r   valuesr   getiloc)rO   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                 F   > U R                  U5        [        TU ]	  X5        g r   )rx   rl   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)rO   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                    > [         [        4n[        R                  " USS9   [        TU ]  U5        S S S 5        g ! , (       d  f       g = fNF)check_stacklevel)r   FutureWarningr   assert_produces_warningrl   test_fillna_limit_backfill)rO   r,   warnsrp   s      r   r   *TestSparseArray.test_fillna_limit_backfill   s7    #]3''FG.|< GFFs	   <
A
c                    > [         R                  " UR                  5      (       a,  UR                  [        R
                  R                  SS95        [        TU ]!  U5        g )Nz'returns array with different fill valuer^   )	r   r   r   applymarkerrf   rg   rh   rl   test_fillna_no_op_returns_copy)rO   r   r#   rp   s      r   r   .TestSparseArray.test_fillna_no_op_returns_copy   sI    88DOO$$!!)R!S 	.t4r   Unsupportedr^   c                 "   > [         TU ]  5         g r   )rl   test_fillna_seriesrO   r,   rp   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   )rO   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   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      (       af  U(       a0  UR                  R                  UR                  R                  L d   eO/UR                  R                  UR                  R                  Ld   eUR                  R                  R                  5       UR                  5       L d   eg )Nr   r{   Fcopy)r   r   blocks)taker;   r   r   r   hasattr_mgrr   r   r{   _valuesto_dense)rO   r,   using_copy_on_writearrdf
filled_valr   s          r   test_fillna_copy_frame&TestSparseArray.test_fillna_copy_frame  s    A'\\3*51WWT]
:&277H%%"yy~~););;;;yy~~V]]-?-????tt||$$&#,,.888r   c                 V   UR                  SS/5      n[        R                  " USS9nUS   nUR                  U5      nU(       a  UR                  UR                  L d   eO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   )rO   r,   r   r   r   r   r   s          r   test_fillna_copy_series'TestSparseArray.test_fillna_copy_series&  s    A'ii%(V
J';;&..000 ;;fnn444{{##%777r   zNot Applicablec                 $   > [         TU ]  U5        g r   )rl   test_fillna_length_mismatchr   s     r   r   +TestSparseArray.test_fillna_length_mismatch4  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)rO   r   r   clsr|   r}   r   condr   	new_dtyper   others               r   test_where_series!TestSparseArray.test_where_series8  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                  " [        SS9   [        TU ]  X5        S S S 5        g ! , (       d  f       g = fr   )r   r   r   rl   test_searchsorted)rO   r6   	as_seriesrp   s      r   r  !TestSparseArray.test_searchsortedN  s/    ''(:USG%&6B TSSs	   4
A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)rO   r   r   s      r   test_shift_0_periods$TestSparseArray.test_shift_0_periodsR  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   )rx   rl   test_argmin_argmax_all_na)rO   r
  r   r   rp   s       r   r  )TestSparseArray.test_argmin_argmax_all_naY  s"     	%)&Ar   boxc                 H   > U R                  U5        [        TU ]	  XX45        g r   )rx   rl   test_equals)rO   r   r   r  r  rp   s        r   r  TestSparseArray.test_equals_  s"     	%DI;r   c                 $   > [         TU ]  U5        g r   )rl   &test_equals_same_data_different_object)rO   r   rp   s     r   r  6TestSparseArray.test_equals_same_data_different_objecte  s    6t<r   zfunc, na_action, expectedc                     U $ r   r   r   s    r   r?   TestSparseArray.<lambda>l      qr   Ng      ?c                     U $ r   r   r  s    r   r?   r  m  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   assert_extension_array_equal)rO   funcr  r   r   r   s         r   test_mapTestSparseArray.test_mapi  s4     Arvv;'$4
''9r   r  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 supported)matchc                 "    [         R                  $ r   )r   r*   r  s    r   r?   1TestSparseArray.test_map_raises.<locals>.<lambda>}  s    rvvr   r  )rf   raises
ValueErrorr   )rO   r   r  msgs       r   test_map_raisesTestSparseArray.test_map_raisesx  s4     >]]:S1HH%H; 211s	   7
Azno sparse StringDtype)r)  r_   c                 $   > [         TU ]  U5        g r   )rl   test_astype_string)rO   r   nullable_string_dtyperp   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   rf   rv   rw   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   )r3  rl   test_arith_series_with_scalarrO   r   all_arithmetic_operatorsrp   s      r   r6  -TestSparseArray.test_arith_series_with_scalar  s    ''--dMr   c                 F   > U R                  U5        [        TU ]	  X5        g r   )r3  rl   test_arith_series_with_arrayr7  s      r   r;  ,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   r1   )mulrmulfloordiv	rfloordivpowmodrmodz result dtype.fill_value mismatchr^   )	r   r   striprf   rg   rh   r   rl   test_arith_frame_with_scalar)rO   r   r8  r#   rg   rp   s        r   rF  ,TestSparseArray.test_arith_frame_with_scalar  se    ::  A%%++C0 9
 
 ;;$$,N$OD%,TLr   r   rH   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   )	rO   r   rH   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   rF   )r;   r   rO  r   r*   )rO   rH   rM  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   __name__rf   rg   rh   r   r   linspacer;   r   rO  )rO   rH   rM  r#   rg   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   gtrX  r^   r   r	   )
r   r   r\  rf   rg   rh   r   r;   r   rO  )rO   rH   rM  r#   rg   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   )rl   test_array_repr)rO   r   r   rp   s      r   re  TestSparseArray.test_array_repr  s    +r   zresult does not match expectedas_indexc                 $   > [         TU ]  X5        g r   )rl   test_groupby_extension_agg)rO   rg  rC   rp   s      r   ri  *TestSparseArray.test_groupby_extension_agg  s     	*8Gr   r   )Fr\  
__module____qualname____firstlineno__strr   rQ   rf   rg   parametrizerm   rs   rx   r   filterwarningsr;   
MultiIndexfrom_tuplesr   r   r   r   r   r   r   r   r   r   r   r   rh   r   r   _combine_le_expected_dtyper   r   r   r   r  r  r  fails_arm_wheelsr   r   r   r  r  r   r   r*   r#  r,  	TypeErrorr/  series_scalar_excframe_scalar_exc
divmod_excseries_array_excr3  r6  r;  rF  rO  rR  r^  rb  re  ri  __static_attributes____classcell__)rp   s   @r   rJ   rJ   e   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+)-/=
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   rJ   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   rf   pandas.errorsr   pandasr;   r   pandas._testing_testingr   pandas.arraysr   pandas.tests.extensionr   r   fixturer   r*   r   r'   r,   r4   r6   r8   rA   rC   rH   ExtensionTestsrJ   r~  r   r   r   <module>r     s      ,    % '
   266{# $ ) ) 266{#> $>
 266{# $ 266{#< $< 266{#A $A @ @ 266{#U $U 266{#X $XNHd)) NHb7r   