ó
    "EñiÁ  ã                  óÄ   • S SK Jr  S SKrS SKrS SKrS SKJr  \(       a  S SKJrJ	r	   " S S5      r
\S:X  a)  \
" S5      r\" \R                  S	S
/SS/SSSS// S95        gg)é    )ÚannotationsN)ÚTYPE_CHECKING)ÚMappingÚSequencec                  ó¤   • \ rS rSr% Sr\R                  " \\R                  5      rS\	S'   S\	S'   \
SS j5       rSSS jjr S     SS	 jjrS
rg)ÚCodeTemplateé   z-(^[^\n\S]*)?\$([^\d\W]\w*|\{,?[^\d\W]\w*\,?})ÚstrÚpatternÚfilenamec                ó‚   • [        U 5       n[        UR                  5       U 5      sS S S 5        $ ! , (       d  f       g = f©N)Úopenr   Úread)r   Úfs     ÚS/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torchgen/code_template.pyÚ	from_fileÚCodeTemplate.from_file   s%   € ä�(Œ^˜qÜ §¡£¨(Ó3÷ �^�^ús   Œ0°
>c                ó   • Xl         X l        g r   )r   r   )Úselfr   r   s      r   Ú__init__ÚCodeTemplate.__init__#   s   € ØŒØ �ó    Nc                óŒ   ^^^^• Tc  0 mSUU4S jjmSS jmSUU4S jjnU R                   R                  X0R                  5      $ )Nc                ó@   >• Tc  [        S5      eU T;   a  TU    $ TU    $ )Nzenv must be non-None)ÚAssertionError)ÚvÚenvÚkwargss    €€r   ÚlookupÚ'CodeTemplate.substitute.<locals>.lookup-   s-   ø€ Ø‰{Ü$Ð%;Ó<Ð<Ø ! V£�6˜!‘9Ð7°°Q±Ð7r   c                ó  • SR                  [        R                  R                  S U 5       5      5      n[        R
                  " X S9nSR                  [        [        R                  UR                  5       5      5      R                  5       $ )NÚ
c              3  óT   #   • U  H  n[        U5      R                  5       v •  M      g 7fr   )r
   Ú
splitlines)Ú.0Úes     r   Ú	<genexpr>Ú@CodeTemplate.substitute.<locals>.indent_lines.<locals>.<genexpr>4   s    é € Ð-MÊ1Àa¬c°!«f×.?Ñ.?×.AÐ.AÊ1ùs   ‚&()Úprefix)
ÚjoinÚ	itertoolsÚchainÚfrom_iterableÚtextwrapÚindentÚmapr
   Úrstripr%   )r0   r   Úcontents      r   Úindent_linesÚ-CodeTemplate.substitute.<locals>.indent_lines2   sd   € Ø—i‘iÜ—‘×-Ñ-Ñ-MÉ1Ó-MÓMóˆGô —o’o gÑ=ˆGà—9‘9œS¤§¡¨W×-?Ñ-?Ó-AÓBÓC×JÑJÓLÐLr   c                óÒ  >• U R                  S5      nU R                  S5      nSnSnUS   S:X  a%  USS nUS   S:X  a  SnUSS  nUS   S:X  a  SnUS S nT	" U5      nUb   [        U[        5      (       d  U/nT" X5      $ [        U[        5      (       aC  SR                  U Vs/ s H  n[	        U5      PM     sn5      n[        U5      S:X  a  U$ X7-   U-   $ [	        U5      $ s  snf )	Né   é   Ú r   Ú{éÿÿÿÿÚ,z, )ÚgroupÚ
isinstanceÚlistr+   r
   Úlen)
Úmatchr0   ÚkeyÚcomma_beforeÚcomma_afterr   ÚxÚmiddler4   r    s
           €€r   ÚreplaceÚ(CodeTemplate.substitute.<locals>.replace:   sû   ø€ Ø—[‘[ “^ˆFØ—+‘+˜a“.ˆCØˆLØˆKØ�1‰v˜‹}Ø˜!˜B�i�Ø�q‘6˜S“=Ø#'�LØ˜a˜b˜'�CØ�r‘7˜c“>Ø"&�KØ˜c˜r˜(�CÙ�s“ˆAØÑ!Ü! !¤T×*Ñ*Ø˜�AÙ# FÓ.Ð.Ü˜Aœt×$Ñ$ØŸ™±AÓ#6²A¨q¤C¨¦F±AÑ#6Ó7�Ü�q“6˜Q“;Ø!�MØ#Ñ,¨{Ñ:Ð:ä˜1“v�ùò $7s   Â%C$)r   r
   ÚreturnÚobject)r0   r
   r   zSequence[object]rI   r
   )rA   zre.Match[str]rI   r
   )ÚsubstitutionÚsubr   )r   r   r   rG   r4   r    s    `` @@r   Ú
substituteÚCodeTemplate.substitute'   sF   û€ ð ‰;ØˆC÷	8ð 	8ô
	M÷	ð 	ð4 × Ñ ×$Ñ$ W¯l©lÓ;Ð;r   )r   r   )r   r
   rI   r   )r9   )r   r
   r   r
   rI   ÚNoner   )r   zMapping[str, object] | Noner   rJ   rI   r
   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Úsubstitution_strÚreÚcompileÚ	MULTILINErK   Ú__annotations__Ústaticmethodr   r   rM   Ú__static_attributes__© r   r   r   r      se   ‡ ØGÐØ—:’:Ð.°·±Ó=€LàƒLØƒMàó4ó ð4ö!ð
 26ð-<Ø.ð-<ØAGð-<à	÷-<ð -<r   r   Ú__main__zŽ    int foo($args) {

        $bar
            $bar
        $a+$b
    }
    int commatest(int a${,stuff})
    int notest(int a${,empty,})
    Úhié   Úwhaté   é   é   z	things...Úothers)ÚargsÚbarÚaÚbÚstuffÚempty)Ú
__future__r   r,   rU   r/   Útypingr   Úcollections.abcr   r   r   rP   ÚcÚprintrM   r[   r   r   Ú<module>ro      s   ðÝ "ã Û 	Û Ý  ö ß1÷=<ñ =<ð@ ˆzÓÙð		ó	€Añ 
Ø	�‰Ø˜�Ø˜�ØØØ Ð)Øð 	ð 	
õ	ð r   