
    g                       d Z ddlmZ ddlZddlm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dlmZ d	 Z ej        d
dg          d             Zej        d             Zej        d             Zej        d             Zej        d             Zej        d             Zej        d             Z G d dej                  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/`.

    )annotationsN)castis_string_dtype)ArrowStringArrayStringDtype)basec                8   |s| S | j         j        dk    r| S t          j        d          }| j        }t          |          dz  }|                    g |d |         j        ||d          j                  }|j        dk    sJ  t          |           |          S )Npyarrow   )
dtypestoragepytestimportorskip	_pa_arraylenchunked_arraychunks
num_chunkstype)arrchunkedpaarrow_arraysplits        n/var/www/html/nodeJS/PythonScripts/venv3.11/lib/python3.11/site-packages/pandas/tests/extension/test_string.pymaybe_split_arrayr       s     
		i	'	'
		Y	'	'B-K!E""B+fuf

$B{566':'AB K !Q&&&&499[!!!    TF)paramsc                    | j         S N)param)requests    r   r   r   1   s
    =r   c                "    t          |           S )N)r   r   )string_storages    r   r   r   6   s    ~....r   c                   t           j                            d                              t	          t
          j                  d          }|d         |d         k    r]t           j                            d                              t	          t
          j                  d          }|d         |d         k    ]|                                                     ||           }t          ||          S )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    i##A&&--d63G.H.Hs-SSG
!*

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

"
" 
$
$
&
&
5
5gU
5
K
KCS'***r   c                    |                                                      t          j        dg|           }t	          ||          S )zLength 2 array with [NA, Valid]Ar+   r3   r4   pdNAr   r   r   r   s      r   data_missingr=   E   s>     
$
$
&
&
5
5rucl%
5
P
PCS'***r   c                x    |                                                      g d|           }t          ||          S )N)BCr8   r+   )r3   r4   r   r<   s      r   data_for_sortingrA   L   s:    

$
$
&
&
5
5oooU
5
S
SCS'***r   c                    |                                                      dt          j        dg|           }t	          ||          S )Nr?   r8   r+   r9   r<   s      r   data_missing_for_sortingrC   R   s?    

$
$
&
&
5
5sBE36Gu
5
U
UCS'***r   c           
         |                                                      ddt          j        t          j        ddddg|           }t	          ||          S )Nr?   r8   r@   r+   r9   r<   s      r   data_for_groupingrE   X   sT    

$
$
&
&
5
5	c25"%c34E 6  C S'***r   c                       e Zd Z fdZd Z fdZd Z fdZ fdZd Z	d Z
ddZddZddZd Zej                            d           fd            Z xZS )TestStringArrayc                l    |d|j          dk    sJ t                                          |           d S )Nzstring[])r   supertest_eq_with_str)selfr   	__class__s     r   rK   z TestStringArray.test_eq_with_stra   s@    2%-2222222  '''''r   c                (    t          |          sJ d S r"   r   )rL   r   s     r   test_is_not_string_typez'TestStringArray.test_is_not_string_typee   s     u%%%%%%%r   c                    |j         j        |v rt          j        d           t	                                          |           d S Nz/2D support not implemented for ArrowStringArray)reason)r   r   r   skiprJ   	test_viewrL   r6   r$   arrow_string_storagerM   s       r   rT   zTestStringArray.test_viewj   sF    :!555KPQQQQ$r   c                    d S r"    rL   r6   s     r   test_from_dtypezTestStringArray.test_from_dtypeo   s    r   c                    |j         j        |v rt          j        d           t	                                          |           d S rQ   )r   r   r   rS   rJ   test_transposerU   s       r   r\   zTestStringArray.test_transposes   sF    :!555KPQQQQt$$$$$r   c                    |j         j        |v rt          j        d           t	                                          |           d S rQ   )r   r   r   rS   rJ   test_setitem_preserves_viewsrU   s       r   r^   z,TestStringArray.test_setitem_preserves_viewsx   sF    :!555KPQQQQ,,T22222r   c                j    |                                 }|dg         }t          j        ||           d S )Nr*   )dropnatmassert_extension_array_equal)rL   r=   resultexpecteds       r   test_dropna_arrayz!TestStringArray.test_dropna_array}   s8    $$&&$
'99999r   c                   ||                                           }|d         }|                    |          }||usJ t          j        ||           |                    d          }||usJ t          j        ||           d S )Nr   backfill)method)isnafillnara   rb   )rL   r6   validrc   s       r   test_fillna_no_op_returns_copyz.TestStringArray.test_fillna_no_op_returns_copy   s    TYY[[L!QU##T!!!!
'555J//T!!!!
'55555r   op_namestrreturntype[Exception] | Nonec                v   |dv rt          |t          j                  r5t          t          t          j        |                    j        dv rt          S t          |t          j                  r5t          t          t          j        |                    j        dv rt          S t          S |dv r<t          t          t          j        |                    j        dv rt          S t          S |dv rt          S |dv r@t          t          t          j        |                    j        dv rdd l
}|j        S t          S d S )N)
__divmod____rdivmod__)r   pyarrow_numpy)__mod____rmod____pow____rpow__)__mul____rmul__)__truediv____rtruediv____floordiv____rfloordiv____sub____rsub__r   )
isinstancer:   Seriesr   r	   ra   	get_dtyper   NotImplementedError	TypeErrorr   ArrowNotImplementedError)rL   rm   objotherr   s        r   _get_expected_exceptionz'TestStringArray._get_expected_exception   s`    333#ry)) +dR\#../ / / / +*E29-- +$R\%003 3 3 3 +*FFFKc!2!233; @   +*/// 
 
 
 Kc!2!233; @   %$$$ 22tr   ser	pd.Seriesboolc                2    |dv p|j         j        dk    o|dv S )N)minmaxrt   )anyall)r   r   )rL   r   rm   s      r   _supports_reductionz#TestStringArray._supports_reduction   s.    ~% *y O3 *>)	
