
    Mh                       S r SSKJr  SSKrSSKJ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SKJr  S	 r\R.                  " S
S/S9S 5       r\R.                  S 5       r\R.                  S 5       r\R.                  S 5       r\R.                  S 5       r\R.                  S 5       r\R.                  S 5       r " S S\R>                  5      r  " S S\RB                  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/`.

    )annotationsN)castis_string_dtype)ArrowStringArrayStringDtype)basec                N   U(       d  U $ U R                   R                  S:w  a  U $ [        R                  " S5      nU R                  n[        U5      S-  nUR                  / US U R                  QX4S  R                  Q5      nUR                  S:X  d   e[        U 5      " U5      $ )Npyarrow   )
dtypestoragepytestimportorskip	_pa_arraylenchunked_arraychunks
num_chunkstype)arrchunkedpaarrow_arraysplits        T/var/www/html/env/lib/python3.13/site-packages/pandas/tests/extension/test_string.pymaybe_split_arrayr       s    
			i	'
			Y	'B--K!E""B+fu

$
$B{6':'A'ABK !!Q&&&9[!!    TF)paramsc                    U R                   $ N)param)requests    r   r   r   1   s    ==r   c                    [        U S9$ )N)r   r   )string_storages    r   r   r   6   s    ~..r   c                   [         R                  R                  S5      R                  [	        [
        R                  5      SS9nUS   US   :X  aR  [         R                  R                  S5      R                  [	        [
        R                  5      SS9nUS   US   :X  a  MR  U R                  5       R                  X S9n[        X15      $ )Nr   d   )sizer      r   )
nprandomdefault_rngchoiceliststringascii_lettersconstruct_array_type_from_sequencer   )r   r   stringsr   s       r   datar6   ;   s    ii##A&--d63G3G.Hs-SG
!*

"))''*11$v7K7K2LSV1W !*

" 
$
$
&
5
5g
5
KCS**r   c                t    U R                  5       R                  [        R                  S/U S9n[	        X!5      $ )zLength 2 array with [NA, Valid]Ar+   r3   r4   pdNAr   r   r   r   s      r   data_missingr=   E   s5     
$
$
&
5
5ruucl%
5
PCS**r   c                X    U R                  5       R                  / SQU S9n[        X!5      $ )N)BCr8   r+   )r3   r4   r   r<   s      r   data_for_sortingrA   L   s+    

$
$
&
5
5oU
5
SCS**r   c                v    U R                  5       R                  S[        R                  S/U S9n[	        X!5      $ )Nr?   r8   r+   r9   r<   s      r   data_missing_for_sortingrC   R   s6    

$
$
&
5
5sBEE36Gu
5
UCS**r   c           
         U R                  5       R                  SS[        R                  [        R                  SSSS/U S9n[	        X!5      $ )Nr?   r8   r@   r+   r9   r<   s      r   data_for_groupingrE   X   sK    

$
$
&
5
5	c255"%%c34E 6 C S**r   c                     ^  \ rS rS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	S r
S	 r    SS
 jrSS jrSS jrS r\R"                  R%                  S5      U 4S j5       rSrU =r$ )TestStringArray`   c                P   > USUR                    S3:X  d   e[        TU ]	  U5        g )Nzstring[])r   supertest_eq_with_str)selfr   	__class__s     r   rL    TestStringArray.test_eq_with_stra   s+    '%--2222 'r   c                (    [        U5      (       d   eg r"   r   )rM   r   s     r   test_is_not_string_type'TestStringArray.test_is_not_string_typee   s     u%%%%r   c                   > UR                   R                  U;   a  [        R                  " SS9  [        TU ]  U5        g Nz/2D support not implemented for ArrowStringArray)reason)r   r   r   skiprK   	test_viewrM   r6   r$   arrow_string_storagerN   s       r   rW   TestStringArray.test_viewj   s0    ::!55KKPQ$r   c                    g r"    rM   r6   s     r   test_from_dtypeTestStringArray.test_from_dtypeo   s    r   c                   > UR                   R                  U;   a  [        R                  " SS9  [        TU ]  U5        g rT   )r   r   r   rV   rK   test_transposerX   s       r   ra   TestStringArray.test_transposes   s0    ::!55KKPQt$r   c                   > UR                   R                  U;   a  [        R                  " SS9  [        TU ]  U5        g rT   )r   r   r   rV   rK   test_setitem_preserves_viewsrX   s       r   rd   ,TestStringArray.test_setitem_preserves_viewsx   s0    ::!55KKPQ,T2r   c                \    UR                  5       nUS/   n[        R                  " X#5        g )Nr*   )dropnatmassert_extension_array_equal)rM   r=   resultexpecteds       r   test_dropna_array!TestStringArray.test_dropna_array}   s*    $$&$
''9r   c                    XR                  5       )    nUS   nUR                  U5      nX1Ld   e[        R                  " X15        UR                  SS9nX1Ld   e[        R                  " X15        g )Nr   backfill)method)isnafillnarh   ri   )rM   r6   validrj   s       r   test_fillna_no_op_returns_copy.TestStringArray.test_fillna_no_op_returns_copy   sm    YY[L!QU#!!!
''5J/!!!
''5r   c                   US;   a  [        U[        R                  5      (       a8  [        [        [
        R                  " U5      5      R                  S;   a  [        $ [        U[        R                  5      (       a8  [        [        [
        R                  " U5      5      R                  S;   a  [        $ [        $ US;   a>  [        [        [
        R                  " U5      5      R                  S;   a  [        $ [        $ US;   a  [        $ US;   aH  [        [        [
        R                  " U5      5      R                  S;   a  SS K
nUR                  $ [        $ g )N)
__divmod____rdivmod__)r   pyarrow_numpy)__mod____rmod____pow____rpow__)__mul____rmul__)__truediv____rtruediv____floordiv____rfloordiv____sub____rsub__r   )
isinstancer:   Seriesr   r	   rh   	get_dtyper   NotImplementedError	TypeErrorr   ArrowNotImplementedError)rM   op_nameobjotherr   s        r   _get_expected_exception'TestStringArray._get_expected_exception   s&    33#ryy))dR\\#./g / +*E299--$R\\%03g 3 +*FFKc!23;; @  +*// 
 
 Kc!23;; @  % 222r   c                d    US;   =(       d%    UR                   R                  S:H  =(       a    US;   $ )N)minmaxry   )anyall)r   r   )rM   serr   s      r   _supports_reduction#TestStringArray._supports_reduction   s3    ~% *yy  O3 *>)	
