Ë
    ¤ehå  ã                  óê  — 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jB                  «      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©Úis_string_dtype)ÚArrowStringArray©ÚStringDtype)Ú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 ‚ t        | «      |«      S )NÚpyarrowé   )
ÚdtypeÚstorageÚpytestÚimportorskipÚ	_pa_arrayÚlenÚchunked_arrayÚchunksÚ
num_chunksÚtype)ÚarrÚchunkedÚpaÚarrow_arrayÚsplits        ú`/var/www/skyplay_api_hub/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Ò&Ð&Ð&ØŒ4�‹9�[Ó!Ð!ó    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                  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   é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‰i×#Ñ# AÓ&×-Ñ-¬d´6×3GÑ3GÓ.HÈsÐ-ÓS€GØ
�!‰*˜ ™
Ò
"Ü—)‘)×'Ñ'¨Ó*×1Ñ1´$´v×7KÑ7KÓ2LÐSVÐ1ÓWˆð �!‰*˜ ™
Ó
"ð ×
$Ñ
$Ó
&×
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+   ©r3   r4   ÚpdÚNAr   ©r   r   r   s      r   Údata_missingr=   E   s7   € ð ×
$Ñ
$Ó
&×
5Ñ
5´r·u±u¸c°lÈ%Ð
5Ó
P€CÜ˜S 'Ó*Ð*r   c                ó`   — | j                  «       j                  g d¢| ¬«      }t        ||«      S )N)ÚBÚCr8   r+   )r3   r4   r   r<   s      r   Údata_for_sortingrA   L   s-   € à
×
$Ñ
$Ó
&×
5Ñ
5²oÈUÐ
5Ó
S€CÜ˜S 'Ó*Ð*r   c                ó~   — | j                  «       j                  dt        j                  dg| ¬«      }t	        ||«      S )Nr?   r8   r+   r9   r<   s      r   Údata_missing_for_sortingrC   R   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 )Nr?   r8   r@   r+   r9   r<   s      r   Údata_for_groupingrE   X   sM   € à
×
$Ñ
$Ó
&×
5Ñ
5Ø	ˆc”2—5‘5œ"Ÿ%™%  c¨3°Ð4¸Eð 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                   j#                  d«      ˆ fd„«       Zˆ xZS )ÚTestStringArrayc                óN   •— |d|j                   › d�k(  sJ ‚t        ‰| �	  |«       y )Nzstring[ú])r   ÚsuperÚtest_eq_with_str)Úselfr   Ú	__class__s     €r   rK   z TestStringArray.test_eq_with_stra   s+   ø€ Ø˜' %§-¡- °Ð2Ò2Ð2Ð2Ü‰Ñ  Õ'r   c                ó   — t        |«      sJ ‚y 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        ‰| �  |«       y ©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   s0   ø€ Ø�:‰:×ÑÐ!5Ñ5Ü�K‰KÐPÕQÜ‰Ñ˜$Õr   c                 ó   — y r"   © ©rL   r6   s     r   Útest_from_dtypezTestStringArray.test_from_dtypeo   s   € àr   c                ó€   •— |j                   j                  |v rt        j                  d¬«       t        ‰| �  |«       y rQ   )r   r   r   rS   rJ   Útest_transposerU   s       €r   r\   zTestStringArray.test_transposes   s0   ø€ Ø�:‰:×ÑÐ!5Ñ5Ü�K‰KÐPÕQÜ‰Ñ˜tÕ$r   c                ó€   •— |j                   j                  |v rt        j                  d¬«       t        ‰| �  |«       y rQ   )r   r   r   rS   rJ   Útest_setitem_preserves_viewsrU   s       €r   r^   z,TestStringArray.test_setitem_preserves_viewsx   s0   ø€ Ø�:‰:×ÑÐ!5Ñ5Ü�K‰KÐPÕQÜ‰Ñ,¨TÕ2r   c                ó\   — |j                  «       }|dg   }t        j                  ||«       y )Nr*   )ÚdropnaÚtmÚassert_extension_array_equal)rL   r=   ÚresultÚexpecteds       r   Útest_dropna_arrayz!TestStringArray.test_dropna_array}   s,   € Ø×$Ñ$Ó&ˆØ  Ñ$ˆÜ
×'Ñ'¨°Õ9r   c                óì   — ||j                  «           }|d   }|j                  |«      }||usJ ‚t        j                  ||«       |j                  d¬«      }||usJ ‚t        j                  ||«       y )Nr   Úbackfill)Úmethod)ÚisnaÚfillnara   rb   )rL   r6   Úvalidrc   s       r   Útest_fillna_no_op_returns_copyz.TestStringArray.test_fillna_no_op_returns_copy‚   sw   € Ø�T—Y‘Y“[�LÑ!ˆà�Q‘ˆØ—‘˜UÓ#ˆØ˜TÑ!Ð!Ð!Ü
×'Ñ'¨°Ô5à—‘ J�Ó/ˆØ˜TÑ!Ð!Ð!Ü
×'Ñ'¨°Õ5r   c                óx  — |dv r¤t        |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 rEt        t        t        j                  |«      «      j                  dv rdd l
}|j                  S t        S y )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   Úop_nameÚobjÚotherr   s        r   Ú_get_expected_exceptionz'TestStringArray._get_expected_exceptionŽ   s   € ð Ð3Ñ3Ü˜#œrŸy™yÔ)¬dÜœRŸ\™\¨#Ó.ó/ç‰gð ñ/ô +Ð*Ü˜E¤2§9¡9Ô-´$ÜœRŸ\™\¨%Ó0ó3ç‰gð ñ3ô +Ð*ÜÐØÐFÑFÜ”K¤§¡¨cÓ!2Ó3×;Ñ;ð @ñ ô +Ð*ÜÐØÐ/Ñ/äÐØð 
ñ 
ô ”K¤§¡¨cÓ!2Ó3×;Ñ;ð @ñ ó %ð ×2Ñ2Ð2ÜÐàr   c                óL   — |dv xs |j                   j                  dk(  xr |dv S )N)ÚminÚmaxrp   )ÚanyÚall)r   r   )rL   Úserrƒ   s      r   Ú_supports_reductionz#TestStringArray._supports_reductionÁ   s3   € à�~Ð%ò *Ø�y‰y× Ñ  OÑ3ò *Ø˜>Ð)ð	
r   c                óà   — t        t        t        j                  |«      «      }|dv r|}n4|j                  dk(  rd}n"|j                  dk(  rt
        j                  }nd}|j                  |«      S )N)Ú__add__Ú__radd__r   zboolean[pyarrow]rp   Úboolean)r   r	   ra   r   r   r,   Úbool_Úastype)rL   rƒ   r„   r…   Úpointwise_resultr   Úcast_tos          r   Ú_cast_pointwise_resultz&TestStringArray._cast_pointwise_resultÈ   sa   € Ü”[¤"§,¡,¨sÓ"3Ó4ˆØÐ-Ñ-Ø‰GØ�]‰]˜iÒ'Ø(‰GØ�]‰]˜oÒ-Ü—h‘h‰GàˆGØ×&Ñ& wÓ/Ð/r   c                óV   — t        j                  |«      }| j                  |||d«       y )NÚabc)r:   r~   Ú_compare_other)rL   r6   Úcomparison_oprŒ   s       r   Útest_compare_scalarz#TestStringArray.test_compare_scalarÔ   s#   € Ü�i‰i˜‹oˆØ×Ñ˜C  }°eÕ<r   z4ignore:Falling back:pandas.errors.PerformanceWarningc                ó&   •— t         ‰| �  ||«       y r"   )rJ   Útest_groupby_extension_apply)rL   rE   Úgroupby_apply_oprM   s      €r   r�   z,TestStringArray.test_groupby_extension_applyØ   s   ø€ ä‰Ñ,Ð->Ð@PÕQr   )rƒ   ÚstrÚreturnztype[Exception] | None)rŒ   z	pd.Seriesrƒ   rŸ   r    Úbool)rƒ   rŸ   )Ú__name__Ú
