
    Pi+                       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	m
Z
 ddlm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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)HAS_PYARROW)StorageExtensionDtypeis_string_dtype)ArrowStringArrayStringDtype)string_dtype_highest_priority)basec                2   |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 | 	                    |          S )Npyarrow   )
dtypestoragepytestimportorskip	_pa_arraylenchunked_arraychunks
num_chunks_from_pyarrow_array)arrchunkedpaarrow_arraysplits        v/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/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&&&&"";///    TF)paramsc                    | j         S N)param)requests    r    r   r   7   s
    =r"   c                .    | \  }}t          ||          S )N)r   na_valuer
   )string_dtype_argumentsr   r)   s      r    r   r   <   s    .GXw::::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   
   )sizer      r   )
nprandomdefault_rngchoiceliststringascii_lettersconstruct_array_type_from_sequencer!   )r   r   stringsr   s       r    datar:   B   s    i##A&&--d63G.H.Hr-RRG
!*

"
")''**11$v7K2L2LSU1VV !*

"
" 
$
$
&
&
5
5gU
5
K
KCS'***r"   c                    |                                                      t          j        dg|           }t	          ||          S )zLength 2 array with [NA, Valid]Ar/   r7   r8   pdNAr!   r   r   r   s      r    data_missingrA   L   s>     
$
$
&
&
5
5rucl%
5
P
PCS'***r"   c                x    |                                                      g d|           }t          ||          S )N)BCr<   r/   )r7   r8   r!   r@   s      r    data_for_sortingrE   S   s:    

$
$
&
&
5
5oooU
5
S
SCS'***r"   c                    |                                                      dt          j        dg|           }t	          ||          S )NrC   r<   r/   r=   r@   s      r    data_missing_for_sortingrG   Y   s?    

$
$
&
&
5
5sBE36Gu
5
U
UCS'***r"   c           
         |                                                      ddt          j        t          j        ddddg|           }t	          ||          S )NrC   r<   rD   r/   r=   r@   s      r    data_for_groupingrI   _   sT    

$
$
&
&
5
5	c25"%c34E 6  C S'***r"   c                       e Zd Z fdZ fdZd Z fdZ fdZ fdZd Z	 fdZ
 fd	Zd
 Zd Zd ZddZddZddZddZd Z fdZ fdZ fdZ fdZ xZS ) TestStringArrayc                    t          t           |d                              j        }|j        dk    r|j        t
          j        u rd| _        nd| _        t                      	                    |          S )Nr   r   bool[pyarrow]bool)
nextiterr   r   r)   r>   r?   _combine_le_expected_dtypesupertest_combine_le)selfdata_repeatedr   	__class__s      r    rS   zTestStringArray.test_combine_leh   sk    T--**++,,2=I%%%.BE*A*A.=D++.4D+ww&&}555r"   c                    t                                          |           |j        t          j        u r|d|j         dk    sJ d S |j        dk    r|dk    sJ d S d S )Nzstring[]r   str)rR   test_eq_with_strr)   r>   r?   r   )rT   r   rV   s     r    rZ   z TestStringArray.test_eq_with_strp   sv      '''>RU""6em666666666]i''E>>>> ('!>r"   c                (    t          |          sJ d S r%   r   )rT   r   s     r    test_is_not_string_typez'TestStringArray.test_is_not_string_typey   s     u%%%%%%%r"   c                    |j         t          j        u r1|s/t          |                              |j                  }|du sJ d S t                                          |           d S )NF)r)   r0   nantypeis_dtypenamerR   test_is_dtype_from_name)rT   r   using_infer_stringresultrV   s       r    rb   z'TestStringArray.test_is_dtype_from_name~   sb    >RV##,>#%[[))%*55FU??????GG++E22222r"   c                   |j         t          j        u rR|sPt          j        t
          d          5  |                    |j                   d d d            d S # 1 swxY w Y   d S t                      	                    |           d S )Nz Cannot construct a 'StringDtype'match)
