§
    ƒÛgL"  ã                   ó¢  — d Z ddlZddlmZmZ ddlmZ ddlm	Z	m
Z
mZmZmZmZmZmZmZmZmZ ddlmZ  G d„ de¦  «        Z G d	„ d
ej        ¦  «        Z G d„ de¦  «        Z G d„ dej        ¦  «        Z e	j        e¦  «        d„ ¦   «         Z e	j        e¦  «        d„ ¦   «         Z e
d¦  «        d„ ¦   «         Z  e
e¦  «        d„ ¦   «         Z! ee¦  «         G d„ dej"        ¦  «        ¦   «         Z# ee¦  «         G d„ dej"        ¦  «        ¦   «         Z$ eedd¦  «          eedd¦  «          eedd¦  «         d„ Z%d„ Z& ed e¦  «        d!„ ¦   «         Z' ed e¦  «        d"„ ¦   «         Z( edeej)        ¦  «        d#„ ¦   «         Z* edeej)        ¦  «        d$„ ¦   «         Z+ eeej)        e¦  «        d%„ ¦   «         Z, ee¦  «        d&„ ¦   «         Z- ee¦  «        d'„ ¦   «         Z. ee¦  «        d(„ ¦   «         Z/ ee¦  «        d)„ ¦   «         Z0 eed*¦  «        d+„ ¦   «         Z1 ee2¦  «        d,„ ¦   «         Z3 eed-¦  «        d.„ ¦   «         Z4dS )/z.
Implementation of a minimal Pandas-like API.
é    N)ÚtypesÚcgutils)Úmodels)Útypeof_implÚtype_callableÚregister_modelÚlower_builtinÚboxÚunboxÚNativeValueÚoverloadÚoverload_attributeÚoverload_methodÚmake_attribute_wrapper)Úimpl_ret_borrowedc                   óJ   — e Zd ZdZd„ Zd„ Zed„ ¦   «         Zed„ ¦   «         ZdS )ÚIndexz-
    A minimal pandas.Index-like object.
    c                 óf   — t          |t          j        ¦  «        sJ ‚|j        dk    sJ ‚|| _        d S ©Né   )Ú
isinstanceÚnpÚndarrayÚndimÚ_data)ÚselfÚdatas     úP/granary/edev/quantum/lib/python3.11/site-packages/numba/tests/pdlike_usecase.pyÚ__init__zIndex.__init__   s4   € Ý˜$¥¤
Ñ+Ô+Ð+Ð+Ð+ØŒy˜AŠ~ˆ~ˆ~ˆ~ØˆŒ
ˆ
ˆ
ó    c                 ó*   — t          | j        ¦  «        S ©N)Úiterr   ©r   s    r   Ú__iter__zIndex.__iter__   s   € Ý�D”JÑÔÐr    c                 ó   — | j         j        S r"   )r   Údtyper$   s    r   r'   zIndex.dtype   ó   € àŒzÔÐr    c                 ó   — | j         j        S r"   )r   Úflagsr$   s    r   r*   zIndex.flags!   r(   r    N©	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r%   Úpropertyr'   r*   © r    r   r   r      sr   € € € € € ðð ðð ð ð
 ð  ð  ð ð ð  ñ „Xð ð ð ð  ñ „Xð ð  ð  r    r   c                   óZ   ‡ — e Zd ZdZdZˆ fd„Zed„ ¦   «         Zed„ ¦   «         Zd	d„Z	ˆ xZ
S )
Ú	IndexTypez+
    The type class for Index objects.
    éè  c                 ój   •— || _         t          t          | ¦  «                             |d|¦  «         d S r   )ÚpyclassÚsuperr3   r   )r   r'   Úlayoutr6   Ú	__class__s       €r   r   zIndexType.__init__,   s2   ø€ ØˆŒÝ�i˜ÑÔ×'Ò'¨¨q°&Ñ9Ô9Ð9Ð9Ð9r    c                 ó*   — | j         | j        | j        fS r"   )r6   r'   r8   r$   s    r   ÚkeyzIndexType.key0   s   € àŒ|˜TœZ¨¬Ð4Ð4r    c                 óB   — t          j        | j        d| j        ¦  «        S r   )r   ÚArrayr'   r8   r$   s    r   Úas_arrayzIndexType.as_array4   s   € åŒ{˜4œ: q¨$¬+Ñ6Ô6Ð6r    Nr   c                 ót   — |dk    sJ ‚|€| j         }|p| j        } t          | ¦  «        ||| j        ¦  «        S r   )r'   r8   Útyper6   ©r   r'   r   r8   s       r   ÚcopyzIndexType.copy8   sC   € Ø�qŠyˆyˆyˆyØˆ=Ø”JˆEØÐ&˜4œ;ˆØ�t�D‰zŒz˜% ¨¬Ñ6Ô6Ð6r    )Nr   N©r,   r-   r.   r/   Úarray_priorityr   r0   r;   r>   rB   Ú__classcell__©r9   s   @r   r3   r3   &   s“   ø€ € € € € ðð ð €Nð:ð :ð :ð :ð :ð ð5ð 5ñ „Xð5ð ð7ð 7ñ „Xð7ð7ð 7ð 7ð 7ð 7ð 7ð 7ð 7r    r3   c                   óJ   — e Zd ZdZd„ Zd„ Zed„ ¦   «         Zed„ ¦   «         ZdS )ÚSeriesz.
    A minimal pandas.Series-like object.
    c                 ó¢   — t          |t          j        ¦  «        sJ ‚t          |t          ¦  «        sJ ‚|j        dk    sJ ‚|| _        || _        d S r   )r   r   r   r   r   Ú_valuesÚ_index)r   r   Úindexs      r   r   zSeries.__init__E   sQ   € Ý˜$¥¤
