§
    tŠtjV$  ã                  ó  — d Z ddlmZ ddlmZmZ ddlZddlZddlZddl	Z	ddl
mZmZ ddlZddlmZ ddlmZmZmZ ddlZddlmZmZ dd	lmZmZ erdd
lmZ ddlm Z   G d„ de¦  «        Z! G d„ de¦  «        Z"dd„Z#dS )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©Ú'construct_1d_object_array_from_listlike)Úis_bool_dtypeÚis_list_likeÚpandas_dtype)ÚExtensionArrayÚExtensionDtype)Úgetitem_returns_viewÚunpack_tuple_and_ellipses)ÚMapping)Útype_tc                  óH   — e Zd ZU ej        ZdZ e¦   «         Zde	d<   dd„Z
dS )	Ú	JSONDtypeÚjsonzMapping[str, Any]Úna_valueÚreturnútype_t[JSONArray]c                ó   — t           S )zq
        Return the array type associated with this dtype.

        Returns
        -------
        type
        )Ú	JSONArray©Úselfs    ú_/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/pandas/tests/extension/json/array.pyÚconstruct_array_typezJSONDtype.construct_array_type<   s
   € õ Ðó    N)r   r   )Ú__name__Ú
__module__Ú__qualname__r   r   ÚtypeÚnamer   r   Ú__annotations__r   © r   r   r   r   7   sM   € € € € € € ØŒ;€DØ€DØ"* (¡*¤*€HÐ,Ð,Ð,Ñ,ðð ð ð ð ð r   r   c                  ó  ‡ — e Zd Z e¦   «         ZdZddd„Zedddœd„¦   «         Zed	„ ¦   «         Z	d
„ Z
d„ Zdd„Zd d„Zd„ Zd„ Zd!d„Zed d„¦   «         Zd„ Zd"d„Zd„ Zd#d„Zd„ Zed„ ¦   «         Zd„ Zd„ Zdddœˆ fd„
Zˆ xZS )$r   iè  NFr   ÚNonec                óÊ   — |D ]E}t          || j        j        ¦  «        s)t          dt	          | j        j        ¦  «        z   ¦  «        ‚ŒF|| _        | j        x| _        | _        d S )NzAll values must be of type )Ú
isinstanceÚdtyper#   Ú	TypeErrorÚstrÚdataÚ_itemsÚ_data)r   Úvaluesr+   ÚcopyÚvals        r   Ú__init__zJSONArray.__init__K   sm   € Øð 	Vð 	VˆCÝ˜c 4¤:¤?Ñ3Ô3ð VÝÐ =ÅÀDÄJÄOÑ@TÔ@TÑ TÑUÔUÐUðVàˆŒ	ð $(¤9Ð,ˆŒ�d”j�j�jr   ©r+   r2   c               ó   —  | |¦  «        S ©Nr&   )ÚclsÚscalarsr+   r2   s       r   Ú_from_sequencezJSONArray._from_sequenceX   s   € àˆs�7‰|Œ|Ðr   c                ó,   —  | d„ |D ¦   «         ¦  «        S )Nc                ó8   — g | ]}|d k    ¯t          |¦  «        ‘ŒS )r&   )r   ©Ú.0Úxs     r   ú
<listcomp>z.JSONArray._from_factorized.<locals>.<listcomp>^   s#   € Ð;Ð;Ð; A°1¸²7°7•H˜Q‘K”K°7°7°7r   r&   )r8   r1   Úoriginals      r   Ú_from_factorizedzJSONArray._from_factorized\   s!   € àˆsÐ;Ð;¨Ð;Ñ;Ô;Ñ<Ô<Ð<r   c                óô   — 	 t          | ¦  «                             || j        ¬¦  «        S # t          t          f$ r; ddlm} t          j        |t          ¬¦  «        }| 
                    |d¬¦  «        cY S w xY w)N©r+   r   )ÚlibT)Úconvert_non_numeric)r#   r:   r+   Ú