r)   r0   r^   r   raises	TypeErrorconstruct_from_stringra   rR   #test_construct_from_string_own_name)rT   r   rc   rV   s      r    rk   z3TestStringArray.test_construct_from_string_own_name   s    >RV##,>#y0RSSS 8 8++EJ7778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 GG77>>>>>s   AA!Ac                    |j         j        dk    rt          j        d           t	                                          |           d S Nr   /2D support not implemented for ArrowStringArrayreason)r   r   r   skiprR   	test_viewrT   r:   rV   s     r    rr   zTestStringArray.test_view   sE    :**KPQQQQ$r"   c                    d S r%    rT   r:   s     r    test_from_dtypezTestStringArray.test_from_dtype   s    r"   c                    |j         j        dk    rt          j        d           t	                                          |           d S rm   )r   r   r   rq   rR   test_transposers   s     r    ry   zTestStringArray.test_transpose   sE    :**KPQQQQt$$$$$r"   c                    |j         j        dk    rt          j        d           t	                                          |           d S rm   )r   r   r   rq   rR   test_setitem_preserves_viewsrs   s     r    r{   z,TestStringArray.test_setitem_preserves_views   sE    :**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)rT   rA   rd   expecteds       r    test_dropna_arrayz!TestStringArray.test_dropna_array   s8    $$&&$
'99999r"   c                    ||                                           }|d         }|                    |          }||usJ t          j        ||           d S )Nr   )isnafillnar~   r   )rT   r:   validrd   s       r    test_fillna_no_op_returns_copyz.TestStringArray.test_fillna_no_op_returns_copy   sZ    TYY[[L!QU##T!!!!
'55555r"   c                   |                                 }d|_        |                    |d                   }|d         |d         k    sJ t          j        ||           |j        j        dk    r0|                    |d                   }|d         |d         k    sJ nPt          j        t          d          5  |                    |d         d           d d d            n# 1 swxY w Y   t          j        ||           d S )	NTr.   r   r   zCannot modify read-only arrayrf   F)copy)
r   	_readonlyr   r~   r   r   r   r   rh   
ValueError)rT   rA   r:   rd   s       r    test_fillna_readonlyz$TestStringArray.test_fillna_readonly   s>     "" \!_--ayLO++++
'l;;; :**[[a11F!9Q/////z1PQQQ 9 9LO%8889 9 9 9 9 9 9 9 9 9 9 9 9 9 9
'l;;;;;s   ;C%%C),C)op_namerY   return4type[Exception] | tuple[type[Exception], ...] | Nonec                H    |dv rt           S |dv rt           S |dv rt           S d S )N)__mod____rmod__
__divmod____rdivmod____pow____rpow__)__mul____rmul__)__truediv____rtruediv____floordiv____rfloordiv____sub____rsub__)ri   )rT   r   objothers       r    _get_expected_exceptionz'TestStringArray._get_expected_exception   sO      
 
 
 /// 
 
 
 tr"   ser	pd.SeriesrN   c                B    |dv p|j         j        t          j        u o|dv S )N)minmaxsum)anyall)r   r)   r0   r^   rT   r   r   s      r    _supports_reductionz#TestStringArray._supports_reduction   s1    // 
