
    '}hW              
           d dl Z d dlmZmZ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)    N)MappingMatchOptionalSequencec                       e Zd ZU dZ ej
                  eej                        Zee	d<   ee	d<   e
dedd fd       ZddededdfdZ	 ddeeeef      d	edefd
Zy)CodeTemplatez-(^[^\n\S]*)?\$([^\d\W]\w*|\{,?[^\d\W]\w*\,?})patternfilenamereturnc                 x    t        |       5 }t        |j                         |       cd d d        S # 1 sw Y   y xY wN)openr   read)r
   fs     U/var/www/html/test/engine/venv/lib/python3.12/site-packages/torchgen/code_template.py	from_filezCodeTemplate.from_file   s0    (^ 	4q(3	4 	4 	4s   09Nc                      || _         || _        y r   )r	   r
   )selfr	   r
   s      r   __init__zCodeTemplate.__init__   s         envkwargsc                     i dt         dt        ffddt         dt        t           dt         fddt        t            dt         ffd}| j                  j                  || j                        S )Nvr   c                 (    J | v r|    S |    S r    )r   r   r   s    r   lookupz'CodeTemplate.substitute.<locals>.lookup$   s&    ?"? !V6!97Q7r   indentc           	          dj                  |D cg c](  }t        |      j                         D ]
  }| |z   dz    * c}}      j                         S c c}}w )N 
)joinstr
splitlinesrstrip)r   r   els       r   indent_linesz-CodeTemplate.substitute.<locals>.indent_lines(   sN    77,-Kqs1v7H7H7JK!!d"K"KfhKs   -A
matchc                    | 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)
r)   r   keycomma_beforecomma_afterr   xmiddler(   r   s
           r   replacez(CodeTemplate.substitute.<locals>.replace-   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#   objectr   r   substitutionsubr	   )r   r   r   r9   r(   r   s    `` @@r   
substitutezCodeTemplate.substitute   sw     ;C	8c 	8f 	8	 	&)9 	c 	
	5: 	# 	4   $$Wdll;;r   )r    r   )__name__
__module____qualname__substitution_strrecompile	MULTILINEr;   r#   __annotations__staticmethodr   r   r   r   r:   r=   r   r   r   r   r      s    G2::.=LLM4C 4N 4 4! !s !D !
 59)<GCK01)<DJ)<	)<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)rB   typingr   r   r   r   r   r>   cprintr=   r   r   r   <module>rX      sq    	 5 59< 9<x z			A 
	) 	 	
	 r   