§
    Ì²Åj|  ã                  óÎ   — 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        úHC:\Projects\Historical\venv\Lib\site-packages\torchgen/api/structured.pyr1   r1   ,   sº  € õ 	Ô˜1 U°%ÀÐIÑIÔI€AØ€}Øˆå�!•XÑÔð =ØŒ6•V”]Ò"Ð"Ý˜e¥]µ9½WÑ3EÔ3EÑ%FÔ%FÑGÔGÐGØŒV•v”}Ò$Ð$Ý˜e¥]µ9½WÑ3EÔ3EÑ%FÔ%FÑGÔGÐGå Ð!MÈ!Ð!MÐ!MÑNÔNÐNÝ	�A•|Ñ	$Ô	$ñ =ØŒ6•X�fœmÑ,Ô,Ò,Ð,Ý˜e¥YÕ/AÑ%BÔ%BÑCÔCÐCØŒV•x¥¤Ñ.Ô.Ò.Ð.Ý˜e¥YÕ/AÑ%BÔ%BÑCÔCÐCÝ˜œ¥Ñ)Ô)ð 	F­c°!´&´+Ñ.>Ô.>À%Ò.GÐ.GÝ˜e¥YÕ/CÑ%DÔ%DÑEÔEÐEÝ  ¤°ÀÐFÑFÔFˆÝ˜%¥¨t¬yÑ!9Ô!9Ñ:Ô:Ð:Ý	�A•xÑ	 Ô	 ñ =ØŒ6•X�fœmÑ,Ô,Ò,Ð,Ý˜e¥]µ9½_Ñ3MÔ3MÑ%NÔ%NÑOÔOÐOØŒV•|¥H­V¬]Ñ$;Ô$;Ñ<Ô<Ò<Ð<Ý˜e¥YÕ/AÑ%BÔ%BÑCÔCÐCõ �”‰[Œ[˜EÒ!Ð!Ý˜e¥Y­|Ñ%<Ô%<Ñ=Ô=Ð=Ý�”‰[Œ[˜IÒ%Ð%Ý˜e¥Y­|Ñ%<Ô%<Ñ=Ô=Ð=Ý  ¤°ÀÐFÑFÔFˆÝ˜%¥¨t¬yÑ!9Ô!9Ñ:Ô:Ð:åÐ;µ$°q±'´'Ð;Ð;Ñ<Ô<Ð<ó    Úar   c               ó:   — t          | j        | j        |¬¦  «        S )Nr'   )r1   r2   Úis_write)r7   r"   s     r5   Úargument_typer:   Y   s   € Ý˜QœV¨Q¬Z¸uÐ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ÑÔð åÝ$ Q¨a¬fÐ5Ñ5Ô5Ø”VØØð	ñ ô ð
ð 	
õ 
�A•|Ñ	$Ô	$ð Ý˜œ
Ñ#Ô#Ð#Ý	�AÕ-Ñ	.Ô	.ð ÝÐQÑRÔRÐRå�Q‰Œˆˆˆr6   Úgr   c                óh  — g }| j         j        rÇg }| 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  € ØCE€Dà„uÔð 2ð ð 	ð ””Ô%Ô-ð 	0ð 	0ˆAÝ˜!�XÑ&Ô&ð 0¨1¬6°Q´UÔ5FÔ5NÐ+NÐ+Nð &×,Ò,¨Q¬UÔ->Ô-FÀqÄvÔ-NÑOÔOÐOÐOð &×,Ò,¨QÑ/Ô/Ð/Ð/à�ŠÐ)Ñ*Ô*Ð*ð 	�Š�A”EÔ%Ô)Ñ*Ô*Ð*Ð*à�Š�A”E”JÔ(Ô0Ñ1Ô1Ð1à‡K‚K�””
Ô$Ô(Ñ)Ô)Ð)Ø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   € ØCE€DØ‡K‚K�”Ô!Ô+Ô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   € ØCE€DØ‡K‚K�””
Ô$Ô(Ñ)Ô)Ð)Ø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   