o
    iA                     @   s  d Z ddlZddlmZmZmZmZmZmZm	Z	m
Z
 ddlmZmZmZ ddlmZmZmZ eejeejdd Zeejejejdd	 Zd
d Zeejejejdd Zeejejejdd Zeejejejdd Z eej!ejejdd Z"eej#ejejdd Z$eej%ejejdd Z&eej'dd Z(eej)eej*dd Z+eej,eej-dd Z+edej)edej*dd Z.ed ej/ee
j0d!d" Z1eej2d#d$ Z3ed%ejejd&d' Z4eej2ej)ej5eej2ej)ej6eej2ej*ej5eej2ej*ej6d(d) Z7ed*ej8ej9ed*ej:ej;ed*ej:ej<ed*ejej;ed*ejej<d+d, Z=eejejd-d. Z>eejd/d0d1 Z?eej@d2d3 ZAdS )4z!
Implementation of tuple objects
    N)lower_builtinlower_getattr_generic
lower_castlower_constantiternext_implimpl_ret_borrowedimpl_ret_untrackedRefType)typingtypescgutils)overload_methodoverload	intrinsicc           	      C   s`   g }t |D ]\}}| |||j| |j| }|| q| ||jt|}t| ||j|S N)	enumeratecastargsreturn_typeappend
make_tupletupler   )	contextbuildersigr   Znewargsiargcastedres r   e/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/numba/cpython/tupleobj.pynamedtuple_constructor   s   r!   c                    s:    fdd|D \}}|   |j|| }t|  |j|S )Nc                    s   g | ]}t  |qS r   )r   unpack_tuple).0xr   r   r    
<listcomp>   s    ztuple_add.<locals>.<listcomp>)r   r   r   )r   r   r   r   leftrightr   r   r%   r    	tuple_add   s   r)   c              	   C   s"  |j \}}|\}}t|tj}	|d}
tt|j|jD ]K\}\}}|||}|||}| 	|t
j||f||f}|| | 	||||f||f}|||	 ||
 W d    n1 sdw   Y  q|t|jt|j}| tj|}|||	 ||
 ||
 ||	S )NZcmp_end)r   r   Zalloca_once_valuetrue_bitappend_basic_blockr   zipr   extract_valuegeneric_compareoperatorneif_thenstorebranchlenget_constantbooleanposition_at_endload)r   r   opr   r   tutvuvr   bbendr   tatbab	not_equalpredZlen_comparer   r   r    tuple_cmp_ordered$   s(   




rE   c                 C   s   |j \}}|\}}t|jt|jkr"| tjd}t| ||j|S | tjd}tt|j|jD ]%\}	\}
}|	||	}|	||	}| 
|tj|
|f||f}|||}q2t| ||j|S )NFT)r   r4   r   r5   r6   r   r   r   r,   r-   r.   r/   eqand_)r   r   r   r   r:   r;   r<   r=   r   r   r?   r@   rA   rB   rD   r   r   r    tuple_eq:   s   
rH   c                 C   s$   | t| |||}t| ||j|S r   )not_rH   r   r   r   r   r   r   r   r   r   r    tuple_neI   s   rK   c                 C   "   t | |tj||}t| ||j|S r   )rE   r/   ltr   r   rJ   r   r   r    tuple_ltN      rN   c                 C   rL   r   )rE   r/   ler   r   rJ   r   r   r    tuple_leS   rO   rQ   c                 C   rL   r   )rE   r/   gtr   r   rJ   r   r   r    tuple_gtX   rO   rS   c                 C   rL   r   )rE   r/   ger   r   rJ   r   r   r    tuple_ge]   rO   rU   c                 C   s*   |j |}|||}t| ||| |S )z%
    Fetch a namedtuple's field.
    )fieldsindexr-   r   )r   r   typvalueattrrW   r   r   r   r    namedtuple_getattrd   s   r[   c                    s,    fdd|D }t  t |S )z.
    Create a homogeneous tuple constant.
    c                    s   g | ]
}  j|qS r   )get_constant_genericdtype)r#   r=   r   r   tyr   r    r&   t   s    %unituple_constant.<locals>.<listcomp>)r   r   Z
pack_arrayr   r   r_   ZpyvalZconstsr   r^   r    unituple_constantn   s   rb   c                    s0    fddt |D }t t |S )z0
    Create a heterogeneous tuple constant.
    c                    s$   g | ]\}}  j| |qS r   )r\   r   )r#   r   r=   r^   r   r    r&      s    r`   )r   r   r   Zpack_structra   r   r^   r    rb   z   s   Zgetiterc           
      C   sl   |j \}|\}| |t|}| tjd}t||j}|	|| ||_
||_| }	t| ||j|	S )Nr   )r   make_helperr   UniTupleIterr5   intpr   Zalloca_oncetyper2   rW   r   Z	_getvaluer   r   )
r   r   r   r   tuptytupitervalZindex0Zindexptrr   r   r   r    getiter_unituple   s   rj   Ziternextc                 C   s   |j \}|\}| j|||d}|j}|j}	||	}
| tj|jj	}|
d|
|}|| ||A t|jj|jtj}t| ||||
g}| jrV| j||jj| || ||
| tjd}|||j W d    d S 1 sxw   Y  d S )N)rY   <   )r   rc   r   rW   r8   r5   r   re   	containercountZicmp_signedZ	set_validr1   r
   	signaturer]   getitem_unitupleZ
