
    Χg                        d dl mZ d dlmZ d dlmZmZmZmZm	Z	m
Z
mZmZ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mZmZ d dlm Z  ddZ!ddZ"ddZ#ddZ$ddZ%ddZ&dS )    )annotations)cpp)ArgNameArrayRefCType	BaseCTypeBindingConstRefCTypedimnameListTintArrayRefTiOptTensorListRefTiTensorListRefT
NamedCTypeOptionalCTypeoptionalIntArrayRefToptionalScalarRefToptionalTensorRefTscalarTtensorT)	ArgumentBaseTyBaseTypeListTypeNativeFunctionsGroupOptionalTypeSelfArgumentTensorOptionsArgumentsType)assert_nevertr   mutableboolbindsr   returnr   c                   t          j        | d||          }||S t          | t                    r| j        t
          j        k    r/t          |t          t          t                                        S | j        t
          j        k    r/t          |t          t          t                                        S t          d|            t          | t                    r| j        t          t
          j                  k    r"t          |t          t                               S | j        t          t
          j                  k    r"t          |t          t"                              S t          | j        t$                    r?t'          | j        j                  dk    r"t          |t          t(                              S t+          | j        ||          }t          |t-          |j                            S t          | t$                    rO| j        t          t
          j                  k    r/t          |t          t          t0                                        S | j        t          t          t
          j                            k    r"t          |t          t2                              S t'          | j                  dk    r"t          |t          t4                              S t'          | j                  dk    r"t          |t          t6                              S t+          | j        ||          }t          |t9          |j                            S t          dt;          |                      )NF)symintr"   r    z&base type should have been value type intr    r"   Dimnamezunrecognized type )r   valuetype_type
isinstancer   namer   Tensorr   r	   r   r   Scalarr   AssertionErrorr   elemr   r   r   strr   argumenttype_typer   typer   r   r   r
   r   repr)r   r    r"   rr/   s        S/var/www/html/ai-engine/env/lib/python3.11/site-packages/torchgen/api/structured.pyr1   r1   ,   s    	1U%IIIA}!X =6V]""e]9W3E3E%F%FGGGVv}$$e]9W3E3E%F%FGGG !M!!M!MNNN	A|	$	$ =6Xfm,,,,eY/A%B%BCCCVx....eY/A%B%BCCC)) 	Fc!&+.>.>%.G.GeY/C%D%DEEE FFF%ty!9!9:::	Ax	 	  =6Xfm,,,,e]9_3M3M%N%NOOOV|HV]$;$;<<<<eY/A%B%BCCC [[E!!eY|%<%<===[[I%%eY|%<%<=== FFF%ty!9!9:::;$q'';;<<<    ar   c               :    t          | j        | j        |          S )Nr'   )r1   r2   is_write)r7   r"   s     r5   argument_typer:   Y   s    QVQZuEEEEr6   0Argument | SelfArgument | TensorOptionsArgumentslist[Binding]c                B   t          | t                    r-t          t          | | j                  | j        d |           gS t          | t
                    rt          | j                  S t          | t                    rt          d          t          |            d S )N)r"   )nctyper+   defaultargumentz2structured kernels don't support TensorOptions yet)
r*   r   r   r:   r+   r   r@   r   r.   r   )r7   s    r5   r@   r@   d   s    !X $Qaf555V	  
 	
 
A|	$	$ 
###	A-	.	. QRRRQr6   gr   c                h   g }| j         j        rg }| j         j        j        j        D ]t}t          |t                    rH|j        | j         j        j        v r0|	                    | j         j        j        |j                            _|
                    |           u|	                    |           |	                    | j         j        j                   n)|	                    | j         j        j        j                   |	                    | j         j        j        j                    d |D             S )Nc                6    g | ]}t          |          D ]}|S  r@   .0argr4   s      r5   
<listcomp>z"impl_arguments.<locals>.<listcomp>   +    555#x}}55!A5555r6   )outprecomputedfunc	argumentsnon_outr*   r   r+   replaceextendappendadd)rA   argsnon_out_args_replacedr7   s       r5   impl_argumentsrV   v   s   CEDu 2  	 %- 	0 	0A!X&& 016QU5F5N+N+N &,,QU->-Fqv-NOOOO &,,Q////)*** 	AE%)****AEJ(0111KK
$()))555555r6   c                p    g }|                     | j        j        j        j                   d |D             S )Nc                6    g | ]}t          |          D ]}|S rD   rE   rF   s      r5   rI   z"meta_arguments.<locals>.<listcomp>   rJ   r6   )rQ   
functionalrM   rN   rO   rA   rT   s     r5   meta_argumentsr[      s8    CEDKK!+3444555555r6   c                p    g }|                     | j        j        j        j                   d |D             S )Nc                6    g | ]}t          |          D ]}|S rD   rE   rF   s      r5   rI   z!out_arguments.<locals>.<listcomp>   rJ   r6   )rQ   rK   rM   rN   rZ   s     r5   out_argumentsr^      s7    CEDKK
$()))555555r6   N)r   r   r    r!   r"   r   r#   r   )r7   r   r"   r   r#   r   )r7   r;   r#   r<   )rA   r   r#   r<   )'
__future__r   torchgen.apir   torchgen.api.typesr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   torchgen.modelr   r   r   r   r   r   r   r   r   torchgen.utilsr   r1   r:   r@   rV   r[   r^   rD   r6   r5   <module>rd      s   " " " " " "                                         $
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 ( ' ' ' ' '*= *= *= *=ZF F F F   $6 6 6 6<6 6 6 66 6 6 6 6 6r6   