§
    Ì²ÅjaB  ã                  óv  — d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	m
Z
mZ d dlmZmZ d dlmZ d dlmZmZmZmZmZmZmZ d dlmZ d dlmZ erd d	lmZ d d
lm Z m!Z!m"Z"  ee#¦  «         $                    ¦   «         j%        j%        Z& G d„ de¦  «        Z'dZ(dGd„Z) ed¦  «        Z* ed¦  «        Z+dHd„Z,dId„Z-ej.        dJd „¦   «         Z/dKd#„Z0ej1        dLd&„¦   «         Z2dMd)„Z3 G d*„ d+¦  «        Z4	 dNdOd0„Z5	 	 dPdQd6„Z6	 dRdSd8„Z7dTd;„Z8dUd=„Z9dVdB„Z: G dC„ dD¦  «        Z; G dE„ dFee*         ¦  «        Z<dS )Wé    )ÚannotationsN)ÚfieldsÚis_dataclass)ÚautoÚEnum)ÚPath)ÚAnyÚCallableÚGenericÚLiteralÚNoReturnÚTYPE_CHECKINGÚTypeVar)ÚSelf)ÚCodeTemplate)Ú	Namespace)ÚIterableÚIteratorÚSequencec                  ó†   — e Zd Z e¦   «         Z e¦   «         Z e¦   «         Z e¦   «         Z e¦   «         Z e¦   «         Z	dS )ÚTargetN)
Ú__name__Ú
__module__Ú__qualname__r   Ú
DEFINITIONÚDECLARATIONÚREGISTRATIONÚANONYMOUS_DEFINITIONÚNAMESPACED_DEFINITIONÚNAMESPACED_DECLARATION© ó    ú?C:\Projects\Historical\venv\Lib\site-packages\torchgen/utils.pyr   r   #   sU   € € € € € à�‘”€JØ�$‘&”&€Kà�4‘6”6€Là˜4™6œ6Ðà ˜D™FœFÐØ!˜T™VœVÐÐÐr"   r   z(^|\W){}($|\W)ÚschemaÚstrÚreturnútuple[str, list[str]]c                ó²   — t          j        d| ¦  «        }|€t          d| › �¦  «        ‚|                     ¦   «         \  }}}||                     d¦  «        fS )Nz(\w+)(\.\w+)?\((.*)\)zUnsupported function schema: ú, )ÚreÚmatchÚRuntimeErrorÚgroupsÚsplit)r$   ÚmÚnameÚ_Úparamss        r#   Úsplit_name_paramsr3   6   sZ   € Ý
ŒÐ)¨6Ñ2Ô2€AØ€yÝÐC¸6ÐCÐCÑDÔDÐDØ—h’h‘j”j�O€Dˆ!ˆVØ�—’˜dÑ#Ô#Ð#Ð#r"   ÚTÚSÚfuncúCallable[[T], S | None]ÚxsúIterable[T]úIterator[S]c              #  ó6   K  — |D ]} | |¦  «        }|�|V — Œd S ©Nr!   )r6   r8   ÚxÚrs       r#   ÚmapMayber?   F   s;   è è € Øð ð ˆØˆD�‰GŒGˆØˆ=ØˆGˆGˆGøðð r"   úCallable[[T], Sequence[S]]c              #  ó6   K  — |D ]} | |¦  «        E d {V —† Œd S r<   r!   )r6   r8   r=   s      r#   Ú	concatMaprB   N   sB   è è € Øð ð ˆØ�4˜‘7”7ÐÐÐÐÐÐÐÐðð r"   Úmsg_fnúCallable[[], str]úIterator[None]c              #  óÞ   K  — 	 d V — d S # t           $ rX} | ¦   «         }t          j        |d¦  «        }|j        r|j        d         › d|› �n|}|f|j        dd …         z   |_        ‚ d }~ww xY w)Nz  r   ú
é   )Ú	ExceptionÚtextwrapÚindentÚargs)rC   ÚeÚmsgs      r#   ÚcontextrO   V   s“   è è € ðØˆˆˆˆˆøÝð ð ð àˆf‰hŒhˆÝŒo˜c 4Ñ(Ô(ˆØ'(¤vÐ6�”˜”Ð#Ð#˜cÐ#Ð#Ð#°3ˆØ�˜!œ&   œ*Ñ$ˆŒØøøøøðøøøs   „
 Š
