§
    Ì²ÅjÛY  ã                  óš  — d dl mZ d dlZd dlZd dlZd dlmZmZmZ d dl	m
Z
 d dlmZ d dlZd dlmc mZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZmZ d d
lmZmZmZm Z m!Z!m"Z" d dl#m$Z$ d dl%m&Z&m'Z'm(Z(m)Z)m*Z* d dl+m,Z, erd dl-m.Z.  edg d¢¦  «        Z/d?d„Z0	 d@dAd$„Z1dBd%„Z2	 dCdDd-„Z3	 	 	 	 dEdFd8„Z4	 d@dGd=„Z5e6d>k    r e2¦   «          dS dS )Hé    )ÚannotationsN)ÚCounterÚdefaultdictÚ
namedtuple)ÚPath)ÚTYPE_CHECKING)ÚDispatcherSignature)ÚCodeTemplate)Únative_function_manager)Úget_grouped_native_functionsÚparse_native_yaml)ÚBackendIndexÚBackendMetadataÚDispatchKeyÚNativeFunctionÚNativeFunctionsGroupÚOperatorName)ÚSelectiveBuilder)Ú	concatMapÚcontextÚFileManagerÚNamespaceHelperÚTarget)Ú
YamlLoader)ÚSequenceÚParsedExternalYaml)Úbackend_keyÚautograd_keyÚ
class_nameÚcpp_namespaceÚbackend_indicesÚbackend_yaml_pathÚstrÚgrouped_native_functionsú/Sequence[NativeFunction | NativeFunctionsGroup]r!   údict[DispatchKey, BackendIndex]Úreturnc                ó:
  ‡‡‡‡‡‡— d„ t          d„ |¦  «        D ¦   «         Št          | ¦  «        5 }t          j        |t          ¬¦  «        }d d d ¦  «         n# 1 swxY w Y   t          |t          ¦  «        sJ ‚g d¢}|                     dd ¦  «        Š‰€
J d¦   «         ‚|                     dd ¦  «        }|                     dd ¦  «        Š‰€
J d	¦   «         ‚|                     d
d¦  «        }t          |t          ¦  «        sJ d|› �¦   «         ‚|                     dd¦  «        }t          |t          ¦  «        sJ d|› �¦   «         ‚|                     dg ¦  «        }	|	€g }	t          |	t          ¦  «        sJ d|	› dt          |	¦  «        › d�¦   «         ‚|                     dg ¦  «        }
|
€g }
t          |
t          ¦  «        sJ d|	› dt          |	¦  «        › d�¦   «         ‚t          |
¦  «        }|                     dg ¦  «        }t          |t          ¦  «        sJ d|› �¦   «         ‚|                     dg ¦  «        }|	                     |¦  «         |                     di ¦  «         |                     di ¦  «         t          |                     ¦   «         ¦  «        dk    sJJ | › dd                     |                     ¦   «         ¦  «        › dd                     |¦  «        › �¦   «         ‚d8ˆˆfd(„}d Št          |	¦  «        dk    rYt!          ˆfd)„¦  «        5  t#          j        ‰¦  «        Šd d d ¦  «         n# 1 swxY w Y    ||	|‰||¬*¦  «        }‰‰vsJ ‚|‰‰<   d Št          |¦  «        dk    r\t!          ˆfd+„¦  «        5  t#          j        d,‰› �¦  «        Šd d d ¦  «         n# 1 swxY w Y    |||‰||¬*¦  «        }‰‰vsJ ‚|‰‰<   |D �]0}t          |t&          ¦  «        rU‰€g n%d-„ ‰‰                              |¦  «        fD ¦   «         }‰€g n%d.„ ‰‰                              |¦  «        fD ¦   «         }n^‰€g n*d/„ ˆˆfd0„|                     ¦   «         D ¦   «         D ¦   «         }‰€g n*d1„ ˆˆfd2„|                     ¦   «         D ¦   «         D ¦   «         }d3„ |D ¦   «         }d4„ |D ¦   «         }t          |¦  «        dk    s:t          |¦  «        dk    s'J d5|d         j        › d6|d         j        › d7�¦   «         ‚�Œ2t/          ‰‰|‰‰¦  «        S )9Nc                ó(   — i | ]}|j         j        |“ŒS © )ÚfuncÚname©Ú.0Úfs     úKC:\Projects\Historical\venv\Lib\site-packages\torchgen/gen_backend_stubs.pyú
<dictcomp>z&parse_backend_yaml.<locals>.<dictcomp>0   s4   € ð @ð @ð @àð 	
ŒŒ�Qð@ð @ð @ó    c                ót   — t          | t          ¦  «        r| gn t          |                      ¦   «         ¦  «        S ©N)Ú
isinstancer   ÚlistÚ	functions©r/   s    r0   ú<lambda>z$parse_backend_yaml.<locals>.<lambda>3   s+   € �Z¨­>Ñ:Ô:ÐS�q�c�cÅÀQÇ[Â[Á]Ä]Ñ@SÔ@S€ r2   )ÚLoader)
Úbackendr   r    Úextra_headersÚ	supportedÚautogradÚfull_codegenÚ
non_nativeÚir_genÚsymintr;   z&You must provide a value for "backend"r   r    z,You must provide a value for "cpp_namespace"Úuse_out_as_primaryFzHYou must provide either True or False for use_out_as_primary. Provided: Údevice_guardzBYou must provide either True or False for device_guard. Provided: r=   z,expected "supported" to be a list, but got: z
 (of type ú)rB   z)expected "symint" to be a list, but got: r>   z+expected "autograd" to be a list, but got: r?   r@   rA   r   z contains unexpected keys: z, z). Only the following keys are supported: Úbackend_opsú	list[str]Ú
