§
    ¥óÉj˜H  ã                  ó¨  — 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mZ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'        Z(e(j'        Z) G d„ de¦  «        Z*dZ+dHd„Z, ed¦  «        Z- ed¦  «        Z.dId„Z/dJd„Z0ej1        dKd „¦   «         Z2er ed!¦  «        dLd$„¦   «         Zej3        dMd'„¦   «         Z4dNd*„Z5 G d+„ d,¦  «        Z6	 dOdPd1„Z7	 	 dQdRd7„Z8	 dSdTd9„Z9dUd<„Z:dVd>„Z;dWdC„Z< G dD„ dE¦  «        Z= G dF„ dGee-         ¦  «        Z>dS )Xé    )ÚannotationsN)ÚfieldsÚis_dataclass)ÚautoÚEnum)ÚPath)ÚAnyÚCallableÚGenericÚLiteralÚNoReturnÚTYPE_CHECKINGÚTypeVar)Úassert_neverÚ
deprecatedÚ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© ó    ús/home/lighthouse/badge-speaker-benchmark/.benchmark-venv-community/lib64/python3.11/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_paramsr5   7   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#   )r8   r:   ÚxÚrs       r%   ÚmapMayberA   G   s;   è è € Øð ð ˆØˆD�‰GŒGˆØˆ=ØˆGˆGˆGøðð r$   úCallable[[T], Sequence[S]]c              #  ó6   K  — |D ]} | |¦  «        E d {V —† Œd S r>   r#   )r8   r:   r?   s      r%   Ú	concatMaprD   O   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)rE   ÚeÚmsgs      r%   ÚcontextrQ   W   s“   è è € ðØˆˆˆˆˆøÝð ð ð àˆf‰hŒhˆÝŒo˜c 4Ñ(Ô(ˆØ'(¤vÐ6�”˜”Ð#Ð#˜cÐ#Ð#Ð#°3ˆØ�˜!œ&   œ*Ñ$ˆŒØøøøøðøøøs   „
 Š
A,”AA'Á'A,z*Use typing_extensions.assert_never insteadr?   r   c                óJ   — t          dt          | ¦  «        j        › �¦  «        ‚)NzUnhandled type: )ÚAssertionErrorÚtyper   )r?   s    r%   r   r   h   s"   € åÐBµ°Q±´Ô0@ÐBÐBÑCÔCÐCr$   Útemplate_fnr   c                ó*   — t          j        | ¦  «        S r>   )r   Ú	from_file)rU   s    r%   Ú_read_templaterX   m   s   € åÔ! +Ñ.Ô.Ð.r$   ÚsÚintc                ó°   — t          j        |                      d¦  «        d¬¦  «                             ¦   «         }t                               |d¬¦  «        S )NÚlatin1F)ÚusedforsecurityÚlittle)Ú	byteorder)ÚhashlibÚsha1ÚencodeÚdigestrZ   Ú
from_bytes)rY   ra   s     r%   Ústring_stable_hashre   s   sD   € ÝŒ<˜Ÿš Ñ*Ô*¸EÐBÑBÔB×IÒIÑKÔK€DÝ�>Š>˜$¨(ˆ>Ñ3Ô3Ð3r$   c                  óz   — e Zd Zd'd„Zed(d
„¦   «         Zd)d„Zd*d„Zd+d„Zd,d„Z	ddœd-d"„Z
ddœd.d#„Zd/d%„Zd0d&„ZdS )1ÚFileManagerÚinstall_dirú
str | PathÚtemplate_dirÚdry_runÚboolr(   ÚNonec                óŠ   — t          |¦  «        | _        t          |¦  «        | _        t          ¦   «         | _        || _        d S r>   )r   rh   rj   ÚsetÚfilesrk   )Úselfrh   rj   rk   s       r%   Ú__init__zFileManager.__init__|   s:   € õ   Ñ,Ô,ˆÔÝ  Ñ.Ô.ˆÔÝ #¡¤ˆŒ
ØˆŒˆˆr$   úfrozenset[str]c                ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc                ó6   — h | ]}|                      ¦   «         ’ŒS r#   ©Úas_posix©Ú.0Úfiles     r%   ú	<setcomp>z(FileManager.filenames.<locals>.<setcomp>‰   s    € ÐAÐAÐA¨d˜$Ÿ-š-™/œ/ÐAÐAÐAr$   )Ú	frozensetrp   ©rq   s    r%   Ú	filenameszFileManager.filenames‡   s!   € åÐAÐA°d´jÐAÑAÔAÑBÔBÐBr$   ÚfilenameÚcontentsr'   c                óî   — t          |¦  «        }d }	 |                     d¬¦  «        }n# t          $ r Y nw xY w||k    r5|j                             dd¬¦  «         |                     |d¬¦  «         d S d S )Nzutf-8)ÚencodingT)ÚparentsÚexist_ok)r   Ú	read_textÚOSErrorÚparentÚmkdirÚ
write_text)rq   r   r€   rz   Úold_contentss        r%   Ú_write_if_changedzFileManager._write_if_changed‹   s–   € Ý�H‰~Œ~ˆØ#'ˆð	ØŸ>š>°7˜>Ñ;Ô;ˆLˆLøÝð 	ð 	ð 	ØˆDð	øøøà�|Ò#Ð#àŒK×Ò d°TÐÑ:Ô:Ð:Ø�OŠO˜H¨wˆOÑ7Ô7Ð7Ð7Ð7ð $Ð#s   “* ª
7¶7rU   Úenv_callableú"Callable[[], str | dict[str, Any]]c                ó   — t          |¦  «                             ¦   «         rJ d|› �¦   «         ‚| j        |z  } |¦   «         }t          |t          ¦  «        �rd|vrÅt
          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#          |¦  «        }|                     |¦  «        }	t'          j        dd	|	t&          j        ¬
