o
    h%                     @  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 schemasufunc__)	is_out_fnname)r   r    r   f/var/www/html/construction_image-detection-poc/venv/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%   symintunrecognized type )r   valuetype_typer   r   Scalarr   r
   r   r   TensorAssertionErrorrepr)r$   r%   rr   r   r   dispatchstub_type*   s   r0   scalar_tr   c                 C  s   | t jkrt jS tr!   )	api_typesr1   opmath_tNotImplementedErrorr1   r   r   r   opmath_type8   s   
r6   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   r6   r,   r-   r.   )r$   r%   r1   r/   r   r   r   ufunctor_ctor_typeC   s   r7   c                C  s.   | t tjkrt|t|S tdt|  )Nr)   )r   r   r,   r   r   r-   r.   )r$   r%   r1   r   r   r   ufunctor_apply_typeT   s   r8   	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%   r9   r/   r   r   r   
ufunc_type`   s   

r:   ar   r	   c                 C      t t| j| j|d| jd | dS N)r%   r1   nctyper   defaultargument)r	   r7   typer   r;   r1   r   r   r   ufunctor_ctor_argumentm      rD   c                 C  r<   r=   )r	   r8   rB   r   rC   r   r   r   ufunctor_apply_argumentv   rE   rF   c                 C  r<   )N)r%   r9   r>   )r	   r:   rB   r   )r;   r9   r   r   r   ufunc_argument   rE   rG   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   rI      s   
 rI   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   r5      )rK   rL   )

functionalr   	argumentsflat_non_outrB   is_tensor_likeappendrD   rF   rI   )r    rQ   r1   rK   rL   r;   r   r   r   ufunctor_arguments   s   
rY   rJ   c                  s    fdd| j jjjD S )Nc                   s   g | ]}t | d qS )r9   )rG   ).0r;   rZ   r   r   
<listcomp>   s    
z#ufunc_arguments.<locals>.<listcomp>)rT   r   rU   rV   )r    r9   r   rZ   r   ufunc_arguments   s   

r]   c                 C  s   dd | j jjjD S )Nc                 S  s*   g | ]}|j  st|D ]}|qqS r   )rB   rW   r   rA   )r[   r;   r/   r   r   r   r\      s    z"stub_arguments.<locals>.<listcomp>)r"   r   rU   rV   )r    r   r   r   stub_arguments   s   
r^   )r   r   r   r   r   r   )r    r   r   r   r   r   )r$   r   r%   r   r   r&   )r1   r   r   r   )r$   r   r%   r   r1   r   r   r   )r$   r   r%   r   r9   r   r   r   )r;   r   r1   r   r   r	   )r;   r   r9   r   r   r	   )r    r   rQ   rR   r1   r   r   rI   )r    r   r9   r   r   rJ   )r    r   r   rJ   ))
__future__r   dataclassesr   torchgen.api.typesapitypesr2   torchgen.apir   r   r   r   r   r	   r
   r   r   r   torchgen.modelr   r   r   r   r   r   r   r   r#   r0   r6   r7   r8   r:   rD   rF   rG   rI   rY   r]   r^   r   r   r   r   <module>   s*    ($



	





	
		