symint_opsúset[str]Údispatch_keyr   ÚboolÚuse_device_guardr'   r   c               ó  •— i }| D ]f}t          j        |¦  «        }|‰v sJ d|› �¦   «         ‚t          j        ‰|         j        ¦  «        }||v r|dz  }t          |d‰
¬¦  «        }	|	||<   Œgt          ||d||¬¦  «        S )Nz Found an invalid operator name: Ú_symintF)ÚkernelÚ
structuredr    T)rJ   rC   ÚexternalrD   Úindex)r   ÚparseÚ
dispatcherr,   r+   r   r   )rF   rH   rJ   rC   rL   ÚmetadataÚopÚop_nameÚkernel_nameÚmr    Únative_functions_maps             €€r0   Úcreate_backend_indexz0parse_backend_yaml.<locals>.create_backend_index   sÍ   ø€ ð 9;ˆØð 	"ð 	"ˆBÝ"Ô(¨Ñ,Ô,ˆGàÐ/Ð/Ð/Ð/Ø;°'Ð;Ð;ñ 0Ô/Ð/õ %œ/Ð*>¸wÔ*GÔ*LÑMÔMˆKØ�ZÐÐØ˜yÑ(�åØ"¨uÀMðñ ô ˆAð !"ˆH�WÑÐÝØ%Ø1ØØ)Øð
ñ 
ô 
ð 	
r2   c                 ó   •— d‰ › d�S )NzFThe provided value for "backend" must be a valid DispatchKey, but got ú.r*   ©r;   s   €r0   r9   z$parse_backend_yaml.<locals>.<lambda>¡   s   ø€ ÐgÐ]dÐgÐgÐg€ r2   )rC   rL   c                 ó   •— d‰ › d�S )Nz The "autograd" key was specified, which indicates that you would like to override the behavior of autograd for some operators on your backend. However "Autogradz" is not a valid DispatchKey.r*   r^   s   €r0   r9   z$parse_backend_yaml.<locals>.<lambda>²   s    ø€ ð vØOVðvð vð v€ r2   ÚAutogradc                ó   — g | ]}|®|‘ŒS r4   r*   ©r.   rY   s     r0   ú
<listcomp>z&parse_backend_yaml.<locals>.<listcomp>Æ   ó%   € ð ð ð àØ�}ð à$�}�}r2   c                ó   — g | ]}|®|‘ŒS r4   r*   rb   s     r0   rc   z&parse_backend_yaml.<locals>.<listcomp>Ï   rd   r2   c                ó   — g | ]}|®|‘ŒS r4   r*   rb   s     r0   rc   z&parse_backend_yaml.<locals>.<listcomp>Ù   ó)   € ð ð ð àð �}ð ð
 %�}�}r2   c                óF   •— g | ]}‰‰                               |¦  «        ‘ŒS r*   ©Ú