ValueErrorr,   Úpandas._libsrE   ÚnpÚasarrayÚobjectÚmaybe_convert_objects)r   r1   rE   s      r   Ú_cast_pointwise_resultz JSONArray._cast_pointwise_result`   s’   € ð	OÝ˜‘:”:×,Ò,¨V¸4¼:Ð,ÑFÔFÐFøÝ�IÐ&ð 	Oð 	Oð 	Oà(Ð(Ð(Ð(Ð(Ð(å”Z ­fÐ5Ñ5Ô5ˆFØ×,Ò,¨VÈÐ,ÑNÔNÐNÐNÐNð	Oøøøs   ‚(+ «A	A7Á6A7c                óh  ‡ — t          |t          ¦  «        rt          |¦  «        }t          |t          j        ¦  «        r‰ j        |         S t          |t          ¦  «        r>|t          d ¦  «        k    r+ t          ‰ ¦  «        ‰ j        ¦  «        }‰ j        |_        |S t          |t          ¦  «        rA t          ‰ ¦  «        ‰ j        |         ¦  «        }t          ‰ |¦  «        r‰ j        |_        |S t          |¦  «        st          d¦  «        ‚t          j        j                             ‰ |¦  «        }t!          |j        ¦  «        rCt          ‰ ¦  «                             d„ t'          ‰ |d¬¦  «        D ¦   «         ‰ j        ¬¦  «        S  t          ‰ ¦  «        ˆ fd„|D ¦   «         ¦  «        S )Nzuonly integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indicesc                ó   — g | ]	\  }}|¯|‘Œ
S r&   r&   )r>   r?   Úms      r   r@   z)JSONArray.__getitem__.<locals>.<listcomp>†   s!   € ÐEÐEÐE™4˜1˜aÀ1ÐE�QÐEÐEÐEr   T©ÚstrictrD   c                ó*   •— g | ]}‰j         |         ‘ŒS r&   ©r.   )r>   Úir   s     €r   r@   z)JSONArray.__getitem__.<locals>.<listcomp>‰   s   ø€ Ð:Ð:Ð:°˜tœy¨œ|Ð:Ð:Ð:r   )r*   Útupler   ÚnumbersÚIntegralr.   Úslicer#   Ú	_readonlyr   r   Ú
IndexErrorÚpdÚapiÚindexersÚcheck_array_indexerr
   r+   r:   Úzip)r   ÚitemÚresults   `  r   Ú__getitem__zJSONArray.__getitem__j   s¤  ø€ Ý�d�EÑ"Ô"ð 	3Ý,¨TÑ2Ô2ˆDå�d�GÔ,Ñ-Ô-ð 	<Ø”9˜T”?Ð"Ý˜�eÑ$Ô$ð 	<¨µ°t±´Ò)<Ð)<à•T˜$‘Z”Z ¤	Ñ*Ô*ˆFØ#œ~ˆFÔØˆMÝ˜�eÑ$Ô$ð 	<à•T˜$‘Z”Z ¤	¨$¤Ñ0Ô0ˆFÝ# D¨$Ñ/Ô/ð 2Ø#'¤>�Ô ØˆMÝ˜dÑ#Ô#ð 	<õ ðLñô ð õ
 ”6”?×6Ò6°t¸TÑBÔBˆDÝ˜TœZÑ(Ô(ð Ý˜D‘z”z×0Ò0ØEÐE¥3 t¨T¸$Ð#?Ñ#?Ô#?ÐEÑEÔEÈTÌZð 1ñ ô ð ð •4˜‘:”:Ð:Ð:Ð:Ð:°TÐ:Ñ:Ô:Ñ;Ô;Ð;r   c                ód  — | j         rt          d¦  «        ‚t          |t          j        ¦  «        r|| j        |<   d S t          |t          | ¦  «        t          j        f¦  «        st          j
        |g¦  «        }t          |t          j        ¦  «        r]|j        dk    rRt          t          ||d¬¦  «        ¦  «        D ]0\  }\  }}|r&t          || j        j        ¦  «        sJ ‚|| j        |<   Œ1d S t          ||d¬¦  «        D ]+\  }}t          || j        j        ¦  «        sJ ‚|| j        |<   Œ,d S )NzCannot modify read-only arrayÚboolFrQ   )rZ   rG   r*   rW   rX   r.   r#   r   ÚSequenceÚ	itertoolsÚcyclerI   Úndarrayr+   Ú	enumerater`   )r   ÚkeyÚvaluerU   ÚkÚvs         r   Ú__setitem__zJSONArray.__setitem__‹   sJ  € ØŒ>ð 	>ÝÐ<Ñ=Ô=Ð=å�c�7Ô+Ñ,Ô,ð 	%Ø"ˆDŒI�c‰NˆNˆNå˜e¥d¨4¡j¤jµ#´,Ð%?Ñ@Ô@ð 1å!œ¨¨Ñ0Ô0�å˜#�rœzÑ*Ô*ð 	%¨s¬y¸FÒ/BÐ/Bå!*­3¨s°EÀ%Ð+HÑ+HÔ+HÑ!IÔ!Ið )ð )‘I�A‘v˜˜1Øð )Ý)¨!¨T¬Z¬_Ñ=Ô=Ð=Ð=Ð=Ø'(˜œ	 !™øð)ð )õ
    U°5Ð9Ñ9Ô9ð %ð %‘D�A�qÝ% a¨¬¬Ñ9Ô9Ð9Ð9Ð9Ø#$�D”I˜a‘L�Lð%ð %r   Úintc                ó*   — t          | j        ¦  «        S r7   )Úlenr.   r   s    r   Ú__len__zJSONArray.__len__¡   s   € Ý�4”9‰~Œ~Ðr   c                ó   — t           S r7   ©ÚNotImplemented©r   Úothers     r   Ú__eq__zJSONArray.__eq__¤   ó   € ÝÐr   c                ó   — t           S r7   ru   rw   s     r   Ú__ne__zJSONArray.__ne__§   rz   r   c                óú   — |du rt          d¦  «        ‚|€t          }|t          k    rt          t          | ¦  «        ¦  «        S |€t	          j        | j        |¬¦  «        S t	          j        | j        ||¬¦  «        S )NFz:Unable to avoid copy while creating an array as requested.rD   r5   )rG   rK   r	   ÚlistrI   rJ   r.   )r   r+   r2   s      r   Ú	__array__zJSONArray.__array__ª   s~   € Ø�5ˆ=ˆ=ÝØLñô ð ð ˆ=ÝˆEØ•FŠ?ˆ?å:½4À¹:¼:ÑFÔFÐFØˆ<å”:˜dœi¨uÐ5Ñ5Ô5Ð5ÝŒz˜$œ)¨5°tÐ<Ñ<Ô<Ð<r   c                ó4   — t          j        | j        ¦  «        S r7   )ÚsysÚ	getsizeofr.   r   s    r   ÚnbyteszJSONArray.nbytes¹   s   € åŒ}˜TœYÑ'Ô'Ð'r   c                ó\   ‡ — t          j        ˆ fd„‰ j        D ¦   «         t          ¬¦  «        S )Nc                ó0   •— g | ]}|‰j         j        k    ‘ŒS r&   )r+   r   )r>   r?   r   s     €r   r@   z"JSONArray.isna.<locals>.<listcomp>¾   s#   ø€ ÐEÐEÐE°a˜˜dœjÔ1Ò1ÐEÐEÐEr   rD   )rI   Úarrayr.   re   r   s   `r   ÚisnazJSONArray.isna½   s/   ø€ ÝŒxÐEÐEÐEÐE¸4¼9ÐEÑEÔEÍTÐRÑRÔRÐRr   c                ó¬  ‡ ‡— t          j        |¦  «        }d}|r`‰€‰ j        j        Š|dk                          ¦   «         rt
          ‚	 ˆˆ fd„|D ¦   «         }nT# t          $ r}t          |¦  «        |‚d }~ww xY w	 ˆ fd„|D ¦   «         }n"# t          $ r}t          |¦  «        |‚d }~ww xY wt          ‰ ¦  «                             |‰ j        ¬¦  «        S )NzIIndex is out of bounds or cannot do a non-empty take from an empty array.éÿÿÿÿc                ó:   •— g | ]}|d k    r‰j         |         n‰‘ŒS )r‰   rT   )r>   ÚlocÚ
