
    sgi              
          d dl mZ d dlZ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)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     I/var/www/html/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>.replace0   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]r8   r   )r1   zre.Match[str]r8   r   )substitutionsubr	   )r   r   r   r7   r&   r   s    `` @@r   
substitutezCodeTemplate.substitute!   s=     ;C	8	
	4   $$Wdll;;r   )r
   r   r8   r   )r   )r	   r   r
   r   r8   Noner   )r   zMapping[str, object] | Noner   r9   r8   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   rB   typingr   r   r   r>   cprintr<   r   r   r   <module>rY      sq    " 	 $9< 9<x z			A 
	) 	 	
	 r   