hyb
2025-11-18 7539e6f48c75dcaeb808359cccfd1c0d0d182ce8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
Ë
oñúhe'ãó—dZddlmZddlZddlmZddlZddlZddl    m
Z
ddl m Z ddl ZddlmZddlmZddlmZdd    lmZdd
lmZdd lmZd „Zej:d dg¬«d„«Zej:d„«Zej:d„«Z ej:d„«Z!ej:d„«Z"ej:d„«Z#ej:d„«Z$Gd„dejJ«Z&Gd„dejN«Z(d„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|jjdk7r|Stjd«}|j}t |«dz}|j g|d|j¢||dj¢«}|jdk(sJ‚t|«|«S)NÚpyarrowé)
ÚdtypeÚstorageÚpytestÚ importorskipÚ    _pa_arrayÚlenÚ chunked_arrayÚchunksÚ
num_chunksÚtype)ÚarrÚchunkedÚpaÚ arrow_arrayÚsplits     úUH:\Change_password\venv_build\Lib\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ó—|jS©N)Úparam)Úrequests r rr6s €à =‰=Ðr"có&—|\}}t||¬«S)N)rÚna_valuer
)Ústring_dtype_argumentsrr)s   r rr;s€à.Ñ€GˆXÜ ˜w°Ô :Ð:r"có¦—tjjd«jt    t
j «d¬«}|d|dk(rStjjd«jt    t
j «d¬«}|d|dk(rŒS|j«j||¬«}t||«S)Nréd)Úsizeré©r)
ÚnpÚrandomÚ default_rngÚchoiceÚlistÚstringÚ ascii_lettersÚconstruct_array_typeÚ_from_sequencer!)rrÚstringsrs    r Údatar:As°€äi‰i×#Ñ# AÓ&×-Ñ-¬d´6×3GÑ3GÓ.HÈsÐ-ÓS€GØ
!‰*˜ ™
Ò
"Ü—)‘)×'Ñ'¨Ó*×1Ñ1´$´v×7KÑ7KÓ2LÐSVÐ1ÓWˆð !‰*˜ ™
Ó
"ð ×
5°gÀUÐ
K€CÜ ˜S 'Ó *Ð*r"có|—|j«jtjdg|¬«}t    ||«S)zLength 2 array with [NA, Valid]ÚAr/©r7r8ÚpdÚNAr!©rrrs   r Ú data_missingrAKs7€ð ×
5´r·u±u¸c°lÈ%Ð
P€CÜ ˜S 'Ó *Ð*r"có`—|j«jgd¢|¬«}t||«S)N)ÚBÚCr<r/)r7r8r!r@s   r Údata_for_sortingrERs-€à
5²oÈUÐ
S€CÜ ˜S 'Ó *Ð*r"có~—|j«jdtjdg|¬«}t    ||«S)NrCr<r/r=r@s   r Údata_missing_for_sortingrGXs8€à
5°s¼B¿E¹EÀ3Ð6GÈuÐ
U€CÜ ˜S 'Ó *Ð*r"c
ó¤—|j«jddtjtjddddg|¬«}t    ||«S)NrCr<rDr/r=r@s   r Údata_for_groupingrI^sM€à
5Ø     ˆc”2—5‘5œ"Ÿ%™%  c¨3°Ð4¸Eð 6ó €Cô ˜S 'Ó *Ð*r"c󪇗eZdZˆfd„Zd„Zˆfd„Zˆfd„Zˆfd„Zd„Zˆfd„Z    ˆfd„Z
d    „Z d
„Z                 dd „Z dd „Zdd „Zdd„Zd„Zˆfd„Zˆfd„ZˆxZS)ÚTestStringArraycó•—t‰||«|jtjur|d|j
›dk(sJ‚y|j
dk(r+t jt«5|dk(sJ‚    ddd«yy#1swYyxYw)Nzstring[ú]rzstring[pyarrow_numpy])    ÚsuperÚtest_eq_with_strr)r>r?rÚtmÚassert_produces_warningÚ FutureWarning)ÚselfrÚ    __class__s  €r rOz TestStringArray.test_eq_with_strgsƒø€Ü ‰Ñ  Ô'à >‰>œRŸU™UÑ "à˜g e§m¡m _°AÐ6Ò6Ð 6Ñ6Ø ]‰]˜iÒ 'Ü×+Ñ+¬MÓ:ñ 8ØР7Ò7Ð7Ñ7÷ 8ð 8ð(÷ 8ð 8ús Á+A>Á>Bcó—t|«sJ‚yr%r)rSrs  r Útest_is_not_string_typez'TestStringArray.test_is_not_string_typeqs€ô˜uÔ%Ð%Ñ%r"có¶•—|jtjur-|s+t|«j    |j
«}|dusJ‚yt ‰||«y)NF)r)r0ÚnanrÚis_dtypeÚnamerNÚtest_is_dtype_from_name)rSrÚusing_infer_stringÚresultrTs    €r r[z'TestStringArray.test_is_dtype_from_namevsGø€Ø >‰>œRŸV™VÑ #Ñ,>ܘ%“[×)Ñ)¨%¯*©*Ó5ˆFؘU‘?Ð "‘?ä ‰GÑ +¨EÕ 2r"cóø•—|jtjurB|s@tjt
d¬«5|j |j«ddd«yt‰|%|«y#1swYyxYw)Nz Cannot construct a 'StringDtype'©Úmatch)
r)r0rXrÚraisesÚ    TypeErrorÚconstruct_from_stringrZrNÚ#test_construct_from_string_own_name)rSrr\rTs   €r rdz3TestStringArray.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Á0A9có‚•—|jjdk(rtjd¬«t‰||«y©Nrú/2D support not implemented for ArrowStringArray©Úreason)rrrÚskiprNÚ    test_view©rSr:rTs  €r rkzTestStringArray.test_view„s/ø€Ø :‰:× Ñ  Ò *Ü K‰KÐPÕ QÜ ‰Ñ˜$Õr"có—yr%©©rSr:s  r Útest_from_dtypezTestStringArray.test_from_dtype‰s€à r"có‚•—|jjdk(rtjd¬«t‰||«yrf)rrrrjrNÚtest_transposerls  €r rrzTestStringArray.test_transposes/ø€Ø :‰:× Ñ  Ò *Ü K‰KÐPÕ QÜ ‰Ñ˜tÕ$r"có‚•—|jjdk(rtjd¬«t‰||«yrf)rrrrjrNÚtest_setitem_preserves_viewsrls  €r rtz,TestStringArray.test_setitem_preserves_views’s/ø€Ø :‰:× Ñ  Ò *Ü K‰KÐPÕ QÜ ‰Ñ,¨TÕ2r"có\—|j«}|dg}tj||«y)Nr.)ÚdropnarPÚassert_extension_array_equal)rSrAr]Úexpecteds    r Útest_dropna_arrayz!TestStringArray.test_dropna_array—s,€Ø×$Ñ$Ó&ˆØ  Ñ$ˆÜ
×'Ñ'¨°Õ9r"cóì—||j«}|d}|j|«}||usJ‚tj||«|jd¬«}||usJ‚tj||«y)NrÚbackfill)Úmethod)ÚisnaÚfillnarPrw)rSr:Úvalidr]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ó@—|dvrtS|dvrtS|dvrtSy)N)Ú__mod__Ú__rmod__Ú
__divmod__Ú __rdivmod__Ú__pow__Ú__rpow__)Ú__mul__Ú__rmul__)Ú __truediv__Ú __rtruediv__Ú __floordiv__Ú __rfloordiv__Ú__sub__Ú__rsub__)rb)rSÚop_nameÚobjÚothers    r Ú_get_expected_exceptionz'TestStringArray._get_expected_exception¨s@€ð ð
ñ
ôÐ Ø Ð/Ñ /äÐ Ø ð
ñ
ôÐ àr"cóf—|dvxs,|jjtjuxr|dvS)N)ÚminÚmaxÚsum)ÚanyÚall)rr)r0rX©rSÚserrs   r Ú_supports_reductionz#TestStringArray._supports_reductionÃs8€à Ð,Ð ,ò *؏y‰y×!Ñ!¤R§V¡VÐ+ò*ؘ>Ð)ð    
r"cóB—t|jt«sJ‚|dvS)N)ÚcumminÚcummaxÚcumsum)Ú
isinstancerrršs   r Ú_supports_accumulationz&TestStringArray._supports_accumulationÊs#€Ü˜#Ÿ)™)Ô%:Ô;Ð;Ð;ØÐ8Ð8Ð8r"có€—tttj|««}|dvrF|}t    |t
«stj|«nd}t    |t«rNt ||«}nA|jtjurtj}n|jdk(rd}nd}|j|«S)N)Ú__add__Ú__radd__rú bool[pyarrow]Úboolean) rr rPÚ    get_dtyper¡Ústrr r)r0rXÚbool_rÚastype)rSr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—tj|«}|j|||d«y)NÚabc)r>ÚSeriesÚ_compare_other)rSr:Ú comparison_opr›s    r Útest_compare_scalarz#TestStringArray.test_compare_scalarÝs#€Üi‰i˜‹oˆØ ×јC  }°eÕ<r"có•—t|d««j}|r\|jtjur@|j
dk(r1t jjd¬«}|j|«t‰|-|«y)Nr.ÚpythonúmThe pointwise operation result will be inferred to string[nan, pyarrow], which does not match the input dtyperh) Únextrr)r>r?rrÚmarkÚxfailÚ applymarkerrNÚtest_combine_add)rSÚ data_repeatedr\r'rrºrTs      €r r½z TestStringArray.test_combine_addásrø€Ü‘] 1Ó%Ó&×,Ñ,ˆÙ Ø ^‰^œrŸu™uÑ $¨%¯-©-¸8Ò*Cä—;‘;×$Ñ$ðMð%óˆDð × Ñ  Ô %Ü ‰Ñ  Õ/r"có•—|j}|rg|dk(rb|jtjurFts|j
dk(r1t jjd¬«}|j|«t‰|-||«y)Nr¥rr¸rh) rr)r>r?rrrrºr»r¼rNÚtest_arith_series_with_array)rSr:Úall_arithmetic_operatorsr\r'rrºrTs       €r rÀz,TestStringArray.test_arith_series_with_arrayísxø€ð—
‘
ˆá Ø(¨JÒ6Ø—‘¤"§%¡%Ñ'Ý § ¡ °Ò :ô—;‘;×$Ñ$ðMð%óˆDð × Ñ  Ô %Ü ‰Ñ,¨TÐ3KÕLr")rr©Úreturnz4type[Exception] | tuple[type[Exception], ...] | None)r›z    pd.Seriesrr©rÂÚbool)rr©)Ú__name__Ú
__module__Ú __qualname__rOrVr[rdrkrprrrtryr€r“rœr¢r¯rµr½rÀÚ __classcell__)rTs@r rKrKfsoø„ô8ò&ô
3ô?ô ò
 ô%ô