¦  «        S t          |t,          ¦  «        r|S t/          |¦  «         d S )Nztemplate_fn must be relative: Úgenerated_commentzgen.pyÚ__main__ú@zgenerated by z from zô
                (""")\n+             # match triple quotes
                (
                    (\s*@.+\n)*     # match decorators if any
                    \s*(class|def)  # match class/function definition
                )
                z\g<1>\n\n\g<2>)Úflags)r   Úis_absoluterj   Ú
isinstanceÚdictÚTORCHGEN_ROOTÚsysÚmodulesÚ__file__ÚabsoluteÚKeyErrorÚAttributeErrorÚrelative_toÚ	REPO_ROOTrw   Ú
ValueErrorr2   rX   Ú
substituter,   ÚsubÚVERBOSEr'   r   )
rq   rU   rŒ   Útemplate_pathÚenvÚgenerator_defaultÚ	generatorÚgenerator_pathÚtemplateÚsubstitute_outs
             r%   Úsubstitute_with_templatez$FileManager.substitute_with_template˜   sê  € õ
 ˜Ñ$Ô$×0Ò0Ñ2Ô2ð 	
ð 	
Ø:¨[Ð:Ð:ñ	
ô 	
ð 	
ð Ô)¨KÑ7ˆØˆl‰nŒnˆÝ�c�4Ñ Ô ñ '	Ø"¨#Ð-Ð-Ý$1°HÑ$<Ð!ð=Ý $Ýœ 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Ø%×0Ò0°Ñ5Ô5ˆNõ ”6ðð "ØÝ”jðñ ô ð õ �c�3ÑÔð 	ØˆJÝ�SÑÔÐÐÐs$   Á(8B! Â!%C	ÃC	Ã,C: Ã:DÄDc                óH  — t          |¦  «        }|                     ¦   «         rJ d|› �¦   «         ‚| j        |z  }|| j        vsJ d|› �¦   «         ‚| j                             |¦  «         | j        s0|                      ||¬¦  «        }|                      ||¬¦  «         d S d S )Núfilename must be relative: zduplicate file write )rU   rŒ   )r   r€   )r   r“   rh   rp   Úaddrk   rª   r‹   )rq   r   rU   rŒ   rz   r©   s         r%   Úwrite_with_templatezFileManager.write_with_templateÎ   sÕ   € õ ˜‘>”>ˆØ×'Ò'Ñ)Ô)ÐSÐSÐ+SÈÐ+SÐ+SÑSÔSÐSØÔ (Ñ*ˆØ˜4œ:Ð%Ð%Ð%Ð'E¸tÐ'EÐ'EÑ%Ô%Ð%ØŒ
�Š�tÑÔÐØŒ|ð 	KØ!×:Ò:Ø'Ø)ð ;ñ ô ˆNð ×"Ò"¨D¸>Ð"ÑJÔJÐJÐJÐJð	Kð 	Kr$   c                ó4   — |                       |||¦  «         d S r>   )r®   )rq   r   rŒ   s      r%   ÚwritezFileManager.writeà   s"   € ð
 	× Ò  ¨8°\ÑBÔBÐBÐBÐBr$   N)Úbase_envÚitemsr;   Úkey_fnúCallable[[T], str]ú#Callable[[T], dict[str, list[str]]]Ú
num_shardsrZ   r±   údict[str, Any] | NoneÚsharded_keysúset[str]c          
     ó@   — |                       ||||||||¬¦  «         d S )N)r³   rŒ   r¶   r±   r¸   )Úwrite_sharded_with_template)rq   r   r²   r³   rŒ   r¶   r±   r¸   s           r%   Úwrite_shardedzFileManager.write_shardedç   sC   € ð 	×(Ò(ØØØØØ%Ø!ØØ%ð 	)ñ 		
ô 		
ð 		
ð 		
ð 		
r$   c               óH  ‡‡— t          |¦  «        }	|	                     ¦   «         rJ d|› �¦   «         ‚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         }|  	                    |	 
                    |	j        › |› �¦  «        |ˆfd„¦  «         ŒA| j                             | j        |	 
                    |	j        › d�¦  «        z  ¦  «         d S )Nr¬   Úshard_idÚ
Everythingc                ó   — g | ]	}d d|› �i‘Œ
S )r¾   r3   r#   )ry   Úis     r%   ú
<listcomp>z;FileManager.write_sharded_with_template.<locals>.<listcomp>  s0   € ð (
ð (
ð (
Ø&'ˆZ˜˜Q˜˜Ð!ð(
ð (
ð (
r$   z'sharded keys in base_env must be a listÚintoúdict[str, list[str]]Úfrom_r(   rm   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_with_template.<locals>.merge_env  sa   ø€ ØŸš™œð ð ‘��1Ø˜LÐ(Ð(Ð(Ð*GÀAÐ*GÐ*GÑ(Ô(Ð(Ø�Q��”˜1‘��‘�ðð r$   r#   c                 ó   •— ‰ S r>   r#   )Úshards   €r%   ú<lambda>z9FileManager.write_sharded_with_template.<locals>.<lambda>5  s   ø€ ˜€ r$   )rÃ   rÄ   rÅ   rÄ   r(   rm   )r   r“   ÚrangeÚupdater”   ÚlistÚcopyrk   re   r®   Ú	with_stemÚstemrp   Údiscardrh   )rq   r   rU   r²   r³   rŒ   r¶   r±   r¸   rz   Ú
everythingÚshardsÚ
all_shardsÚkeyrÉ   ÚitemÚsidr¤   r¾   rË   s           `          @r%   r»   z'FileManager.write_sharded_with_templateý   sS  øø€ õ �H‰~Œ~ˆØ×#Ò#Ñ%Ô%ÐOÐOÐ'OÀXÐ'OÐ'OÑOÔOÐOØ&0°,Ð%?ˆ
ð(
ð (
Ý+0°Ñ+<Ô+<ð(
ñ (
ô (
ˆð !�\ FÑ*ˆ
àÐØ#ð 'ð '�Ø—’˜XÑ&Ô&Ð&Ð&àð 	$ð 	$ˆCØ#ð $ð $�Ø˜%�<�<Ý% e¨C¤jµ$Ñ7Ô7ð ð Ø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 #Ñ&Ô&Ð&Ð&àð 	ð 	ˆEØ˜ZÔ(ˆHØ×$Ò$Ø—’ $¤)Ð7¨XÐ7Ð7Ñ8Ô8ØØ���ñô ð ð ð 	Œ
×Ò˜4Ô+¨d¯nªnÀÄ	Ð=UÐ=UÐ=UÑ.VÔ.VÑVÑWÔWÐWÐWÐWr$   Úvariable_namec                ó¢   — d                      d|gd„ t          | j        ¦  «        D ¦   «         ¢d‘R ¦  «        }|                      ||¦  «         dS )zSWrite a file containing the list of all outputs which are generated by this script.rI   zset(c              3  óF   K  — | ]}d |                      ¦   «         › d�V — ŒdS )z    "ú"Nrv   rx   s     r%   ú	<genexpr>z,FileManager.write_outputs.<locals>.<genexpr>B  s6   è è € ÐLÐL°Ð,˜$Ÿ-š-™/œ/Ð,Ð,Ð,ÐLÐLÐLÐLÐLÐLr$   ú)N)ÚjoinÚsortedrp   r‹   )rq   rÚ   r   Úcontents       r%   Úwrite_outputszFileManager.write_outputs;  sp   € à—)’)àØðð MÐL½ÀÄ
Ñ9KÔ9KÐLÑLÔLð	ð
 ðð ñ
ô 
ˆð 	×Ò˜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.
        )ÚosÚpathÚrelpathrj   Údirnamer™   r}   s    r%   Útemplate_dir_for_commentsz%FileManager.template_dir_for_commentsH  s+   € õ Œw�Š˜tÔ0µ"´'·/²/Å(Ñ2KÔ2KÑLÔLÐLr$   )rh   ri   rj   ri   rk   rl   r(   rm   )r(   rs   )r   ri   r€   r'   r(   rm   )rU   ri   rŒ   r�   r(   r'   )r   ri   rU   ri   rŒ   r�   r(   rm   )r   ri   rŒ   r�   r(   rm   )r   ri   r²   r;   r³   r´   rŒ   rµ   r¶   rZ   r±   r·   r¸   r¹   r(   rm   )r   ri   rU   ri   r²   r;   r³   r´   rŒ   rµ   r¶   rZ   r±   r·   r¸   r¹   r(   rm   )rÚ   r'   r   ri   r(   rm   ©r(   r'   )r   r   r   rr   Úpropertyr~   r‹   rª   r®   r°   r¼   r»   rã   ré   r#   r$   r%   rg   rg   {   s   € € € € € ð	ð 	ð 	ð 	ð ðCð Cð Cñ „XðCð
8ð 
8ð 
8ð 
8ð4ð 4ð 4ð 4ðlKð Kð Kð Kð$Cð Cð Cð Cð +/ð
ð 
ð 
ð 
ð 
ð 
ð> +/ð<Xð <Xð <Xð <Xð <Xð <Xð|2ð 2ð 2ð 2ðMð Mð Mð Mð Mð Mr$   rg   Úoptionsr   rh   ústr | Path | Nonec                ó�   — t           j                             | j        d¦  «        }|r|n| j        }t          ||| j        ¬¦  «        S )NÚ	templates)rh   rj   rk   )rå   ræ   rà   Úsource_pathrh   rg   rk   )rì   rh   rj   s      r%   Úmake_file_managerrñ   R  sO   € õ ”7—<’< Ô 3°[ÑAÔA€LØ!,ÐE�+�+°'Ô2E€KÝØØ!Ø”ðñ ô ð r$   éP   Úobjr	   rM   Úwidthc                ól   — t           j        dk    rddlm}  || ||¦  «        S t	          | ||¬¦  «        S )N)é   é
   r   )Úpformat)rM   rô   )r—   Úversion_infoÚpprintrø   Ú_pformat)ró   rM   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: rJ   c                óV   •— g | ]%}|j         ¯	|j        t          ‰|j        ¦  «        f‘Œ&S r#   )Úreprr2   Úgetattr)ry   Úfró   s     €r%   rÂ   z_pformat.<locals>.<listcomp>z  s3   ø€ ÐQÐQÐQ°aÈ!Ì&ÐQ�A”F�G C¨¬Ñ0Ô0Ð1ÐQÐQÐQr$   ú=ú z,
ú(rß   )r   rT   Ú	__class__r   Úlenr   rû   r”   r•   Ú_format_dictrÏ   ro   ÚtupleÚ_format_listr   Úappendrà   )ró   rM   rô   rý   Ú
class_nameÚfields_listÚ
fields_strr2   ÚattrÚ_curr_indentÚstr_reprÚ
indent_strÚbodys   `            r%   rû   rû   n  sƒ  ø€ õ ˜ÑÔÐQÐQÐQÅdÈ3ÁiÄiÐQÐ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  rM   rô   rý   Ú	dict_reprrÇ   rÈ   Úk_reprÚv_strs	            r%   r  r  ‘  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 )NrJ   c                óp   •— g | ]2}t          |¦  «        rt          |‰‰‰¦  «        nt          |¦  «        ‘Œ3S r#   )r   rû   r   )ry   Úlrý   rM   rô   s     €€€r%   rÂ   z _format_list.<locals>.<listcomp>¬  sN   ø€ ð ð ð àõ 4@À±?´?ÐO���F˜E ;Ñ/Ô/Ð/ÍÈQÉÌðð ð r$   )ú[ú])r  rß   )r”   rÏ   r  )r  rM   rô   rý   Ú	list_reprÚstartÚends    ```   r%   r
  r
  ¥  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'  rI   r  r+   )r  r   rà   )
r  rM   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_levelrZ   r(   rm   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 ú.rI   c                ó   — g | ]}d |› d�‘Œ	S )z
namespace z {r#   ©ry   Ú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#   r4  s     r%   rÂ   z,NamespaceHelper.__init__.<locals>.<listcomp>ã  s!   € ÐFÐFÐF¨Ð# Ð#Ð#ÐFÐFÐFr$   )	r0   r  Úcpp_namespace_rà   Ú	prologue_ÚreversedÚ	epilogue_Únamespaces_Úentity_name_)rq   r-  r.  r/  Úcpp_namespacess        r%   rr   zNamespaceHelper.__init__Õ  sÁ   € ð '×,Ò,¨TÑ2Ô2ˆÝ�>Ñ"Ô" iÒ/Ð/Ð/Øo°ÐoÐoÐ_lÐoÐoÐoñ 0Ô/Ð/ð ,ˆÔØŸšÐ#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"
        r1  éÿÿÿÿN)r-  r.  r/  )r0   rà   r+  )r>  r/  Únamesr.  r-  s        r%   Úfrom_namespaced_entityz&NamespaceHelper.from_namespaced_entityè  sW   € ð "×'Ò'¨Ñ-Ô-ˆØ˜B”iˆØŸ	š	 %¨¨¨¤*Ñ-Ô-ˆÝØ'°[ÈIð
ñ 
ô 
ð 	
r$   c                ó   — | j         S r>   )r8  r}   s    r%   ÚprologuezNamespaceHelper.prologue÷  ó
   € àŒ~Ðr$   c                ó   — | j         S r>   )r:  r}   s    r%   ÚepiloguezNamespaceHelper.epilogueû  rE  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.
        )r7  )rq   rI  s     r%   Úget_cpp_namespacez!NamespaceHelper.get_cpp_namespace  s   € ð
 '+Ô&9ÐFˆtÔ"Ð"¸wÐFr$   N)r'  r,  )r-  r'   r.  r'   r/  rZ   r(   rm   )r,  )r>  r'   r/  rZ   r(   r+  rê   )r'  )rI  r'   r(   r'   )r   r   r   Ú__doc__rr   ÚstaticmethodrB  rë   rD  rG  r.  rK  r#   r$   r%   r+  r+  Ç  sé   € € € € € ðð ð  Øð	(ð (ð (ð (ð (ð& ð ð
ð 
ð 
ð 
ñ „\ð
ð ðð ð ñ „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(   rm   c                óZ   — |€	i | _         d S t                               |¦  «        | _         d S r>   )rP  r•   Úfromkeys)rq   rQ  s     r%   rr   zOrderedSet.__init__  s*   € ØÐØˆDŒLˆLˆLåŸ=š=¨Ñ2Ô2ˆDŒLˆLˆLr$   rØ   r6   rl   c                ó   — || j         v S r>   ©rP  ©rq   rØ   s     r%   Ú__contains__zOrderedSet.__contains__  s   € Ø�t”|Ð#Ð#r$   úIterator[T]c                óN   — t          | j                             ¦   «         ¦  «        S r>   )ÚiterrP  Úkeysr}   s    r%   Ú__iter__zOrderedSet.__iter__  s   € Ý�D”L×%Ò%Ñ'Ô'Ñ(Ô(Ð(r$   r²   úOrderedSet[T]c                óD   — | j                              |j         ¦  «         d S r>   )rP  rÎ   )rq   r²   s     r%   rÎ   zOrderedSet.update  s    € ØŒ×Ò˜EœMÑ*Ô*Ð*Ð*Ð*r$   c                ó   — d | j         |<   d S r>   rV  rW  s     r%   r­   zOrderedSet.add  s   € Ø!ˆŒ�TÑÐÐr$   c                ó^   — t          ¦   «         }| j                             ¦   «         |_        |S r>   )rO  rP  rÐ   )rq   Úrets     r%   rÐ   zOrderedSet.copy!  s%   € Ý'™\œ\ˆØ”l×'Ò'Ñ)Ô)ˆŒØˆ
r$   rN   c                 ó~   — | d                               ¦   «         }| dd …         D ]}|                     |¦  «         Œ|S )Nr   rJ   )rÐ   rÎ   )rN   rb  rY   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>   )rO  rd  ©rq   re  s     r%   Ú__or__zOrderedSet.__or__-  s   € Ý×Ò  eÑ,Ô,Ð,r$   r   c                ó0   — |                       |¦  «         | S r>   )rÎ   rg  s     r%   Ú__ior__zOrderedSet.__ior__0  s   € Ø�Š�EÑÔÐØˆr$   Úobjectc                ó    — t          |t          ¦  «        r| j        |j        k    S t          | j                             ¦   «         ¦  «        |k    S r>   )r”   rO  rP  ro   r\  rg  s     r%   Ú__eq__zOrderedSet.__eq__4  sD   € Ý�e�ZÑ(Ô(ð 	5Ø”< 5¤=Ò0Ð0å�t”|×(Ò(Ñ*Ô*Ñ+Ô+¨uÒ4Ð4r$   r>   )rQ  rR  r(   rm   )rØ   r6   r(   rl   )r(   rY  )r²   r^  r(   rm   )rØ   r6   r(   rm   )r(   r^  )rN   r^  r(   r^  )re  r^  r(   r^  )re  r^  r(   r   )re  rk  r(   rl   )r   r   r   Ú__annotations__rr   rX  r]  rÎ   r­   rÐ   rM  rd  rh  rj  rm  r#   r$   r%   rO  rO    sû   € € € € € € Ø#Ð#Ð#Ñ#ð3ð 3ð 3ð 3ð 3ð$ð $ð $ð $ð)ð )ð )ð )ð+ð +ð +ð +ð"ð "ð "ð "ðð ð ð ð
 ðð ð ñ „\ðð-ð -ð -ð -ðð ð ð ð5ð 5ð 5ð 5ð 5ð 5r$   rO  )r&   r'   r(   r)   )r8   r9   r:   r;   r(   r<   )r8   rB   r:   r;   r(   r<   )rE   rF   r(   rG   )r?   r   r(   r   )rU   r'   r(   r   )rY   r'   r(   rZ   r>   )rì   r   rh   rí   r(   rg   )r   rò   )ró   r	   rM   rZ   rô   rZ   r(   r'   )r   )
ró   r	   rM   rZ   rô   rZ   rý   rZ   r(   r'   )
r  r  rM   rZ   rô   rZ   rý   rZ   r(   r'   )
r  r  rM   rZ   rô   rZ   rý   rZ   r(   r'   )r  r%  rM   rZ   rô   rZ   rý   rZ   r#  r'   r$  r'   r(   r'   )?Ú
__future__r   Ú
contextlibÚ	functoolsr`   rå   r,   r—   rL   Údataclassesr   r   Úenumr   r   Úpathlibr   Útypingr	   r
   r   r   r   r   r   Útyping_extensionsr   r   r   Útorchgen.code_templater   Úargparser   Úcollections.abcr   r   r   r™   rš   r‡   r–   rž   r   ÚIDENT_REGEXr5   r6   r7   rA   rD   ÚcontextmanagerrQ   ÚcacherX   re   rg   rñ   rü   rû   r  r
  r  r+  rO  r#   r$   r%   ú<module>r}     sÎ  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø 	€	€	€	Ø 
€
€
€
Ø €€€Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø Ð Ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TØ <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <à /Ð /Ð /Ð /Ð /Ð /ð ð =Ø"Ð"Ð"Ð"Ð"Ð"Ø<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<ð ��X‘”×'Ò'Ñ)Ô)Ô0€ØÔ €	ð
$ð 
$ð 
$ð 
$ð 
$ˆTñ 
$ô 
$ð 
$ð  €ð$ð $ð $ð $ð €GˆC�L„L€Ø€GˆC�L„L€ðð ð ð ðð ð ð ð Ôð	ð 	ð 	ñ Ôð	ð ð Dð €ZÐ<Ñ=Ô=ðDð Dð Dñ >Ô=ðDð „ð/ð /ð /ñ „ð/ð
4ð 4ð 4ð 4ðSMð SMð SMð SMð SMñ SMô SMð SMðr &*ð
ð 
ð 
ð 
ð 
ð  Øð5ð 5ð 5ð 5ð 5ð$ ð	 #ð  #ð  #ð  #ð  #ðFDð Dð Dð Dð(Fð Fð Fð Fð-ð -ð -ð -ð&BGð BGð BGð BGð BGñ BGô BGð BGðJ,5ð ,5ð ,5ð ,5ð ,5�˜”ñ ,5ô ,5ð ,5ð ,5ð ,5r$   