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
121
122
Ë
oñúhâ<ãóŠ—dZddlZddlZddlmZddlZddlm    Z
ddl m Z ddl mZddlmZe
j"Zddedefd    „Zej*d
d g¬ «d „«Zej*d„«Zej*d„«Zej*d„«Zej*d„«Zej*d„«Zej*d„«Zej*d„«Zej*d„«Zej*d„«Zej@jCd«Z"Gd„dejF«Z$Gd„dejJ«Z&y)aÖ
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/`.
 
Note: we do not bother with base.BaseIndexTests because NumpyExtensionArray
will never be held in an Index.
éN)Ú NumpyEADtype)Úis_object_dtype)ÚNumpyExtensionArray)ÚbaseÚattrÚobjcóL—|dk(r‘t|dd«}t|dd«}t|t«r,t|t«s|j|j«}n;t|t«r+t|t«s|j|j«}t ||||«y)zi
    patch tm.assert_attr_equal so NumpyEADtype("object") is closed enough to
    np.dtype("object")
    ÚdtypeN)ÚgetattrÚ
isinstancerÚastypeÚ numpy_dtypeÚorig_assert_attr_equal)rÚleftÚrightrÚlattrÚrattrs      úTH:\Change_password\venv_build\Lib\site-packages\pandas/tests/extension/test_numpy.pyÚ_assert_attr_equalr sƒ€ð
 ˆw‚ܘ˜g tÓ,ˆÜ˜˜w¨Ó-ˆÜ eœ\Ô *´:¸eÄ\Ô3RØ—;‘;˜u×0Ñ0Ó1‰DÜ ˜œ|Ô ,´ZÀÄ|Ô5TØ—L‘L ×!2Ñ!2Ó3ˆEä˜4  u¨cÕ2óÚfloatÚobject)ÚparamscóR—ttj|j««S©N)rÚnpr
Úparam)Úrequests rr
r
0s€ä œŸ™ §¡Ó/Ó 0Ð0rc#óÖK—|j«5}|jtdd«|jtjdt
«d–—ddd«y#1swYyxYw­w)a
    A monkeypatch to tells pandas to let us in.
 
    By default, passing a NumpyExtensionArray to an index / series / frame
    constructor will unbox that NumpyExtensionArray to an ndarray, and treat
    it as a non-EA column. We don't want people using EAs without
    reason.
 
    The mechanism for this is a check against ABCNumpyExtensionArray
    in each constructor.
 
    But, for testing, we need to allow them in pandas. So we patch
    the _typ of NumpyExtensionArray, so that we evade the ABCNumpyExtensionArray
    check.
    Ú_typÚ    extensionÚassert_attr_equalN)ÚcontextÚsetattrrÚtmÚ    assertersr)Ú monkeypatchÚms  rÚallow_in_pandasr)5sTèø€ð"
×    Ñ    Ó    ð !Ø        ‰    Ô% v¨{Ô;Ø        ‰    ”"—,‘,Р3Ô5GÔHÛ ÷÷ñüs‚A)“AAÁ    A)ÁA&Á"A)cóî—|jdk(r7tjtd«Dcgc]}|f‘Œc}«jSt t jdd|j¬««Scc}w)Nrédéée©r
)    rÚpdÚSeriesÚrangeÚarrayrrÚarangeÚ_dtype)r)r
Úis   rÚdatar6LsW€à ×јHÒ$܏y‰y¬¨c«
Ö3 1˜1š$Ò3Ó4×:Ñ:Ð:Ü œrŸy™y¨¨C°u·|±|ÔDÓ EÐEùò4s¬
A2cóä—|jdk(r4ttjtjdgt
¬««Sttjtjdg««S)Nr©r,r.gð?©rrrr2Únanr©r)r
s  rÚ data_missingr<SsJ€à ×јHÒ$Ü"¤2§8¡8¬R¯V©V°T¨NÄ&Ô#IÓJÐJÜ œrŸx™x¬¯©°¨ Ó6Ó 7Ð7rcó —d„}|S)NcóZ—tj|«xrtj|«Sr)rÚisnan)ÚaÚbs  rÚcmpzna_cmp.<locals>.cmp\s€Üx‰x˜‹{Ò*œrŸx™x¨›{Ð*r©)rBs rÚna_cmprDZs€ò+ð €Jrcó²—|jdk(r)ttjgd¢t¬«dd«Sttjgd¢««S)ziLength-3 array with a known sort order.
 
    This should be three items [B, C, A] with
    A < B < C
    r)rC©é©ér8r.r,N)r,rGr)rrrr2rr;s  rÚdata_for_sortingrJbsH€ð ×јHÒ$ô#¤2§8¡8Ò,BÌ&Ô#QÐRSÐRTÐ#UÓVÐVÜ œrŸx™xª    Ó2Ó 3Ð3rcóè—|jdk(r5ttjdtjdgt
¬««Sttjdtjdg««S)zvLength-3 array with a known sort order.
 
    This should be three items [B, NA, A] with
    A < B and NA missing.
    rr8)rr.r,rr9r;s  rÚdata_missing_for_sortingrLpsQ€ð ×јHÒ$Ü"¤2§8¡8¨T´2·6±6¸4Ð,@ÌÔ#OÓPÐPÜ œrŸx™x¨¬B¯F©F°A¨Ó7Ó 8Ð8rc óü—|jdk(rd\}}}ntjd«\}}}ttj||tj
tj
||||g|j¬««S)z“Data for factorization, grouping, and unique tests.
 
    Expected to be like [B, B, NA, NA, A, A, B, C]
 
    Where A < B < C and NA is missing
    r)r8rFrHrIr.)rrr3rr2r:)r)r
r@rAÚcs     rÚdata_for_groupingrO|sj€ð ×јHÒ$Ø"‰ˆˆ1‰aä—)‘)˜A“,‰ˆˆ1ˆaÜ Ü
‰!QœŸ™¤§¡¨¨1¨a°Ð3¸5×;LÑ;LÔMó ðrcó®—|jdk(rtj|›d«tjd«dz}t j ||¬«S)NÚOz is not a numeric dtyper+rGr.)ÚkindÚpytestÚskiprÚonesrÚ_from_sequence)r
Úarrs  rÚ data_for_twosrXsG€à ‡zzSÒ܏ ‰ ugÐ4Ð5Ô6Ü
'‰'#‹,˜Ñ
€CÜ × -Ñ -¨c¸Ô ?Ð?rcór—|dk(r2tjjd¬«}|j|«yy)a”
    Tests for NumpyExtensionArray with nested data. Users typically won't create
    these objects via `pd.array`, but they can show up through `.array`
    on a Series with nested data. Many of the base tests fail, as they aren't
    appropriate for nested data.
 
    This fixture allows these tests to be skipped when used as a usefixtures
    marker to either an individual test or a test class.
    rzFails for object dtype©ÚreasonN)rSÚmarkÚxfailÚ applymarker)r
rr\s   rÚskip_numpy_objectr_•s7€ð Ò܏{‰{× Ñ Ð(@РÓAˆØ×јDÕ!ðrr_c 󦇗eZdZejj d¬«d„«Zeˆfd„«Zˆfd„Z    ˆfd„Z
eˆfd„«Z eˆfd„«Z eˆfd    „«Z eˆfd
„«Zeˆfd „«Zejj!d ¬«ˆfd „«Zˆfd„Zeˆfd„«ZdZdZdZdZˆfd„Zd„Zˆfd„Zˆfd„Zˆfd„Zdej<dede fd„Z!dej<dede fd„Z"ejj d«ejjGdddg«d„««Z$eˆfd „«Z%eˆfd!„«Z&eˆfd"„«Z'eˆfd#„«Z(eejjGd$d%dg«ˆfd&„««Z)eˆfd'„«Z*eejjGd(e+jXgd)¢«ejXgd)¢d*¬+«gd,d-g¬.«ˆfd/„««Z-eejjGd0gd1¢ejXgd1¢d2¬+«e+jXgd1¢«ggd3¢¬.«ˆfd4„««Z.ejjGd5d6d7d8ej^gdfej`d6d7d8ej^gdejj ¬9«ejXd6d7d8ej^gd2¬+«dfejXd6d7d8ej^gd2¬+«dfggd:¢¬.«ˆfd;„«Z1eˆfd<„«Z2eˆfd=„«Z3d>„Z4ejj!d?¬«ˆfd@„«Z5eejjGdAdBdCg«ˆfdD„««Z6ˆxZ7S)EÚTestNumpyExtensionArrayzWe don't register our dtyperZcó—yrrC)Úselfr6s  rÚtest_from_dtypez'TestNumpyExtensionArray.test_from_dtype©ó€ð     rcó&•—t‰|||«yr)ÚsuperÚ)test_series_constructor_scalar_with_index)rcr6r
Ú    __class__s   €rrhzATestNumpyExtensionArray.test_series_constructor_scalar_with_index®sø€ô    ‰Ñ9¸$ÀÕFrcóâ•—|jjdk(rF|jtjj d|jj›¬««t ‰||«y)Nrz:NumpyExtensionArray expectedly clashes with a NumPy name: rZ)r
rr^rSr\r]rgÚtest_check_dtype)rcr6rÚusing_infer_stringris    €rrkz(TestNumpyExtensionArray.test_check_dtype³scø€Ø :‰:× !Ñ ! XÒ -Ø × Ñ Ü— ‘ ×!Ñ!ð#Ø#'§:¡:×#9Ñ#9Ð":ð<ð"óô ô     ‰Ñ  Õ&rcó^•—|jdk(rt|«sJ‚yt‰| |«y)Nr)rrrgÚtest_is_not_object_type)rcr
rris   €rrnz/TestNumpyExtensionArray.test_is_not_object_type½s.ø€Ø × Ñ  Ò (ô# 5Ô)Ð )Ñ)ä ‰GÑ +¨EÕ 2rcó$•—t‰||«yr)rgÚtest_getitem_scalar©rcr6ris  €rrpz+TestNumpyExtensionArray.test_getitem_scalarÅsø€ô    ‰Ñ# DÕ)rcó$•—t‰||«yr)rgÚtest_shift_fill_valuerqs  €rrsz-TestNumpyExtensionArray.test_shift_fill_valueÊsø€ô    ‰Ñ% dÕ+rcó$•—t‰||«yr)rgÚtest_fillna_copy_frame©rcr<ris  €rruz.TestNumpyExtensionArray.test_fillna_copy_frameÏsø€ô    ‰Ñ& |Õ4rcó$•—t‰||«yr)rgÚtest_fillna_copy_seriesrvs  €rrxz/TestNumpyExtensionArray.test_fillna_copy_seriesÔsø€ô    ‰Ñ'¨ Õ5rcó&•—t‰|||«yr)rgÚtest_searchsorted)rcrJÚ    as_seriesris   €rrzz)TestNumpyExtensionArray.test_searchsortedÙsø€ô
    ‰Ñ!Ð"2°IÕ>rz*NumpyExtensionArray.diff may fail on dtypecó$•—t‰|||«Sr)rgÚ    test_diff)rcr6Úperiodsris   €rr}z!TestNumpyExtensionArray.test_diffàsø€ä‰wÑ   wÓ/Ð/rcóÀ•—|jjtk(r1tjj d¬«}|j |«t‰|!|«y)Nz$Dimension mismatch in np.concatenaterZ)    r
rrrSr\r]r^rgÚ test_insert)rcr6rr\ris    €rr€z#TestNumpyExtensionArray.test_insertäsHø€Ø :‰:× !Ñ !¤VÒ +Ü—;‘;×$Ñ$Ð,RÐ$ÓSˆDØ × Ñ  Ô %ä ‰Ñ˜DÕ!rcó&•—t‰|||«yr)rgÚtest_insert_invalid©rcr6Úinvalid_scalarris   €rr‚z+TestNumpyExtensionArray.test_insert_invalidësø€ô    ‰Ñ# D¨.Õ9rNcót•—d}|jjdk(rt}||_t‰||«y©NrQ)r
rRÚ    TypeErrorÚ
divmod_excrgÚ test_divmod)rcr6rˆris   €rr‰z#TestNumpyExtensionArray.test_divmodõs1ø€Øˆ
Ø :‰:?‰?˜cÒ !Ü"ˆJØ$ˆŒÜ ‰Ñ˜DÕ!rcó¬—tj|«}d}|jjdk(r t}||_|j |t|«yr†)r/r0r
rRr‡rˆÚ_check_divmod_opÚdivmod)rcr6ÚserÚexcs    rÚtest_divmod_series_arrayz0TestNumpyExtensionArray.test_divmod_series_arrayüsB€Üi‰i˜‹oˆØˆØ :‰:?‰?˜cÒ !܈CØ!ˆDŒOØ ×јc¤6¨4Õ0rcó•—|}d}|jjtk(rE|dvr;tjj d¬«}|j j|«t}||_    t‰|-||«y©N)Ú__mul__Ú__rmul__z9the Series.combine step raises but not the Series method.rZ) r
rrrSr\r]ÚnodeÚ
add_markerr‡Úseries_scalar_excrgÚtest_arith_series_with_scalar)rcr6Úall_arithmetic_operatorsrÚopnamer–r\ris       €rr—z5TestNumpyExtensionArray.test_arith_series_with_scalarswø€Ø)ˆØ ÐØ :‰:× !Ñ !¤VÒ +ØÐ0Ñ0Ü—{‘{×(Ñ(ØVð)óð— ‘ ×'Ñ'¨Ô-Ü )Ð Ø!2ˆÔÜ ‰Ñ-¨dÐ4LÕMrcóŠ•—|}d}|jjtk(r
|dvrt}||_t
‰|||«y)N)Ú__add__Ú__radd__)r
rrr‡Úseries_array_excrgÚtest_arith_series_with_array)rcr6r˜r™rris     €rržz4TestNumpyExtensionArray.test_arith_series_with_arraysFø€Ø)ˆØÐØ :‰:× !Ñ !¤VÒ +°Ð>UÑ0UÜ(Ð Ø 0ˆÔÜ ‰Ñ,¨TÐ3KÕLrcó•—|}d}|jjtk(rE|dvr;tjj d¬«}|j j|«t}||_    t‰|-||«yr‘) r
rrrSr\r]r”r•r‡Úframe_scalar_excrgÚtest_arith_frame_with_scalar)rcr6r˜rr™r r\ris       €rr¡z4TestNumpyExtensionArray.test_arith_frame_with_scalarswø€Ø)ˆØÐØ :‰:× !Ñ !¤VÒ +ØÐ0Ñ0Ü—{‘{×(Ñ(ØVð)óð— ‘ ×'Ñ'¨Ô-Ü(Ð Ø 0ˆÔÜ ‰Ñ,¨TÐ3KÕLrrÚop_nameÚreturncó>—|jjdk(r|dvSy)NrQ)ÚsumÚminÚmaxÚanyÚallT)r
rR)rcrr¢s   rÚ_supports_reductionz+TestNumpyExtensionArray._supports_reduction&s!€Ø 9‰9>‰>˜SÒ  ØÐAÐAÐ AØrÚskipnacóú—t||«}|jj}|j|«}t||«}|dk(r|«}|«}    n||¬«}||¬«}    t    j
||    «y)NÚcount)r«)r r
rr r%Úassert_almost_equal)
rcrr¢r«Úres_opÚ    cmp_dtypeÚaltÚexp_opÚresultÚexpecteds
          rÚ check_reducez$TestNumpyExtensionArray.check_reduce+ss€Ü˜˜gÓ&ˆð—I‘I×)Ñ)ˆ    Øj‰j˜Ó#ˆÜ˜˜gÓ&ˆØ gÒ Ù“XˆFÙ“x‰Há 6Ô*ˆFÙ VÔ,ˆHÜ