__module__Ú__qualname__rK   rO   rT   rZ   r\   r^   re   rl   r†   r�   r–   r›   r   ÚmarkÚfilterwarningsr�   Ú__classcell__)rM   s   @r   rG   rG   `   sw   ø„ ô(ò&ô
 ò
ô%ô
3ò
:ò

6ð1Øð1à	ó1óf
ó
0ò=ð ‡[�[×ÑÐ VÓWóRó XôRr   rG   c                  ó>   — e Zd Z ej                  d¬«      d„ «       Zy)ÚTest2DCompatT)Úautousec                óR   — t        |t        «      rt        j                  d¬«       y y rQ   )r}   r   r   rS   rY   s     r   Úarrow_not_supportedz Test2DCompat.arrow_not_supportedÞ   s   € ä�dÔ,Ô-Ü�K‰KÐPÖQð .r   N)r¢   r£   r¤   r   Úfixturer¬   rX   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.)Úmatch)Útaker:   r;   r~   r   ÚraisesÚ
ValueErrorÚsearchsorted)rA   Ú	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   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È      s  ðñõ #ã Ý ã Û ã Ý Ý ,Ý /Ý 2Ý 'ò"ð" €‡�˜˜e�}Ô%ñó &ðð ‡�ñ/ó ð/ð ‡�ñ+ó ð+ð ‡�ñ+ó ð+ð ‡�ñ+ó ð+ð
 ‡�ñ+ó ð+ð
 ‡�ñ+ó ð+ôzR�d×)Ñ)ô zRôzR�4×'Ñ'ô Rór   