Ñ+Ô+Ð+Ð+Ð+Ý˜%¥Ñ'Ô'Ð'Ð'Ð'ØŒy˜AŠ~ˆ~ˆ~ˆ~ØˆŒØˆŒˆˆr    c                 ó*   — t          | j        ¦  «        S r"   )r#   rJ   r$   s    r   r%   zSeries.__iter__L   s   € Ý�D”LÑ!Ô!Ð!r    c                 ó   — | j         j        S r"   )rJ   r'   r$   s    r   r'   zSeries.dtypeO   ó   € àŒ|Ô!Ð!r    c                 ó   — | j         j        S r"   )rJ   r*   r$   s    r   r*   zSeries.flagsS   rO   r    Nr+   r1   r    r   rH   rH   @   sr   € € € € € ðð ðð ð ð"ð "ð "ð ð"ð "ñ „Xð"ð ð"ð "ñ „Xð"ð "ð "r    rH   c                   óZ   ‡ — e Zd ZdZdZˆ fd„Zed„ ¦   «         Zed„ ¦   «         Zd
d	„Z	ˆ xZ
S )Ú
SeriesTypez,
    The type class for Series objects.
    r4   c                 óô   •— t          |t          ¦  «        sJ ‚|| _        || _        t	          j        | j        dd¦  «        | _        d|›d|›d�}t          t          | ¦  «         	                    |¦  «         d S )Nr   ÚCzseries(z, ú))