A,”AA'Á'A,r=   r   c                óJ   — t          dt          | ¦  «        j        › �¦  «        ‚)NzUnhandled type: )ÚAssertionErrorÚtyper   )r=   s    r#   Úassert_neverrS   f   s"   € Ý
Ð>­D°©G¬GÔ,<Ð>Ð>Ñ
?Ô
?Ð?r"   Útemplate_fnr   c                ó*   — t          j        | ¦  «        S r<   )r   Ú	from_file)rT   s    r#   Ú_read_templaterW   j   s   € åÔ! +Ñ.Ô.Ð.r"   ÚsÚintc                ó¬   — t          j        |                      d¦  «        ¦  «                             ¦   «         }t                               |d¬¦  «        S )NÚlatin1Úlittle)Ú	byteorder)ÚhashlibÚsha1ÚencodeÚdigestrY   Ú
from_bytes)rX   r_   s     r#   Ústring_stable_hashrc   p   s?   € ÝŒ<˜Ÿš Ñ*Ô*Ñ+Ô+×2Ò2Ñ4Ô4€DÝ�>Š>˜$¨(ˆ>Ñ3Ô3Ð3r"   c                  ó~   — e Zd ZU ded<   ded<   ded<   ded<   d$d
„Zd%d„Zd&d„Zd'd„Zd(d„Zddœd)d „Z	d*d"„Z
d+d#„ZdS ),ÚFileManagerr%   Úinstall_dirÚtemplate_dirÚboolÚdry_runúset[str]Ú	filenamesr&   ÚNonec                óV   — || _         || _        t          ¦   «         | _        || _        d S r<   )rf   rg   Úsetrk   ri   )Úselfrf   rg   ri   s       r#   Ú__init__zFileManager.__init__~   s(   € Ø&ˆÔØ(ˆÔÝ™œˆŒØˆŒˆˆr"   ÚfilenameÚcontentsc                ó–  — 	 t          |¦  «        5 }|                     ¦   «         }d d d ¦  «         n# 1 swxY w Y   n# t          $ r d }Y nw xY w||k    rst          j        t          j                             |¦  «        d¬¦  «         t          |d¦  «        5 }|                     |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S d S )NT)Úexist_okÚw)ÚopenÚreadÚOSErrorÚosÚmakedirsÚpathÚdirnameÚwrite)ro   rq   rr   ÚfÚold_contentss        r#   Ú_write_if_changedzFileManager._write_if_changed„   sP  € ð	 Ý�h‘”ð ( 1Ø Ÿvšv™xœx�ð(ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (øøåð 	 ð 	 ð 	 ØˆLˆLˆLð	 øøøà�|Ò#Ð#åŒK�œŸš¨Ñ1Ô1¸DÐAÑAÔAÐAÝ�h Ñ$Ô$ð "¨Ø—’˜Ñ!Ô!Ð!ð"ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "ð "ð "ð $Ð#s9   ‚> ‘2¦> ²6¶> ¹6º> ¾AÁAÂB<Â<C ÃC rT   Úenv_callableú"Callable[[], str | dict[str, Any]]c                óº  — t           j                             | j        |¦  «        } |¦   «         }t	          |t
          ¦  «        rðd|vrÈt          dz  dz  }	 t          t          j	        d         j
        p|¦  «                             ¦   «         }n+# t          t          f$ r |                     ¦   «         }Y nw xY w	 |                     t          ¦  «                             ¦   «         }n# t           $ r
 |j        }Y nw xY wi |¥ddd|› d|› �z   i¥}t%          |¦  «        }|                     |¦  «        S t	          |t(          ¦  «        r|S t+          |¦  «         d S )NÚgenerated_commentÚtorchgenzgen.pyÚ__main__ú@zgenerated by z from )ry   r{   Újoinrg   Ú
isinstanceÚdictÚ	REPO_ROOTr   ÚsysÚmodulesÚ__file__ÚabsoluteÚKeyErrorÚAttributeErrorÚrelative_toÚas_posixÚ
ValueErrorr0   rW   Ú
substituter%   rS   )	ro   rT   r�   Útemplate_pathÚenvÚgenerator_defaultÚ	generatorÚgenerator_pathÚtemplates	            r#   Úsubstitute_with_templatez$FileManager.substitute_with_template’   s�  € õ œŸš TÔ%6¸ÑDÔDˆØˆl‰nŒnˆÝ�c�4Ñ Ô ð 	Ø"¨#Ð-Ð-Ý$-°
Ñ$:¸XÑ$EÐ!ð=Ý $Ýœ JÔ/Ô8ÐMÐ<Mñ!ô !ç’h‘j”jð �Iøõ !¥.Ð1ð =ð =ð =Ø 1× :Ò :Ñ <Ô <�I�I�Ið=øøøð4Ø%.×%:Ò%:½9Ñ%EÔ%E×%NÒ%NÑ%PÔ%P�N�NøÝ!ð 4ð 4ð 4Ø%.¤^�N�N�Nð4øøøðØðà'ØÐQ¨nÐQÐQÀKÐQÐQÑQðð �õ & mÑ4Ô4ˆHØ×&Ò& sÑ+Ô+Ð+Ý˜�SÑ!Ô!ð 	ØˆJå˜ÑÔÐÐÐs$   Á8B Â%B8Â7B8Â<,C) Ã)C=Ã<C=c                óæ   — | j         › d|› �}|| j        vs
J d¦   «         ‚| j                             |¦  «         | j        s0|                      ||¬¦  «        }|                      ||¬¦  «         d S d S )Nú/zduplicate file write {filename})rT   r�   )rq   rr   )rf   rk   Úaddri   rœ   r€   )ro   rq   rT   r�   Úsubstitute_outs        r#   Úwrite_with_templatezFileManager.write_with_template³   s¤   € ð Ô&Ð3Ð3¨Ð3Ð3ˆØ˜tœ~Ð-Ð-Ð-Ð/PÑ-Ô-Ð-ØŒ×Ò˜8Ñ$Ô$Ð$ØŒ|ð 	OØ!×:Ò:Ø'Ø)ð ;ñ ô ˆNð ×"Ò"¨H¸~Ð"ÑNÔNÐNÐNÐNð	Oð 	Or"   c                ó4   — |                       |||¦  «         d S r<   )r¡   )ro   rq   r�   s      r#   r}   zFileManager.writeÃ   s"   € ð
 	× Ò  ¨8°\ÑBÔBÐBÐBÐBr"   N)Úbase_envÚitemsr9   Úkey_fnúCallable[[T], str]ú#Callable[[T], dict[str, list[str]]]Ú
