
    j                    2   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 d0dZd1dZd2dZd3dZd4dZd4dZ d5dZ!d6d#Z"d6d$Z#d7d%Z$ ed&'           G d( d)                      Z%d8d,Z&d9d.Z'd:d/Z(dS );    )annotations)	dataclassN)cpp
structured)ArgNameBaseCppType	BaseCTypeBindingConstRefCTypeCType
NamedCTypescalarT)ArgumentBaseTyBaseTypeDispatchKeyFunctionSchemaNativeFunctionsGroupTypefuncr   dispatch_keyr   returnstrc                l    |                                  st          d          d| j        j         d| S )Nz7ufunc.kernel_name should only be invoked on out schemasufunc__)	is_out_fnAssertionErrorname)r   r   s     \/lsinfo/ai/hellotax_ai/base_platform/venv/lib/python3.11/site-packages/torchgen/api/ufunc.pyschema_kernel_namer!      s>    >> XVWWW3DIN33\333    gr   c                6    t          | j        j        |          S N)r!   outr   )r#   r   s     r    kernel_namer'   "   s    aej,777r"   tr   bindsr   NamedCType | Nonec               L   t          j        | |d          }||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   Tensorr   repr)r(   r)   rs      r    dispatchstub_typer4   +   s    1E%888A}HV]####%y/A/A!B!BCCC	
hv}%%	%	%t;$q'';;<<<r"   scalar_tr   c                H    | t           j        k    rt           j        S t          r%   )	api_typesr5   opmath_tNotImplementedErrorr5   s    r    opmath_typer;   9   s    9%%%!!
r"   r   c                  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   r0   r   r	   r;   r1   r   r2   )r(   r)   r5   r3   s       r    ufunctor_ctor_typer=   D   s    1E%888A}HV]####%;x+@+@!A!ABBB	
hv}%%	%	%%;x+@+@!A!ABBB;$q'';;<<<r"   c                   | t          t          j                  k    rt          |t	          |                    S t          dt          |                      )Nr.   )r   r   r1   r   r	   r   r2   )r(   r)   r5   s      r    ufunctor_apply_typer?   U   sN     	HV]####%8!4!4555;$q'';;<<<r"   	compute_tr   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   r0   r   r1   r   r2   )r(   r)   r@   r3   s       r    
ufunc_typerB   a   s    1E%888A}HV]####%+++	
hv}%%	%	%%+++;$q'';;<<<r"   ar   r
   c                f    t          t          | j        | j        |          | j        d |           S N)r)   r5   nctyper   defaultargument)r
   r=   typer   rC   r5   s     r    ufunctor_ctor_argumentrL   n   s:    !!&JJJV	   r"   c                f    t          t          | j        | j        |          | j        d |           S rE   )r
   r?   rJ   r   rK   s     r    ufunctor_apply_argumentrN   w   s:    "16(KKKV	   r"   c                f    t          t          | j        | j        |          | j        d |           S )N)r)   r@   rF   )r
   rB   rJ   r   )rC   r@   s     r    ufunc_argumentrP      s:    !&)DDDV	   r"   T)frozenc                  $    e Zd ZU ded<   ded<   dS )UfunctorBindingslist[Binding]ctorapplyN)__name__
__module____qualname____annotations__ r"   r    rS   rS      s*         r"   rS   scalar_tensor_idx
int | Nonec                  g }g }| j         j        j        j        D ]}|j                                        rY|dk    r'|                    t          ||                     d }H||dz  }|                    t          ||                     t|                    t          ||                     |t          d          t          ||          S )Nr   r:      z5scalar_tensor_idx should be None at end of processing)rU   rV   )
functionalr   	argumentsflat_non_outrJ   is_tensor_likeappendrL   rN   r   rS   )r#   r\   r5   rU   rV   rC   s         r    ufunctor_argumentsre      s     DE\(5 F F6  "" 
	F A%%21xHHHIII$(!!$0%*%4QJJJKKKKKK.q8DDDEEEE$TUUUU3333r"   rT   c               H    fd| j         j        j        j        D             S )Nc                2    g | ]}t          |           S ))r@   )rP   ).0rC   r@   s     r    
<listcomp>z#ufunc_arguments.<locals>.<listcomp>   s6        	qI...  r"   )r`   r   ra   rb   )r#   r@   s    `r    ufunc_argumentsrj      s9       ",9   r"   c                B    d | j         j        j        j        D             S )Nc                r    g | ]4}|j                                         t          j        |          D ]}|5S r[   )rJ   rc   r   rI   )rh   rC   r3   s      r    ri   z"stub_arguments.<locals>.<listcomp>   sb       v$$&& $Q''	   	
   r"   )r&   r   ra   rb   )r#   s    r    stub_argumentsrm      s-     %2   r"   )r   r   r   r   r   r   )r#   r   r   r   r   r   )r(   r   r)   r   r   r*   )r5   r   r   r   )r(   r   r)   r   r5   r   r   r   )r(   r   r)   r   r@   r   r   r   )rC   r   r5   r   r   r
   )rC   r   r@   r   r   r
   )r#   r   r\   r]   r5   r   r   rS   )r#   r   r@   r   r   rT   )r#   r   r   rT   ))
__future__r   dataclassesr   torchgen.api.typesapitypesr7   torchgen.apir   r   r   r   r	   r
   r   r   r   r   torchgen.modelr   r   r   r   r   r   r   r!   r'   r4   r;   r=   r?   rB   rL   rN   rP   rS   re   rj   rm   r[   r"   r    <module>ru      sj   " " " " " " ! ! ! ! ! ! & & & & & & & & & ( ( ( ( ( ( ( (	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                 4 4 4 48 8 8 8= = = =   
= 
= 
= 
="= = = =
= 
= 
= 
=          $       ,4 4 4 4>        r"   