enable_nrtZnrtZdecrefZyield_addr2   )r   r   r   r   resultZ	tupitertyZtupiterri   rh   Zidxptridxrn   Zis_validZgetitem_sigZgetitem_outZnidxr   r   r    iternext_unituple   s.   



"rt   c                    s2   t | tjrt |tjsdS |j  fdd}|S )z
    Overloads BaseTuple getitem to cover cases where constant
    inference and RewriteConstGetitems cannot replace it
    with a static_getitem.
    Nc                    s   |   S r   r   )rh   rs   idx_valr   r    getitem_literal_idx_impl   s   z5getitem_literal_idx.<locals>.getitem_literal_idx_impl)
isinstancer   	BaseTupleIntegerLiteralliteral_value)rh   rs   rw   r   ru   r    getitem_literal_idx   s   
r|   Ztyped_getitemc              	   C   s  |j \}}|\}}d}t|dkr=|tj | j|t| W d    n1 s*w   Y  | |j	}	t
| ||j	|	S |d}
|d}|||
}||
 | j|t| W d    n1 sew   Y  | |j	}| tj}|| ||}W d    n1 sw   Y  t|jD ]}| tj|}|d| }||| | tj|j | }||| ||] |||}| j|j d | |j	|j	k}|r|j|d| d}| |||j d | |j	}||| n|j|jd| d}||| ||||| | | W d    n	1 s"w   Y  q|!| |||" }	|#|	}	t$| ||j	|	S )Nztuple index out of ranger   ztyped_switch.elseztyped_switch.endztyped_switch.%dzTYPED_VALUE_SLOT%s)name)%r   r4   r1   r   r*   	call_convreturn_user_exc
IndexErrorget_constant_nullr   r   r+   switch
goto_blockget_value_typer   Zvoidptrphirangern   r5   re   add_caser-   Ztyping_contextZunify_typesZallocar   r2   rf   add_incomingZbitcastr3   r7   Z
as_pointerr8   r   )r   r   r   r   rg   _rh   rs   
errmsg_oobr   bbelser>   r   lrttyZ	voidptrtyphinoder   kibbikinrY   ZDOCASTZ
value_slotr   r   r   r    getitem_typed   sz   





%
r   c              	   C   s  |j \}}|\}}d}t|dkr=|tj | j|t| W d    n1 s*w   Y  | |j	}	t
| ||j	|	S |d}
|d}|||
}||
 | j|t| W d    n1 sew   Y  | |j}|| ||}W d    n1 sw   Y  t|jD ]M}| tj|}|d| }||| | tj|j | }||| || |||}|| ||| W d    n1 sw   Y  q|| |}	|j	|jksJ t| ||j	|	S )Nr}   r   zswitch.elsez
switch.endz	switch.%d)r   r4   r1   r   r*   r   r   r   r   r   r   r+   r   r   r   r]   r   r   rn   r5   r   re   r   r-   r3   r   r7   r   )r   r   r   r   rg   r   rh   rs   r   r   r   r>   r   r   r   r   r   r   r   rY   r   r   r    rp   #  sR   






rp   Zstatic_getitemc                 C   s   |j \}}|\}}t|tr4|dk r|t|7 }d|  kr$t|k s-n td||f |||}n7t|trJt||| }	| 	||j
|	}n!t|tjr`|j}
|j|
}|||}ntd||j d f t| ||j
|S )Nr   zcannot index at %d in %szunexpected index %r for %s)r   rx   intr4   r   r-   slicer   r"   r   r   r   LiteralStrKeyDictr{   rV   rW   NotImplementedErrorr   )r   r   r   r   rg   Zidxtyrh   rs   r   itemsrv   Z
idx_offsetr   r   r    static_getitem_tupleZ  s&   


r   c                    sl   t |tjst |tjrtt|t|krtt |t|} fddt|||D } ||S )Nc                    s"   g | ]\}}}  |||qS r   )r   )r#   r=   ftr   r   r   r    r&     s    z"tuple_to_tuple.<locals>.<listcomp>)	rx   r   BaseNamedTupler   r4   r   r"   r,   r   )r   r   ZfromtyZtotyvalZolditemsr   r   r   r    tuple_to_tupley  s   

r   rW   c                 C   s   dd }|S )Nc                 S   s.   t t| D ]}| | |kr|  S qtd)Nztuple.index(x): x not in tuple)r   r4   
ValueError)rh   rY   r   r   r   r    tuple_index_impl  s
   z%tuple_index.<locals>.tuple_index_implr   )rh   rY   r   r   r   r    tuple_index  s   r   c                 C   s"   t | tjr| jsdd S d S d S )Nc                 S   s   dS )NFr   r$   yr   r   r    <lambda>  s    z$in_seq_empty_tuple.<locals>.<lambda>)rx   r   Tupler   r   r   r    in_seq_empty_tuple  s   r   )B__doc__r/   Znumba.core.imputilsr   r   r   r   r   r   r   r	   Z
numba.corer
   r   r   Znumba.core.extendingr   r   r   ZNamedTupleClassZVarArgAnyr!   rq   ry   r)   rE   rF   rH   r0   rK   rM   rN   rP   rQ   rR   rS   rT   rU   r   r[   ZUniTupleZNamedUniTuplerb   r   
NamedTuplerj   rd   ZBORROWEDrt   getitemr|   r   re   Zuintprp   r   ZStringLiteralZLiteralListrz   ZSliceLiteralr   r   r   containsr   r   r   r   r    <module>   sr    (








	





T3


