o
    i*                     @   s  d dl mZ d dlmZmZ d dlm  mZ d dl	m
Z
m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mZmZmZmZ deded	efd
dZdeded	efddZdeded	ee fddZded	efddZ dededed	efddZ!dededed	efddZ"dededed	efddZ#deded	efddZ$deded	efd d!Z%deded	efd"d#Z&ed$d%G d&d' d'Z'ded(ee( ded	e'fd)d*Z)deded	ee fd+d,Z*ded	ee fd-d.Z+dS )/    )	dataclass)ListOptionalN)cpp
structured)ArgNameBaseCppType	BaseCTypeBindingConstRefCTypeCType
NamedCTypescalarT)ArgumentBaseTyBaseTypeDispatchKeyFunctionSchemaNativeFunctionsGroupTypefuncdispatch_keyreturnc                 C   s$   |   sJ dd| jj d| S )Nz7ufunc.kernel_name should only be invoked on out schemasZufunc__)Z	is_out_fnname)r   r    r   a/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/torchgen/api/ufunc.pyschema_kernel_name   s   r   gc                 C   s   t | jj|S N)r   outr   )r   r   r   r   r   kernel_name!   s   r!   tbindsc                C   s`   t j| |dd}|d ur|S | ttjkrt|tttS | ttj	kr'd S t
dt|  NF)r#   Zsymintunrecognized type )r   valuetype_typer   r   Scalarr   r   r	   r   TensorAssertionErrorrepr)r"   r#   rr   r   r   dispatchstub_type*   s   r,   scalar_tc                 C   s   | t jkrt jS tr   )	api_typesr-   Zopmath_tNotImplementedErrorr-   r   r   r   opmath_type8   s   
r1   c                C   sn   t j| |dd}|d ur|S | ttjkrt|tt|S | ttjkr.t|tt|S t	dt
|  r$   )r   r&   r   r   r'   r   r	   r1   r(   r)   r*   )r"   r#   r-   r+   r   r   r   ufunctor_ctor_typeC   s   r2   c                C   s.   | t tjkrt|t|S tdt|  )Nr%   )r   r   r(   r   r	   r)   r*   )r"   r#   r-   r   r   r   ufunctor_apply_typeT   s   r3   	compute_tc                C   s^   t j| |dd}|d ur|S | ttjkrt||S | ttjkr&t||S tdt|  r$   )	r   r&   r   r   r'   r   r(   r)   r*   )r"   r#   r4   r+   r   r   r   
ufunc_type`   s   

r5   ac                 C       t t| j| j|d| jd | dS N)r#   r-   Znctyper   defaultargument)r
   r2   typer   r6   r-   r   r   r   ufunctor_ctor_argumentm      r>   c                 C   r7   r8   )r
   r3   r<   r   r=   r   r   r   ufunctor_apply_argumentv   r?   r@   c                 C   r7   )N)r#   r4   r9   )r
   r5   r<   r   )r6   r4   r   r   r   ufunc_argument   r?   rA   T)frozenc                   @   s&   e Zd ZU ee ed< ee ed< dS )UfunctorBindingsctorapplyN)__name__
__module____qualname__r   r
   __annotations__r   r   r   r   rC      s   
 rC   scalar_tensor_idxc                C   s   g }g }| j jjjD ]2}|j r3|dkr!|t||d d }q
|d ur)|d8 }|t||d q
|t||d q
|d u sCJ t	||dS )Nr   r0      )rD   rE   )

functionalr   	argumentsflat_non_outr<   is_tensor_likeappendr>   r@   rC   )r   rJ   r-   rD   rE   r6   r   r   r   ufunctor_arguments   s   
rQ   c                   s    fdd| j jjjD S )Nc                    s   g | ]}t | d qS )r4   )rA   ).0r6   rR   r   r   
<listcomp>   s    
z#ufunc_arguments.<locals>.<listcomp>)rL   r   rM   rN   )r   r4   r   rR   r   ufunc_arguments   s   

rU   c                 C   s   dd | j jjjD S )Nc                 S   s*   g | ]}|j  st|D ]}|qqS r   )r<   rO   r   r;   )rS   r6   r+   r   r   r   rT      s    z"stub_arguments.<locals>.<listcomp>)r    r   rM   rN   )r   r   r   r   stub_arguments   s   
rV   ),dataclassesr   typingr   r   Ztorchgen.api.typesapitypesr.   Ztorchgen.apir   r   r   r   r	   r
   r   r   r   r   Ztorchgen.modelr   r   r   r   r   r   r   strr   r!   r,   r1   r2   r3   r5   r>   r@   rA   rC   intrQ   rU   rV   r   r   r   r   <module>   sJ    ($
	
			