3ò
:ò
 
6ðØðà    =óó6
ó9ó 0ò=ô
0÷MðMr"rKcó>—eZdZejd¬«d„«Zy)Ú Test2DCompatT)ÚautousecóR—t|t«rtjd¬«yy)Nrgrh)r¡r    rrjros  r Úarrow_not_supportedz Test2DCompat.arrow_not_supporteds€ä dÔ,Ô -Ü K‰KÐPÖ Qð .r"N)rÄrÅrÆrÚfixturerÌrnr"r rÉrÉs!„Ø€V‡^^˜DÔ!ñRó"ñRr"rÉcó—|\}}}|jgd¢«}tj|d<|rtj|«}d}t    j
t |¬«5|j|«ddd«y#1swYyxYw)N)rrr.éÿÿÿÿzOsearchsorted requires array to be sorted, which is impossible with NAs present.r_)Útaker>r?r²rraÚ
ValueErrorÚ 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<Á<BcóÒ—tjddg|¬«}tjddgt¬«}||k(}tjddgt¬«}|jdk(r.|j
tj ur|jd«}n<|jd    k(r-|j
tj ur|jd
«}tj||«y) NrÖrÔr/r.FTr·r§rr¦)
r>r²ÚobjectrÃrr)r?r«rPÚassert_series_equal)rr›Úmixedr]rxs     r Útest_mixed_object_comparisonrÝs©€ä
)‰)S˜#J eÔ
,€Cä I‰Iq˜#h¤fÔ -€Eà E‰\€F܏y‰y˜% ˜¬dÔ3€HØ ‡}}˜Ò  U§^¡^´r·u±uÑ%<Ø—?‘? 9Ó-‰Ø    ‰˜)Ò    #¨¯©¼"¿%¹%Ñ(?Ø—?‘? ?Ó3ˆä×ј6 8Õ,r")+Ú__doc__Ú
__future__rr5ÚtypingrÚnumpyr0rÚ 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Írrr:rArErGrIÚExtensionTestsrKÚDim2CompatTestsrÉrØrÝrnr"r ú<module>rîs#ðñõ#ã ÝãÛ å%å9ãÝÝ,Ý/Ý2ÝQÝ'ò"ð"€‡˜˜e}Ô%ñó&ðð‡ñ;óð;ð
‡ñ+óð+ð‡ñ+óð+𠇁ñ+óð+ð
‡ñ+óð+ð
‡ñ+óð+ôWMd×)Ñ)ôWMôtR4×'Ñ'ôRòó" -r"