×јv xÕ0rzTODO: tests not written yetTFcó—yrrC)rcr6Úall_numeric_reductionsr«s    rÚtest_reduce_framez)TestNumpyExtensionArray.test_reduce_frame;rercó$•—t‰||«yr)rgÚtest_fillna_seriesrvs  €rrºz*TestNumpyExtensionArray.test_fillna_series@sø€ô    ‰Ñ" <Õ0rcó$•—t‰||«yr)rgÚtest_fillna_framervs  €rr¼z)TestNumpyExtensionArray.test_fillna_frameEsø€ô    ‰Ñ! ,Õ/rcó&•—t‰|||«yr)rgÚtest_setitem_invalidrƒs   €rr¾z,TestNumpyExtensionArray.test_setitem_invalidJsø€ô    ‰Ñ$ T¨>Õ:rcó&•—t‰|||«yr)rgÚ test_setitem_sequence_broadcasts©rcr6Ú box_in_seriesris   €rrÀz8TestNumpyExtensionArray.test_setitem_sequence_broadcastsOsø€ô    ‰Ñ0°°}ÕErÚsetterÚloccó&•—t‰|||«yr)rgÚtest_setitem_mask_broadcast)rcr6rÃris   €rrÆz3TestNumpyExtensionArray.test_setitem_mask_broadcastUsø€ô
    ‰Ñ+¨D°&Õ9rcó$•—t‰||«yr)rgÚ&test_setitem_scalar_key_sequence_raiserqs  €rrÈz>TestNumpyExtensionArray.test_setitem_scalar_key_sequence_raise\sø€ô    ‰Ñ6°tÕ<rÚmask)TTTFFÚbooleanr.ú numpy-arrayz boolean-array)Úidscó(•—t‰||||«yr)rgÚtest_setitem_mask)rcr6rÉrÂris    €rrÎz)TestNumpyExtensionArray.test_setitem_maskdsø€ô    ‰Ñ! $¨¨mÕ<rÚidx)rr,rGÚInt64)Úlistz integer-arrayrËcó(•—t‰||||«yr)rgÚtest_setitem_integer_array©rcr6rÏrÂris    €rrÓz2TestNumpyExtensionArray.test_setitem_integer_arraypsø€ô    ‰Ñ*¨4°°mÕDrzidx, box_in_seriesrr,rG)Úmarks)z
