zmc
2023-08-08 e792e9a60d958b93aef96050644f369feb25d61b
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
U
­ý°dI$ã@sdZddlZddlZddlZddlmZddlZddl    m
Z ddl m Z ddlmZddlmZddlmZdd    „Zejd
d gd d d„ƒZejdd„ƒZejdd„ƒZejdd„ƒZejdd„ƒZejdd„ƒZejdd„ƒZejdd„ƒZGdd„dejƒZGdd „d ej ƒZ!Gd!d"„d"ej"ƒZ#Gd#d$„d$ej$ƒZ%Gd%d&„d&ej&ƒZ'Gd'd(„d(ej(ƒZ)Gd)d*„d*ej*ƒZ+Gd+d,„d,ej,ƒZ-Gd-d.„d.ej.ƒZ/Gd/d0„d0ej0ƒZ1Gd1d2„d2ej2ƒZ3Gd3d4„d4ej4ƒZ5Gd5d6„d6ej6ƒZ7Gd7d8„d8ej8ƒZ9Gd9d:„d:ej:ƒZ;Gd;d<„d<ej<ƒZ=d=d>„Z>dS)?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/`.
 
éN)ÚPerformanceWarning)Úis_string_dtype)ÚArrowStringArray©Ú StringDtype)ÚbasecCs&|jjdkrt d¡dd„}||ƒS)NÚpyarrowz-only applicable for pyarrow chunked array n/acSsVddl}|j}t|ƒd}| |d|…j||d…j•¡}|jdksJt‚t|ƒ|ƒS)Nré)rÚ_dataÚlenZ chunked_arrayÚchunksZ
num_chunksÚAssertionErrorÚtype)ÚarrÚpaZ arrow_arrayÚsplit©rúYd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\pandas/tests/extension/test_string.pyÚ _split_array#s ÿz!split_array.<locals>._split_array)ÚdtypeÚstorageÚpytestÚskip)rrrrrÚ split_arrays 
 rTF)ÚparamscCs|jS©N)Úparam)ÚrequestrrrÚchunked1srcCs