r   c                    [        [        [        R                  " U5      5      nUS;   a  UnO6UR                  S:X  a  SnO#UR                  S:X  a  [
        R                  nOSnUR                  U5      $ )N)__add____radd__r   zboolean[pyarrow]ry   boolean)r   r	   rh   r   r   r,   bool_astype)rM   r   r   r   pointwise_resultr   cast_tos          r   _cast_pointwise_result&TestStringArray._cast_pointwise_result   sa    [",,s"34--G]]i'(G]]o-hhGG&&w//r   c                V    [         R                  " U5      nU R                  X1US5        g )Nabc)r:   r   _compare_other)rM   r6   comparison_opr   s       r   test_compare_scalar#TestStringArray.test_compare_scalar   s!    iioC}e<r   z4ignore:Falling back:pandas.errors.PerformanceWarningc                $   > [         TU ]  X5        g r"   )rK   test_groupby_extension_apply)rM   rE   groupby_apply_oprN   s      r   r   ,TestStringArray.test_groupby_extension_apply   s    ,->Qr   r\   )r   strreturnztype[Exception] | None)r   z	pd.Seriesr   r   r   bool)r   r   )__name__
__module____qualname____firstlineno__rL   rQ   rW   r^   ra   rd   rl   rt   r   r   r   r   r   markfilterwarningsr   __static_attributes____classcell__)rN   s   @r   rG   rG   `   sw    (&
 
%
3
:

611	1f

0= [[ VWR XRr   rG   c                  @    \ rS rSr\R
                  " SS9S 5       rSrg)Test2DCompat   T)autousec                X    [        U[        5      (       a  [        R                  " SS9  g g rT   )r   r   r   rV   r]   s     r   arrow_not_supported Test2DCompat.arrow_not_supported   s"    d,--KKPQ .r   r\   N)r   r   r   r   r   fixturer   r   r\   r   r   r   r      s    ^^D!R "Rr   r   c                    U u  p#nU R                  / SQ5      n[        R                  US'   U(       a  [        R                  " U5      nSn[        R
                  " [        US9   UR                  U5        S S S 5        g ! , (       d  f       g = f)N)r   r   r*   zOsearchsorted requires array to be sorted, which is impossible with NAs present.)match)taker:   r;   r   r   raises
ValueErrorsearchsorted)rA   	as_seriesbcar   msgs          r    test_searchsorted_with_na_raisesr      sl    GA!


	
*CeeCGiin	0  
z	- 
.	-	-s   $A??
B)$__doc__
__future__r   r1   typingr   numpyr,   r   pandasr:   pandas._testing_testingrh   pandas.api.typesr   pandas.core.arraysr   pandas.core.arrays.string_r	   pandas.tests.extensionr
   r   r   r   r   r6   r=   rA   rC   rE   ExtensionTestsrG   Dim2CompatTestsr   r   r\   r   r   <module>r      s   #       , / 2 '"" e}% & / / + + + + + +
 + +
 + +zRd)) zRzR4'' Rr   