get_kernel)r.   r/   r!   r   s     €€r0   rc   z&parse_backend_yaml.<locals>.<listcomp>Û   s<   ø€ ð ð ð àð (¨Ô4×?Ò?ÀÑBÔBðð ð r2   c                ó   — g | ]}|®|‘ŒS r4   r*   rb   s     r0   rc   z&parse_backend_yaml.<locals>.<listcomp>å   rg   r2   c                óF   •— g | ]}‰‰                               |¦  «        ‘ŒS r*   ri   )r.   r/   r   r!   s     €€r0   rc   z&parse_backend_yaml.<locals>.<listcomp>ç   s<   ø€ ð ð ð àð (¨Ô5×@Ò@ÀÑCÔCðð ð r2   c                ó   — g | ]}|®|‘ŒS r4   r*   r-   s     r0   rc   z&parse_backend_yaml.<locals>.<listcomp>ï   s   € ÐGÐGÐG ¸¸˜1¸¸¸r2   c                ó   — g | ]}|®|‘ŒS r4   r*   r-   s     r0   rc   z&parse_backend_yaml.<locals>.<listcomp>ð   s   € ÐIÐIÐI !¸1¸=˜A¸=¸=¸=r2   zÊCurrently, all variants of an op must either be registered to a backend key, or to a backend's autograd key. They cannot be mix and matched. If this is something you need, feel free to create an issue! z" is listed under "supported", but z is listed under "autograd".)rF   rG   rH   rI   rJ   r   rC   rK   rL   rK   r'   r   )r   ÚopenÚyamlÚloadr   r5   ÚdictÚpoprK   r6   ÚtypeÚsetÚextendÚlenÚkeysÚjoinr   r   rS   r   rj   r7   rO   r   )r"   r$   r!   r/   Úyaml_valuesÚ
valid_keysr   rC   rL   r=   rB   Ú
symint_setÚsupported_autogradr?   r[   Úbackend_idxÚautograd_idxÚgÚforward_kernelsÚbackward_kernelsr   r;   r   r    rZ   s     `                 @@@@@r0   Úparse_backend_yamlrƒ   +   s!  øøøøøø€ ð
@ð @åØSÐSØ$ñ
ô 
ð@ñ @ô @Ðõ 
ÐÑ	 Ô	 ð 6 AÝ”i ­*Ð5Ñ5Ô5ˆð6ð 6ð 6ñ 6ô 6ð 6ð 6ð 6ð 6ð 6ð 6øøøð 6ð 6ð 6ð 6å�k¥4Ñ(Ô(Ð(Ð(Ð(ðð ð €Jð �oŠo˜i¨Ñ.Ô.€GØÐÐÐ HÑÔÐà—’ ¨tÑ4Ô4€Jà—O’O O°TÑ:Ô:€MØÐ$Ð$Ð&TÑ$Ô$Ð$ð %ŸšÐ)=¸uÑEÔEÐÝØ�Dñô ð gð gàfÐRdÐfÐfñgô gð ð #—’ ~°uÑ=Ô=ÐÝØ�$ñô ð _ð _à^ÐL\Ð^Ð^ñ_ô _ð ð —’ ¨RÑ0Ô0€IØÐØˆ	ÝØ•4ñô ð ^ð ^à]°iÐ]Ð]Í4ÐPYÉ?Ì?Ð]Ð]Ð]ñ^ô ^ð ð �_Š_˜X rÑ*Ô*€FØ€~ØˆÝØ•ñô ð [ð [àZ°9ÐZÐZÍÈYÉÌÐZÐZÐZñ[ô [ð õ �V‘”€Jà$Ÿš¨°RÑ8Ô8ÐÝØ�Dñô ð Jð JàIÐ5GÐIÐIñJô Jð ð
 —?’? >°2Ñ6Ô6€LØ×Ò�\Ñ"Ô"Ð"ð ‡O‚O�L "Ñ%Ô%Ð%ð ‡O‚O�H˜bÑ!Ô!Ð!õ 	ˆK×ÒÑÔÑÔ 1Ò$Ð$Ð$Ø
ð @ð @¸¿	º	À+×BRÒBRÑBTÔBTÑ8UÔ8Uð @ð @Ø(,¯	ª	°*Ñ(=Ô(=ð@ð @ñ 	%Ô$Ð$ð
ð 
ð 
ð 
ð 
ð 
ð 
ð> '+€KÝ
ˆ9�~„~˜ÒÐÝØgÐgÐgÐgñ
ô 
ð 	5ð 	5õ &Ô+¨GÑ4Ô4ˆKð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5ð
 +Ð*ØØØØ1Ø-ð
ñ 
ô 
ˆð  /Ð1Ð1Ð1Ð1Ø'2ˆ˜Ñ$à'+€LÝ
ÐÑÔ Ò"Ð"Ýðvð vð vð vñ
ô 
ð 	Cð 	Cõ 'Ô,Ð-A¸Ð-AÐ-AÑBÔBˆLð		Cð 	Cð 	Cñ 	Cô 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cøøøð 	Cð 	Cð 	Cð 	Cð ,Ð+ØØØØ1Ø-ð
ñ 
ô 
ˆð  ?Ð2Ð2Ð2Ð2Ø(4ˆ˜Ñ%à%ð 4wñ 4wˆÝ�a�Ñ(Ô(ð +	ð Ð&ð �ðð à-¨kÔ:×EÒEÀaÑHÔHÐIðñ ô ð ð  Ð'ð �ðð à-¨lÔ;×FÒFÀqÑIÔIÐJðñ ô ð Ðð Ð&ð �ðð ðð ð ð ð à!"§¢¡¤ðñ ô ðñ ô ð ð  Ð'ð �ðð ðð ð ð ð à!"§¢¡¤ðñ ô ðñ ô ð ð HÐG oÐGÑGÔGˆØIÐIÐ'7ÐIÑIÔIÐå�Ñ Ô  AÒ%Ð%­Ð-=Ñ)>Ô)>À!Ò)CÐ)CÐ)Cðwà�ÔÔðwð wà>NÈqÔ>QÔ>Xðwð wð wñ *DÔ)CÐCùõ
 Ø�\ :¨}¸oñô ð s5   ±AÁAÁ AÌL?Ì?MÍMÎN0Î0N4Î7N4Únative_functionsúSequence[NativeFunction]r   r   r   úDispatchKey | Noner   Úkernel_defn_file_pathr?   úlist[OperatorName] | NoneÚNonec                ó€  ‡‡‡— 	 t          |¦  «        5 }|                     ¦   «         }d d d ¦  «         n# 1 swxY w Y   n%# t          $ r}	t          d|› �¦  «        |	‚d }	~	ww xY w‰€g Š||         j        g|€g n||         j        gz   }
t          t          t          d„ |
¦  «        ¦  «        ¦  «        Šˆˆfd„| D ¦   «         }t          t          ¦  «        }|D ]-}|‰|j	        j
                                               |¦  «         Œ.d|› d�}t          d„ t          j        ||¦  «        D ¦   «         ¦  «        }d}|                     ¦   «         D ]\\  }}t!          |¦  «        }||         }||k    r:dd„Šd                     ˆfd„|D ¦   «         ¦  «        }|d|› d|› d|› d|› d|› d�z  }Œ]|dk    s
J |¦   «         ‚d S )Nz2Unable to read from the specified impl_path file: c                ó>   — d„ |                       ¦   «         D ¦   «         S )Nc                ó&   — g | ]\  }}||j         f‘ŒS r*   )rO   )r.   rW   rU   s      r0   rc   z>error_on_missing_kernels.<locals>.<lambda>.<locals>.<listcomp>  s0   € ð ð ð Ù3D°7¸H�W˜hœoÐ.ðð ð r2   )Úitems)rR   s    r0   r9   z*error_on_missing_kernels.<locals>.<lambda>  s(   € ð ð ØHMÏÊÉÌðñ ô € r2   c                óp   •— g | ]2}|j         j        ‰                     ¦   «         v r|j         j        ‰v¯0|‘Œ3S r*   )r+   r,   rx   )r.   r/   Úexpected_backend_op_namesr?   s     €€r0   rc   z,error_on_missing_kernels.<locals>.<listcomp>  sP   ø€ ð ;ð ;ð ;àØŒ6Œ;Ð3×8Ò8Ñ:Ô:Ð:Ð:ØŒFŒK˜|Ð+Ð+ð 	
ð ,Ð+Ð+r2   z(.*)z::\s*([\w\d]*)\(c                óB   — g | ]\  }}|                      d ¦  «        °|‘ŒS )ú:)Úendswith)r.   ÚxÚys      r0   rc   z,error_on_missing_kernels.<locals>.<listcomp>6  s<   € ð 	
ð 	
ð 	
á��AØ—:’:˜c‘?”?ð	
Øð	
ð 	
ð 	
r2   Ú r/   r   r'   r#   c                óª   — t          | ¦  «        5  t          j        | j        ¦  «                             ¦   «         cd d d ¦  «         S # 1 swxY w Y   d S r4   )r   r	   Úfrom_schemar+   Údeclr8   s    r0   Úcreate_declz-error_on_missing_kernels.<locals>.create_declC  s¤   € Ý,¨QÑ/Ô/ð Jð JÝ.Ô:¸1¼6ÑBÔB×GÒGÑIÔIðJð Jð Jð Jñ Jô Jð Jð Jð Jð Jð Jð Jøøøð Jð Jð Jð Jð Jð Js   �+AÁAÁAú
c                ó&   •— g | ]} ‰|¦  «        ‘ŒS r*   r*   )r.   r/   r™   s     €r0   rc   z,error_on_missing_kernels.<locals>.<listcomp>G  s!   ø€ Ð-LÐ-LÐ-LÀ¨k¨k¸!©n¬nÐ-LÐ-LÐ-Lr2   z$ is missing a kernel definition for z. We found z( kernel(s) with that name,
but expected zH kernel(s). The expected function schemas for the missing operator are:
z

)r/   r   r'   r#   )ro   ÚreadÚOSErrorÚAssertionErrorrR   rr   r6   r   r   r+   r,   Úappendr   ÚreÚfindallr�   rw   ry   )r„   r!   r   r   r   r‡   r?   r/   Úbackend_defnsÚeÚindicesÚexpected_backend_native_funcsÚ#expected_backend_kernel_name_countsÚnative_fÚkernel_defn_regexÚ!actual_backend_kernel_name_countsÚmissing_kernels_err_msgÚexpected_nameÚfuncsÚexpected_overload_countÚactual_overload_countÚexpected_schemas_strr™   r�   s         `               @@r0   Úerror_on_missing_kernelsr°   ü   s   øøø€ ðÝÐ'Ñ(Ô(ð 	%¨AØŸFšF™HœHˆMð	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%øøåð ð ð ÝØXÐAVÐXÐXñ
ô 
àð	øøøøðøøøð
 ÐØˆà˜{Ô+Ô1Ð2ØÐ"ˆˆ¨¸Ô)FÔ)LÐ(Mñ€Gõ
 :>ÝÝðð ð ñ	ô ñ	
ô 	
ñ	:ô 	:Ðð;ð ;ð ;ð ;ð ;à!ð;ñ ;ô ;Ð!õ LWÝñLô LÐ'ð 2ð ð ˆØ+Ø% h¤mÔ&8Ô9ô	
ç
Š&�Ñ
Ô
Ð
Ð
ð
 = 
Ð<Ð<Ð<ÐÝ(/ð
	
ð 	
åœ*Ð%6¸ÑFÔFð	
ñ 	
ô 	
ñ
)ô 
)Ð%ð !ÐØ C× IÒ IÑ KÔ Kð ð Ñˆ�uÝ"% e¡*¤*ÐØ AÀ-Ô PÐØ"Ð&;Ò;Ð;ðJð Jð Jð Jð $(§9¢9Ð-LÐ-LÐ-LÐ-LÀeÐ-LÑ-LÔ-LÑ#MÔ#MÐ Ø#ð (Øð(ð (Ø1>ð(ð (ØK`ð(ð (à%ð(ð (ð ð(ð (ð (ñ Ð#øð # bÒ(Ð(Ð(Ð*AÑ(Ô(Ð(Ð(Ð(s2   …A ”5©A µ9¹A ¼9½A Á
A#ÁAÁA#c                 ó„  — t          j        d¬¦  «        } |                      dddd¬¦  «         |                      dd	d
d¬¦  «         |                      ddt          dd¬¦  «         |                      ddt          d d¬¦  «         |                      ¦   «         }t          |j        |j        |j	        |j
        ¦  «         d S )NzGenerate backend stub files)Údescriptionz-sz--source-yamlz--source_yamlzApath to source yaml file containing operator external definitions)Úhelpz-oz--output-dirz--output_dirzoutput directoryz	--dry-runz	--dry_runF)rt   Údefaultr³   z--impl-pathz--impl_pathz9path to the source C++ file containing kernel definitions)ÚargparseÚArgumentParserÚadd_argumentrK   r#   Ú
