
    m*ie'                       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	J
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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\RJ                  5      r& " S S\RN                  5      r(S 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)HAS_PYARROW)StorageExtensionDtypeis_string_dtype)ArrowStringArrayStringDtype)string_dtype_highest_priority)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        b/var/www/html/land-doc-ocr/venv/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   6   s    ==r"   c                    U u  p[        XS9$ )N)r   na_valuer
   )string_dtype_argumentsr   r)   s      r    r   r   ;   s    .Gw::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    datar:   A   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/   r7   r8   pdNAr!   r   r   r   s      r    data_missingrA   K   s5     
$
$
&
5
5ruucl%
5
PCS**r"   c                X    U R                  5       R                  / SQU S9n[        X!5      $ )N)BCr<   r/   )r7   r8   r!   r@   s      r    data_for_sortingrE   R   s+    

$
$
&
5
5oU
5
SCS**r"   c                v    U R                  5       R                  S[        R                  S/U S9n[	        X!5      $ )NrC   r<   r/   r=   r@   s      r    data_missing_for_sortingrG   X   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      $ )NrC   r<   rD   r/   r=   r@   s      r    data_for_groupingrI   ^   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U 4S j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S jrS rU 4S jrU 4S jrSrU =r$ )TestStringArrayf   c                (  > [         TU ]  U5        UR                  [        R                  L a  USUR
                   S3:X  d   eg UR
                  S:X  a-  [        R                  " [        5         US:X  d   e S S S 5        g g ! , (       d  f       g = f)Nzstring[]r   zstring[pyarrow_numpy])	supertest_eq_with_strr)   r>   r?   r   tmassert_produces_warningFutureWarning)selfr   	__class__s     r    rP    TestStringArray.test_eq_with_strg   sx     '>>RUU"gemm_A6666]]i'++M: 7777 ;: (::s   /	B
Bc                (    [        U5      (       d   eg r%   r   )rT   r   s     r    test_is_not_string_type'TestStringArray.test_is_not_string_typeq   s     u%%%%r"   c                   > UR                   [        R                  L a3  U(       d,  [        U5      R	                  UR
                  5      nUSL d   eg [        TU ]  U5        g )NF)r)   r0   nanr   is_dtypenamerO   test_is_dtype_from_name)rT   r   using_infer_stringresultrU   s       r    r^   'TestStringArray.test_is_dtype_from_namev   sG    >>RVV#,>%[))%**5FU?"?G+E2r"   c                
  > UR                   [        R                  L aE  U(       d>  [        R                  " [
        SS9   UR                  UR                  5        S S S 5        g [        TU ]%  U5        g ! , (       d  f       g = f)Nz Cannot construct a 'StringDtype'match)
r)   r0   r[   r   raises	TypeErrorconstruct_from_stringr]   rO   #test_construct_from_string_own_name)rT   r   r_   rU   s      r    rh   3TestStringArray.test_construct_from_string_own_name}   sY    >>RVV#,>y0RS++EJJ7 TS G7> TSs   A44
Bc                   > UR                   R                  S:X  a  [        R                  " SS9  [        TU ]  U5        g Nr   /2D support not implemented for ArrowStringArrayreason)r   r   r   skiprO   	test_viewrT   r:   rU   s     r    rp   TestStringArray.test_view   s/    ::*KKPQ$r"   c                    g r%    rT   r:   s     r    test_from_dtypeTestStringArray.test_from_dtype   s    r"   c                   > UR                   R                  S:X  a  [        R                  " SS9  [        TU ]  U5        g rk   )r   r   r   ro   rO   test_transposerq   s     r    ry   TestStringArray.test_transpose   s/    ::*KKPQt$r"   c                   > UR                   R                  S:X  a  [        R                  " SS9  [        TU ]  U5        g rk   )r   r   r   ro   rO   test_setitem_preserves_viewsrq   s     r    r|   ,TestStringArray.test_setitem_preserves_views   s/    ::*KKPQ,T2r"   c                \    UR                  5       nUS/   n[        R                  " X#5        g )Nr.   )dropnarQ   assert_extension_array_equal)rT   rA   r`   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fillnarQ   r   )rT   r:   validr`   s       r    test_fillna_no_op_returns_copy.TestStringArray.test_fillna_no_op_returns_copy   sm    YY[L!QU#!!!
''5J/!!!
''5r"   c                L    US;   a  [         $ US;   a  [         $ US;   a  [         $ g )N)__mod____rmod__
__divmod____rdivmod____pow____rpow__)__mul____rmul__)__truediv____rtruediv____floordiv____rfloordiv____sub____rsub__)rf   )rT   op_nameobjothers       r    _get_expected_exception'TestStringArray._get_expected_exception   s@      
 
 // 
 
 r"   c                ~    US;   =(       d2    UR                   R                  [        R                  L =(       a    US;   $ )N)minmaxsum)anyall)r   r)   r0   r[   rT   serr   s      r    _supports_reduction#TestStringArray._supports_reduction   s8    ,, *yy!!RVV+ *>)	
