
    Og              
          d dl m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     ]/var/www/html/suriana-translation/venv/lib/python3.12/site-packages/torchgen/code_template.py	from_filezCodeTemplate.from_file   s0    (^ 	4q(3	4 	4 	4s   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                  |D cg c](  }t        |      j                         D ]
  }| |z   dz    * c}}      j                         S c c}}w )N 
)joinr	   
splitlinesrstrip)indentr   els       r   indent_linesz-CodeTemplate.substitute.<locals>.indent_lines/   sN    77,-Kqs1v7H7H7JK!!d"K"KfhKs   -A
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   r   {,z, )group
isinstancelistr!   r	   len)
matchr$   keycomma_beforecomma_afterr   xmiddler'   r   s
           r   replacez(CodeTemplate.substitute.<locals>.replace4   s    [[^F++a.CLK1v}!Biq6S=#'Lab'Cr7c>"&Kcr(CsA!!!T*A#FA..At$A#6qCF#67q6Q;!M#f,{::1v $7s   C)r   r	   returnobject)r$   r	   r   zSequence[object]r9   r	   )r2   zre.Match[str]r9   r	   )substitutionsubr
   )r   r   r   r8   r'   r   s    `` @@r   
substitutezCodeTemplate.substitute%   s=     ;C	8	
	4   $$Wdll;;r   )r   r	   r9   r   )r   )r
   r	   r   r	   r9   Noner   )r   zMapping[str, object] | Noner   r:   r9   r	   )__name__
__module____qualname__substitution_strrecompile	MULTILINEr;   __annotations__staticmethodr   r   r=   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   rC   typingr   collections.abcr   r   r   r?   cprintr=   r   r   r   <module>r[      sy    " 	   19< 9<x z			A 
	) 	 	
	 r   