§
    yhþhe'  ã                  óø  — 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„ 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                ó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        úY/var/www/histauto/venv/lib/python3.11/site-packages/pandas/tests/extension/test_string.pyÚmaybe_split_arrayr!   %   s³   € Øð Øˆ
Ø	ŒÔ	˜iÒ	'Ð	'Øˆ
å	Ô	˜YÑ	'Ô	'€Bà”-€KÝ�ÑÔ Ñ!€EØ×"Ò"ØBˆ+�f�u�fÔ
Ô
$ÐB {°5°6°6Ô':Ô'AÐBñô €Kð Ô! QÒ&Ð&Ð&Ð&Ø�4�‰9Œ9�[Ñ!Ô!Ð!ó    TF)Úparamsc                ó   — | j         S ©N)Úparam)Úrequests    r    r   r   6   s
   € àŒ=Ðr"   c                ó.   — | \  }}t          ||¬¦  «        S )N)r   Úna_valuer
   )Ústring_dtype_argumentsr   r)   s      r    r   r   ;   s   € à.Ñ€GˆXÝ˜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   é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Ç   € åŒi×#Ò# AÑ&Ô&×-Ò-­dµ6Ô3GÑ.HÔ.HÈsÐ-ÑSÔS€GØ
�!Œ*˜ œ
Ò
"Ð
"Ý”)×'Ò'¨Ñ*Ô*×1Ò1µ$µvÔ7KÑ2LÔ2LÐSVÐ1ÑWÔWˆð �!Œ*˜ œ
Ò
"Ð
"ð ×
$Ò
$Ñ
&Ô
&×
5Ò
5°gÀUÐ
5Ñ
KÔ
K€CÝ˜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   K   s>   € ð ×
$Ò
$Ñ
&Ô
&×
5Ò
5µr´u¸c°lÈ%Ð
5Ñ
PÔ
P€CÝ˜S 'Ñ*Ô*Ð*r"   c                óx   — |                       ¦   «                              g d¢| ¬¦  «        }t          ||¦  «        S )N)ÚBÚCr<   r/   )r7   r8   r!   r@   s      r    Údata_for_sortingrE   R   s:   € à
×
$Ò
$Ñ
&Ô
&×
5Ò
5°o°o°oÈUÐ
5Ñ
SÔ
S€CÝ˜S 'Ñ*Ô*Ð*r"   c                óŽ   — |                       ¦   «                              dt          j        dg| ¬¦  «        }t	          ||¦  «        S )NrC   r<   r/   r=   r@   s      r    Údata_missing_for_sortingrG   X   s?   € à
×
$Ò
$Ñ
&Ô
&×
5Ò
5°s½B¼EÀ3Ð6GÈuÐ
5Ñ
UÔ
U€CÝ˜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Ø	ˆc•2”5�"œ%  c¨3°Ð4¸Eð 6ñ ô €Cõ ˜S 'Ñ*Ô*Ð*r"   c                  ó¢   ‡ — e Z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d„Zdd„Zdd„Zdd„Zd„ Zˆ fd„Zˆ fd„Zˆ xZS )ÚTestStringArrayc                ó&  •— t          ¦   «                              |¦  «         |j        t          j        u r|d|j        › d�k    sJ ‚d S |j        dk    r=t          j        t          ¦  «        5  |dk    sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S d S )Nzstring[ú]r   zstring[pyarrow_numpy])	ÚsuperÚtest_eq_with_strr)   r>   r?   r   ÚtmÚassert_produces_warningÚFutureWarning)Úselfr   Ú	__class__s     €r    rO   z TestStringArray.test_eq_with_strg   sî   ø€ Ý‰Œ× Ò  Ñ'Ô'Ð'àŒ>�RœUÐ"Ð"àÐ6 e¤mÐ6Ð6Ð6Ò6Ð6Ð6Ð6Ð6Ð6ØŒ]˜iÒ'Ð'ÝÔ+­MÑ:Ô:ð 8ð 8ØÐ 7Ò7Ð7Ð7Ð7Ð7ð8ð 8ð 8ñ 8ô 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8øøøð 8ð 8ð 8ð 8ð 8ð 8ð (Ð's   Á-	BÂBÂBc                ó(   — t          |¦  «        sJ ‚d S r%   r   )rS   r   s     r    Útest_is_not_string_typez'TestStringArray.test_is_not_string_typeq   s   € õ ˜uÑ%Ô%Ð%Ð%Ð%Ð%Ð%r"   c                óÒ   •— |j         t          j        u r1|s/t          |¦  «                             |j        ¦  «        }|du sJ ‚d S t          ¦   «                              |¦  «         d S )NF)r)   r0   Únanr   Úis_dtypeÚnamerN   Útest_is_dtype_from_name)rS   r   Úusing_infer_stringÚresultrT   s       €r    r[   z'TestStringArray.test_is_dtype_from_namev   sb   ø€ ØŒ>�RœVÐ#Ð#Ð,>Ð#Ý˜%‘[”[×)Ò)¨%¬*Ñ5Ô5ˆFØ˜U�?�?�?�?�?�?å‰GŒG×+Ò+¨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   rX   r   ÚraisesÚ	TypeErrorÚconstruct_from_stringrZ   rN   Ú#test_construct_from_string_own_name)rS   r   r\   rT   s      €r    rd   z3TestStringArray.test_construct_from_string_own_name}   sÈ   ø€ ØŒ>�RœVÐ#Ð#Ð,>Ð#Ý”�yÐ0RÐSÑSÔSð 8ð 8Ø×+Ò+¨E¬JÑ7Ô7Ð7ð8ð 8ð 8ñ 8ô 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8øøøð 8ð 8ð 8ð 8ð 8ð 8õ ‰GŒG×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   ÚskiprN   Ú	test_view©rS   r:   rT   s     €r    rk   zTestStringArray.test_view„   sE   ø€ ØŒ:Ô Ò*Ð*ÝŒKÐPÐQÑQÔQÐQÝ‰Œ×Ò˜$ÑÔÐÐÐr"   c                ó   — d S r%   © ©rS   r:   s     r    Útest_from_dtypezTestStringArray.test_from_dtype‰   s   € àˆr"   c                ó”   •— |j         j        dk    rt          j        d¬¦  «         t	          ¦   «                              |¦  «         d S rf   )r   r   r   rj   rN   Útest_transposerl   s     €r    rr   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 rf   )r   r   r   rj   rN   Útest_setitem_preserves_viewsrl   s     €r    rt   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.   )ÚdropnarP   Úassert_extension_array_equal)rS   rA   r]   Ú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ÚfillnarP   rw   )rS   r:   Úvalidr]   s       r    Útest_fillna_no_op_returns_copyz.TestStringArray.test_fillna_no_op_returns_copyœ   s‘   € Ø�T—Y’Y‘[”[�LÔ!ˆà�Q”ˆØ—’˜UÑ#Ô#ˆØ˜TÐ!Ð!Ð!Ð!Ý
Ô'¨°Ñ5Ô5Ð5à—’ J�Ñ/Ô/ˆØ˜TÐ!Ð!Ð!Ð!Ý
Ô'¨°Ñ5Ô5Ð5Ð5Ð5r"   Úop_nameÚstrÚreturnú4type[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__)rb   )rS   r�   ÚobjÚothers       r    Ú_get_expected_exceptionz'TestStringArray._get_expected_exception¨   sO   € ð ð 
ð 
ð 
õ ÐØÐ/Ð/Ð/åÐØð 
ð 
ð 
õ Ðàˆtr"   Úserú	pd.SeriesÚboolc                óB   — |dv p|j         j        t          j        u o|dv S )N)ÚminÚmaxÚsum)ÚanyÚall)r   r)   r0   rX   ©rS   r—   r�   s      r    Ú_supports_reductionz#TestStringArray._supports_reductionÃ   s1   € àÐ,Ð,ð *ØŒyÔ!¥R¤VÐ+ð *Ø˜>Ð)ð	
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   úbool[pyarrow]Úboolean)r   r   rP   Ú	get_dtyper¦   r‚   r   r)   r0   rX   Úbool_r   Úastype)rS   r�   r”   r•   Úpointwise_resultr   Úcast_toÚdtype_others           r    Ú_cast_pointwise_resultz&TestStringArray._cast_pointwise_resultÎ   s¸   € Ý•[¥"¤,¨sÑ"3Ô"3Ñ4Ô4ˆØÐ-Ð-Ð-ØˆGÝ5?ÀÅsÑ5KÔ5KÐU�"œ, uÑ-Ô-Ð-ÐQUˆKÝ˜+¥{Ñ3Ô3ð LÝ7¸¸{ÑKÔK�øØŒ^�rœvÐ%Ð%Ý”hˆGˆGØŒ]˜iÒ'Ð'Ø%ˆGˆGàˆGØ×&Ò& wÑ/Ô/Ð/r"   c                ó^   — t          j        |¦  «        }|                      |||d¦  «         d S )NÚabc)r>   ÚSeriesÚ_compare_other)rS   r:   Úcomparison_opr—   s       r    Útest_compare_scalarz#TestStringArray.test_compare_scalarÝ   s/   € ÝŒi˜‰oŒoˆØ×Ò˜C  }°eÑ<Ô<Ð<Ð<Ð<r"   c                ó.  •— t           |d¦  «        ¦  «        j        }|rS|j        t          j        u r@|j        dk    r5t          j                             d¬¦  «        }| 	                    |¦  «         t          ¦   «                              |¦  «         d S )Nr.   ÚpythonúmThe pointwise operation result will be inferred to string[nan, pyarrow], which does not match the input dtyperh   )Únextr   r)   r>   r?   r   r   ÚmarkÚxfailÚapplymarkerrN   Útest_combine_add)rS   Údata_repeatedr\   r'   r   r¾   rT   s         €r    rÁ   z TestStringArray.test_combine_addá   s–   ø€ Ý�]�] 1Ñ%Ô%Ñ&Ô&Ô,ˆØð 	&ØŒ^�rœuÐ$Ð$¨%¬-¸8Ò*CÐ*Cå”;×$Ò$ð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¼   rh   )r   r)   r>   r?   r   r   r   r¾   r¿   rÀ   rN   Útest_arith_series_with_array)rS   r:   Úall_arithmetic_operatorsr\   r'   r   r¾   rT   s          €r    rÄ   z,TestStringArray.test_arith_series_with_arrayí   sž   ø€ ð ”
ˆàð	&à(¨JÒ6Ð6Ø”¥"¤%Ð'Ð'Ýð (Ø %¤°Ò :Ð :õ ”;×$Ò$ðMð %ñ ô ˆDð ×Ò Ñ%Ô%Ð%Ý‰Œ×,Ò,¨TÐ3KÑLÔLÐLÐLÐLr"   )r�   r‚   rƒ   r„   )r—   r˜   r�   r‚   rƒ   r™   )r�   r‚   )Ú__name__Ú
__module__Ú__qualname__rO   rV   r[   rd   rk   rp   rr   rt   ry   r€   r–   r¡   r§   r³   r¹   rÁ   rÄ   Ú__classcell__)rT   s   @r    rK   rK   f   s‹  ø€ € € € € ð8ð 8ð 8ð 8ð 8ð&ð &ð &ð
3ð 3ð 3ð 3ð 3ð?ð ?ð ?ð ?ð ?ð ð  ð  ð  ð  ð
ð ð ð%ð %ð %ð %ð %ð
3ð 3ð 3ð 3ð 3ð
:ð :ð :ð