I"&( *>)	
r"   c                B    t          |j        t                    sJ |dv S )N)cummincummaxcumsum)
isinstancer   r   r   s      r    _supports_accumulationz&TestStringArray._supports_accumulation   s'    #)%:;;;;;888r"   c                   t          t          t          j        |                    }|dv rS|}t	          |t
                    st          j        |          nd }t	          |t                    rt          ||          }n0|j        t          j	        u rt          j
        }n|j        dk    rd}nd}|                    |          S )N)__add____radd__r   rM   boolean)r   r   r~   	get_dtyper   rY   r   r)   r0   r^   bool_r   astype)rT   r   r   r   pointwise_resultr   cast_todtype_others           r    _cast_pointwise_resultz&TestStringArray._cast_pointwise_result   s    [",s"3"344---G5?s5K5KU",u---QUK+{33 L7{KK^rv%%hGG]i''%GGG&&w///r"   c                ^    t          j        |          }|                     |||d           d S )Nabc)r>   Series_compare_other)rT   r:   comparison_opr   s       r    test_compare_scalarz#TestStringArray.test_compare_scalar   s/    iooC}e<<<<<r"   c                L    t                                          ||           d S r%   )rR   test_groupby_extension_apply)rT   rI   groupby_apply_oprV   s      r    r   z,TestStringArray.test_groupby_extension_apply   s%    ,,->@PQQQQQr"   c                   t           |d                    j        }|s@|j        dk    r5t          j                            d          }|                    |           t                                          |           d S )Nr.   pythonmThe pointwise operation result will be inferred to string[nan, pyarrow], which does not match the input dtypero   )	rO   r   r   r   markxfailapplymarkerrR   test_combine_add)rT   rU   rc   r'   r   r   rV   s         r    r   z TestStringArray.test_combine_add   s    ]]1%%&&,! 	&emx&?&?;$$M %  D %%%  /////r"   c                   |j         }|r`|dk    rZ|j        t          j        u rGt          s|j        dk    r5t          j                            d          }|	                    |           t                                          ||           d S )Nr   r   r   ro   )r   r)   r>   r?   r   r   r   r   r   r   rR   test_arith_series_with_array)rT   r:   all_arithmetic_operatorsrc   r'   r   r   rV   s          r    r   z,TestStringArray.test_arith_series_with_array  s     
	&(J66"%'' ( % : : ;$$M %  D %%%,,T3KLLLLLr"   c                    |sE|j         j        dk    r5t          j                            d          }|                    |           t                                          |           d S )Nr   zCasts to objectro   )r   r   r   r   r   r   rR   8test_loc_setitem_with_expansion_preserves_ea_index_dtype)rT   r:   r'   rc   r   rV   s        r    r   zHTestStringArray.test_loc_setitem_with_expansion_preserves_ea_index_dtype  sg     " 	&dj&8H&D&D;$$,=$>>D%%%HHNNNNNr"   )r   rY   r   r   )r   r   r   rY   r   rN   )r   rY   )__name__
__module____qualname__rS   rZ   r\   rb   rk   rr   rw   ry   r{   r   r   r   r   r   r   r   r   r   r   r   r   __classcell__)rV   s   @r    rK   rK   g   s       6 6 6 6 6" " " " "& & &
3 3 3 3 3? ? ? ? ?         
  % % % % %
3 3 3 3 3
: : :
6 6 6< < <&   6
 
 
 
9 9 9 90 0 0 0= = =R R R R R0 0 0 0 0M M M M M$O O O O O O O O Or"   rK   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 )Nrn   ro   )r   r	   r   rq   rv   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   ru   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.rf   )taker>   r?   r   r   rh   r   searchsorted)rE   	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   r5   typingr   numpyr0   r   pandas.compatr   pandas.core.dtypes.baser   pandasr>   pandas._testing_testingr~   pandas.api.typesr   pandas.core.arraysr	   pandas.core.arrays.string_r   #pandas.tests.arithmetic.test_stringr   pandas.tests.extensionr   r!   r   r   r   r:   rA   rE   rG   rI   ExtensionTestsrK   Dim2CompatTestsr   r   ru   r"   r    <module>r      sg     # " " " " "             % % % % % % 9 9 9 9 9 9           , , , , , , / / / / / / 2 2 2 2 2 2 M M M M M M ' ' ' ' ' '0 0 0" e}%%%  &% ; ; ;
 + + + + + + + + +
 + + +
 + + +uO uO uO uO uOd) uO uO uOpR R R R R4' R R R    r"   