
    ¯wg%                    >   d dl mZ d dlmZ d dlmc 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ZddZdd	Zdd
ZddZ	 	 	 	 	 	 	 	 ddZ ddZ!ddZ"ddZ#ddZ$ ed       G d d             Z%	 	 	 	 	 	 	 	 d dZ&d!dZ'd"dZ(y)#    )annotations)	dataclassN)cpp
structured)ArgNameBaseCppType	BaseCTypeBindingConstRefCTypeCType
NamedCTypescalarT)ArgumentBaseTyBaseTypeDispatchKeyFunctionSchemaNativeFunctionsGroupTypec                h    | j                         sJ d       d| j                  j                   d| S )Nz7ufunc.kernel_name should only be invoked on out schemasufunc__)	is_out_fnname)funcdispatch_keys     W/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/torchgen/api/ufunc.pyschema_kernel_namer      s4    >>VVVDIINN#1\N33    c                B    t        | j                  j                  |      S N)r   outr   )gr   s     r   kernel_namer$   !   s    aeejj,77r   c                  t        j                  | |d      }||S | t        t        j                        k(  r"t        |t        t        t                          S | t        t        j                        k(  ry t        dt        |              NF)bindssymintunrecognized type )r   valuetype_typer   r   Scalarr   r   r	   r   TensorAssertionErrorrepr)tr'   rs      r   dispatchstub_typer1   *   ss    1E%8A}HV]]##%y/A!BCC	
hv}}%	%1$q';<<r   c                T    | t         j                  k(  rt         j                  S t        r!   )	api_typesscalar_topmath_tNotImplementedErrorr4   s    r   opmath_typer8   8   s"    9%%%!!!
r   c               P   t        j                  | |d      }||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	   r8   r,   r-   r.   )r/   r'   r4   r0   s       r   ufunctor_ctor_typer:   C   s    1E%8A}HV]]##%;x+@!ABB	
hv}}%	%%;x+@!ABB1$q';<<r   c                   | t        t        j                        k(  rt        |t	        |            S t        dt        |              )Nr)   )r   r   r,   r   r	   r-   r.   )r/   r'   r4   s      r   ufunctor_apply_typer<   T   s>     	HV]]##%8!4551$q';<<r   c                  t        j                  | |d      }||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'   	compute_tr0   s       r   
ufunc_typer?   `   ss    1E%8A}HV]]##%++	
hv}}%	%%++1$q';<<r   c                t    t        t        | j                  | j                  |      | j                  d |       S N)r'   r4   nctyper   defaultargument)r
   r:   typer   ar4   s     r   ufunctor_ctor_argumentrI   m   s0    !!&&JVV	 r   c                t    t        t        | j                  | j                  |      | j                  d |       S rA   )r
   r<   rF   r   rG   s     r   ufunctor_apply_argumentrK   v   s0    "166(KVV	 r   c                t    t        t        | j                  | j                  |      | j                  d |       S )N)r'   r>   rB   )r
   r?   rF   r   )rH   r>   s     r   ufunc_argumentrM      s0    !&&)DVV	 r   T)frozenc                  "    e Zd ZU ded<   ded<   y)UfunctorBindingslist[Binding]ctorapplyN)__name__
__module____qualname____annotations__ r   r   rP   rP      s    
r   rP   c                  g }g }| j                   j                  j                  j                  D ]  }|j                  j                         rH|dk(  r|j                  t        ||             d }A||dz  }|j                  t        ||             e|j                  t        ||              |J t        ||      S )Nr   r7      )rR   rS   )

functionalr   	argumentsflat_non_outrF   is_tensor_likeappendrI   rK   rP   )r#   scalar_tensor_idxr4   rR   rS   rH   s         r   ufunctor_argumentsra      s     DE\\((55 F66  " A%21xHI$(!$0%*%4QJKKK.q8DEF $$$U33r   c                   | j                   j                  j                  j                  D cg c]  }t	        ||       c}S c c}w )N)r>   )r[   r   r\   r]   rM   )r#   r>   rH   s      r   ufunc_argumentsrc      sA     "",,99 	qI.  s   Ac                    | j                   j                  j                  j                  D cg c]8  }|j                  j                         st        j                  |      D ]  }| : c}}S c c}}w r!   )r"   r   r\   r]   rF   r^   r   rE   )r#   rH   r0   s      r   stub_argumentsre      sh    
 %%22vv$$&$$Q'	  	
	  s   =A/)r   r   r   r   returnstr)r#   r   r   r   rf   rg   )r/   r   r'   r   rf   zNamedCType | None)r4   r   rf   r   )r/   r   r'   r   r4   r   rf   r   )r/   r   r'   r   r>   r   rf   r   )rH   r   r4   r   rf   r
   )rH   r   r>   r   rf   r
   )r#   r   r`   z
int | Noner4   r   rf   rP   )r#   r   r>   r   rf   rQ   )r#   r   rf   rQ   ))
__future__r   dataclassesr   torchgen.api.typesapitypesr3   torchgen.apir   r   r   r   r	   r
   r   r   r   r   torchgen.modelr   r   r   r   r   r   r   r   r$   r1   r8   r:   r<   r?   rI   rK   rM   rP   ra   rc   re   rX   r   r   <module>ro      s    " ! & & (	 	 	  4
8=
="===*5==
= $  ,443=4IT44<r   