Ë
    u™ãj7/  ã                  ó˜  — 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jJ                  «      Z& G d„ dejN                  «      Z(ejR                  jU                  dddg«      d„ «       Z+ejR                  jU                  dddg«      d„ «       Z,y) 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                ó@  — |s| S | j                   j                  dk7  r| S t        j                  d«      }| j                  }t        |«      dz  }|j                  g |d | j                  ¢||d  j                  ¢«      }|j                  dk(  sJ ‚| 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        úm/var/www/html/python-recuperauto-other/env/lib/python3.12/site-packages/pandas/tests/extension/test_string.pyÚmaybe_split_arrayr!   &   s§   € ÙØˆ
Ø	�‰×	Ñ	˜iÒ	'Øˆ
ä	×	Ñ	˜YÓ	'€Bà—-‘-€KÜ�Ó Ñ!€EØ×"Ñ"ØBˆ+�f�uÐ
×
$Ñ
$ÐB {°5°6Ð':×'AÑ'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   € à.Ñ€GˆXÜ˜w°Ô:Ð:r"   c                ó¦  — t         j                  j                  d«      j                  t	        t
        j                  «      d¬«      }|d   |d   k(  rSt         j                  j                  d«      j                  t	        t
        j                  «      d¬«      }|d   |d   k(  rŒS| j                  «       j                  || ¬«      }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‰i×#Ñ# AÓ&×-Ñ-¬d´6×3GÑ3GÓ.HÈrÐ-ÓR€GØ
�!‰*˜ ™
Ò
"Ü—)‘)×'Ñ'¨Ó*×1Ñ1´$´v×7KÑ7KÓ2LÐSUÐ1ÓVˆð �!‰*˜ ™
Ó
"ð ×
$Ñ
$Ó
&×
5Ñ
5°gÀUÐ
5Ó
K€CÜ˜S 'Ó*Ð*r"   c                ó|   — | j                  «       j                  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   s7   € ð ×
$Ñ
$Ó
&×
5Ñ
5´r·u±u¸c°lÈ%Ð
5Ó
P€CÜ˜S 'Ó*Ð*r"   c                ó`   — | j                  «       j                  g d¢| ¬«      }t        ||«      S )N)ÚBÚCr<   r/   )r7   r8   r!   r@   s      r    Údata_for_sortingrE   S   s-   € à
×
$Ñ
$Ó
&×
5Ñ
5²oÈUÐ
5Ó
S€CÜ˜S 'Ó*Ð*r"   c                ó~   — | j                  «       j                  dt        j                  dg| ¬«      }t	        ||«      S )NrC   r<   r/   r=   r@   s      r    Údata_missing_for_sortingrG   Y   s8   € à
×
$Ñ
$Ó
&×
5Ñ
5°s¼B¿E¹EÀ3Ð6GÈuÐ
5Ó
U€CÜ˜S 'Ó*Ð*r"   c           
     ó¤   — | j                  «       j                  ddt        j                  t        j                  ddddg| ¬«      }t	        ||«      S )NrC   r<   rD   r/   r=   r@   s      r    Údata_for_groupingrI   _   sM   € à