num_shardsrY   r£   údict[str, Any] | NoneÚsharded_keysc               ó  ‡‡— ddi}d„ t          |¦  «        D ¦   «         }	|g|	z   }
|�|
D ]Š‰                     |¦  «         Œ‰D ]S}|
D ]NŠ|‰v rCt          ‰|         t          ¦  «        s
J d¦   «         ‚‰|                              ¦   «         ‰|<   ŒIg ‰|<   ŒOŒTdˆfd
„}| j        rd}|D ]H} ||¦  «        }t          |¦  «        |z  } ||¦  «        } ||	|         |¦  «          |||¦  «         ŒI|                     d¦  «        }|dk    rt          |¦  «        }|d |…         }||d …         }|
D ]*Š‰d         }|  	                    |› |› |› �|ˆfd„¦  «         Œ+| j
                             | j        › d|› d|› �¦  «         d S )NÚshard_idÚ
Everythingc                ó   — g | ]	}d d|› �i‘Œ
S )r¬   r1   r!   )Ú.0Úis     r#   ú
<listcomp>z-FileManager.write_sharded.<locals>.<listcomp>Ö   s0   € ð (
ð (
ð (
Ø&'ˆZ˜˜Q˜˜Ð!ð(
ð (
ð (
r"   z'sharded keys in base_env must be a listÚintoúdict[str, list[str]]Úfrom_r&   rl   c                ó~   •— |                      ¦   «         D ]&\  }}|‰v sJ d|› �¦   «         ‚| |xx         |z  cc<   Œ'd S )Nzundeclared sharded key )r¤   )r²   r´   ÚkÚvrª   s       €r#   Ú	merge_envz,FileManager.write_sharded.<locals>.merge_envé   sa   ø€ ØŸš™œð ð ‘��1Ø˜LÐ(Ð(Ð(Ð*GÀAÐ*GÐ*GÑ(Ô(Ð(Ø�Q��”˜1‘��‘�ðð r"   r!   ú.éÿÿÿÿc                 ó   •— ‰ S r<   r!   )Úshards   €r#   ú<lambda>z+FileManager.write_sharded.<locals>.<lambda>  s   ø€ È5€ r"   rž   )r²   r³   r´   r³   r&   rl   )ÚrangeÚupdater‰   ÚlistÚcopyri   rc   ÚrfindÚlenr¡   rk   Údiscardrf   )ro   rq   r¤   r¥   r�   r¨   r£   rª   Ú
everythingÚshardsÚ
all_shardsÚkeyr¸   ÚitemÚsidr—   Údot_posÚbase_filenameÚ	extensionr¬   r¼   s          `            @r#   Úwrite_shardedzFileManager.write_shardedÊ   sc  øø€ ð '1°,Ð%?ˆ
ð(
ð (
Ý+0°Ñ+<Ô+<ð(
ñ (
ô (
ˆð !�\ FÑ*ˆ
àÐØ#ð 'ð '�Ø—’˜XÑ&Ô&Ð&Ð&àð 	$ð 	$ˆCØ#ð $ð $�Ø˜%�<�<Ý%Ø˜cœ
¥Dñô ð Að Aà@ñAô Að ð "' s¤§¢Ñ!2Ô!2�E˜#‘J�Jà!#�E˜#‘J�Jð$ð	ð 	ð 	ð 	ð 	ð 	ð
 Œ<ð 	àˆEàð 	'ð 	'ˆDØ�&˜‘,”,ˆCÝ$ SÑ)Ô)¨JÑ6ˆCØ�,˜tÑ$Ô$ˆCàˆI�f˜S”k 3Ñ'Ô'Ð'ØˆI�j #Ñ&Ô&Ð&Ð&à—.’. Ñ%Ô%ˆØ�bŠ=ˆ=Ý˜(‘m”mˆGØ   ' Ô*ˆØ˜W˜X˜XÔ&ˆ	àð 	ð 	ˆEØ˜ZÔ(ˆHØ×$Ò$Ø Ð7 (Ð7¨IÐ7Ð7¸À=À=À=À=ñô ð ð ð
 	Œ×ÒØÔÐFÐF -ÐFÐF¸9ÐFÐFñ	
ô 	
ð 	
ð 	
ð 	
r"   Úvariable_namec           	     ó¼   — d                      |d                     d„ t          | j        ¦  «        D ¦   «         ¦  «        ¦  «        }|                      ||¦  «         dS )z[Write a file containing the list of all outputs which are
        generated by this script.zset({}
    {})z
    c              3  ó&   K  — | ]}d |z   d z   V — ŒdS )ú"Nr!   )r¯   r0   s     r#   ú	<genexpr>z,FileManager.write_outputs.<locals>.<genexpr>  s+   è è € ÐNÐN¨t˜# ™* sÑ*ÐNÐNÐNÐNÐNÐNr"   N)Úformatrˆ   Úsortedrk   r€   )ro   rÏ   rq   Úcontents       r#   Úwrite_outputszFileManager.write_outputs  sb   € ð $×*Ò*ØØ�MŠMÐNÐNµv¸d¼nÑ7MÔ7MÐNÑNÔNÑNÔNñ
ô 
ˆð 	×Ò˜x¨Ñ1Ô1Ð1Ð1Ð1r"   c                ó�   — t           j                             | j        t           j                             t
          ¦  «        ¦  «        S )zé
        This needs to be deterministic. The template dir is an absolute path
        that varies across builds. So, just use the path relative to this file,
        which will point to the codegen source but will be stable.
        )ry   r{   Úrelpathrg   r|   rŽ   ©ro   s    r#   Útemplate_dir_for_commentsz%FileManager.template_dir_for_comments  s+   € õ Œw�Š˜tÔ0µ"´'·/²/Å(Ñ2KÔ2KÑLÔLÐLr"   )rf   r%   rg   r%   ri   rh   r&   rl   )rq   r%   rr   r%   r&   rl   )rT   r%   r�   r‚   r&   r%   )rq   r%   rT   r%   r�   r‚   r&   rl   )rq   r%   r�   r‚   r&   rl   )rq   r%   r¤   r9   r¥   r¦   r�   r§   r¨   rY   r£   r©   rª   rj   r&   rl   )rÏ   r%   rq   r%   r&   rl   ©r&   r%   )r   r   r   Ú__annotations__rp   r€   rœ   r¡   r}   rÎ   r×   rÛ   r!   r"   r#   re   re   x   s  € € € € € € ØÐÐÑØÐÐÑØ€M€M�MØÐÐÑðð ð ð ð"ð "ð "ð "ðð ð ð ðBOð Oð Oð Oð Cð Cð Cð Cð +/ð?
ð ?
ð ?
ð ?
ð ?
ð ?
ðB2ð 2ð 2ð 2ðMð Mð Mð Mð Mð Mr"   re   Úoptionsr   rf   ú
str | Nonec                ó�   — t           j                             | j        d¦  «        }|r|n| j        }t          ||| j        ¬¦  «        S )NÚ	templates)rf   rg   ri   )ry   r{   rˆ   Úsource_pathrf   re   ri   )rÞ   rf   rg   s      r#   Úmake_file_managerrã     sM   € õ ”7—<’< Ô 3°[ÑAÔA€LØ!,ÐE�+�+°'Ô2E€KÝØ¨lÀGÄOðñ ô ð r"   éP   Úobjr	   rK   Úwidthc                ól   — t           j        dk    rddlm}  || ||¦  «        S t	          | ||¬¦  «        S )N)é   é
   r   )Úpformat)rK   ræ   )rŒ   Úversion_infoÚpprintrê   Ú_pformat)rå   rK   ræ   rê   s       r#   Údataclass_reprrî   )  sM   € õ Ô˜7Ò"Ð"Ø"Ð"Ð"Ð"Ð"Ð"àˆw�s˜F EÑ*Ô*Ð*å�C ¨eÐ4Ñ4Ô4Ð4r"   Úcurr_indentc                ó¦  ‡ — t          ‰ ¦  «        sJ dt          ‰ ¦  «        › �¦   «         ‚‰ j        j        }|t	          |¦  «        dz   z  }ˆ fd„t          ‰ ¦  «        D ¦   «         }g }|D ]Â\  }}|t	          |¦  «        z   dz   }	t          |¦  «        rt          ||||	¦  «        }
nlt          |t          ¦  «        rt          ||||	¦  «        }
nDt          |t          t          t          f¦  «        rt          ||||	¦  «        }
nt          |¦  «        }
|                     |› d|
› �¦  «         ŒÃ|dz  }d|› �                     |¦  «        }|› d|› d�S )	Nz%obj should be a dataclass, received: rH   c                óV   •— g | ]%}|j         ¯	|j        t          ‰|j        ¦  «        f‘Œ&S r!   )Úreprr0   Úgetattr)r¯   r~   rå   s     €r#   r±   z_pformat.<locals>.<listcomp>C  s3   ø€ ÐQÐQÐQ°aÈ!Ì&ÐQ�A”F�G C¨¬Ñ0Ô0Ð1ÐQÐQÐQr"   ú=ú z,
ú(ú))r   rR   Ú	__class__r   rÃ   r   rí   r‰   rŠ   Ú_format_dictrÀ   rn   ÚtupleÚ_format_listrò   Úappendrˆ   )rå   rK   ræ   rï   Ú
class_nameÚfields_listÚ
fields_strr0   ÚattrÚ_curr_indentÚstr_reprÚ
indent_strÚbodys   `            r#   rí   rí   7  sƒ  ø€ õ ˜ÑÔÐQÐQÐQÅdÈ3ÁiÄiÐQÐQÑQÔQÐà”Ô'€Jà•3�z‘?”? QÑ&Ñ&€KàQÐQÐQÐQ½6À#¹;¼;ÐQÑQÔQ€Kà€JØ!ð 0ð 0‰
ˆˆdð #¥S¨¡Y¤YÑ.°Ñ2ˆÝ˜ÑÔð 	"Ý  f¨e°\ÑBÔBˆHˆHÝ˜�dÑ#Ô#ð 	"Ý# D¨&°%¸ÑFÔFˆHˆHÝ˜�t¥S­%Ð0Ñ1Ô1ð 	"Ý# D¨&°%¸ÑFÔFˆHˆHå˜D‘z”zˆHà×Ò˜TÐ.Ð. HÐ.Ð.Ñ/Ô/Ð/Ð/à˜sÑ"€JØ�ÐÐ×"Ò" :Ñ.Ô.€DØÐ"Ð"˜4Ð"Ð"Ð"Ð"r"   r   údict[Any, Any]c           
     óD  — ||dz   z  }g }|                       ¦   «         D ]n\  }}t          |¦  «        }t          |¦  «        r"t          ||||t	          |¦  «        z   ¦  «        nt          |¦  «        }|                     |› d|› �¦  «         Œot          ||||dd¦  «        S )Nrè   z: Ú{Ú})r¤   rò   r   rí   rÃ   rü   Ú_format)	r   rK   ræ   rï   Ú	dict_reprr¶   r·   Úk_reprÚv_strs	            r#   rù   rù   Z  s¸   € ð �6˜A‘:Ñ€KØ€IØ—
