
    PiG                        d Z 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
mZ ddlmZ defdZej        d             Z ej        dej        g	          d
             Zej        d             Z ej        dej        g	          d             Z ej        dej        g	          d             Z ej        dej        g	          d             Z ej        dej        g	          d             Zej        d             Z ej        dej        g	          d             Z ej        dej        g	          d             Z G d dej                  Zd ZdS )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                 *   t           j                            d          }t          j        |           r|                    |          }n@|                    dd|t                    }|d         |d         k    r|dxx         dz  cc<   | |dd d<   |S )N   )size   d   )r
   dtyper      )nprandomdefault_rngisnanuniformintegersint)
fill_valuer   rngdatas       v/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/pandas/tests/extension/test_sparse.py	make_datar      s    
)


"
"C	x
 {{{""||As#|667d1gGGGqLGGGDAJK    c                      t                      S Nr    r   r   r   r   (   s    ==r   )paramsc                 X    t          t          | j        d          | j                  }|S )z)Length-10 SparseArray for semantics test.
   r   )r   r   param)requestress     r   r   r   -   s)     ir22w}
M
M
MCJr   c                  J    t          t          j        d          dz            S )Nr!   r	   )r   r   onesr   r   r   data_for_twosr(   4   s    rwr{{Q'''r   c                 F    t          t          j        dg| j                  S )zLength 2 array with [NA, Valid]r   r"   r   r   nanr#   r$   s    r   data_missingr-   9   s     {w}====r   c                       fd}|S )z1Return different versions of data for count timesc              3      K   t          |           D ]-}t          t          j        d          j                  V  .d S )Nr!   r"   )ranger   r   r#   )count_r$   s     r   genzdata_repeated.<locals>.genC   sT      u 	V 	VAir::w}UUUUUUU	V 	Vr   r   )r$   r3   s   ` r   data_repeatedr4   ?   s(    V V V V V Jr   c                 2    t          g d| j                  S )N)r	   r   r   r"   )r   r#   r,   s    r   data_for_sortingr6   J   s    yyyW];;;;r   c                 H    t          dt          j        dg| j                  S )Nr	   r   r"   r*   r,   s    r   data_missing_for_sortingr8   O   s    261~'-@@@@r   c                      d S )Nc                 R    t          j        |           ot          j        |          S r   )pdisna)leftrights     r   <lambda>zna_cmp.<locals>.<lambda>V   s    rwt}}? r   r   r   r   r   na_cmpr@   T   s    ???r   c           
      f    t          ddt          j        t          j        ddddg| j                  S )Nr   r	   r   r"   r*   r,   s    r   data_for_groupingrB   Y   s,    1bfbfaAq9gmTTTTr   c                 V    t          ddt          j        dddddddg
| j                  S )Nr      r	   r   r"   r*   r,   s    r   data_for_comparerG   ^   s.    1bfb"aAq!<WWWWr   c                       e Zd ZdedefdZej                            dddg           fd            Z	ej                            dddg           fd            Z
d	 Zd
 Zej                            d          ej                            dddgej                            ddgddg          g          ej                            dddg           fd                                    Z fdZ fdZ fdZ fdZ fdZ fdZd Z fdZd Z fdZd  Zej                            d!"           fd#            Zd$ Z fd%Z  fd&Z!d'Z"d( Z#d) Z$ej                            d*"           fd+            Z%d, Z& fd-Z'd. Z(ej                            d/d0d1g           fd2            Z)ej        j*        ej                            d3ej+        ej,        ej-        g           fd4                        Z.ej        j*         fd5            Z/ej                            d6d7 d8 e0d9e1j2        g          fd: d; e0d9e1j2        g          fed8 e0d<d=gd=>          fed; e0d<e1j2        g          fg          d?             Z3ej                            d@d8d;g          dA             Z4ej                            e5dBC           fdD            Z6d8Z7d8Z8d8Z9d8Z:dE Z; fdFZ< fdGZ= fdHZ>dIej,        dJe0fdKZ?dJe0fdLZ@dJe0fdMZAdJe0fdNZBej                            dO"           fdP            ZCej                            dQ"          ej                            dRddg           fdS                        ZD xZES )TTestSparseArrayop_namereturnc                     dS )NTr   )selfobjrJ   s      r   _supports_reductionz#TestSparseArray._supports_reductiond   s    tr   skipnaTFc                 l   |dv r;t           j                            d          }|j                            |           nP|dv rL|j        j        dk    r<|s:t           j                            d          }|j                            |           t                                          |||           d S )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rM   r   all_numeric_reductionsrP   r$   rd   	__class__s         r   rj   z*TestSparseArray.test_reduce_series_numericg   s    ! &
 
 
 ;$$E %  D L##D))))"&CCC
3&& ' ;$$,E$FFDL##D)))**41GPPPPPr   c                 l   |dv r;t           j                            d          }|j                            |           nP|dv rL|j        j        dk    r<|s:t           j                            d          }|j                            |           t                                          |||           d S )NrR   rZ   r[   r]   rb   z$ExtensionArray NA mask are different)	rc   rd   re   rf   rg   r   rh   ri   test_reduce_framerk   s         r   ro   z!TestSparseArray.test_reduce_frame   s    ! &
 
 
 ;$$E %  D L##D))))"&CCC
3&& ' ;$$,R$SSDL##D)))!!$(>GGGGGr   c                 n    |j         t          t          d          k    rt          j        d           d S d S )Nr   zCan't store nan in int array.)r   r   r   rc   skiprM   r   s     r   _check_unsupportedz"TestSparseArray._check_unsupported   s8    :S!,,,,K788888 -,r   c                 `   t          j        d|d d         i          }t          j        dg di          }t          j        dg di                              d          }|||g}t          j        |          }t          j        d |D                       }t	          j        ||           d S )NAr   )r   r	   r   )abccategoryc                 :    g | ]}|                     d            S )c                 Z    t          j        |                               t                    S r   )r   asarrayastypeobject)ss    r   r?   zETestSparseArray.test_concat_mixed_dtypes.<locals>.<listcomp>.<lambda>   s    rz!}}33F;; r   )apply).0xs     r   
<listcomp>z<TestSparseArray.test_concat_mixed_dtypes.<locals>.<listcomp>   s(    JJJQWW;;<<JJJr   )r;   	DataFramer}   concattmassert_frame_equal)rM   r   df1df2df3dfsresultexpecteds           r   test_concat_mixed_dtypesz(TestSparseArray.test_concat_mixed_dtypes   s     lCbqb?++lC+,,lC12299*EECo 39JJcJJJ
 
 	fh/////r   z9ignore:The previous implementation of stack is deprecatedcolumnsru   B)ru   rv   )ru   rw   outerinner)namesfuture_stackc                 N    t                                          |||           d S r   )ri   
test_stack)rM   r   r   r   rm   s       r   r   zTestSparseArray.test_stack   s'     	4,77777r   c                 v    |                      |           t                                          ||           d S r   )rs   ri   test_concat_columnsrM   r   na_valuerm   s      r   r   z#TestSparseArray.test_concat_columns   s7    %%%##D(33333r   c                 v    |                      |           t                                          ||           d S r   )rs   ri   'test_concat_extension_arrays_copy_falser   s      r   r   z7TestSparseArray.test_concat_extension_arrays_copy_false   s7    %%%77hGGGGGr   c                 v    |                      |           t                                          ||           d S r   )rs   ri   
test_alignr   s      r   r   zTestSparseArray.test_align   7    %%%4*****r   c                 v    |                      |           t                                          ||           d S r   )rs   ri   test_align_framer   s      r   r   z TestSparseArray.test_align_frame   s7    %%%  x00000r   c                 v    |                      |           t                                          ||           d S r   )rs   ri   test_align_series_framer   s      r   r   z'TestSparseArray.test_align_series_frame   s7    %%%''h77777r   c                 v    |                      |           t                                          ||           d S r   )rs   ri   
test_merger   s      r   r   zTestSparseArray.test_merge   r   r   c           	         t          j        |d t          t          |                    D                       }t	          j        |j        j                  rIt	          j        |                    d                    rt	          j        |j	        d                   sJ n&|                    d          |j	        d         k    sJ |                    d          |j	        d         k    sJ d S )Nc                     g | ]}d |z  S )r	   r   )r   is     r   r   z,TestSparseArray.test_get.<locals>.<listcomp>   s    $E$E$EqQU$E$E$Er   )indexrF   r	   r   )
r;   Seriesr0   lenr   r   valuesr   getiloc)rM   r   sers      r   test_getzTestSparseArray.test_get   s    i$E$EE#d))4D4D$E$E$EFFF8CJ)** 	-8CGGAJJ''ABHSXa[,A,AAAAA771::!,,,,wwqzzSXa[((((((r   c                 v    |                      |           t                                          ||           d S r   )rs   ri   test_reindexr   s      r   r   zTestSparseArray.test_reindex   s7    %%%T8,,,,,r   c                     t          |          }t          t          t          j        |j        j                            }t          ddg|          }|                                }t          j        ||           |	                    d          }t          t          t          j        |j        j                            }t          ddgd|          }t          j
        |                                |           d S )NTFr   r   r   r   )r   r   boolr;   r<   r   r   r   assert_sp_array_equalfillnaassert_equal)rM   r-   sarrexpected_dtyper   r   s         r   	test_isnazTestSparseArray.test_isna   s    <(($T27<3E3P+Q+QRRe}NCCC
 222 {{1~~$T27<3E3P+Q+QRRu~%~VVV
		X.....r   c                 J    t                                          |           d S r   )ri   test_fillna_no_op_returns_copy)rM   r   r$   rm   s      r   r   z.TestSparseArray.test_fillna_no_op_returns_copy   s!    ..t44444r   c                 P   |                                 }d|_        |                    |d                   }|d         |d         k    sJ t          j        ||           |                    |d         d          }|d         |d         k    sJ t          j        ||           d S )NTr   r   Fcopy)r   	_readonlyr   r   assert_extension_array_equal)rM   r-   r   r   s       r   test_fillna_readonlyz$TestSparseArray.test_fillna_readonly   s       ""\!_--ayLO++++
'l;;; \!_599ayLO++++
'l;;;;;r   Unsupportedr[   c                 H    t                                                       d S r   )ri   test_fillna_seriesrM   r-   rm   s     r   r   z"TestSparseArray.test_fillna_series   s!    
 	""$$$$$r   c                 d   |d         }t          j        |ddgd                              |          }t          j        |j                  rt          |j        |          }n|j        }t          j        |                    ||g|          ddgd          }t          j	        ||           d S )Nr   r	   )ru   r   r   )
r;   r   r   r<   r   r   r   _from_sequencer   r   )rM   r-   r   r   r   r   s         r   test_fillna_framez!TestSparseArray.test_fillna_frame  s    !!_
L1v>>??FFzRR7<*++ 	' 2J??EE &E<!00*j1IQV0WWV 
 
 	fh/////r   c                     t          j        t          d          5  t                                          |           d d d            d S # 1 swxY w Y   d S Nzlimit must be Nonematchrc   raises
ValueErrorri   test_fillna_limit_framer   s     r   r   z'TestSparseArray.test_fillna_limit_frame      ]:-ABBB 	: 	:GG++L999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:   "AAAc                     t          j        t          d          5  t                                          |           d d d            d S # 1 swxY w Y   d S r   r   r   s     r   test_fillna_limit_seriesz(TestSparseArray.test_fillna_limit_series  r   r   zSparse[bool]c                 n   |                     ddg          }t          j        d|id          }|j        d         }|                    |          }t          |j        d          r|j        j        |j        j        u sJ |j	        j
                                        |                                u sJ d S )Nr   ru   Fr   )r   r   blocks)taker;   r   r   r   hasattr_mgrr   r   ru   _valuesto_dense)rM   r-   arrdf
filled_valr   s         r   test_fillna_copy_framez&TestSparseArray.test_fillna_copy_frame&  s    A''\3*5111WT]
:&&27H%% 	89>V]%77777t|$$&&#,,..888888r   c                    |                     ddg          }t          j        |d          }|d         }|                    |          }|j        |j        u sJ |j                                        |                                u sJ d S )Nr   Fr   r   )r   r;   r   r   r   r   )rM   r-   r   r   r   r   s         r   test_fillna_copy_seriesz'TestSparseArray.test_fillna_copy_series1  s    A''i%(((V
J''{fn,,,,{##%%777777r   zNot Applicablec                 J    t                                          |           d S r   )ri   test_fillna_length_mismatchr   s     r   r   z+TestSparseArray.test_fillna_length_mismatch;  s!    ++L99999r   c                    |d         |d         k    sJ t          |          }|d d         \  }}t          j        |                    ||||g|j                            }t          j        g d          }|                    |          }t          dd          }	t          j        |                    ||||g|	                    }
t          j
        ||
           |                    ||||g|j                  }t          j        g d          }|                    ||          }t          j        |                    ||||g|j                            }
t          j
        ||
           d S )	Nr   r   r	   r   )TTFFfloatg        )TFTT)typer;   r   r   r   r   arraywherer   r   assert_series_equal)rM   r   r   clsrv   rw   r   condr   	new_dtyper   others               r   test_where_seriesz!TestSparseArray.test_where_series?  sl   Aw$q'!!!!4jjBQBx1i**Aq!Q<tz*JJKKx222334--	91h9KK
 
 	vx000""Aq!Q<tz"BBx111224''9S//Aq!DJ/OOPP
vx00000r   c                     t          j        |d          5  t                                          ||           d d d            d S # 1 swxY w Y   d S )NF)check_stacklevel)r   assert_produces_warningri   test_searchsorted)rM   performance_warningr6   	as_seriesrm   s       r   r   z!TestSparseArray.test_searchsortedU  s    '(;eTTT 	C 	CGG%%&6	BBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	Cs   #AAAc                     |                     d          }|j        d         |j        d<   |j        d         |j        d         k    sJ d S )Nr   r   )shift_sparse_values)rM   r   r   s      r   test_shift_0_periodsz$TestSparseArray.test_shift_0_periodsY  sM    A!%!4Q!7A$Q'6+@+CCCCCCCr   methodargmaxargminc                 x    |                      |           t                                          |||           d S r   )rs   ri   test_argmin_argmax_all_na)rM   r   r   r   rm   s       r   r   z)TestSparseArray.test_argmin_argmax_all_na`  s;     	%%%))&$AAAAAr   boxc                 z    |                      |           t                                          ||||           d S r   )rs   ri   test_equals)rM   r   r   r   r  rm   s        r   r  zTestSparseArray.test_equalsf  s=     	%%%D(Is;;;;;r   c                 J    t                                          |           d S r   )ri   &test_equals_same_data_different_object)rM   r   rm   s     r   r  z6TestSparseArray.test_equals_same_data_different_objectl  s!    66t<<<<<r   zfunc, na_action, expectedc                     | S r   r   r   s    r   r?   zTestSparseArray.<lambda>s      q r   Ng      ?c                     | S r   r   r  s    r   r?   zTestSparseArray.<lambda>t  r  r   ignorez1.0r+   r"   c                     t          dt          j        g          }|                    ||          }t	          j        ||           d S )Nr   	na_action)r   r   r+   mapr   r   )rM   funcr  r   r   r   s         r   test_mapzTestSparseArray.test_mapp  sE     Arv;''$)44
'99999r   r  c                     d}t          j        t          |          5  |                    d |           d d d            d S # 1 swxY w Y   d S )Nz-fill value in the sparse values not supportedr   c                     t           j        S r   )r   r+   r  s    r   r?   z1TestSparseArray.test_map_raises.<locals>.<lambda>  s    rv r   r  )rc   r   r   r  )rM   r   r  msgs       r   test_map_raiseszTestSparseArray.test_map_raises  s     >]:S111 	< 	<HH%%H;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s   AAAzno sparse StringDtype)r   r\   c                 J    t                                          |           d S r   )ri   test_astype_string)rM   r   nullable_string_dtyperm   s      r   r  z"TestSparseArray.test_astype_string  s#     	""4(((((r   c                 H    |j         dk    rt          j        d           d S d S )Nr   z=Incorrected expected from Series.combine and tested elsewhere)r   rc   rq   rr   s     r   _skip_if_different_combinez*TestSparseArray._skip_if_different_combine  s0    ?a KWXXXXX	  r   c                 v    |                      |           t                                          ||           d S r   )r  ri   test_arith_series_with_scalarrM   r   all_arithmetic_operatorsrm   s      r   r  z-TestSparseArray.test_arith_series_with_scalar  s8    ''-----d4LMMMMMr   c                 v    |                      |           t                                          ||           d S r   )r  ri   test_arith_series_with_arrayr  s      r   r  z,TestSparseArray.test_arith_series_with_array  s8    ''---,,T3KLLLLLr   c                    |j         j        dk    rnL|                    d          dvr5t          j                            d          }|                    |           t                                          ||           d S )Nr   r2   )	mulrmulfloordiv	rfloordivtruedivrtruedivpowmodrmodz result dtype.fill_value mismatchr[   )	r   r   striprc   rd   re   applymarkerri   test_arith_frame_with_scalar)rM   r   r  r$   rd   rm   s        r   r,  z,TestSparseArray.test_arith_frame_with_scalar  s    : A%%%++C00 
9
 

 

 ;$$,N$OOD%%%,,T3KLLLLLr   r   rG   c                    |} |||          }t          |t          j                  r9t          |t          j                  sJ t          |j        t                    sJ nt          |t
                    sJ |j        j        t          j        k    sJ t          |t          j                  rf ||j	        |j
        j	                  }t           ||                                t          j        |                    |t          j                  }nt          j         |t          j        |j	                  t          j        |                              }t           ||                                t          j        |                    |t          j                  }t          |t          j                  rt          j        |          }t          j        ||           d S )Nr   )
isinstancer;   r   r   r   r   subtyper   bool_r   r   r   r|   allr   r   )	rM   r   rG   comparison_opr   opr   r   r   s	            r   _compare_otherzTestSparseArray._compare_other  s    $e,,eRY'' 	3fbi00000flK888888fk22222|#rx////eRY'' 	,79QRRJ"#,,..
50A0ABB%h  HH 2:.9::BJu<M<MNN J ##,,..
50A0ABB%h  H
 eRY'' 	+y**H
)))))r   c                    t          j        |          }|                     |||d           |                     |||d           |                     |||d           |                     |||t          j                   d S )Nr   r   rE   )r;   r   r4  r   r+   )rM   rG   r2  r   s       r   test_scalarzTestSparseArray.test_scalar  s    i())C!1=!DDDC!1=!DDDC!1="EEEC!1="&IIIIIr   c                 &   |j         j        dk    r>|j        dv r5t          j                            d          }|                    |           t          j        ddd          }t          j
        |          }|                     ||||           d S )Nr   )eqgeleWrong fill_valuer[      r!   )r   r   __name__rc   rd   re   r+  r   linspacer;   r   r4  )rM   rG   r2  r$   rd   r   r   s          r   
test_arrayzTestSparseArray.test_array  s    !,11m6L Q
 7
 7

 ;$$,>$??D%%%k"a$$i())C!1=#FFFFFr   c                 B   |j         j        dk    r@|j        dk    r5t          j                            d          }|                    |           t          j        |          }|dz   }| 	                    ||||           |dz  }| 	                    ||||           d S )Nr   gtr;  r[   r   r	   )
r   r   r>  rc   rd   re   r+  r;   r   r4  )rM   rG   r2  r$   rd   r   r   s          r   test_sparse_arrayz!TestSparseArray.test_sparse_array  s    !,11m6LPT6T6T;$$,>$??D%%%i())"C!1=#FFF"C!1=#FFFFFr   zDifferent reprc                 L    t                                          ||           d S r   )ri   test_array_repr)rM   r   r
   rm   s      r   rE  zTestSparseArray.test_array_repr  s#    d+++++r   zresult does not match expectedas_indexc                 L    t                                          ||           d S r   )ri   test_groupby_extension_agg)rM   rF  rB   rm   s      r   rH  z*TestSparseArray.test_groupby_extension_agg  s&     	**85FGGGGGr   )Fr>  
__module____qualname__strr   rO   rc   rd   parametrizerj   ro   rs   r   filterwarningsr;   
MultiIndexfrom_tuplesr   r   r   r   r   r   r   r   r   r   r   r   re   r   r   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_excr  r  r  r,  r4  r6  r@  rC  rE  rH  __classcell__)rm   s   @r   rI   rI   c   s2             [Xe}55Q Q Q Q 65Q0 [Xe}55H H H H 65H09 9 90 0 0 [C  [#JM%%Z('0B &  	
  [^dE];;8 8 8 8 <;  84 4 4 4 4H H H H H+ + + + +1 1 1 1 18 8 8 8 8+ + + + +) ) )- - - - -/ / /5 5 5 5 5< < < [m,,% % % % -,%0 0 0(: : : : :
: : : : :
 "0	9 	9 	98 8 8 [.//: : : : 0/:1 1 1,C C C C CD D D [X(';<<B B B B =<B
 [![URXry",$GHH< < < < IH "!< [!= = = = "!= [#[$S"&M : :;[(KKbf$>$>?$UENuEEEF(KK889		
 : : : [[4*:;;< < <;< [i0GHH) ) ) ) IH)
 JY Y YN N N N NM M M M MM M M M M$"*9"*0;"* "* "* "*HJK J J J JG; G G G G	G+ 	G 	G 	G 	G [.//, , , , 0/, [>??[Z$77H H H H 87 @?H H H H Hr   rI   c                 @    |                                  t          u sJ d S r   )construct_array_typer   r   s    r   test_array_type_with_argrZ    s%    %%'';666666r   )__doc__numpyr   rc   pandasr;   r   pandas._testing_testingr   pandas.arraysr   pandas.tests.extensionr   r   r   fixturer   r+   r   r(   r-   r4   r6   r8   r@   rB   rG   ExtensionTestsrI   rZ  r   r   r   <module>rd     s                          % % % % % % ' ' ' ' ' '
S 
 
 
 
    26{###  $# ( ( ( 26{###> > $#>
 26{###  $# 26{###< < $#< 26{###A A $#A @ @ @ 26{###U U $#U 26{###X X $#XYH YH YH YH YHd) YH YH YHx7 7 7 7 7r   