list-Falsez    list-Truezinteger-array-Falsezinteger-array-Truecó(•—t‰||||«yr)rgÚ(test_setitem_integer_with_missing_raisesrÔs    €rr×z@TestNumpyExtensionArray.test_setitem_integer_with_missing_raisesysø€ô    ‰Ñ8¸¸sÀMÕRrcó&•—t‰|||«yr)rgÚtest_setitem_slicerÁs   €rrÙz*TestNumpyExtensionArray.test_setitem_slice†sø€ä ‰Ñ" 4¨Õ7rcó$•—t‰||«yr)rgÚtest_setitem_loc_iloc_slicerqs  €rrÛz3TestNumpyExtensionArray.test_setitem_loc_iloc_sliceŠsø€ä ‰Ñ+¨DÕ1rcóÄ—tjdtj|«i«x}}tj|j¬«}||«}|d|j|df<|j
j tk7rCt|t«r|td«k7r%tjd|j«i«}tj||d¬«y)Nr6)ÚindexF)Úcheck_column_type) r/Ú    DataFramer0rÝrÄr
rrr ÚsliceÚto_numpyr%Úassert_frame_equal)rcr6Ú full_indexerÚdfr´r³Úkeys       rÚ,test_setitem_with_expansion_dataframe_columnzDTestNumpyExtensionArray.test_setitem_with_expansion_dataframe_columnŽsª€äŸ ™  f¬b¯i©i¸«oÐ%>Ó?Ð?ˆˆXÜ—‘ B§H¡HÔ-ˆñ˜2ÓˆØ"$ V¡*ˆ
‰
3˜;Ñð :‰:× !Ñ !¤VÒ +ܘc¤5Ô)¨S´E¸$³KÒ-?ÜŸ<™<¨°·±³Ð(AÓBÜ
×јf hÀ%ÖHrzNumpyEADtype is unpackedcó$•—t‰||«yr)rgÚ#test_index_from_listlike_with_dtyperqs  €rrèz;TestNumpyExtensionArray.test_index_from_listlike_with_dtypeŸsø€ä ‰Ñ3°DÕ9rÚenginerNÚpythoncó(•—t‰||||«yr)rgÚ test_EA_types)rcrér6rris    €rrìz%TestNumpyExtensionArray.test_EA_types£sø€ô    ‰Ñ˜f d¨GÕ4r)8Ú__name__Ú
__module__Ú __qualname__rSr\rTrdÚ skip_nestedrhrkrnrprsrurxrzr]r}r€r‚rˆr–r rr‰rr—ržr¡r/r0ÚstrÚboolrªrµÚ parametrizer¸rºr¼r¾rÀrÆrÈrr2rÎrÓÚNArr×rÙrÛrærèrìÚ __classcell__)ris@rrara¨s2ø„Ø ‡[[×ÑÐ:ÐÓ;ñ ó<ð ðóGóðGô'ô3ðó*óð*ðó,óð,ðó5óð5ðó6óð6ðó?óð?ð  ‡[[×ÑÐJÐÓKó0óLð0ô"ðó:óð:ð€JØÐØÐØÐô"ò1ô NôMô Mð r§y¡yð¸3ðÀ4óð
1 §    ¡    ð1°Cð1Àó1ð  ‡[[×ÑÐ3Ó4Ø ‡[[×јX¨¨e }Ó5ñ ó6ó5ð ðó1óð1ðó0óð0ðó;óð;ðóFóðFð
Ø ‡[[×јX¨¨t }Ó5ó:ó6óð:ð
ó=óð=ðØ ‡[[×ÑØà ˆBH‰HÒ5Ó 6Ø ˆBH‰HÒ5¸YÔ Gð    
ð˜OÐ ,ð óó=óóð=ðØ ‡[[×ÑØ Ú    HB—H‘HšY¨gÔ6¸¸¿¹ÂÓ8KÐLÚ 4ðóó
Eó óð Eð ‡[[×ÑØàAr—u‘uÐ ˜uÐ %Ø ˆFL‰L˜!˜Q  2§5¡5Ð)¨4°v·{±{×7HÑ7HÔ IØ ˆRX‰Xq˜!˜Q §¡Ð&¨gÔ 6¸Ð >Ø ˆRX‰Xq˜!˜Q §¡Ð&¨gÔ 6¸Ð >ð        
ò Uðó    óSó    ðSðó8óð8ðó2óð2òIð" ‡[[×ÑÐ8ÐÓ9ó:ó:ð:ðØ ‡[[×јX¨¨X Ó7ó5ó8óô5rracó —eZdZy)Ú Test2DCompatN)rírîrïrCrrr÷r÷©s„Ørr÷)Ú
Attributes)'Ú__doc__ÚnumpyrrSÚpandas.core.dtypes.dtypesrÚpandasr/Úpandas._testingÚ_testingr%Úpandas.api.typesrÚpandas.core.arrays.numpy_rÚpandas.tests.extensionrr"rrñrÚfixturer
r)r6r<rDrJrLrOrXr_r\Ú usefixturesrðÚExtensionTestsraÚNDArrayBacked2DTestsr÷rCrrú<module>rsðñó"Û å2ãÝÝ,Ý9Ý'à×-Ñ-Ðñ 3˜Sð 3°Có 3𠀇˜ Ð*Ô+ñ1ó,ð1ð‡ñóðð,‡ñFóðF𠇁ñ8óð8𠇁ñóðð‡ñ
4óð
4ð‡ñ9óð9ð‡ñ óð 𠇁ñ@óð@ð‡ñ "óð "ðk‰k×%Ñ%Ð&9Ó:€ ô~5˜d×1Ñ1ô~5ôB    4×,Ñ,õ    r