
    shL"                        S r SSKrSSKJrJr  SSKJr  SSKJ	r	J
r
JrJrJrJrJrJrJrJrJr  SSKJr   " S S\5      r " S	 S
\R0                  5      r " S S\5      r " S S\R6                  5      r\	R:                  " \5      S 5       r\	R:                  " \5      S 5       r\
" S5      S 5       r \
" \5      S 5       r!\" \5       " S S\RD                  5      5       r#\" \5       " S S\RD                  5      5       r$\" \SS5        \" \SS5        \" \SS5        S r%S r&\" S \5      S! 5       r'\" S \5      S" 5       r(\" S\\RR                  5      S# 5       r*\" S\\RR                  5      S$ 5       r+\" \\RR                  \5      S% 5       r,\" \5      S& 5       r-\" \5      S' 5       r.\" \5      S( 5       r/\" \5      S) 5       r0\" \S*5      S+ 5       r1\" \25      S, 5       r3\" \S-5      S. 5       r4g)/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                   D    \ rS rSrSrS rS r\S 5       r\S 5       r	Sr
g)	Index   z%
A minimal pandas.Index-like object.
c                 v    [        U[        R                  5      (       d   eUR                  S:X  d   eXl        g N   )
isinstancenpndarrayndim_data)selfdatas     n/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/tests/pdlike_usecase.py__init__Index.__init__   s.    $

++++yyA~~
    c                 ,    [        U R                  5      $ N)iterr   r   s    r   __iter__Index.__iter__   s    DJJr"   c                 .    U R                   R                  $ r$   )r   dtyper&   s    r   r*   Index.dtype       zzr"   c                 .    U R                   R                  $ r$   )r   flagsr&   s    r   r.   Index.flags!   r,   r"   )r   N__name__
__module____qualname____firstlineno____doc__r    r'   propertyr*   r.   __static_attributes__ r"   r   r   r      s9    
         r"   r   c                   Z   ^  \ rS rSrSrSrU 4S jr\S 5       r\S 5       r	S	S jr
SrU =r$ )
	IndexType&   z#
The type class for Index objects.
  c                 <   > X0l         [        [        U ]  USU5        g r   )pyclasssuperr:   r    )r   r*   layoutr>   	__class__s       r   r    IndexType.__init__,   s    i'q&9r"   c                 H    U R                   U R                  U R                  4$ r$   )r>   r*   r@   r&   s    r   keyIndexType.key0   s    ||TZZ44r"   c                 Z    [         R                  " U R                  SU R                  5      $ r   )r   Arrayr*   r@   r&   s    r   as_arrayIndexType.as_array4   s    {{4::q$++66r"   c                     US:X  d   eUc  U R                   nU=(       d    U R                  n[        U 5      " XU R                  5      $ r   )r*   r@   typer>   r   r*   r   r@   s       r   copyIndexType.copy8   s?    qyy=JJE&4;;Dz%66r"   )r>   )Nr   Nr1   r2   r3   r4   r5   array_priorityr    r6   rD   rH   rM   r7   __classcell__rA   s   @r   r:   r:   &   sF     N: 5 5 7 77 7r"   r:   c                   D    \ rS rSrSrS rS r\S 5       r\S 5       r	Sr