’
‘”ð /ð /‰ˆˆ1Ý�a‘”ˆõ ˜A‰Œð�H�Q˜  {µS¸±[´[Ñ'@ÑAÔAÐAå�a‘”ð 	ð
 	×Ò˜FÐ-Ð- eÐ-Ð-Ñ.Ô.Ð.Ð.å�9˜f e¨[¸#¸sÑCÔCÐCr"   ú&list[Any] | set[Any] | tuple[Any, ...]c                ó˜   ‡‡‡— ‰‰dz   z  Šˆˆˆfd„| D ¦   «         }t          | t          ¦  «        rdnd\  }}t          |‰‰‰||¦  «        S )NrH   c                óp   •— g | ]2}t          |¦  «        rt          |‰‰‰¦  «        nt          |¦  «        ‘Œ3S r!   )r   rí   rò   )r¯   Úlrï   rK   ræ   s     €€€r#   r±   z _format_list.<locals>.<listcomp>u  sN   ø€ ð ð ð àõ 4@À±?´?ÐO���F˜E ;Ñ/Ô/Ð/ÍÈQÉÌðð ð r"   )ú[ú])rö   r÷   )r‰   rÀ   r	  )r   rK   ræ   rï   Ú	list_reprÚstartÚends    ```   r#   rû   rû   n  s}   øøø€ ð �6˜A‘:Ñ€Kðð ð ð ð ð àðñ ô €Iõ  *¨$µÑ5Ô5ÐE��¸:�J€Eˆ3Ý�9˜f e¨[¸%ÀÑEÔEÐEr"   rÿ   ú	list[str]r  r  c                ó¬   — d\  }}t          t          | ¦  «        ¦  «        |k    rd}d|z  }d|z  }d|› |› �                     | ¦  «        }	|› |› |	› |› �S )N)Ú r  rG   rõ   r)   )rÃ   rò   rˆ   )
rÿ   rK   ræ   rï   r  r  Ú	delimiterÚcurr_indent_strr  r  s
             r#   r	  r	  }  s|   € ð "(Ñ€Iˆå
�4�
ÑÔÑÔ Ò%Ð%Øˆ	Ø Ñ+ˆà�v‘€JØ,�	Ð,˜?Ð,Ð,×1Ò1°*Ñ=Ô=€DØÐ,�ZÐ, Ð, sÐ,Ð,Ð,r"   c                  óŒ   — e Zd ZdZ	 ddd„Ze	 ddd„¦   «         Zedd„¦   «         Zedd„¦   «         Z	edd„¦   «         Z
ddd„ZdS )ÚNamespaceHelpera  A helper for constructing the namespace open and close strings for a nested set of namespaces.

    e.g. for namespace_str torch::lazy,

    prologue:
    namespace torch {
    namespace lazy {

    epilogue:
    } // namespace lazy
    } // namespace torch
    r  é   Únamespace_strr%   Úentity_nameÚ	max_levelrY   r&   rl   c                óL  — |                      d¦  «        }t          |¦  «        |k    sJ d|› d|› d�¦   «         ‚|| _        d                     d„ |D ¦   «         ¦  «        | _        d                     d„ t          |¦  «        D ¦   «         ¦  «        | _        || _        || _        d S )Nú::z"Codegen doesn't support more than z# level(s) of custom namespace. Got r¹   rG   c                ó   — g | ]}d |› d�‘Œ	S )z
namespace z {r!   ©r¯   Úns     r#   r±   z,NamespaceHelper.__init__.<locals>.<listcomp>§  s$   € Ð#PÐ#PÐ#P¸AÐ$7°Ð$7Ð$7Ð$7Ð#PÐ#PÐ#Pr"   c                ó   — g | ]}d |› �‘ŒS )z} // namespace r!   r$  s     r#   r±   z,NamespaceHelper.__init__.<locals>.<listcomp>©  s!   € ÐFÐFÐF¨Ð# Ð#Ð#ÐFÐFÐFr"   )	r.   rÃ   Úcpp_namespace_rˆ   Ú	prologue_ÚreversedÚ	epilogue_Únamespaces_Úentity_name_)ro   r  r  r   Úcpp_namespacess        r#   rp   zNamespaceHelper.__init__ž  s¿   € ð '×,Ò,¨TÑ2Ô2ˆå�ÑÔ 9Ò,Ð,Ð,Øn°	ÐnÐnÐ^kÐnÐnÐnñ -Ô,Ð,à+ˆÔØŸšÐ#PÐ#PÀÐ#PÑ#PÔ#PÑQÔQˆŒØŸšØFÐF­X°nÑ-EÔ-EÐFÑFÔFñ
ô 
ˆŒð *ˆÔØ'ˆÔÐÐr"   Únamespaced_entityc                óš   — |                       d¦  «        }|d         }d                     |dd…         ¦  «        }t          |||¬¦  «        S )zq
        Generate helper from nested namespaces as long as class/function name. E.g.: "torch::lazy::add"
        r"  rº   N)r  r  r   )r.   rˆ   r  )r.  r   Únamesr  r  s        r#   Úfrom_namespaced_entityz&NamespaceHelper.from_namespaced_entity®  sW   € ð "×'Ò'¨Ñ-Ô-ˆØ˜B”iˆØŸ	š	 %¨¨¨¤*Ñ-Ô-ˆÝØ'°[ÈIð
ñ 
ô 
ð 	
r"   c                ó   — | j         S r<   )r(  rÚ   s    r#   ÚprologuezNamespaceHelper.prologue¼  ó
   € àŒ~Ðr"   c                ó   — | j         S r<   )r*  rÚ   s    r#   ÚepiloguezNamespaceHelper.epilogueÀ  r4  r"   c                ó   — | j         S r<   )r,  rÚ   s    r#   r  zNamespaceHelper.entity_nameÄ  s   € àÔ Ð r"   Údefaultc                ó"   — | j         r| j         n|S )z£
        Return the namespace string from joining all the namespaces by "::" (hence no leading "::").
        Return default if namespace string is empty.
        )r'  )ro   r8  s     r#   Úget_cpp_namespacez!NamespaceHelper.get_cpp_namespaceÉ  s   € ð
 '+Ô&9ÐFˆtÔ"Ð"¸wÐFr"   N)r  r  )r  r%   r  r%   r   rY   r&   rl   )r  )r.  r%   r   rY   r&   r  rÜ   )r  )r8  r%   r&   r%   )r   r   r   Ú__doc__rp   Ústaticmethodr1  Úpropertyr3  r6  r  r:  r!   r"   r#   r  r  �  sæ   € € € € € ðð ð KLð(ð (ð (ð (ð (ð  à12ð