t|dS)N©rr)Zstring_storagerrrr6srcCs\tjjttjƒdd}|d|dkr>tjjttjƒdd}q| ¡ |¡}|rXt|ƒS|S)Néd)Úsizeré)    ÚnpÚrandomÚchoiceÚlistÚstringÚ ascii_lettersÚconstruct_array_typeÚ_from_sequencer)rrÚstringsrrrrÚdata;s
r,cCs$| ¡ tjdg¡}|r t|ƒS|S)zLength 2 array with [NA, Valid]ÚA©r)r*ÚpdÚNAr©rrrrrrÚ data_missingEsr2cCs$| ¡ dddg¡}|r t|ƒS|S)NÚBÚCr-)r)r*rr1rrrÚdata_for_sortingLsr5cCs&| ¡ dtjdg¡}|r"t|ƒS|S)Nr3r-r.r1rrrÚdata_missing_for_sortingRsr6cCstjSr)r/r0rrrrÚna_valueXsr7c
Cs2| ¡ ddtjtjddddg¡}|r.t|ƒS|S)Nr3r-r4r.r1rrrÚdata_for_grouping]sÿr8cs$eZdZ‡fdd„Zdd„Z‡ZS)Ú    TestDtypecs&|d|j›dkst‚tƒ |¡dS)Nzstring[ú])rr ÚsuperÚtest_eq_with_str©Úselfr©Ú    __class__rrr<fszTestDtype.test_eq_with_strcCst|ƒs t‚dSr)rr r=rrrÚtest_is_not_string_typejsz!TestDtype.test_is_not_string_type)Ú__name__Ú
__module__Ú __qualname__r<rAÚ __classcell__rrr?rr9es r9cseZdZ‡fdd„Z‡ZS)Ú TestInterfacecs(|jjdkrtjddtƒ |¡dS©Nrú/2D support not implemented for ArrowStringArray©Úreason)rrrrr;Ú    test_view©r>r,rr?rrrKqs  zTestInterface.test_view)rBrCrDrKrErrr?rrFpsrFc@seZdZdd„Zdd„ZdS)ÚTestConstructorscCsdSrr)r>r,rrrÚtest_from_dtypexsz TestConstructors.test_from_dtypecCsHtjdddtjdgtddd}t|jtƒs4t‚|jjdksDt‚dS)Nrz1.0.0)Z
minversionÚEr©r)    rZ importorskipr/ÚSeriesrÚ
isinstancerr r)r>ÚresultrrrÚtest_constructor_from_list|sz+TestConstructors.test_constructor_from_listN)rBrCrDrNrTrrrrrMwsrMcseZdZ‡fdd„Z‡ZS)Ú TestReshapingcs(|jjdkrtjddtƒ |¡dSrG)rrrrr;Útest_transposerLr?rrrV…s  zTestReshaping.test_transpose)rBrCrDrVrErrr?rrU„srUc@s eZdZdS)Ú TestGetitemN©rBrCrDrrrrrW‹srWcseZdZ‡fdd„Z‡ZS)Ú TestSetitemcs(|jjdkrtjddtƒ |¡dSrG)rrrrr;Útest_setitem_preserves_viewsrLr?rrrZs  z(TestSetitem.test_setitem_preserves_views)rBrCrDrZrErrr?rrYsrYc@s eZdZdS)Ú    TestIndexNrXrrrrr[–sr[cs,eZdZdd„Zdd„Z‡fdd„Z‡ZS)Ú TestMissingcCs"| ¡}|dg}| ||¡dS)Nr")ZdropnaÚassert_extension_array_equal)r>r2rSÚexpectedrrrÚtest_dropna_array›s
zTestMissing.test_dropna_arrayc    Cs€|| ¡}|d}| |¡}||k    s,t‚| ||¡t t|jjdk¡|jdd}W5QRX||k    spt‚| ||¡dS)NrrZbackfill)Úmethod)    ÚisnaZfillnar r]ÚtmÚmaybe_produces_warningrrr)r>r,ZvalidrSrrrÚtest_fillna_no_op_returns_copy s
 
ÿ z*TestMissing.test_fillna_no_op_returns_copyc    s>tjt|dk    o|jjdkddtƒ ||¡W5QRXdS)NrF)Zcheck_stacklevel)rbrcrrrr;Útest_fillna_series_method)r>r2Z fillna_methodr?rrre¯s ýz%TestMissing.test_fillna_series_method)rBrCrDr_rdrerErrr?rr\šsr\c@s&eZdZej dddg¡dd„ƒZdS)Ú TestNoReduceÚskipnaTFc    CsD|}|dkrdSt |¡}t t¡t||ƒ|dW5QRXdS)N)ÚminÚmax)rg)r/rQrÚraisesÚ    TypeErrorÚgetattr)r>r,Zall_numeric_reductionsrgÚop_nameÚserrrrÚtest_reduce_series_numeric¹s 
 z'TestNoReduce.test_reduce_series_numericN)rBrCrDrÚmarkÚ parametrizerorrrrrf¸srfc@seZdZdd„ZdS)Ú TestMethodscCs |dd… ¡}t || ¡¡}tj||jd}|jdd ¡}tjdt    |ƒgt    |ƒ|j