r   r3   r'   rL   r   r=   Úvaluesr7   rR   r   )r   r'   rL   Únamer9   s       €r   r   zSeriesType.__init__^   sv   ø€ Ý˜%¥Ñ+Ô+Ð+Ð+Ð+ØˆŒ
ØˆŒ
Ý”k $¤*¨a°Ñ5Ô5ˆŒˆØ#( 5 5¨%¨%¨%Ð0ˆÝ�j˜$ÑÔ×(Ò(¨Ñ.Ô.Ð.Ð.Ð.r    c                 ó   — | j         | j        fS r"   )r'   rL   r$   s    r   r;   zSeriesType.keyf   s   € àŒz˜4œ:Ð%Ð%r    c                 ó   — | j         S r"   )rV   r$   s    r   r>   zSeriesType.as_arrayj   s
   € àŒ{Ðr    Nr   rT   c                 óp   — |dk    sJ ‚|dk    sJ ‚|€| j         } t          | ¦  «        || j        ¦  «        S ©Nr   rT   )r'   r@   rL   rA   s       r   rB   zSeriesType.copyn   sB   € Ø�qŠyˆyˆyˆyØ˜Š}ˆ}ˆ}ˆ}Øˆ=Ø”JˆEØ�t�D‰zŒz˜% ¤Ñ,Ô,Ð,r    r[   rC   rF   s   @r   rR   rR   X   s“   ø€ € € € € ðð ð €Nð/ð /ð /ð /ð /ð ð&ð &ñ „Xð&ð ðð ñ „Xðð-ð -ð -ð -ð -ð -ð -ð -r    rR   c                 ó–   — t          | j        |¦  «        }|j        dk    sJ ‚t          |j        |j        t          | ¦  «        ¦  «        S r   )r   r   r   r3   r'   r8   r@   )ÚvalÚcÚarrtys      r   Útypeof_indexr`   v   s>   € å˜œ	 1Ñ%Ô%€EØŒ:˜Š?ˆ?ˆ?ˆ?Ý�U”[ %¤,µ°S±	´	Ñ:Ô:Ð:r    c                 ó´   — t          | j        |¦  «        }t          | j        |¦  «        }|j        dk    sJ ‚|j        dk    sJ ‚t          |j        |¦  «        S r[   )r   rK   rJ   r   r8   rR   r'   )r]   r^   rL   r_   s       r   Útypeof_seriesrb   |   sX   € å˜œ
 AÑ&Ô&€EÝ˜œ QÑ'Ô'€EØŒ:˜Š?ˆ?ˆ?ˆ?ØŒ<˜3ÒÐÐÐÝ�e”k 5Ñ)Ô)Ð)r    Ú__array_wrap__c                 ó   — d„ }|S )Nc                 óŒ   — t          | t          t          f¦  «        r'|                      |j        |j        |j        ¬¦  «        S d S )N)r'   r   r8   )r   r3   rR   rB   r'   r   r8   )Ú
input_typeÚresults     r   Útyperztype_array_wrap.<locals>.typer†   sL   € Ý�j¥9­jÐ"9Ñ:Ô:ð 	9Ø—?’?¨¬Ø(.¬Ø*0¬-ð #ñ 9ô 9ð 9ð	9ð 	9r    r1   ©Úcontextrh   s     r   Útype_array_wraprk   „   s   € ð9ð 9ð 9ð €Lr    c                 ó   — d„ }|S )Nc                 óÆ   — t          |t          ¦  «        rIt          | t          j        ¦  «        r1| j        dk    sJ ‚| j        dk    sJ ‚t          | j        |¦  «        S d S d S )NrT   r   )r   r3   r   r=   r8   r   rR   r'   )r   rL   s     r   rh   z&type_series_constructor.<locals>.typer�   so   € Ý�e�YÑ'Ô'ð 	1­J°t½U¼[Ñ,IÔ,Ið 	1Ø”; #Ò%Ð%Ð%Ð%Ø”9 ’>�>�>�>Ý˜dœj¨%Ñ0Ô0Ð0ð	1ð 	1ð 	1ð 	1r    r1   ri   s     r   Útype_series_constructorrn   Ž   s   € ð1ð 1ð 1ð €Lr    c                   ó   — e Zd Zd„ ZdS )Ú
IndexModelc                 ó^   — d|j         fg}t          j                             | |||¦  «         d S )Nr   )r>   r   ÚStructModelr   ©r   ÚdmmÚfe_typeÚmemberss       r   r   zIndexModel.__init__�   s5   € Ø˜GÔ,Ð-Ð.ˆÝÔ×#Ò# D¨#¨w¸Ñ@Ô@Ð@Ð@Ð@r    N©r,   r-   r.   r   r1   r    r   rp   rp   ›   s(   € € € € € ðAð Að Að Að Ar    rp   c                   ó   — e Zd Zd„ ZdS )ÚSeriesModelc                 ón   — d|j         fd|j        fg}t          j                             | |||¦  «         d S )NrL   rV   )rL   r>   r   rr   r   rs   s       r   r   zSeriesModel.__init__£   sC   € à�g”mÐ$Ø�wÔ'Ð(ðˆõ 	Ô×#Ò# D¨#¨w¸Ñ@Ô@Ð@Ð@Ð@r    Nrw   r1   r    r   ry   ry   ¡   s(   € € € € € ðAð Að Að Að Ar    ry   r   r   rL   rK   rV   rJ   c                 ó:   —  t          j        |¦  «        | |fi |¤ŽS r"   ©r   Úcreate_struct_proxy©rj   ÚbuilderÚtypÚkwargss       r   Ú
make_indexr‚   ®   ó'   € Ø+�7Ô& sÑ+Ô+¨G°WÐGÐGÀÐGÐGÐGr    c                 ó:   —  t          j        |¦  «        | |fi |¤ŽS r"   r|   r~   s       r   Úmake_seriesr…   ±   rƒ   r    Ú	__array__c                 ót   — t          | ||j        d         |d         ¬¦  «        }|                     d¦  «        S )Nr   ©Úrefr   )r‚   ÚargsÚ_get_ptr_by_name©rj   r   ÚsigrŠ   r]   s        r   Úindex_as_arrayrŽ   ´   s6   € å
�W˜g s¤x°¤{¸¸Q¼Ð
@Ñ
@Ô
@€CØ×Ò Ñ'Ô'Ð'r    c                 ót   — t          | ||j        d         |d         ¬¦  «        }|                     d¦  «        S )Nr   rˆ   rV   )r…   rŠ   r‹   rŒ   s        r   Úseries_as_arrayr�   ¹   s6   € å
�g˜w¨¬°¬¸¸a¼Ð
AÑ
AÔ
A€CØ×Ò Ñ)Ô)Ð)r    c                 óš   — t          | ||j        ¦  «        }|d         |_        t          | ||j        |                     ¦   «         ¦  «        S r   )r‚   Úreturn_typer   r   Ú	_getvalue)rj   r   r�   rŠ   Údests        r   Úindex_wrap_arrayr•   ¾   s@   € å�g˜w¨¬Ñ8Ô8€DØ�Q”€D„IÝ˜W g¨s¬ÀÇÂÑ@PÔ@PÑQÔQÐQr    c                 óú   — t          | ||j        d         |d         ¬¦  «        }t          | ||j        ¦  «        }|d         |_        |j        |_        t          | ||j        |                     ¦   «         ¦  «        S )Nr   ©Úvaluer   )r…   rŠ   r’   rV   rL   r   r“   )rj   r   r�   rŠ   Úsrcr”   s         r   Úseries_wrap_arrayrš   Ä   si   € å
�g˜w¨¬°¬¸4À¼7Ð
CÑ
CÔ
C€CÝ�w ¨¬Ñ9Ô9€DØ�q”'€D„KØ”€D„JÝ˜W g¨s¬ÀÇÂÑ@PÔ@PÑQÔQÐQr    c                 ó¦   — |\  }}t          | ||j        ¦  «        }||_        ||_        t	          | ||j        |                     ¦   «         ¦  «        S r"   )r…   r’   rL   rV   r   r“   )rj   r   r�   rŠ   r   rL   Úseriess          r   Úpdseries_constructorr�   Ì   sN   € à�K€Dˆ%Ý˜ '¨3¬?Ñ;Ô;€FØ€F„LØ€F„MÝ˜W g¨s¬À×@PÒ@PÑ@RÔ@RÑSÔSÐSr    c                 óú   — |j                              |d¦  «        }t          |j        |j        | ¦  «        }|                     | j        |¦  «        j        |_        t          | 
                    ¦   «         ¦  «        S )z7
    Convert a Index object to a native structure.
    r   )ÚpyapiÚobject_getattr_stringr‚   rj   r   r   r>   r˜   r   r   r“   )r€   Úobjr^   r   rL   s        r   Úunbox_indexr¢   Õ   sb   € ð
 Œ7×(Ò(¨¨gÑ6Ô6€DÝ�q”y !¤)¨SÑ1Ô1€EØ—’˜œ tÑ,Ô,Ô2€E„Jå�u—’Ñ(Ô(Ñ)Ô)Ð)r    c                 óz  — |j                              |d¦  «        }|j                              |d¦  «        }t          |j        |j        | ¦  «        }|                     | j        |¦  «        j        |_        |                     | j        |¦  «        j        |_        t          | 
                    ¦   «         ¦  «        S )z8
    Convert a Series object to a native structure.
    rK   rJ   )rŸ   r    r…   rj   r   r   rL   r˜   rV   r   r“   )r€   r¡   r^   rL   rV   rœ   s         r   Úunbox_seriesr¤   à   s•   € ð
 ŒG×)Ò)¨#¨xÑ8Ô8€EØŒW×*Ò*¨3°	Ñ:Ô:€FÝ˜œ A¤I¨sÑ3Ô3€FØ—7’7˜3œ9 eÑ,Ô,Ô2€F„LØ—G’G˜CœJ¨Ñ/Ô/Ô5€F„Må�v×'Ò'Ñ)Ô)Ñ*Ô*Ð*r    c                 ó&  — t          |j        |j        | |¬¦  «        }|j                             |j                             | j        ¦  «        ¦  «        }|                     | j        |j	        ¦  «        }|j         
                    ||f¦  «        }|S )z=
    Convert a native index structure to a Index object.
    r—   )r‚   rj   r   rŸ   ÚunserializeÚserialize_objectr6   r
   r>   r   Úcall_function_objargs)r€   r]   r^   rL   ÚclassobjÚarrayobjÚindexobjs          r   Ú	box_indexr¬   î   sz   € õ �q”y !¤)¨S¸Ð<Ñ<Ô<€EØŒw×"Ò" 1¤7×#;Ò#;¸C¼KÑ#HÔ#HÑIÔI€HØ�uŠu�S”\ 5¤:Ñ.Ô.€HØŒw×,Ò,¨X¸°{ÑCÔC€HØ€Or    c                 óh  — t          |j        |j        | |¬¦  «        }|j                             |j                             t          ¦  «        ¦  «        }|                     | j        |j        ¦  «        }|                     | j	        |j
        ¦  «        }|j                             |||f¦  «        }|S )z?
    Convert a native series structure to a Series object.
    r—   )r…   rj   r   rŸ   r¦   r§   rH   r
   rL   r>   rV   r¨   )r€   r]   r^   rœ   r©   r«   rª   Ú	seriesobjs           r   Ú
box_seriesr¯   ú   s“   € õ
 ˜œ A¤I¨s¸#Ð>Ñ>Ô>€FØŒw×"Ò" 1¤7×#;Ò#;½FÑ#CÔ#CÑDÔD€HØ�uŠu�S”Y ¤Ñ-Ô-€HØ�uŠu�S”\ 6¤=Ñ1Ô1€HØ”×-Ò-¨h¸À8Ð8LÑMÔM€IØÐr    Úis_monotonic_increasingc                 ó   — d„ }|S )z'
    Index.is_monotonic_increasing
    c                 ón   — | j         }t          |¦  «        dk    rdS |d         }|D ]}||k     r dS |}ŒdS )Nr   TF)r   Úlen)rL   r   ÚuÚvs       r   Úgetterz-index_is_monotonic_increasing.<locals>.getter  sQ   € ØŒ{ˆÝˆt‰9Œ9˜Š>ˆ>Ø�4Ø�ŒGˆØð 	ð 	ˆAØ�1ŠuˆuØ�u�uØˆAˆAØˆtr    r1   )rL   r¶   s     r   Úindex_is_monotonic_increasingr·     s   € ð
	ð 	ð 	ð €Mr    c                 ó:   — t          | t          ¦  «        rd„ }|S dS )z
    len(Series)
    c                 ó*   — t          | j        ¦  «        S r"   )r³   rJ   )rœ   s    r   Úlen_implzseries_len.<locals>.len_impl  s   € Ý�v”~Ñ&Ô&Ð&r    N)r   rR   )rœ   rº   s     r   Ú
series_lenr»     s4   € õ
 �&�*Ñ%Ô%ð ð	'ð 	'ð 	'àˆðð r    Úclipc                 ó   — d„ }|S )z
    Series.clip(...)
    c                 óÚ   — | j                              ¦   «         }t          t          |¦  «        ¦  «        D ]!}||         }||k     r|||<   Œ||k    r|||<   Œ"t	          || j        ¦  «        S r"   )rJ   rB   Úranger³   rH   rK   )rœ   ÚlowerÚupperr   Úirµ   s         r   Ú	clip_implzseries_clip.<locals>.clip_impl(  st   € ØŒ~×"Ò"Ñ$Ô$ˆÝ•s˜4‘y”yÑ!Ô!ð 	 ð 	 ˆAØ�Q”ˆAØ�5ŠyˆyØ��Q‘�Ø�U’�Ø��Q‘øÝ�d˜FœMÑ*Ô*Ð*r    r1   )rœ   rÀ   rÁ   rÃ   s       r   Úseries_cliprÄ   #  s   € ð
+ð +ð +ð Ðr    )5r/   Únumpyr   Ú
numba.corer   r   Únumba.core.datamodelr   Únumba.core.extendingr   r   r   r	   r
   r   r   r   r   r   r   Únumba.core.imputilsr   Úobjectr   ÚBufferr3   rH   ÚArrayCompatiblerR   Úregisterr`   rb   rk   rn   rr   rp   ry   r‚   r…   rŽ   r�   r=   r•   rš   r�   r¢   r¤   r¬   r¯   r·   r³   r»   rÄ   r1   r    r   ú<module>rÎ      s0  ððð ð Ð Ð Ð à %Ð %Ð %Ð %Ð %Ð %Ð %Ð %Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'ðKð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð 2Ð 1Ð 1Ð 1Ð 1Ð 1ð ð  ð  ð  ð  ˆFñ  ô  ð  ð,7ð 7ð 7ð 7ð 7�”ñ 7ô 7ð 7ð4"ð "ð "ð "ð "ˆVñ "ô "ð "ð0-ð -ð -ð -ð -�Ô&ñ -ô -ð -ð< €Ô�eÑÔð;ð ;ñ Ôð;ð
 €Ô�fÑÔð*ð *ñ Ôð*ð €ÐÑ Ô ðð ñ !Ô ðð €ˆvÑÔðð ñ Ôðð €�	ÑÔðAð Að Að Að A�Ô#ñ Aô Añ ÔðAð
 €�
ÑÔðAð Að Að Að A�&Ô$ñ Aô Añ ÔðAð Ð �y &¨'Ñ 2Ô 2Ð 2Ø Ð �z 7¨HÑ 5Ô 5Ð 5Ø Ð �z 8¨YÑ 7Ô 7Ð 7ðHð Hð HðHð Hð Hð €ˆ{˜IÑ&Ô&ð(ð (ñ 'Ô&ð(ð €ˆ{˜JÑ'Ô'ð*ð *ñ (Ô'ð*ð €Ð ¨E¬KÑ8Ô8ðRð Rñ 9Ô8ðRð
 €Ð ¨U¬[Ñ9Ô9ðRð Rñ :Ô9ðRð €ˆv�u”{ IÑ.Ô.ðTð Tñ /Ô.ðTð €€yÑÔð*ð *ñ Ôð*ð €€zÑÔð
+ð 
+ñ Ôð
+ð €€Y�„ð	ð 	ñ „ð	ð €€Z�„ð	ð 	ñ „ð	ð Ð�IÐ8Ñ9Ô9ðð ñ :Ô9ðð" 
€ˆ#�„ðð ñ „ðð €�˜VÑ$Ô$ðð ñ %Ô$ðð ð r    