hyb
2026-01-30 15bc7727b58bf9ca0c8f21702fa893daac232b8d
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
Ë
oñúhƒ#ãó—dZddlmZddlmZmZddlZddlZddlZddl    Z    ddl
m Z m Z ddl Z ddlZddlmZddlmZddlmZmZmZddlZdd    lmZmZdd
lmZe r dd lm Z dd l!m"Z"Gd „de«Z#Gd„de«Z$d„Z%y)a¦
Test extension array for storing nested data in a pandas container.
 
The JSONArray stores lists of dictionaries. The storage mechanism is a list,
not an ndarray.
 
Note
----
We currently store lists of UserDicts. Pandas has a few places
internally that specifically check for dicts, and does non-scalar things
in that case. We *want* the dictionaries to be treated as scalars, so we
hack around pandas by using UserDicts.
é)Ú annotations)ÚUserDictÚabcN)Ú TYPE_CHECKINGÚAny)Úfind_stack_level)Ú'construct_1d_object_array_from_listlike)Ú is_bool_dtypeÚ is_list_likeÚ pandas_dtype)ÚExtensionArrayÚExtensionDtype)Úunpack_tuple_and_ellipses)ÚMapping)Útype_tcóT—eZdZUejZdZe«Zde    d<e
dd„«Z y)Ú    JSONDtypeÚjsonzMapping[str, Any]Úna_valuecó—tS)zq
        Return the array type associated with this dtype.
 
        Returns
        -------
        type
        )Ú    JSONArray)Úclss úTH:\Change_password\venv_build\Lib\site-packages\pandas/tests/extension/json/array.pyÚconstruct_array_typezJSONDtype.construct_array_type;s
€ôÐóN)Úreturnztype_t[JSONArray]) Ú__name__Ú
__module__Ú __qualname__rrÚtypeÚnamerrÚ__annotations__Ú classmethodr©rrrr6s/…Ø ;‰;€DØ €DÙ"*£*€HÐÓ,àòóñrrcó䇗eZdZe«ZdZddd„Zedddœd„«Zed„«Z    d„Z
dd    „Z dd
„Z d „Z d „Zdd „Zedd„«Zd„Zdd„Zd„Zdd„Zd„Zed„«Zd„Zd„Zdddœˆfd„
ZˆxZS) rièNFcóæ—|D]M}t||jj«rŒ$tdt    |jj«z«‚||_|j
x|_|_y)NzAll values must be of type )Ú
isinstanceÚdtyper Ú    TypeErrorÚstrÚdataÚ_itemsÚ_data)ÚselfÚvaluesr(ÚcopyÚvals     rÚ__init__zJSONArray.__init__Ks`€Øò    VˆCܘc 4§:¡:§?¡?Õ3ÜР=ÄÀDÇJÁJÇOÁOÓ@TÑ TÓUÐUð    VðˆŒ    ð$(§9¡9Ð,ˆŒ d•jr©r(r0có—||«S©Nr$)rÚscalarsr(r0s    rÚ_from_sequencezJSONArray._from_sequenceXs €á7‹|ÐrcóV—||Dcgc]}|dk7sŒ    t|«‘Œc}«Scc}w)Nr$)r)rr/ÚoriginalÚxs    rÚ_from_factorizedzJSONArray._from_factorized\s%€á¨Ö; A°1¸³7”H˜Q•KÒ;Ó<Ð<ùÒ;s‡
&’ &cóü—t|t«r t|«}t|tj«r|j
|St|t «r)|t d«k(rt|«|j
«St|t «rt|«|j
|«St|«s td«‚tjjj||«}t|j«rFt|«j!t#||«Dcgc]
\}}|sŒ    |‘Œ c}}|j¬«St|«|Dcgc]}|j
|‘Œc}«Scc}}wcc}w)Nzuonly integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices©r()r'ÚtuplerÚnumbersÚIntegralr+Úslicer r Ú
IndexErrorÚpdÚapiÚindexersÚcheck_array_indexerr
r(r7Úzip)r.Úitemr:ÚmÚis     rÚ __getitem__zJSONArray.__getitem__`s2€Ü dœEÔ "Ü,¨TÓ2ˆDä dœG×,Ñ,Ô -Ø—9‘9˜T‘?Ð "Ü ˜œeÔ $¨´°t³Ò)<à”4˜“:˜dŸi™iÓ(Ð (Ü ˜œeÔ $à”4˜“:˜dŸi™i¨™oÓ.Ð .ܘdÔ#ôðLóð ô
—6‘6—?‘?×6Ñ6°t¸TÓBˆDܘTŸZ™ZÔ(ܘD“z×0Ñ0Ü#& t¨T£?×8™4˜1˜a²a’QÓ8ÀÇ
Á
ð1óðð”4˜“:°TÖ:°˜tŸy™y¨›|Ò:Ó;Ð ;ùó9ùò;sÄ$
E3
Ä/E3
ÅE9cóT—t|tj«r||j|<yt|t    |«t
j f«stj|g«}t|tj«rd|jdk(rUtt||««D]<\}\}}|sŒ t||jj«sJ‚||j|<Œ>yt||«D]6\}}t||jj«sJ‚||j|<Œ8y)NÚbool)r'r?r@r+r rÚSequenceÚ    itertoolsÚcycleÚnpÚndarrayr(Ú    enumeraterG)r.ÚkeyÚvaluerJÚkÚvs      rÚ __setitem__zJSONArray.__setitem__|sé€Ü cœ7×+Ñ+Ô ,Ø"ˆDI‰IcŠNä˜e¤d¨4£j´#·,±,Ð%?Ô@ä!Ÿ™¨¨Ó0ä˜#œrŸz™zÔ*¨s¯y©y¸FÒ/Bä!*¬3¨s°E«?Ó!;ò)‘IA‘v˜˜1ÚÜ)¨!¨T¯Z©Z¯_©_Ô=Ð=Ð=Ø'(˜Ÿ    ™     !š ñ)ô
   U›Oò%‘DAqÜ% a¨¯©¯©Ô9Ð9Ð9Ø#$D—I‘I˜a’Lñ%rcó,—t|j«Sr5)Úlenr+©r.s rÚ__len__zJSONArray.__len__s€Ü4—9‘9‹~Ðrcó—tSr5©ÚNotImplemented©r.Úothers  rÚ__eq__zJSONArray.__eq__’ó€ÜÐrcó—tSr5r^r`s  rÚ__ne__zJSONArray.__ne__•rcrcó&—|dur$tjdtt«¬«|€t}|tk(rt t |««S|€!tj|j|¬«Stj|j||¬«S)NFaSStarting with NumPy 2.0, the behavior of the 'copy' keyword has changed and passing 'copy=False' raises an error when returning a zero-copy NumPy array is not possible. pandas will follow this behavior starting with pandas 3.0.