ð 
ð 
ð 
ñ „\ð
ð ðð ð ñ „Xðð ðð ð ñ „Xðð ð!ð !ð !ñ „Xð!ðGð Gð Gð Gð Gð Gð Gr"   r  c                  ó|   — e Zd ZU ded<   ddd„Zdd„Zdd„Zd d„Zd!d„Zd"d„Z	e
d#d„¦   «         Zd$d„Zd%d„Zd&d„ZdS )'Ú
OrderedSetzdict[T, Literal[None]]ÚstorageNÚiterableúIterable[T] | Noner&   rl   c                óZ   — |€	i | _         d S t                               |¦  «        | _         d S r<   )r@  rŠ   Úfromkeys)ro   rA  s     r#   rp   zOrderedSet.__init__Ô  s*   € ØÐØˆDŒLˆLˆLåŸ=š=¨Ñ2Ô2ˆDŒLˆLˆLr"   rÉ   r4   rh   c                ó   — || j         v S r<   ©r@  ©ro   rÉ   s     r#   Ú__contains__zOrderedSet.__contains__Ú  s   € Ø�t”|Ð#Ð#r"   úIterator[T]c                óN   — t          | j                             ¦   «         ¦  «        S r<   )Úiterr@  ÚkeysrÚ   s    r#   Ú__iter__zOrderedSet.__iter__Ý  s   € Ý�D”L×%Ò%Ñ'Ô'Ñ(Ô(Ð(r"   r¤   úOrderedSet[T]c                óD   — | j                              |j         ¦  «         d S r<   )r@  r¿   )ro   r¤   s     r#   r¿   zOrderedSet.updateà  s    € ØŒ×Ò˜EœMÑ*Ô*Ð*Ð*Ð*r"   c                ó   — d | j         |<   d S r<   rF  rG  s     r#   rŸ   zOrderedSet.addã  s   € Ø!ˆŒ�TÑÐÐr"   c                ó^   — t          ¦   «         }| j                             ¦   «         |_        |S r<   )r?  r@  rÁ   )ro   Úrets     r#   rÁ   zOrderedSet.copyæ  s%   € Ý'™\œ\ˆØ”l×'Ò'Ñ)Ô)ˆŒØˆ
r"   rL   c                 ó~   — | d                               ¦   «         }| dd …         D ]}|                     |¦  «         Œ|S )Nr   rH   )rÁ   r¿   )rL   rR  rX   s      r#   ÚunionzOrderedSet.unionë  s@   € à�1Œg�lŠl‰nŒnˆØ�a�b�b”ð 	ð 	ˆAØ�JŠJ�q‰MŒMˆMˆMØˆ
r"   Úotherc                ó8   — t                                | |¦  «        S r<   )r?  rT  ©ro   rU  s     r#   Ú__or__zOrderedSet.__or__ò  s   € Ý×Ò  eÑ,Ô,Ð,r"   r   c                ó0   — |                       |¦  «         | S r<   )r¿   rW  s     r#   Ú__ior__zOrderedSet.__ior__õ  s   € Ø�Š�EÑÔÐØˆr"   Úobjectc                ó    — t          |t          ¦  «        r| j        |j        k    S t          | j                             ¦   «         ¦  «        |k    S r<   )r‰   r?  r@  rn   rL  rW  s     r#   Ú__eq__zOrderedSet.__eq__ù  sD   € Ý�e�ZÑ(Ô(ð 	5Ø”< 5¤=Ò0Ð0å�t”|×(Ò(Ñ*Ô*Ñ+Ô+¨uÒ4Ð4r"   r<   )rA  rB  r&   rl   )rÉ   r4   r&   rh   )r&   rI  )r¤   rN  r&   rl   )rÉ   r4   r&   rl   )r&   rN  )rL   rN  r&   rN  )rU  rN  r&   rN  )rU  rN  r&   r   )rU  r[  r&   rh   )r   r   r   rÝ   rp   rH  rM  r¿   rŸ   rÁ   r<  rT  rX  rZ  r]  r!   r"   r#   r?  r?  Ñ  sû   € € € € € € Ø#Ð#Ð#Ñ#ð3ð 3ð 3ð 3ð 3ð$ð $ð $ð $ð)ð )ð )ð )ð+ð +ð +ð +ð"ð "ð "ð "ðð ð ð ð
 ðð ð ñ „\ðð-ð -ð -ð -ðð ð ð ð5ð 5ð 5ð 5ð 5ð 5r"   r?  )r$   r%   r&   r'   )r6   r7   r8   r9   r&   r:   )r6   r@   r8   r9   r&   r:   )rC   rD   r&   rE   )r=   r   r&   r   )rT   r%   r&   r   )rX   r%   r&   rY   r<   )rÞ   r   rf   rß   r&   re   )r   rä   )rå   r	   rK   rY   ræ   rY   r&   r%   )r   )
