Ë
    úÍ:j‹  ã            
      ó¾   — d dl mZ d dlZd dlZd dlZd dlmZ erd dlmZm	Z	  G d„ d«      Z
edk(  r, e
d«      Z eej                  d	d
gddgddddgg ¬«      «       yy)é    )ÚannotationsN)ÚTYPE_CHECKING)ÚMappingÚSequencec                  ó’   — e Zd ZU dZ ej
                  eej                  «      Zded<   ded<   e	d	d„«       Z
d
dd„Z	 d	 	 	 	 	 dd„Zy)ÚCodeTemplatez-(^[^\n\S]*)?\$([^\d\W]\w*|\{,?[^\d\W]\w*\,?})ÚstrÚpatternÚfilenamec                óx   — t        | «      5 }t        |j                  «       | «      cd d d «       S # 1 sw Y   y xY w©N)Úopenr   Úread)r   Úfs     úk/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/torchgen/code_template.pyÚ	from_filezCodeTemplate.from_file   s0   € ä�(‹^ð 	4˜qÜ §¡£¨(Ó3÷	4÷ 	4ò 	4ús   Œ0°9c                ó    — || _         || _        y r   )r
   r   )Úselfr
   r   s      r   Ú__init__zCodeTemplate.__init__#   s   € ØˆŒØ ˆ�ó    Nc                ó‚   ‡‡‡‡— ‰€i Šdˆˆfd„Šdd„Šdˆˆfd„}| j                   j                  || j                  «      S )Nc                ó(   •— ‰€J ‚| ‰v r‰|    S ‰|    S r   © )ÚvÚenvÚkwargss    €€r   Úlookupz'CodeTemplate.substitute.<locals>.lookup-   s&   ø€ Ø�?Ð"�?Ø ! V¡�6˜!‘9Ð7°°Q±Ð7r   c                ó$  — dj                  t        j                  j                  d„ |D «       «      «      }t	        j
                  || ¬«      }dj                  t        t        j                  |j                  «       «      «      j                  «       S )Nú
c              3  óN   K  — | ]  }t        |«      j                  «       –— Œ y ­wr   )r	   Ú
splitlines)Ú.0Úes     r   ú	<genexpr>z@CodeTemplate.substitute.<locals>.indent_lines.<locals>.<genexpr>3   s   è ø€ Ò-MÀa¬c°!«f×.?Ñ.?×.AÑ-Mùs   ‚#%)Úprefix)
ÚjoinÚ	itertoolsÚchainÚfrom_iterableÚtextwrapÚindentÚmapr	   Úrstripr!   )r+   r   Úcontents      r   Úindent_linesz-CodeTemplate.substitute.<locals>.indent_lines1   sf   € Ø—i‘iÜ—‘×-Ñ-Ñ-MÈ1Ô-MÓMóˆGô —o‘o g°fÔ=ˆGà—9‘9œS¤§¡¨W×-?Ñ-?Ó-AÓBÓC×JÑJÓLÐLr   c                ó²  •— | j                  d«      }| j                  d«      }d}d}|d   dk(  r#|dd }|d   dk(  rd}|dd  }|d   dk(  rd}|d d } ‰	|«      }|�t        |t        «      s|g} ‰||«      S t        |t        «      r@dj                  |D �cg c]  }t	        |«      ‘Œ c}«      }t        |«      dk(  r|S ||z   |z   S t	        |«      S c c}w )	Né   é   Ú r   ú{éÿÿÿÿú,z, )ÚgroupÚ
isinstanceÚlistr&   r	   Úlen)
Úmatchr+   ÚkeyÚcomma_beforeÚcomma_afterr   ÚxÚmiddler/   r   s
           €€r   Úreplacez(CodeTemplate.substitute.<locals>.replace9   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Ó.Ð.Ü˜AœtÔ$ØŸ™°AÖ#6¨q¤C¨¥FÒ#6Ó7�Ü�q“6˜Q’;Ø!�MØ# fÑ,¨{Ñ:Ð:ä˜1“v�ùò $7s   ÂC)r   r	   ÚreturnÚobject)r+   r	   r   zSequence[object]rB   r	   )r;   zre.Match[str]rB   r	   )ÚsubstitutionÚsubr
   )r   r   r   rA   r/   r   s    `` @@r   Ú
substitutezCodeTemplate.substitute'   s>   û€ ð ˆ;ØˆCö	8ó	Mö	ð4 × Ñ ×$Ñ$ W¨d¯l©lÓ;Ð;r   )r   r	   rB   r   )r3   )r
   r	   r   r	   rB   ÚNoner   )r   zMapping[str, object] | Noner   rC   rB   r	   )Ú__name__Ú
__module__Ú__qualname__Úsubstitution_strÚreÚcompileÚ	MULTILINErD   Ú__annotations__Ústaticmethodr   r   rF   r   r   r   r   r      sb   … ØGÐØ�2—:‘:Ð.°·±Ó=€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'   rL   r*   Útypingr   Úcollections.abcr   r   r   rH   ÚcÚprintrF   r   r   r   ú<module>rd      s   ðÝ "ã Û 	Û Ý  ñ ß1÷<<ñ <<ð~ ˆzÒÙð		ó	€Añ 
Ø	�‰Ø˜�Ø˜�ØØØ Ð)Øð 	ó 	
õ	ð r   