This conversion to NumPy requires a copy, but 'copy=False' was passed. Consider using 'np.asarray(..)' instead.)Ú
stacklevelr=r3)
ÚwarningsÚwarnÚ FutureWarningrÚobjectr    ÚlistrQÚasarrayr+)r.r(r0s   rÚ    __array__zJSONArray.__array__˜sx€Ø 5‰=Ü M‰Mð2ô Ü+Ó-õ     ð ˆ=܈EØ ”FŠ?ä:¼4À»:ÓFÐ FØ ˆ<ä—:‘:˜dŸi™i¨uÔ5Ð 5܏z‰z˜$Ÿ)™)¨5°tÔ<Ð<rcó@—tj|j«Sr5)ÚsysÚ    getsizeofr+r[s rÚnbyteszJSONArray.nbytes¯s€ä}‰}˜TŸY™YÓ'Ð'rcó —tj|jDcgc]}||jjk(‘Œc}t
¬«Scc}w)Nr=)rQÚarrayr+r(rrM)r.r:s  rÚisnazJSONArray.isna³s4€Üx‰x¸4¿9¹9ÖE°a˜˜dŸj™j×1Ñ1Ó1ÒEÌTÔRÐRùÒEsž A cóî—tj|«}d}|rV|€|jj}|dkj    «rt
‚    |Dcgc]}|dk7r|j |n|‘Œ}}n    |Dcgc]}|j |‘Œ}}t|«j||j¬«Scc}w#t$r}t|«|‚d}~wwxYwcc}w#t$r}t|«|‚d}~wwxYw)NzIIndex is out of bounds or cannot do a non-empty take from an empty array.éÿÿÿÿr=)
rQrmr(rÚanyÚ
ValueErrorr+rBr r7)r.ÚindexerÚ
allow_fillÚ
fill_valueÚmsgÚlocÚoutputÚerrs        rÚtakezJSONArray.take¶s€ô—*‘*˜WÓ%ˆð 2ð     ñ
ØÐ!Ø!ŸZ™Z×0Ñ0
à˜"‘ ×!Ñ!Ô#ܠРð /àKRöØDG c¨R¢iD—I‘I˜c’N°ZÑ?ðñð  /Ø4;Ö<¨S˜$Ÿ)™) C›.Ð<Ð<ôD‹z×(Ñ(¨°t·z±zÐ(ÓBÐBùòøôò /Ü  “o¨3Ð.ûð /üò=øÜò /Ü  “o¨3Ð.ûð /úsTÁ B8ÁB3Á-B8Á1CÁ5C CÂ3B8Â8    Cà C à CÃCà   C4Ã# C/Ã/C4có>—t|«|jdd«Sr5)r r+r[s rr0zJSONArray.copyÔs€ØŒtD‹z˜$Ÿ)™)¡A˜,Ó'Ð'rTcóÚ—ddlm}t|«}t|t    |j
««r#||j
k(r|r|j «S|St||«r$|j«}|j||d¬«S|s.tj|Dcgc] }t|«‘Œc}|¬«Stj|Dcgc] }t|«‘Œc}||¬«Scc}wcc}w)Nr)Ú StringDtypeFr3r=) Úpandas.core.arrays.string_r„r r'r r(r0rr7rQrmÚdictrt)r.r(r0r„Úarr_clsr:s      rÚastypezJSONArray.astype×sÀ€õ    ;ä˜UÓ#ˆä eœT $§*¡*Ó-Ô .°5¸D¿J¹JÒ3FÙØ—y‘y“{Ð"؈KÜ ˜˜{Ô +Ø×0Ñ0Ó2ˆGØ×)Ñ)¨$°eÀ%Ð)ÓHÐ HÙÜ—:‘:°Ö5¨1œt AwÒ5¸UÔCÐ Cä—8‘8¨dÖ3¨œT !WÒ3¸5ÀtÔLÐ Lùò6ùâ3s ÂC#ÃC(c    óėt|«|jDchc]}t|j««’Œc}Dcgc] }t    |«‘Œc}«Scc}wcc}wr5)r r+r>Úitemsr†)r.Údr:s   rÚuniquezJSONArray.uniqueësD€ðŒtD‹zÀtÇyÁyÖ,QÀ!¬U°1·7±7³9Õ-=Ò,QÖR qœ4 7ÒRÓSÐSùÒ,QùÒRs
š A¿Acóp—ttjjd„|D«««}||«S)Nc3ó4K—|]}|j–—Œy­wr5)r+)Ú.0r:s  rú    <genexpr>z.JSONArray._concat_same_type.<locals>.<genexpr>òsèø€Ò1L¸Q°!·&µ&Ñ1Lùs‚)rlrOÚchainÚ from_iterable)rÚ    to_concatr+s   rÚ_concat_same_typezJSONArray._concat_same_typeðs+€ä”I—O‘O×1Ñ1Ñ1LÀ)Ô1LÓLÓMˆÙ4‹yÐrcóf—|j«}t|«dk(r|j«}|dfS)Nrr$)Ú_values_for_argsortrZÚravel)r.Úfrozens  rÚ_values_for_factorizezJSONArray._values_for_factorizeõs1€Ø×)Ñ)Ó+ˆÜ ˆv‹;˜!Ò à—\‘\“^ˆFؐrˆzÐrcón—|Dcgc]}t|j««‘Œ}}t|«Scc}wr5)r>rŠr    )r.r:r˜s   rr–zJSONArray._values_for_argsortüs0€à,0Ö1 q”%˜Ÿ™›    Õ"Ð1ˆÐ1Ü6°vÓ>Ð>ùò2s… 2)Úlimitr0có(•—t‰||||¬«S)N)Úmethodr›r0)ÚsuperÚ_pad_or_backfill)r.rr›r0Ú    __class__s    €rrŸzJSONArray._pad_or_backfillsø€ä‰wÑ'¨v¸UÈÐ'ÓNÐNr)NF)rÚNone)rÚint)NN)FN)T)rrrrr(Ú__array_priority__r2r#r7r;rKrXr\rbrernÚpropertyrrrurr0rˆrŒr”r™r–rŸÚ __classcell__)r s@rrrGsÂø„Ù ‹K€EØÐô-ðØ.2¸óóððñ=óð=ò<ó8%ó&òòó=ð.ò(óð(òSóCò<(óMò(Tð
ñóðòò?ð
15¸4÷OòOrrc óV—tjjd«}td«Dcgc]l}t    t|j dd««Dcgc]<}|j ttj««|j dd«f‘Œ>c}«‘Œnc}Scc}wcc}w)Néédré
)
rQÚrandomÚ default_rngÚrangerÚintegersÚchoicerlÚstringÚ ascii_letters)ÚrngÚ_s  rÚ    make_datar³s”€ä
)‰)×
 Ó
"€Côs“ö ð ô     ô˜sŸ|™|¨A¨rÓ2Ó3ö àð—‘œD¤×!5Ñ!5Ó6Ó7¸¿¹ÀaÈÓ9MÒNò õ    
ò ðùò ùò s­'B&ÁAB!    B&Â!B&)&Ú__doc__Ú
__future__rÚ collectionsrrrOr?r¯rpÚtypingrrrhÚnumpyrQÚpandas.util._exceptionsrÚpandas.core.dtypes.castr    Úpandas.core.dtypes.commonr
r r ÚpandasrCÚpandas.api.extensionsr rÚpandas.core.indexersrÚcollections.abcrÚpandas._typingrrrr³r$rrú<module>rÁsyðñ õ#÷óÛÛ Û
÷óãå4åK÷ñó ÷õ;áÝ'å%ôôô"|Oô|Oó~ r