o
    vZh%                     @  s$  d dl mZ d dl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=ddZd>ddZd?ddZd@ddZdAdd ZdAd!d"Z dBd%d&Z!dCd*d+Z"dCd,d-Z#dDd.d/Z$ed0d1G d2d3 d3Z%dEd6d7Z&dFd9d:Z'dGd;d<Z(dS )H    )annotations)	dataclassN)cpp
structured)ArgNameBaseCppType	BaseCTypeBindingConstRefCTypeCType
NamedCTypescalarT)ArgumentBaseTyBaseTypeDispatchKeyFunctionSchemaNativeFunctionsGroupTypefuncr   dispatch_keyr   returnstrc                 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/auris/lib/python3.10/site-packages/torchgen/api/ufunc.pyschema_kernel_name   s   r   gr   c                 C  s   t | jj|S N)r   outr   )r   r   r   r   r   kernel_name!   s   r!   tr   bindsr   NamedCType | Nonec                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_tr   c                 C  s   | t jkrt jS tr   )	api_typesr.   Zopmath_tNotImplementedErrorr.   r   r   r   opmath_type8   s   
r2   r   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   r2   r)   r*   r+   )r"   r#   r.   r,   r   r   r   ufunctor_ctor_typeC   s   r3   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   r4   	compute_tr   c                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#   r5   r,   r   r   r   
ufunc_type`   s   

r6   ar   r	   c                 C      t t| j| j|d| jd | dS N)r#   r.   Znctyper   defaultargument)r	   r3   typer   r7   r.   r   r   r   ufunctor_ctor_argumentm      r?   c                 C  r8   r9   )r	   r4   r=   r   r>   r   r   r   ufunctor_apply_argumentv   r@   rA   c                 C  r8   )N)r#   r5   r:   )r	   r6   r=   r   )r7   r5   r   r   r   ufunc_argument   r@   rB   T)frozenc                   @  s   e Zd ZU ded< ded< dS )UfunctorBindingslist[Binding]ctorapplyN)__name__
__module____qualname____annotations__r   r   r   r   rD      s   
 rD   scalar_tensor_idx
int | Nonec                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   r1      )rF   rG   )

functionalr   	argumentsflat_non_outr=   is_tensor_likeappendr?   rA   rD   )r   rL   r.   rF   rG   r7   r   r   r   ufunctor_arguments   s   
rT   rE   c                  s    fdd| j jjjD S )Nc                   s   g | ]}t | d qS )r5   )rB   ).0r7   rU   r   r   
<listcomp>   s    
z#ufunc_arguments.<locals>.<listcomp>)rO   r   rP   rQ   )r   r5   r   rU   r   ufunc_arguments   s   

rX   c                 C  s   dd | j jjjD S )Nc                 S  s*   g | ]}|j  st|D ]}|qqS r   )r=   rR   r   r<   )rV   r7   r,   r   r   r   rW      s    z"stub_arguments.<locals>.<listcomp>)r    r   rP   rQ   )r   r   r   r   stub_arguments   s   
rY   )r   r   r   r   r   r   )r   r   r   r   r   r   )r"   r   r#   r   r   r$   )r.   r   r   r   )r"   r   r#   r   r.   r   r   r   )r"   r   r#   r   r5   r   r   r   )r7   r   r.   r   r   r	   )r7   r   r5   r   r   r	   )r   r   rL   rM   r.   r   r   rD   )r   r   r5   r   r   rE   )r   r   r   rE   ))
__future__r   dataclassesr   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   r   r!   r-   r2   r3   r4   r6   r?   rA   rB   rD   rT   rX   rY   r   r   r   r   <module>   s*    ($



	





	
		