r   c                    t          t          t          j        |                    }|dv r|}n(|j        dk    rd}n|j        dk    rt
          j        }nd}|                    |          S )N)__add____radd__r   zboolean[pyarrow]rt   boolean)r   r	   ra   r   r   r,   bool_astype)rL   rm   r   r   pointwise_resultr   cast_tos          r   _cast_pointwise_resultz&TestStringArray._cast_pointwise_result   sq    [",s"3"344---GG]i''(GG]o--hGGG&&w///r   c                ^    t          j        |          }|                     |||d           d S )Nabc)r:   r   _compare_other)rL   r6   comparison_opr   s       r   test_compare_scalarz#TestStringArray.test_compare_scalar   s/    iooC}e<<<<<r   z4ignore:Falling back:pandas.errors.PerformanceWarningc                L    t                                          ||           d S r"   )rJ   test_groupby_extension_apply)rL   rE   groupby_apply_oprM   s      r   r   z,TestStringArray.test_groupby_extension_apply   s%    ,,->@PQQQQQr   )rm   rn   ro   rp   )r   r   rm   rn   ro   r   )rm   rn   )__name__
__module____qualname__rK   rO   rT   rZ   r\   r^   re   rl   r   r   r   r   r   markfilterwarningsr   __classcell__)rM   s   @r   rG   rG   `   sL       ( ( ( ( (& & &
         
  % % % % %
3 3 3 3 3
: : :

6 
6 
61 1 1 1f
 
 
 

0 
0 
0 
0= = = [ VWWR R R R XWR R R R Rr   rG   c                  B    e Zd Z ej        d          d             ZdS )Test2DCompatT)autousec                ^    t          |t                    rt          j        d           d S d S rQ   )r   r   r   rS   rY   s     r   arrow_not_supportedz Test2DCompat.arrow_not_supported   s<    d,-- 	RKPQQQQQQ	R 	Rr   N)r   r   r   r   fixturer   rX   r   r   r   r      sB        V^D!!!R R "!R R Rr   r   c                    | \  }}}|                      g d          }t          j        |d<   |rt          j        |          }d}t	          j        t          |          5  |                    |           d d d            d S # 1 swxY w Y   d S )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      s    GAq!


			
*
*CeCG inn	0  
z	-	-	-                   s    BB
B)$__doc__
__future__r   r1   typingr   numpyr,   r   pandasr:   pandas._testing_testingra   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   rX   r   r   <module>r      s1    # " " " " "                       , , , , , , / / / / / / 2 2 2 2 2 2 ' ' ' ' ' '" " "" e}%%%  &% / / / + + + + + + + + +
 + + +
 + + +zR zR zR zR zRd) zR zR zRzR R R R R4' R R R    r   