dd}t |jdd    ƒd
kr†|  d ¡}n
|  d ¡}|  ||¡dS) Né
rPT)Ú    normalizer"Z
proportion©ÚindexÚnamerÚrzdouble[pyarrow]ZFloat64)Úuniquer#Úarrayrar/rQrZ value_countsZ
sort_indexr rvrlÚastypeÚassert_series_equal)r>r,ÚvaluesrnrSr^rrrÚ test_value_counts_with_normalizeÆsÿ 
z,TestMethods.test_value_counts_with_normalizeN)rBrCrDr~rrrrrrÅsrrc@s eZdZdS)Ú TestCastingNrXrrrrrØsrc@seZdZdd„Zdd„ZdS)ÚTestComparisonOpsc    CsZd|j›d}t||ƒ|ƒ}|jjdkr,dnd}t| t¡|ƒ|ƒ |¡}| ||¡dS)NÚ__rzboolean[pyarrow]Úboolean)rBrlrrr{Úobjectr|)    r>rnr,ÚopÚotherrmrSrr^rrrÚ_compare_otherÝs
z TestComparisonOps._compare_othercCst |¡}| |||d¡dS)NÚabc)r/rQr†)r>r,Z comparison_oprnrrrÚtest_compare_scalaräs
z%TestComparisonOps.test_compare_scalarN)rBrCrDr†rˆrrrrr€Üsr€c@s eZdZdS)Ú TestParsingNrXrrrrr‰ésr‰c@s eZdZdS)Ú TestPrintingNrXrrrrrŠísrŠcsBeZdZej dddg¡dd„ƒZej d¡‡fdd„ƒZ‡Z    S)    Ú TestGroupByÚas_indexTFc    
Cs¢t ddddddddg|dœ¡}|jd|dj ¡}tj|dd    \}}|r|tj|dd
}tjd d d g|dd}| ||¡n"t |d d d gdœ¡}|     ||¡dS)Nr"r    éé)r-r3r3)rŒT)Úsort)rwg@gð?g@r-ru)r3r-)
r/Z    DataFrameÚgroupbyr-ZmeanZ    factorizeZIndexrQr|Zassert_frame_equal)    r>rŒr8ZdfrSÚ_Zuniquesrvr^rrrÚtest_groupby_extension_aggòs z&TestGroupBy.test_groupby_extension_aggz4ignore:Falling back:pandas.errors.PerformanceWarningcstƒ ||¡dSr)r;Útest_groupby_extension_apply)r>r8Zgroupby_apply_opr?rrr“sz(TestGroupBy.test_groupby_extension_apply)
rBrCrDrrprqr’Úfilterwarningsr“rErrr?rr‹ñs
 
r‹c@s eZdZejdddd„ƒZdS)Ú Test2DCompatT)ZautousecCst|tƒrtjdddS)NrHrI)rRrrrrLrrrÚarrow_not_supporteds
z Test2DCompat.arrow_not_supportedN)rBrCrDrÚfixturer–rrrrr•s
r•c    Cs^|\}}}| dddg¡}tj|d<|r2t |¡}d}tjt|d| |¡W5QRXdS)Nr    rr"éÿÿÿÿzOsearchsorted requires array to be sorted, which is impossible with NAs present.)Úmatch)Ztaker/r0rQrrjÚ
ValueErrorZ searchsorted)r5Z    as_seriesÚbÚcÚarÚmsgrrrÚ test_searchsorted_with_na_raises s
 
 
ÿrŸ)?Ú__doc__r'Únumpyr#rZ pandas.errorsrZpandasr/Zpandas._testingZ_testingrbZpandas.api.typesrZpandas.core.arraysrZpandas.core.arrays.string_rZpandas.tests.extensionrrr—rrr,r2r5r6r7r8ZBaseDtypeTestsr9ZBaseInterfaceTestsrFZBaseConstructorsTestsrMZBaseReshapingTestsrUZBaseGetitemTestsrWZBaseSetitemTestsrYZBaseIndexTestsr[ZBaseMissingTestsr\ZBaseNoReduceTestsrfZBaseMethodsTestsrrZBaseCastingTestsrZBaseComparisonOpsTestsr€ZBaseParsingTestsr‰ZBasePrintingTestsrŠZBaseGroupbyTestsr‹ZDim2CompatTestsr•rŸrrrrÚ<module>sX