r"   c                N    [        UR                  [        5      (       d   eUS;   $ )N)cummincummaxcumsum)
isinstancer   r   r   s      r    _supports_accumulation&TestStringArray._supports_accumulation   s&    #))%:;;;;888r"   c                   [        [        [        R                  " U5      5      nUS;   aP  Un[	        U[
        5      (       d  [        R                  " U5      OS n[	        U[        5      (       a  [        XW5      nOCUR                  [        R                  L a  [        R                  nOUR                  S:X  a  SnOSnUR                  U5      $ )N)__add____radd__r   bool[pyarrow]boolean)r   r   rQ   	get_dtyper   strr   r)   r0   r[   bool_r   astype)rT   r   r   r   pointwise_resultr   cast_todtype_others           r    _cast_pointwise_result&TestStringArray._cast_pointwise_result   s    [",,s"34--G5?s5K5K",,u-QUK+{337K^^rvv%hhG]]i'%GG&&w//r"   c                V    [         R                  " U5      nU R                  X1US5        g )Nabc)r>   Series_compare_other)rT   r:   comparison_opr   s       r    test_compare_scalar#TestStringArray.test_compare_scalar   s!    iioC}e<r"   c                  > [        U" S5      5      R                  nU(       a[  UR                  [        R                  L a>  UR
                  S:X  a.  [        R                  R                  SS9nUR                  U5        [        TU ]-  U5        g )Nr.   pythonmThe pointwise operation result will be inferred to string[nan, pyarrow], which does not match the input dtyperm   )nextr   r)   r>   r?   r   r   markxfailapplymarkerrO   test_combine_add)rT   data_repeatedr_   r'   r   r   rU   s         r    r    TestStringArray.test_combine_add   sr    ]1%&,,^^ruu$%--8*C;;$$M % D % /r"   c                "  > UR                   nU(       al  US:X  af  UR                  [        R                  L aI  [        (       d  UR
                  S:X  a.  [        R                  R                  SS9nUR                  U5        [        TU ]-  X5        g )Nr   r   r   rm   )r   r)   r>   r?   r   r   r   r   r   r   rO   test_arith_series_with_array)rT   r:   all_arithmetic_operatorsr_   r'   r   r   rU   s          r    r   ,TestStringArray.test_arith_series_with_array   sw     

(J6"%%' : ;;$$M % D %,TLr"   rt   )r   r   returnz4type[Exception] | tuple[type[Exception], ...] | None)r   z	pd.Seriesr   r   r   bool)r   r   )__name__
__module____qualname____firstlineno__rP   rX   r^   rh   rp   rv   ry   r|   r   r   r   r   r   r   r   r   r   __static_attributes____classcell__)rU   s   @r    rK   rK   f   so    8&
3? 
%
3
:

6	=6
90=
0M Mr"   rK   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 )Nrl   rm   )r   r	   r   ro   ru   s     r    arrow_not_supported Test2DCompat.arrow_not_supported  s"    d,--KKPQ .r"   rt   N)r   r   r   r   r   fixturer   r   rt   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.rc   )taker>   r?   r   r   re   
ValueErrorsearchsorted)rE   	as_seriesbcar   msgs          r     test_searchsorted_with_na_raisesr     sl    GA!


	
*CeeCGiin	0  
z	- 
.	-	-s   $A??
Bc                   [         R                  " SS/U S9n[         R                  " SS/[        S9nX:H  n[         R                  " SS/[        S9nU R                  S:X  a/  U R
                  [         R                  L a  UR                  S5      nO>U R                  S	:X  a.  U R
                  [         R                  L a  UR                  S
5      n[        R                  " X45        g )Nr   r   r/   r.   FTr   r   r   r   )
r>   r   objectr   r   r)   r?   r   rQ   assert_series_equal)r   r   mixedr`   r   s        r    test_mixed_object_comparisonr     s    
))S#Je
,CIIq#hf-E\Fyy%d3H}} U^^ruu%<??9-	)	#"%%(????36,r"   )+__doc__
__future__r   r5   typingr   numpyr0   r   pandas.compatr   pandas.core.dtypes.baser   pandasr>   pandas._testing_testingrQ   pandas.api.typesr   pandas.core.arraysr	   pandas.core.arrays.string_r   'pandas.tests.arrays.string_.test_stringr   pandas.tests.extensionr   r!   r   r   r   r:   rA   rE   rG   rI   ExtensionTestsrK   Dim2CompatTestsr   r   r   rt   r"   r    <module>r     s!   #     % 9   , / 2 Q '"" e}% & ; ;
 + + + + + +
 + +
 + +WMd)) WMtR4'' R"-r"   