Ë
    êñi+  ã                  ó  — 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(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        úd/var/www/pod-logistic/pod-ai/venv/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ˆ 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   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)rR   Útest_eq_with_strr)   r>   r?   r   )rT   r   rV   s     €r    rZ   z TestStringArray.test_eq_with_strp   sX   ø€ Ü‰Ñ  Ô'à�>‰>œRŸU™UÑ"à˜g e§m¡m _°AÐ6Ò6Ð6Ñ6Ø�]‰]˜iÒ'Ø˜E’>Ð!‘>ð (r"   c                ó   — t        |«      sJ ‚y 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 r-|s+t        |«      j	                  |j
                  «      }|du sJ ‚y t        ‰| �  |«       y )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~   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   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`   ø€ Ø�>‰>œ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 ArrowStringArray©Úreason)r   r   r   ÚskiprR   Ú	test_view©rT   r:   rV   s     €r    rr   zTestStringArray.test_viewŒ   s/   ø€ Ø�:‰:×Ñ Ò*Ü�K‰KÐPÕQÜ‰Ñ˜$Õr"   c                 ó   — y r%   © ©rT   r:   s     r    Útest_from_dtypezTestStringArray.test_from_dtype‘   s   € àr"   c                ó‚   •— |j                   j                  dk(  rt        j                  d¬«       t        ‰| �  |«       y rm   )r   r   r   rq   rR   Útest_transposers   s     €r    ry   zTestStringArray.test_transpose•   s/   ø€ Ø�:‰:×Ñ Ò*Ü�K‰KÐPÕQÜ‰Ñ˜tÕ$r"   c                ó‚   •— |j                   j                  dk(  rt        j                  d¬«       t        ‰| �  |«       y rm   )r   r   r   rq   rR   Útest_setitem_preserves_viewsrs   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)rT   rA   rd   Ú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   )rT   r:   Úvalidrd   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                óÌ  — |j                  «       }d|_        |j                  |d   «      }|d   |d   k(  sJ ‚t        j                  ||«       |j
                  j                  dk(  r!|j                  |d   «      }|d   |d   k(  s<J ‚t        j                  t        d¬«      5  |j                  |d   d¬«       d d d «       t        j                  ||«       y # 1 sw Y   Œ xY w)	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Õ   € Ø× Ñ Ó"ˆØˆŒð —‘˜\¨!™_Ó-ˆØ�a‰y˜L¨™OÒ+Ð+Ð+Ü
×'Ñ'¨¨lÔ;ð �:‰:×Ñ Ò*Ø—[‘[ ¨a¡Ó1ˆFØ˜!‘9 ¨Q¡Ò/Ð/Ð/ä—‘œzÐ1PÔQñ 9Ø—‘˜L¨™O°%�Ô8÷9ä
×'Ñ'¨¨lÕ;÷9ð 9ús   Â$CÃC#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__)ri   )rT   Úop_nameÚobjÚothers       r    Ú_get_expected_exceptionz'TestStringArray._get_expected_exception¿   s@   € ð ð 
ñ 
ô ÐØÐ/Ñ/äÐØð 
ñ 
ô Ðàr"   c                óf   — |dv xs, |j                   j                  t        j                  u xr |dv S )N)ÚminÚmaxÚsum)ÚanyÚall)r   r)   r0   r^   ©rT   Úserr›   s      r    Ú_supports_reductionz#TestStringArray._supports_reductionÚ   s8   € ØÐ/Ð/ò 
Ø�I‰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 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 )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Ó4ˆØÐ-Ñ-ØˆGÜ5?ÀÄsÔ5Kœ"Ÿ,™, uÔ-ÐQUˆKÜ˜+¤{Ô3Ü7¸¸{ÓK‘Ø�^‰^œrŸv™vÑ%Ü—h‘h‰GØ�]‰]˜iÒ'Ø%‰GàˆGØ×&Ñ& wÓ/Ð/r"   c                óV   — t        j                  |«      }| j                  |||d«       y )NÚabc)r>   ÚSeriesÚ_compare_other)rT   r:   Úcomparison_opr¦   s       r    Útest_compare_scalarz#TestStringArray.test_compare_scalaró   s#   € Ü�i‰i˜‹oˆØ×Ñ˜C  }°eÕ<r"   c                ó&   •— t         ‰| �  ||«       y r%   )rR   Útest_groupby_extension_apply)rT   rI   Úgroupby_apply_oprV   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.   ÚpythonúmThe 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ú   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Ä   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  sx   ø€ ð —
‘
ˆáØ(¨JÒ6Ø—‘¤"§%¡%Ñ'Ý §¡°Ò :ô —;‘;×$Ñ$ðMð %ó ˆDð ×Ñ Ô%Ü‰Ñ,¨TÐ3KÕLr"   c                ó¼   •— |sJ|j                   j                  dk(  r1t        j                  j	                  d¬«      }|j                  |«       t        ‰| �  |«       y )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  sL   ø€ ñ " d§j¡j×&8Ñ&8¸HÒ&DÜ—;‘;×$Ñ$Ð,=Ð$Ó>ˆDØ×Ñ Ô%Ü‰ÑHÈÕNr"   )r›   rY   Úreturnz4type[Exception] | tuple[type[Exception], ...] | None)r¦   z	pd.Seriesr›   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ô"ò&ô
3ô?ô ò
ô%ô
3ò
:ò
6ò<ð&Øðà	=óó6
ó9ó0ò=ôRô0ôM÷$Oð Or"   rK   c                  ó>   — e Zd Z ej                  d¬«      d„ «       Zy)ÚTest2DCompatT)Úautousec                óR   — t        |t        «      rt        j                  d¬«       y y )Nrn   ro   )r¬   r	   r   rq   rv   s     r    Úarrow_not_supportedz Test2DCompat.arrow_not_supported   s   € ä�dÔ,Ô-Ü�K‰KÐPÖQð .r"   N)rÏ   rÐ   rÑ   r   Úfixturer×   ru   r"   r    rÔ   rÔ     s!   „ Ø€V‡^�^˜DÔ!ñRó "ñRr"   rÔ   c                ó  — | \  }}}| j                  g d¢«      }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.   éÿÿÿÿ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â   &  sw   € à�G€A€qˆ!Ø
×
Ñ
¢	Ó
*€CÜ�e‰e€Cˆ�GáÜ�i‰i˜‹nˆð	0ð ô 
�‰”z¨Ô	-ñ Ø×Ñ˜Ô÷÷ ñ ús   Á!A<Á<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ó      s  ðñõ  #ã Ý ã Û å %å 9ã Ý Ý ,Ý /Ý 2Ý MÝ 'ò0ð" €‡�˜˜e�}Ô%ñó &ðð ‡�ñ;ó ð;ð
 ‡�ñ+ó ð+ð ‡�ñ+ó ð+ð ‡�ñ+ó ð+ð
 ‡�ñ+ó ð+ð
 ‡�ñ+ó ð+ôuO�d×)Ñ)ô uOôpR�4×'Ñ'ô Rór"   