parse_argsÚrunÚsource_yamlÚ
output_dirÚdry_runÚ	impl_path)ÚparserÚoptionss     r0   ÚmainrÀ   Q  sî   € ÝÔ$Ð1NÐOÑOÔO€FØ
×ÒØØØØPð	 ñ ô ð ð ×Ò˜˜n¨nÐCUÐÑVÔVÐVØ
×ÒØ�[¥t°UÐASð ñ ô ð ð ×ÒØØÝØØHð ñ ô ð ð ×ÒÑ!Ô!€GåˆÔ˜WÔ/°´À'ÔBSÑTÔTÐTÐTÐTr2   r•   Úfmr   r    Úbackend_dispatch_keyÚautograd_dispatch_keyÚbackend_namec                ó@  ‡‡‡‡‡‡‡	‡
‡— ‰€J ‚dŠ
t          t          t          ˆˆfd„|¦  «        ¦  «        ¦  «        Š	t          t          t          ˆˆfd„|¦  «        ¦  «        ¦  «        Št          |¦  «        Š|                      ‰› d�dˆˆ	ˆˆˆˆ
ˆfd„¦  «         d S )NzAAutogenerated file by gen_backend_stubs.py. Do not edit directly!c                ó:   •— t          j        | ‰‰         ¦  «        S r4   ©ÚdestÚ#compute_native_function_declaration)r/   rÂ   r!   s    €€r0   r9   z4gen_dispatchkey_nativefunc_headers.<locals>.<lambda>~  s   ø€ �$ÔBØ�Ð';Ô<ñô € r2   c                óB   •— ‰€g nt          j        | ‰‰         ¦  «        S r4   rÇ   )r/   rÃ   r!   s    €€r0   r9   z4gen_dispatchkey_nativefunc_headers.<locals>.<lambda>ˆ  s0   ø€ Ø(Ð0ð ˜"åÔ=Ø�Ð'<Ô=ñô ð r2   úNativeFunctions.hzDispatchKeyNativeFunctions.hc                 ó2   •— ‰‰j         ‰‰j        ‰‰ z   ‰‰dœS )N)Úgenerated_commentÚnamespace_prologuer   Únamespace_epilogueÚdispatch_declarationsÚBackendNamer   )ÚprologueÚepilogue)Úautograd_declarationsÚbackend_declarationsrÂ   rÄ   r   rÍ   Ú	ns_helpers   €€€€€€€r0   r9   z4gen_dispatchkey_nativefunc_headers.<locals>.<lambda>–  s0   ø€ Ø!2Ø"+Ô"4Ø$Ø"+Ô"4Ø%9Ð<QÑ%QØ'Ø/ð
ð 
€ r2   )Úsortedru   r   r   Úwrite_with_template)rÁ   r   r    r!   r$   rÂ   rÃ   rÄ   rÔ   rÕ   rÍ   rÖ   s    ` ` ```@@@@r0   Ú"gen_dispatchkey_nativefunc_headersrÙ   i  s'  øøøøøøøøø€ ð Ð!Ð!Ð!àKð õ "ÝÝðð ð ð ð ð )ñ	ô ñ	
ô 	
ñ	ô 	Ðõ #ÝÝðð ð ð ð ð
 )ñô ñ		
ô 		
ñô Ðõ   Ñ.Ô.€IØ×ÒØÐ2Ð2Ð2Ø&ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð ð ð r2   FTr»   rJ   Úselectorr   Úbuild_in_treerK   Úper_operator_headersÚeager_registrationc                ój  ‡ ‡‡‡‡‡	‡‡‡‡‡‡— |› d|› d�g}|r d                      d„ |D ¦   «         ¦  «        Šnd                      d„ |D ¦   «         ¦  «        Š‰€J ‚|‰         Št          t          t          j        ‰t
          j        ‰dd‰› d¬¦  «        ‰¦  «        ¦  «        }dŠt          d	¬
¦  «        ŠdŠdŠ|r't          d¦  «        }| 	                    ‰|¬¦  «        Šn't          d¦  «        }| 	                    |
‰|¬¦  «        Š‰  
                    d‰› d�dˆˆˆˆˆˆ ˆˆˆˆ	ˆˆfd„¦  «         d S )Nú/rË   rš   c              3  ó"   K  — | ]
}d |› d�V — ŒdS )z
#include <ú>Nr*   ©r.   Úhs     r0   ú	<genexpr>z/gen_dispatcher_registrations.<locals>.<genexpr>µ  ó.   è è € Ð0TÐ0TÀqÐ1B¸aÐ1BÐ1BÐ1BÐ0TÐ0TÐ0TÐ0TÐ0TÐ0Tr2   c              3  ó"   K  — | ]
}d |› d�V — ŒdS )z
#include "ú"Nr*   râ   s     r0   rä   z/gen_dispatcher_registrations.<locals>.<genexpr>·  rå   r2   FT©ÚrocmrB   Úclass_method_nameÚskip_dispatcher_op_registrationÚat)Únamespace_strr•   zOTORCH_LIBRARY_IMPL(aten, $dispatch_key, m) {
    $dispatch_registrations_body
})rJ   Údispatch_registrations_bodyzõTORCH_API void Register${backend_name}${dispatch_key}NativeFunctions();
TORCH_API void Register${backend_name}${dispatch_key}NativeFunctions() {
    static auto m = MAKE_TORCH_LIBRARY_IMPL(aten, $dispatch_key);
    $dispatch_registrations_body
})rÄ   rJ   rî   ÚRegisterz.cppzRegisterDispatchKey.cppc                 óÐ   •— d‰‰	sdnd‰‰                      ¦   «         t          j        ‰ ‰	d¬¦  «        ‰                     dˆ ˆˆˆˆˆˆ
ˆfd„¦  «                             ‰¦  «        dœS )Nr•   z#include <ATen/Functions.h>F)rÜ   ré   zRegisterDispatchDefinitions.inic                 óô   •— ‰j         ‰j        ‰‰t          j        ‰ ¦  «        ‰                     ¦   «         dt          t          t          j        ‰ t          j	        ‰dd‰› d¬¦  «        ‰¦  «        ¦  «        dœS )Nr•   FTrè   )Úns_prologueÚns_epilogueÚ"static_init_dispatch_registrationsÚdeferred_dispatch_registrationsÚdispatch_helpersÚdispatch_namespaceÚdispatch_namespaced_definitionsÚdispatch_anonymous_definitions)
rÒ   rÓ   rÈ   Úgen_registration_helpersÚlowerr6   r   ÚRegisterDispatchKeyr   ÚANONYMOUS_DEFINITION)Úbackend_indexr   rõ   rJ   r$   rÖ   rÚ   rô   s   €€€€€€€€r0   r9   z@gen_dispatcher_registrations.<locals>.<lambda>.<locals>.<lambda>ø  s�   ø€ Ø#,Ô#5Ø#,Ô#5Ø:\Ø7VÝ(,Ô(EÀmÑ(TÔ(TØ*6×*<Ò*<Ñ*>Ô*>Ø79Ý6:Ý!Ý Ô4Ø -Ý &Ô ;Ø (Ø%*Ø'+Ø5?°/Ø@Eðñ ô ð 5ñô ñ7ô 7ðð € r2   )Úextra_cuda_headersÚexternal_backend_headersÚops_headersr   r÷   Údispatch_headersÚdispatch_definitions)rû   rÈ   Úgen_registration_headersÚsubstitute_with_templateÚsplit)rþ   r   rõ   rJ   Úexternal_backend_headers_strrÁ   r$   ÚnewlinerÖ   rÜ   rÚ   rô   s   €€€€€€€€€€€€r0   r9   z.gen_dispatcher_registrations.<locals>.<lambda>ë  s²   ø€ Ø"$Ø(Dà'ðÐ8Ð8àØ'Ø".×"4Ò"4Ñ"6Ô"6Ý $Ô =ØÐ4HÈuð!ñ !ô !ð %'×$?Ò$?Ø1ðð ð ð ð ð ð ð ð ð ð ñ%ô %÷2 Še�G‰nŒnðI%
ð %
€ r2   )ry   r6   r   rÈ   rü   r   ÚREGISTRATIONr   r
   Ú
substituterØ   )rÁ   r»   r   r!   r$   rÂ   rJ   rÚ   rÛ   rÜ   rÄ   rÝ   Úheadersrî   Ústatic_templateÚdeferred_templaterþ   rõ   r  r  rÖ   rô   s   ` ` ` `` `      @@@@@@r0   Úgen_dispatcher_registrationsr  ¢  s  øøøøøøøøøøøø€ ð  Ð?Ð?Ð,Ð?Ð?Ð?ð€Gð ð UØ'+§y¢yÐ0TÐ0TÈGÐ0TÑ0TÔ0TÑ'TÔ'TÐ$Ð$à'+§y¢yÐ0TÐ0TÈGÐ0TÑ0TÔ0TÑ'TÔ'TÐ$àÐ!Ð!Ð!Ø# LÔ1€Må"&ÝÝÔ$ØÝÔ#ØØØØ%/ /Ø05ðñ ô ð %ñ	
ô 	
ñ#ô #Ðð €GÝ¨dÐ3Ñ3Ô3€IØ&(Ð#Ø)+Ð&Øð 
Ý&ðñ
ô 
ˆð .=×-GÒ-GØ%Ø(Cð .Hñ .
ô .
Ð*Ð*õ
 )ðñ
ô 
Ðð +<×*FÒ*FØ%Ø%Ø(Cð +Gñ +
ô +
Ð'ð ×ÒØ%�<Ð%Ð%Ð%Ø!ð%	
ð %	
ð %	
ð %	
ð %	
ð %	
ð %	
ð %	
ð %	
ð %	
ð %	
ð %	
ð %	
ð %	
ð %	
ñ)ô )ð )ð )ð )r2   rº   r¼   r½   ú
str | Nonec                ó  ‡‡— t          t          ¦  «        j        j                             ¦   «         }t          j                             |d¦  «        Šd	ˆˆfd„} ||¦  «        }t          j                             |d¦  «        }t          j                             |d¦  «        }t          ||¦  «        }	|	j        |	j	        }}
t          |
¦  «        }t          | ||¦  «        }|j        }|j        }|j        }|j        }|j	        }t!          j        ¦   «         }|€d S |€||                              ¦   «         }|€J ‚|�t'          |
|||||¦  «         t)          |||||||¦  «         |€|gn||gD ]}t+          ||||||||¦  «         Œd S )
Nzaten/src/ATen/templatesÚinstall_dirr#   r'   r   c                ó(   •— t          | ‰‰¬¦  «        S )N)r  Útemplate_dirr¼   )r   )r  r¼   r  s    €€r0   Úmake_file_managerzrun.<locals>.make_file_manager  s!   ø€ ÝØ#°,Èð
ñ 
ô 
ð 	
r2   z*aten/src/ATen/native/native_functions.yamlzaten/src/ATen/native/tags.yaml)r  r#   r'   r   )r   Ú__file__ÚparentÚabsoluteÚosÚpathry   r   r„   r!   r   rƒ   r   r   r    r   r   Úget_nop_selectorÚnative_function_class_namer°   rÙ   r  )rº   r»   r¼   r½   Úpytorch_rootr  rÁ   Únative_yaml_pathÚtags_yaml_pathÚparsed_yamlr„   r!   r$   Úparsed_backend_yamlr   r   r    r   rÚ   rJ   r  s     `                 @r0   r¹   r¹     s  øø€ õ �‘>”>Ô(Ô/×8Ò8Ñ:Ô:€LÝ”7—<’< Ð.GÑHÔH€Lð
ð 
ð 
ð 
ð 
ð 
ð 
ð
 
Ð	˜:Ñ	&Ô	&€Bå”w—|’|ØÐBñô Ðõ ”W—\’\ ,Ð0PÑQÔQ€NÝ#Ð$4°nÑEÔE€KàÔ$ØÔ#ð &Ðõ  <Ð<LÑMÔMÐÝ,ØÐ-¨ñô Ðð &Ô1€KØ&Ô3€LØ'Ô5€MØ$Ô/€JØ)Ô9€OåÔ0Ñ2Ô2€HàÐàˆàÐð
 % [Ô1×LÒLÑNÔNˆ
ØÐ!Ð!Ð!àÐÝ ØØØØØØñ	
ô 	
ð 	
õ 'Ø
ØØØØ ØØñô ð ð &Ð-ˆˆˆ°KÀÐ3Nð
ð 
ˆõ 	%ØØØØØ$ØØØñ		
ô 		
ð 		
ð 		
ð
ð 
r2   Ú__main__)r"   r#   r$   r%   r!   r&   r'   r   r4   )r„   r…   r!   r&   r   r   r   r†   r   r#   r‡   r#   r?   rˆ   r'   r‰   )r'   r‰   )r•   )rÁ   r   r   r#   r    r#   r!   r&   r$   r%   rÂ   r   rÃ   r†   rÄ   r#   r'   r‰   )FFr•   T)rÁ   r   r»   r#   r   r#   r!   r&   r$   r%   rÂ   r   rJ   r   rÚ   r   rÛ   rK   rÜ   rK   rÄ   r#   rÝ   rK   r'   r‰   )
rº   r#   r»   r#   r¼   rK   r½   r  r'   r‰   )7Ú
__future__r   rµ   r  r    Úcollectionsr   r   r   Úpathlibr   Útypingr   rp   Útorchgen.api.dispatcherÚapirT   Útorchgen.destrÈ   Útorchgen.api.typesr	   Útorchgen.code_templater
   Útorchgen.contextr   Útorchgen.genr   r   Útorchgen.modelr   r   r   r   r   r   Ú!torchgen.selective_build.selectorr   Útorchgen.utilsr   r   r   r   r   Útorchgen.yaml_utilsr   Úcollections.abcr   r   rƒ   r°   rÀ   rÙ   r  r¹   Ú__name__r*   r2   r0   ú<module>r3     sÅ  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø 	€	€	€	Ø 	€	€	€	Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  à €€€à ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø Ð Ð Ð Ð Ð Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø /Ð /Ð /Ð /Ð /Ð /Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ Hðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ?Ð >Ð >Ð >Ð >Ð >Ø SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SØ *Ð *Ð *Ð *Ð *Ð *ð ð )Ø(Ð(Ð(Ð(Ð(Ð(ð
  �ZØØUÐUÐUñô Ð ðNð Nð Nð Nðp /3ðRBð RBð RBð RBð RBðjUð Uð Uð Uð@ ð6ð 6ð 6ð 6ð 6ðF  Ø!&ØØ#ðoð oð oð oð oðf OSðO
ð O
ð O
ð O
ð O
ðd ˆzÒÐØ€D�F„F€F€F€Fð Ðr2   