fill_valuer   s     €€r   r@   z"JSONArray.take.<locals>.<listcomp>Ð   s8   ø€ ð ð ð ØDG c¨R¢i i�D”I˜c”N�N°Zðð ð r   c                ó*   •— g | ]}‰j         |         ‘ŒS r&   rT   )r>   r‹   r   s     €r   r@   z"JSONArray.take.<locals>.<listcomp>×   s   ø€ Ð<Ð<Ð<¨S˜$œ) Cœ.Ð<Ð<Ð<r   rD   )	rI   rJ   r+   r   ÚanyrG   r[   r#   r:   )r   ÚindexerÚ
allow_fillrŒ   ÚmsgÚoutputÚerrs   `  `   r   ÚtakezJSONArray.takeÀ   s(  øø€ õ ”*˜WÑ%Ô%ˆàWð 	ð ð 	/ØÐ!Ø!œZÔ0�
à˜"’×!Ò!Ñ#Ô#ð !Ý Ð ð/ðð ð ð ð ØKRðñ ô ��øõ ð /ð /ð /Ý  ‘o”o¨3Ð.øøøøð/øøøð/Ø<Ð<Ð<Ð<°GÐ<Ñ<Ô<��øÝð /ð /ð /Ý  ‘o”o¨3Ð.øøøøð/øøøõ �D‰zŒz×(Ò(¨°t´zÐ(ÑBÔBÐBs0   Á	A Á
A8Á#A3Á3A8Á<B Â
B*ÂB%Â%B*c                óL   —  t          | ¦  «        | j        d d …         ¦  «        S r7   ©r#   r.   r   s    r   r2   zJSONArray.copyÝ   s"   € Ø�t�D‰zŒz˜$œ) A A Aœ,Ñ'Ô'Ð'r   Tc                ó´  — ddl m} t          |¦  «        }t          |t	          | j        ¦  «        ¦  «        r#|| j        k    r|r|                      ¦   «         S | S t          ||¦  «        r,|                     ¦   «         }|                     | |d¬¦  «        S |s t          j
        d„ | D ¦   «         |¬¦  «        S t          j        d„ | D ¦   «         ||¬¦  «        S )Nr   )ÚStringDtypeFr5   c                ó,   — g | ]}t          |¦  «        ‘ŒS r&   ©Údictr=   s     r   r@   z$JSONArray.astype.<locals>.<listcomp>ð   s   € Ð5Ð5Ð5¨1�t A™wœwÐ5Ð5Ð5r   rD   c                ó,   — g | ]}t          |¦  «        ‘ŒS r&   rš   r=   s     r   r@   z$JSONArray.astype.<locals>.<listcomp>ò   s   € Ð3Ð3Ð3¨�T !™WœWÐ3Ð3Ð3r   )Úpandas.core.arrays.string_r˜   r   r*   r#   r+   r2   r   r:   rI   rJ   r†   )r   r+   r2   r˜   Úarr_clss        r   ÚastypezJSONArray.astypeà   sù   € ð 	;Ð:Ð:Ð:Ð:Ð:å˜UÑ#Ô#ˆå�e�T $¤*Ñ-Ô-Ñ.Ô.ð 
	M°5¸D¼JÒ3FÐ3FØð #Ø—y’y‘{”{Ð"ØˆKÝ˜˜{Ñ+Ô+ð 	MØ×0Ò0Ñ2Ô2ˆGØ×)Ò)¨$°eÀ%Ð)ÑHÔHÐHØð 	MÝ”:Ð5Ð5°Ð5Ñ5Ô5¸UÐCÑCÔCÐCå”8Ð3Ð3¨dÐ3Ñ3Ô3¸5ÀtÐLÑLÔLÐLr   c                ód   —  t          | ¦  «        d„ d„ | j        D ¦   «         D ¦   «         ¦  «        S )Nc                ó,   — g | ]}t          |¦  «        ‘ŒS r&   rš   r=   s     r   r@   z$JSONArray.unique.<locals>.<listcomp>÷   s   € ÐRÐRÐR q�4 ™7œ7ÐRÐRÐRr   c                óP   — h | ]#}t          |                     ¦   «         ¦  «        ’Œ$S r&   ©rV   Úitems)r>   Úds     r   ú	<setcomp>z#JSONArray.unique.<locals>.<setcomp>÷   s(   € Ð,QÐ,QÐ,QÀ!­U°1·7²7±9´9Ñ-=Ô-=Ð,QÐ,QÐ,Qr   r–   r   s    r   ÚuniquezJSONArray.uniqueô   s:   € ð �t�D‰zŒzÐRÐRÐ,QÐ,QÀtÄyÐ,QÑ,QÔ,QÐRÑRÔRÑSÔSÐSr   c                ó„   — t          t          j                             d„ |D ¦   «         ¦  «        ¦  «        } | |¦  «        S )Nc              3  ó$   K  — | ]}|j         V — Œd S r7   rT   r=   s     r   ú	<genexpr>z.JSONArray._concat_same_type.<locals>.<genexpr>û   s$   è è € Ð1LÐ1L¸Q°!´&Ð1LÐ1LÐ1LÐ1LÐ1LÐ1Lr   )r~   rg   ÚchainÚfrom_iterable)r8   Ú	to_concatr.   s      r   Ú_concat_same_typezJSONArray._concat_same_typeù   s<   € å•I”O×1Ò1Ð1LÐ1LÀ)Ð1LÑ1LÔ1LÑLÔLÑMÔMˆØˆs�4‰yŒyÐr   c                ó€   — |                       ¦   «         }t          |¦  «        dk    r|                     ¦   «         }|dfS )Nr   r&   )Ú_values_for_argsortrr   Úravel©r   Úfrozens     r   Ú_values_for_factorizezJSONArray._values_for_factorizeþ   s;   € Ø×)Ò)Ñ+Ô+ˆÝˆv‰;Œ;˜!ÒÐà—\’\‘^”^ˆFØ�rˆzÐr   c                ó8   — d„ | D ¦   «         }t          |¦  «        S )Nc                óP   — g | ]#}t          |                     ¦   «         ¦  «        ‘Œ$S r&   r£   r=   s     r   r@   z1JSONArray._values_for_argsort.<locals>.<listcomp>  s(   € Ð1Ð1Ð1 q•%˜Ÿš™	œ	Ñ"Ô"Ð1Ð1Ð1r   r   r²   s     r   r°   zJSONArray._values_for_argsort  s#   € à1Ð1¨DÐ1Ñ1Ô1ˆÝ6°vÑ>Ô>Ð>r   )Úlimitr2   c               óL   •— t          ¦   «                              |||¬¦  «        S )N)Úmethodr·   r2   )ÚsuperÚ_pad_or_backfill)r   r¹   r·   r2   Ú	__class__s       €r   r»   zJSONArray._pad_or_backfill
  s"   ø€ å‰wŒw×'Ò'¨v¸UÈÐ'ÑNÔNÐNr   )NF)r   r(   )r   rp   )NN)FN)T)r    r!   r"   r   r+   Ú__array_priority__r4   Úclassmethodr:   rB   rM   rc   ro   rs   ry   r|   r   Úpropertyrƒ   r‡   r”   r2   rŸ   r§   r®   r´   r°   r»   Ú__classcell__)r¼   s   @r   r   r   G   sû  ø€ € € € € ØˆI‰KŒK€EØÐð-ð -ð -ð -ð -ð Ø.2¸ð ð ð ð ñ „[ðð ð=ð =ñ „[ð=ðOð Oð Oð<ð <ð <ðB%ð %ð %ð %ð,ð ð ð ðð ð ðð ð ð=ð =ð =ð =ð ð(ð (ð (ñ „Xð(ðSð Sð SðCð Cð Cð Cð:(ð (ð (ðMð Mð Mð Mð(Tð Tð Tð
 ðð ñ „[ððð ð ð?ð ?ð ?ð
 15¸4ð Oð Oð Oð Oð Oð Oð Oð Oð Oð Oð Or   r   Únrp   c                óx   ‡— t           j                             d¦  «        Šˆfd„t          | ¦  «        D ¦   «         S )Né   c                óˆ   •— g | ]>}t          ˆfd „t          ‰                     dd¦  «        ¦  «        D ¦   «         ¦  «        ‘Œ?S )c                ó”   •— g | ]D}‰                      t          t          j        ¦  «        ¦  «        ‰                     d d¦  «        f‘ŒES )r   éd   )Úchoicer~   ÚstringÚascii_lettersÚintegers©r>   Ú_Úrngs     €r   r@   z(make_data.<locals>.<listcomp>.<listcomp>  sS   ø€ ð ð ð àð —’�D¥Ô!5Ñ6Ô6Ñ7Ô7¸¿ºÀaÈÑ9MÔ9MÐNðð ð r   r   é
   )r   ÚrangerÊ   rË   s     €r   r@   zmake_data.<locals>.<listcomp>  sq   ø€ ð ð ð ð õ 	ðð ð ð å˜sŸ|š|¨A¨rÑ2Ô2Ñ3Ô3ðñ ô ñ	
ô 	
ðð ð r   )rI   ÚrandomÚdefault_rngrÏ   )rÁ   rÍ   s    @r   Ú	make_datarÒ     sK   ø€ å
Œ)×
Ò
 Ñ
"Ô
"€Cðð ð ð õ �q‘”ðñ ô ð r   )rÁ   rp   )$Ú__doc__Ú
__future__r   Úcollectionsr   r   rg   rW   rÈ   r�   Útypingr   r   ÚnumpyrI   Úpandas.core.dtypes.castr	   Úpandas.core.dtypes.commonr
   r   r   Úpandasr\   Úpandas.api.extensionsr   r   Úpandas.core.indexersr   r   Úcollections.abcr   Úpandas._typingr   r   r   rÒ   r&   r   r   ú<module>rß      sý  ððð ð #Ð "Ð "Ð "Ð "Ð "ðð ð ð ð ð ð ð ð Ð Ð Ð Ø €€€Ø €€€Ø 
€
€
€
ðð ð ð ð ð ð ð ð
 Ð Ð Ð à KÐ KÐ KÐ KÐ KÐ Kðð ð ð ð ð ð ð ð ð ð Ð Ð Ð ðð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð
 ð &Ø'Ð'Ð'Ð'Ð'Ð'à%Ð%Ð%Ð%Ð%Ð%ðð ð ð ð �ñ ô ð ð EOð EOð EOð EOð EO�ñ EOô EOð EOðPð ð ð ð ð r   