rå   r	   rK   rY   ræ   rY   rï   rY   r&   r%   )
r   r  rK   rY   ræ   rY   rï   rY   r&   r%   )
r   r  rK   rY   ræ   rY   rï   rY   r&   r%   )rÿ   r  rK   rY   ræ   rY   rï   rY   r  r%   r  r%   r&   r%   )=Ú
__future__r   Ú
contextlibÚ	functoolsr^   ry   r*   rŒ   rJ   Údataclassesr   r   Úenumr   r   Úpathlibr   Útypingr	   r
   r   r   r   r   r   Útyping_extensionsr   Útorchgen.code_templater   Úargparser   Úcollections.abcr   r   r   rŽ   r�   Úparentr‹   r   ÚIDENT_REGEXr3   r4   r5   r?   rB   ÚcontextmanagerrO   rS   ÚcacherW   rc   re   rã   rî   rí   rù   rû   r	  r  r?  r!   r"   r#   ú<module>rm     s’  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø 	€	€	€	Ø 
€
€
€
Ø €€€Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø Ð Ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TØ "Ð "Ð "Ð "Ð "Ð "à /Ð /Ð /Ð /Ð /Ð /ð ð =Ø"Ð"Ð"Ð"Ð"Ð"Ø<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<ð ˆD�‰NŒN×#Ò#Ñ%Ô%Ô,Ô3€	ð
$ð 
$ð 
$ð 
$ð 
$ˆTñ 
$ô 
$ð 
$ð  €ð$ð $ð $ð $ð €GˆC�L„L€Ø€GˆC�L„L€ðð ð ð ðð ð ð ð Ôð	ð 	ð 	ñ Ôð	ð@ð @ð @ð @ð „ð/ð /ð /ñ „ð/ð
4ð 4ð 4ð 4ðbMð bMð bMð bMð bMñ bMô bMð bMðN 37ðð ð ð ð ð Øð5ð 5ð 5ð 5ð 5ð$ ð	 #ð  #ð  #ð  #ð  #ðFDð Dð Dð Dð(Fð Fð Fð Fð-ð -ð -ð -ð&>Gð >Gð >Gð >Gð >Gñ >Gô >Gð >GðB,5ð ,5ð ,5ð ,5ð ,5�˜”ñ ,5ô ,5ð ,5ð ,5ð ,5r"   