×
$Ñ
$Ó
&×
5Ñ
5Ø	ˆc”2—5‘5œ"Ÿ%™%  c¨3°Ð4¸Eð 6ó €Cô ˜S 'Ó*Ð*r"   c                  ó*  ‡ — e Zd Zdd„Zej
                  j                  dddg«      ˆ f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d„Zdd„Zdd„Zdd„Zˆ fd„Zˆ fd„Zˆ fd„Zˆ fd„Zˆ fd„Zˆ fd„Zˆ xZS )ÚTestStringArrayc                ó4   — |j                   j                  dk7  S )Nr   )r   r   ©Úselfr:   s     r    Ú_honors_copy_keywordz$TestStringArray._honors_copy_keywordh   s   € Ø�z‰z×!Ñ! YÑ.Ð.r"   Ú	na_actionNÚignorec                óº   •— |j                   j                  dk(  r1|s/|j                  t        j                  j                  d¬«      «       t        ‰| �  ||«       y )NÚpythonzYStringArray[python] _cast_pointwise_result does not re-wrap, going away with infer_string©Úreason)r   r   Úapplymarkerr   ÚmarkÚxfailÚsuperÚtest_map)rN   rA   rP   r'   Úusing_infer_stringÚ	__class__s        €r    rZ   zTestStringArray.test_mapk   sV   ø€ à×Ñ×%Ñ%¨Ò1Ñ:LØ×ÑÜ—‘×!Ñ!ðEð "ó ôô 	‰Ñ˜ yÕ1r"   c                óÞ   •— 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_dtyperY   Útest_combine_le)rN   Údata_repeatedr   r\   s      €r    rc   zTestStringArray.test_combine_lev   sX   ø€ Ü”T™-¨Ó*Ó+Ó,×2Ñ2ˆØ�=‰=˜IÒ%¨%¯.©.¼B¿E¹EÑ*AØ.=ˆDÕ+à.4ˆDÔ+Ü‰wÑ& }Ó5Ð5r"   c                ó¶   •— t         ‰| �  |«       |j                  t        j                  u r|d|j
                  › d�k(  sJ ‚y |j
                  dk(  r|dk(  sJ ‚y y )Nzstring[ú]r   Ústr)rY   Útest_eq_with_strr)   r>   r?   r   )rN   r   r\   s     €r    rh   z TestStringArray.test_eq_with_str~   sX   ø€ Ü‰Ñ  Ô'à�>‰>œRŸU™UÑ"à˜g e§m¡m _°AÐ6Ò6Ð6Ñ6Ø�]‰]˜iÒ'Ø˜E’>Ð!‘>ð (r"   c                ó   — t        |«      sJ ‚y r%   r   )rN   r   s     r    Útest_is_not_string_typez'TestStringArray.test_is_not_string_type‡   s   € ô ˜uÔ%Ð%Ñ%r"   c                ó¶   •— |j                   t        j                  u r-|s+t        |«      j	                  |j
                  «      }|du sJ ‚y t        ‰| �  |«       y )NF)r)   r0   ÚnanÚtypeÚis_dtypeÚnamerY   Útest_is_dtype_from_name)rN   r   r[   Úresultr\   s       €r    rp   z'TestStringArray.test_is_dtype_from_nameŒ   sG   ø€ Ø�>‰>œRŸV™VÑ#Ñ,>Ü˜%“[×)Ñ)¨%¯*©*Ó5ˆFØ˜U‘?Ð"‘?ä‰GÑ+¨EÕ2r"   c                óø   •— |j                   t        j                  u rB|s@t        j                  t
        d¬«      5  |j                  |j                  «       d d d «       y t        ‰| �%  |«       y # 1 sw Y   y xY w)Nz Cannot construct a 'StringDtype'©Úmatch)
r)   r0   rl   r   ÚraisesÚ	TypeErrorÚconstruct_from_stringro   rY   Ú#test_construct_from_string_own_name)rN   r   r[   r\   s      €r    rx   z3TestStringArray.test_construct_from_string_own_name“   s`   ø€ Ø�>‰>œRŸV™VÑ#Ñ,>Ü—‘œyÐ0RÔSñ 8Ø×+Ñ+¨E¯J©JÔ7÷8ð 8ô ‰GÑ7¸Õ>÷8ð 8ús   »A0Á0A9c                ó‚   •— |j                   j                  dk(  rt        j                  d¬«       t        ‰| �  |«       y ©Nr   ú/2D support not implemented for ArrowStringArrayrT   )r   r   r   ÚskiprY   Ú	test_view©rN   r:   r\   s     €r    r}   zTestStringArray.test_viewš   s/   ø€ Ø�:‰:×Ñ Ò*Ü�K‰KÐPÕQÜ‰Ñ˜$Õr"   c                 ó   — y r%   © rM   s     r    Útest_from_dtypezTestStringArray.test_from_dtypeŸ   s   € àr"   c                ó‚   •— |j                   j                  dk(  rt        j                  d¬«       t        ‰| �  |«       y rz   )r   r   r   r|   rY   Útest_transposer~   s     €r    rƒ   zTestStringArray.test_transpose£   s/   ø€ Ø�:‰:×Ñ Ò*Ü�K‰KÐPÕQÜ‰Ñ˜tÕ$r"   c                ó‚   •— |j                   j                  dk(  rt        j                  d¬«       t        ‰| �  |«       y rz   )r   r   r   r|   rY   Útest_setitem_preserves_viewsr~   s     €r    r…   z,TestStringArray.test_setitem_preserves_views¨   s/   ø€ Ø�:‰:×Ñ Ò*Ü�K‰KÐPÕQÜ‰Ñ,¨TÕ2r"   c                ó\   — |j                  «       }|dg   }t        j                  ||«       y )Nr.   )ÚdropnaÚtmÚassert_extension_array_equal)rN   rA   rq   Úexpecteds       r    Útest_dropna_arrayz!TestStringArray.test_dropna_array­   s,   € Ø×$Ñ$Ó&ˆØ  Ñ$ˆÜ
×'Ñ'¨°Õ9r"   c                ó�   — ||j                  «           }|d   }|j                  |«      }||usJ ‚t        j                  ||«       y )Nr   )ÚisnaÚfillnarˆ   r‰   )rN   r:   Úvalidrq   s       r    Útest_fillna_no_op_returns_copyz.TestStringArray.test_fillna_no_op_returns_copy²   sI   € Ø�T—Y‘Y“[�LÑ!ˆà�Q‘ˆØ—‘˜UÓ#ˆØ˜TÑ!Ð!Ð!Ü
×'Ñ'¨°Õ5r"   c                ó@   — |dv rt         S |dv rt         S |dv rt         S y )N)Ú__mod__Ú__rmod__Ú
__divmod__Ú__rdivmod__Ú__pow__Ú__rpow__)Ú__mul__Ú__rmul__)Ú__truediv__Ú__rtruediv__Ú__floordiv__Ú__rfloordiv__Ú__sub__Ú__rsub__)rv   )rN   Úop_nameÚobjÚothers       r    Ú_get_expected_exceptionz'TestStringArray._get_expected_exceptionº   s@   € ð ð 
ñ 
ô ÐØÐ/Ñ/äÐØð 
ñ 
ô Ðàr"   c                óf   — |dv xs, |dv xr& |j                   j                  t        j                  u S )N)ÚminÚmaxÚsumÚcount)ÚanyÚall)r   r)   r0   rl   ©rN   Úserr    s      r    Ú_supports_reductionz#TestStringArray._supports_reductionÕ   s5   € àÐ8Ð8ò 
Ø�~Ð%ÒF¨#¯)©)×*<Ñ*<ÄÇÁÐ*Fð	
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                óx  — t        dt        j                  |«      «      }|dv rF|}t        |t        «      st        j                  |«      nd }t        |t
        «      rNt        ||«      }nA|j                  t        j                  u rt        j                  }n|j                  dk(  rd}nd}|j                  |«      S )Nr   )Ú__add__Ú__radd__r   r^   Úboolean)r   rˆ   Ú	get_dtyper²   rg   r   r   r)   r0   rl   Úbool_r   Úastype)rN   r    r¡   r¢   Úpointwise_resultr   Úcast_toÚdtype_others           r    Ú_cast_pointwise_resultz&TestStringArray._cast_pointwise_resultß   s•   € Ü�]¤B§L¡L°Ó$5Ó6ˆØÐ-Ñ-ØˆGÜ5?ÀÄsÔ5Kœ"Ÿ,™, uÔ-ÐQUˆKÜ˜+¤{Ô3Ü7¸¸{ÓK‘Ø�^‰^œrŸv™vÑ%Ü—h‘h‰GØ�]‰]˜iÒ'Ø%‰GàˆGØ×&Ñ& wÓ/Ð/r"   c                ó&   •— t         ‰| �  ||«       y r%   )rY   Útest_groupby_extension_apply)rN   rI   Úgroupby_apply_opr\   s      €r    rÀ   z,TestStringArray.test_groupby_extension_applyî   s   ø€ Ü‰Ñ,Ð->Ð@PÕQr"   c                óÞ   •— t         |d«      «      j                  }|s@|j                  dk(  r1t        j                  j                  d¬«      }|j                  |«       t        ‰| �!  |«       y )Nr.   rS   úmThe pointwise operation result will be inferred to string[nan, pyarrow], which does not match the input dtyperT   )	r`   r   r   r   rW   rX   rV   rY   Útest_combine_add)rN   rd   r[   r'   r   rW   r\   s         €r    rÄ   z TestStringArray.test_combine_addñ   sb   ø€ Ü‘] 1Ó%Ó&×,Ñ,ˆÙ! e§m¡m°xÒ&?Ü—;‘;×$Ñ$ðMð %ó ˆDð ×Ñ Ô%Ü‰Ñ  Õ/r"   c                ó  •— |j                   }|rg|dk(  rb|j                  t        j                  u rFt        s|j
                  dk(  r1t        j                  j                  d¬«      }|j                  |«       t        ‰| �-  ||«       y )Nr¶   r   rÃ   rT   )r   r)   r>   r?   r   r   r   rW   rX   rV   rY   Útest_arith_series_with_array)rN   r:   Úall_arithmetic_operatorsr[   r'   r   rW   r\   s          €r    rÆ   z,TestStringArray.test_arith_series_with_arrayû   sx   ø€ ð —
‘
ˆáØ(¨JÒ6Ø—‘¤"§%¡%Ñ'Ý §¡°Ò :ô —;‘;×$Ñ$ðMð %ó ˆDð ×Ñ Ô%Ü‰Ñ,¨TÐ3KÕLr"   c                ó¼   •— |sJ|j                   j                  dk(  r1t        j                  j	                  d¬«      }|j                  |«       t        ‰| �  |«       y )NrS   zCasts to objectrT   )r   r   r   rW   rX   rV   rY   Ú8test_loc_setitem_with_expansion_preserves_ea_index_dtype)rN   r:   r'   r[   rW   r\   s        €r    rÉ   zHTestStringArray.test_loc_setitem_with_expansion_preserves_ea_index_dtype  sL   ø€ ñ " d§j¡j×&8Ñ&8¸HÒ&DÜ—;‘;×$Ñ$Ð,=Ð$Ó>ˆDØ×Ñ Ô%Ü‰ÑHÈÕNr"   c                ó¼   •— |sJ|j                   j                  dk(  r1t        j                  j	                  d¬«      }|j                  |«       t        ‰| �  |«       y )NrS   zGives objectrT   )r   r   r   rW   rX   rV   rY   Ú0test_loc_setitem_with_expansion_retains_ea_dtype)rN   r:   r[   r'   rW   r\   s        €r    rË   z@TestStringArray.test_loc_setitem_with_expansion_retains_ea_dtype  sK   ø€ ñ " d§j¡j×&8Ñ&8¸HÒ&DÜ—;‘;×$Ñ$¨NÐ$Ó;ˆDØ×Ñ Ô%Ü‰Ñ@ÀÕFr"   c                ó„   •— t        j                  t        d¬«      5  t        ‰| �  |«       d d d «       y # 1 sw Y   y xY w)Nzno numeric data to plotrs   )r   ru   rv   rY   Útest_plot_on_y_axis)rN   Ú	plot_datar\   s     €r    rÍ   z#TestStringArray.test_plot_on_y_axis  s6   ø€ ô �]‰]œ9Ð,EÔFñ 	3Ü‰GÑ'¨	Ô2÷	3÷ 	3ñ 	3ús   �6¶?)Úreturnr_   )r    rg   rÏ   z4type[Exception] | tuple[type[Exception], ...] | None)r¬   z	pd.Seriesr    rg   rÏ   r_   )r    rg   )Ú__name__Ú
__module__Ú__qualname__rO   r   rW   ÚparametrizerZ   rc   rh   rj   rp   rx   r}   r�   rƒ   r…   r‹   r�   r£   r­   r³   r¾   rÀ   rÄ   rÆ   rÉ   rË   rÍ   Ú__classcell__)r\   s   @r    rK   rK   g   s´   ø„ ó/ð ‡[�[×Ñ˜[¨4°Ð*:Ó;ó2ó <ð2ô6ô"ò&ô
3ô?ô ò
ô%ô
3ò
:ò
6ðØðà	=óó6
ó9ó0ôRô0ôMô$OôG÷3ð 3r"   rK   c                  ó>   — e Zd Z ej                  d¬«      d„ «       Zy)ÚTest2DCompatT)Úautousec                óR   — t        |t        «      rt        j                  d¬«       y y )Nr{   rT   )r²   r	   r   r|   rM   s     r    Úarrow_not_supportedz Test2DCompat.arrow_not_supported%  s   € ä�dÔ,Ô-Ü�K‰KÐPÖQð .r"   N)rÐ   rÑ   rÒ   r   ÚfixturerÙ   r€   r"   r    rÖ   rÖ   $  s!   „ Ø€V‡^�^˜DÔ!ñRó "ñRr"   rÖ   Úna_positionÚfirstÚlastc                óB  — | \  }}}| j                  g d¢«      }|dk(  rt        j                  |d<   nt        j                  |d<   |rt        j                  |«      }d}t	        j
                  t        |¬«      5  |j                  |«       d d d «       y # 1 sw Y   y xY w)N)r   r   r.   rÝ   éÿÿÿÿr   úOsearchsorted requires array to be sorted, which is impossible with NAs present.rs   )Útaker>   r?   ÚSeriesr   ru   Ú
ValueErrorÚsearchsorted)rE   Ú	as_seriesrÛ   ÚbÚcÚar   Úmsgs           r    Ú test_searchsorted_with_na_raisesrê   +  sŽ   € ð �G€A€qˆ!Ø
×
Ñ
¢	Ó
*€CØ�fÒÜ—%‘%ˆˆBŠä—‘ˆˆA‰áÜ�i‰i˜‹nˆð	0ð ô 
�‰”z¨Ô	-ñ Ø×Ñ˜Ô÷÷ ñ ús   Á:BÂBc                óN  — | \  }}}| j                  g d¢«      }t        j                  |d<   |dk(  rt        j                  g d¢«      }nt        j                  g d¢«      }d}t        j                  t        |¬«      5  |j                  ||¬«       d d d «       y # 1 sw Y   y xY w)N)r   r   r.   r.   rÝ   )r.   r   r   rà   rs   )Úsorter)	rá   r>   r?   r0   Úarrayr   ru   rã   rä   )rE   rÛ   ræ   rç   rè   r   rì   ré   s           r    Ú+test_searchsorted_with_na_and_sorter_raisesrî   @  s’   € ð �G€A€qˆ!Ø
×
Ñ
¢	Ó
*€CÜ�U‰U€Cˆ�Fà�fÒÜ—‘š)Ó$‰ä—‘š)Ó$ˆð	0ð ô 
�‰”z¨Ô	-ñ +Ø×Ñ˜ 6ÐÔ*÷+÷ +ñ +ús   Á>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Ö   rW   rÓ   rê   rî   r€   r"   r    ú<module>rÿ      sk  ðñõ  #ã Ý ã Û å %å 9ã Ý Ý ,Ý /Ý 2Ý MÝ 'ò0ð" €‡�˜˜e�}Ô%ñó &ðð ‡�ñ;ó ð;ð
 ‡�ñ+ó ð+ð ‡�ñ+ó ð+ð ‡�ñ+ó ð+ð
 ‡�ñ+ó ð+ð
 ‡�ñ+ó ð+ôz3�d×)Ñ)ô z3ôzR�4×'Ñ'ô Rð ‡�×Ñ˜¨°&Ð(9Ó:ñó ;ðð( ‡�×Ñ˜¨°&Ð(9Ó:ñ+ó ;ñ+r"   