6ð 
6ð 
6ðð ð ð ð6
ð 
ð 
ð 
ð9ð 9ð 9ð 9ð0ð 0ð 0ð 0ð=ð =ð =ð
0ð 
0ð 
0ð 
0ð 
0ðMð Mð Mð Mð Mð Mð Mð Mð M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 )Nrg   rh   )r¦   r	   r   rj   ro   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Î   rn   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.r_   )Útaker>   r?   r¶   r   ra   Ú
ValueErrorÚsearchsorted)rE   Ú	as_seriesÚbÚcÚar   Úmsgs          r    Ú test_searchsorted_with_na_raisesrÚ     sÝ   € à�G€A€qˆ!Ø
×
Ò
 	 	 	Ñ
*Ô
*€CÝŒe€Cˆ�Gàð ÝŒi˜‰nŒnˆð	0ð õ 
Œ•z¨Ð	-Ñ	-Ô	-ð ð Ø×Ò˜ÑÔÐðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   Á BÂBÂ
Bc                ó®  — t          j        ddg| ¬¦  «        }t          j        ddgt          ¬¦  «        }||k    }t          j        ddgt          ¬¦  «        }| j        dk    r)| j        t           j        u r|                     d¦  «        }n3| j        d	k    r(| j        t           j        u r|                     d
¦  «        }t          j	        ||¦  «         d S )NrØ   rÖ   r/   r.   FTr»   r¬   r   r«   )
r>   r¶   Úobjectr™   r   r)   r?   r¯   rP   Úassert_series_equal)r   r—   Úmixedr]   rx   s        r    Útest_mixed_object_comparisonrß     sÆ   € å
Œ)�S˜#�J eÐ
,Ñ
,Ô
,€CåŒI�q˜#�h¥fÐ-Ñ-Ô-€Eà�EŠ\€FÝŒy˜% ˜­dÐ3Ñ3Ô3€HØ„}˜Ò Ð  U¤^µr´uÐ%<Ð%<Ø—?’? 9Ñ-Ô-ˆˆØ	Œ˜)Ò	#Ð	#¨¬½"¼%Ð(?Ð(?Ø—?’? ?Ñ3Ô3ˆåÔ˜6 8Ñ,Ô,Ð,Ð,Ð,r"   )+Ú__doc__Ú
__future__r   r5   Útypingr   Únumpyr0   r   Úpandas.compatr   Úpandas.core.dtypes.baser   Úpandasr>   Úpandas._testingÚ_testingrP   Ú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ß   rn   r"   r    ú<module>rð      sv  ððð ð #Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ø €€€à %Ð %Ð %Ð %Ð %Ð %à 9Ð 9Ð 9Ð 9Ð 9Ð 9à Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø /Ð /Ð /Ð /Ð /Ð /Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø QÐ QÐ QÐ QÐ QÐ QØ 'Ð 'Ð 'Ð 'Ð 'Ð 'ð"ð "ð "ð" €„˜˜e�}Ð%Ñ%Ô%ðð ñ &Ô%ðð „ð;ð ;ñ „ð;ð
 „ð+ð +ñ „ð+ð „ð+ð +ñ „ð+ð „ð+ð +ñ „ð+ð
 „ð+ð +ñ „ð+ð
 „ð+ð +ñ „ð+ðWMð WMð WMð WMð WM�dÔ)ñ WMô WMð WMðtRð Rð Rð Rð R�4Ô'ñ Rô Rð Rðð ð ð"-ð -ð -ð -ð -r"   