g)	Series@   z&
A minimal pandas.Series-like object.
c                     [        U[        R                  5      (       d   e[        U[        5      (       d   eUR                  S:X  d   eXl        X l        g r   )r   r   r   r   r   _values_index)r   r   indexs      r   r    Series.__init__E   sF    $

++++%''''yyA~~r"   c                 ,    [        U R                  5      $ r$   )r%   rW   r&   s    r   r'   Series.__iter__L   s    DLL!!r"   c                 .    U R                   R                  $ r$   )rW   r*   r&   s    r   r*   Series.dtypeO       ||!!!r"   c                 .    U R                   R                  $ r$   )rW   r.   r&   s    r   r.   Series.flagsS   r_   r"   )rX   rW   Nr0   r8   r"   r   rT   rT   @   s9    " " " " "r"   rT   c                   Z   ^  \ rS rSrSrSrU 4S jr\S 5       r\S 5       r	S	S jr
SrU =r$ )

SeriesTypeX   z$
The type class for Series objects.
r<   c                    > [        U[        5      (       d   eXl        X l        [        R
                  " U R                  SS5      U l        SU< SU< S3n[        [        U ]'  U5        g )Nr   Czseries(z, ))
r   r:   r*   rY   r   rG   valuesr?   rc   r    )r   r*   rY   namerA   s       r   r    SeriesType.__init__^   sQ    %++++

kk$**a5#(%0j$(.r"   c                 2    U R                   U R                  4$ r$   )r*   rY   r&   s    r   rD   SeriesType.keyf   s    zz4::%%r"   c                     U R                   $ r$   )rh   r&   s    r   rH   SeriesType.as_arrayj   s    {{r"   c                 v    US:X  d   eUS:X  d   eUc  U R                   n[        U 5      " XR                  5      $ Nr   rf   )r*   rK   rY   rL   s       r   rM   SeriesType.copyn   s;    qyy}}=JJEDz%,,r"   )r*   rY   rh   rp   rO   rR   s   @r   rc   rc   X   sF     N/ & &  - -r"   rc   c                     [        U R                  U5      nUR                  S:X  d   e[        UR                  UR
                  [        U 5      5      $ r   )r   r   r   r:   r*   r@   rK   )valcarrtys      r   typeof_indexrv   v   s=    		1%E::??U[[%,,S	::r"   c                     [        U R                  U5      n[        U R                  U5      nUR                  S:X  d   eUR                  S:X  d   e[        UR                  U5      $ rp   )r   rX   rW   r   r@   rc   r*   )rs   rt   rY   ru   s       r   typeof_seriesrx   |   sU    

A&EQ'E::??<<3ekk5))r"   __array_wrap__c                     S nU$ )Nc                     [        U [        [        45      (       a/  U R                  UR                  UR
                  UR                  S9$ g )N)r*   r   r@   )r   r:   rc   rM   r*   r   r@   )
input_typeresults     r   typertype_array_wrap.<locals>.typer   sC    j9j"9::??(.*0-- # 9 9 ;r"   r8   contextr~   s     r   type_array_wrapr      s    9 Lr"   c                     S nU$ )Nc                     [        U[        5      (       aZ  [        U [        R                  5      (       a:  U R                  S:X  d   eU R
                  S:X  d   e[        U R                  U5      $ g g )Nrf   r   )r   r:   r   rG   r@   r   rc   r*   )r   rY   s     r   r~   &type_series_constructor.<locals>.typer   s[    eY''JtU[[,I,I;;#%%%99>!>djj%00 -J'r"   r8   r   s     r   type_series_constructorr      s    1 Lr"   c                       \ rS rSrS rSrg)
IndexModel   c                 b    SUR                   4/n[        R                  R                  XX#5        g )Nr   )rH   r   StructModelr    r   dmmfe_typememberss       r   r    IndexModel.__init__   s+    G,,-.##Dw@r"   r8   Nr1   r2   r3   r4   r    r7   r8   r"   r   r   r      s    Ar"   r   c                       \ rS rSrS rSrg)SeriesModel   c                 |    SUR                   4SUR                  4/n[        R                  R	                  XX#5        g )NrY   rh   )rY   rH   r   r   r    r   s       r   r    SeriesModel.__init__   s;    gmm$w''( 	##Dw@r"   r8   Nr   r8   r"   r   r   r      s    Ar"   r   r   r   rY   rX   rh   rW   c                 <    [         R                  " U5      " X40 UD6$ r$   r   create_struct_proxyr   buildertypkwargss       r   
make_indexr          &&s+GGGGr"   c                 <    [         R                  " U5      " X40 UD6$ r$   r   r   s       r   make_seriesr      r   r"   	__array__c                 Z    [        XUR                  S   US   S9nUR                  S5      $ )Nr   refr   )r   args_get_ptr_by_namer   r   sigr   rs   s        r   index_as_arrayr      s-    
Wsxx{Q
@C''r"   c                 Z    [        XUR                  S   US   S9nUR                  S5      $ )Nr   r   rh   )r   r   r   r   s        r   series_as_arrayr      s-    
ga
AC))r"   c                     [        XUR                  5      nUS   Ul        [        XUR                  UR	                  5       5      $ r   )r   return_typer   r   	_getvalue)r   r   r   r   dests        r   index_wrap_arrayr      s7    g8DQDIWs@PQQr"   c                     [        XUR                  S   US   S9n[        XUR                  5      nUS   Ul        UR                  Ul        [        XUR                  UR                  5       5      $ )Nr   valuer   )r   r   r   rh   rY   r   r   )r   r   r   r   srcr   s         r   series_wrap_arrayr      s\    
g47
CCw9Dq'DKDJWs@PQQr"   c                     Uu  pE[        XUR                  5      nXVl        XFl        [	        XUR                  UR                  5       5      $ r$   )r   r   rY   rh   r   r   )r   r   r   r   r   rY   seriess          r   pdseries_constructorr      s?    KD3??;FLMWs@P@P@RSSr"   c                    UR                   R                  US5      n[        UR                  UR                  U 5      nUR                  U R                  U5      R                  Ul        [        UR                  5       5      $ )z/
Convert a Index object to a native structure.
r   )pyapiobject_getattr_stringr   r   r   r   rH   r   r   r   r   )r   objrt   r   rY   s        r   unbox_indexr      s^    
 77((g6Dqyy!))S1Et,22EJu())r"   c                    UR                   R                  US5      nUR                   R                  US5      n[        UR                  UR                  U 5      nUR                  U R                  U5      R                  Ul        UR                  U R                  U5      R                  Ul        [        UR                  5       5      $ )z0
Convert a Series object to a native structure.
rX   rW   )r   r   r   r   r   r   rY   r   rh   r   r   )r   r   rt   rY   rh   r   s         r   unbox_seriesr      s    
 GG))#x8EWW**3	:FAIIs3F77399e,22FLGGCJJ/55FMv'')**r"   c                 D   [        UR                  UR                  XS9nUR                  R	                  UR                  R                  U R                  5      5      nUR                  U R                  UR                  5      nUR                  R                  XE45      nU$ )z5
Convert a native index structure to a Index object.
r   )r   r   r   r   unserializeserialize_objectr>   r
   rH   r   call_function_objargs)r   rs   rt   rY   classobjarrayobjindexobjs          r   	box_indexr      st     qyy!))S<Eww""177#;#;CKK#HIHuuS\\5::.Hww,,X{CHOr"   c                    [        UR                  UR                  XS9nUR                  R	                  UR                  R                  [        5      5      nUR                  U R                  UR                  5      nUR                  U R                  UR                  5      nUR                  R                  XFU45      nU$ )z7
Convert a native series structure to a Series object.
r   )r   r   r   r   r   r   rT   r
   rY   rH   rh   r   )r   rs   rt   r   r   r   r   	seriesobjs           r   
box_seriesr      s    
 AIIs>Fww""177#;#;F#CDHuuSYY-HuuS\\6==1H--h88LMIr"   is_monotonic_increasingc                     S nU$ )z
Index.is_monotonic_increasing
c                 j    U R                   n[        U5      S:X  a  gUS   nU H  nX2:  a    gUnM     g)Nr   TF)r   len)rY   r   uvs       r   getter-index_is_monotonic_increasing.<locals>.getter  s>    {{t9>GAuA  r"   r8   )rY   r   s     r   index_is_monotonic_increasingr     s    
	 Mr"   c                 8    [        U [        5      (       a  S nU$ g)z
len(Series)
c                 ,    [        U R                  5      $ r$   )r   rW   )r   s    r   len_implseries_len.<locals>.len_impl  s    v~~&&r"   N)r   rc   )r   r   s     r   
series_lenr     s     
 &*%%	' &r"   clipc                     S nU$ )z
Series.clip(...)
c                     U R                   R                  5       n[        [        U5      5       H  nX4   nXQ:  a  XU'   M  XR:  d  M  X#U'   M     [	        X0R
                  5      $ r$   )rW   rM   ranger   rT   rX   )r   lowerupperr   ir   s         r   	clip_implseries_clip.<locals>.clip_impl(  sW    ~~""$s4y!AAyQQ " dMM**r"   r8   )r   r   r   r   s       r   series_clipr   #  s    
+ r"   )5r5   numpyr   
numba.corer   r   numba.core.datamodelr   numba.core.extendingr   r   r   r	   r
   r   r   r   r   r   r   numba.core.imputilsr   objectr   Bufferr:   rT   ArrayCompatiblerc   registerrv   rx   r   r   r   r   r   r   r   r   r   rG   r   r   r   r   r   r   r   r   r   r   r   r8   r"   r   <module>r      s    % 'K K K K 2 F  ,7 74"V "0-&& -< e; ;
 f* *   ! v  	A## A A
 
A&$$ A A y&' 2 z7H 5 z8Y 7HH {I&( '( {J'* (* EKK8R 9R
 U[[9R :R vu{{I.T /T y* * z
+ 
+ Y	 	 Z	 	 I89 :" 
#  V$ %r"   