
    Yh              
          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    r7 e
d          Z ee                    d	d
gddgddddgg                      dS dS )    )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d
S )CodeTemplatez-(^[^\n\S]*)?\$([^\d\W]\w*|\{,?[^\d\W]\w*\,?})strpatternfilenamereturnc                    t          |           5 }t          |                                |           cd d d            S # 1 swxY w Y   d S N)openr   read)r   fs     h/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/python3.11/site-packages/torchgen/code_template.py	from_filezCodeTemplate.from_file   s    (^^ 	4q(33	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s   "?AA Nonec                "    || _         || _        d S r   )r
   r   )selfr
   r   s      r   __init__zCodeTemplate.__init__#   s         NenvMapping[str, object] | Nonekwargsobjectc                v    i dfddddfd}| j                             || j                  S )Nvr	   r   r   c                4    J | v r|          n|          S r    )r   r   r   s    r   lookupz'CodeTemplate.substitute.<locals>.lookup-   s&    ??? !V6!99Q7r   indentSequence[object]c                H   d                     t          j                            d |D                                 }t	          j        ||           }d                     t          t          j        |	                                                                                    S )N
c              3  X   K   | ]%}t          |                                          V  &d S r   )r	   
splitlines).0es     r   	<genexpr>z@CodeTemplate.substitute.<locals>.indent_lines.<locals>.<genexpr>3   s4      -M-Mac!ff.?.?.A.A-M-M-M-M-M-Mr   )prefix)
join	itertoolschainfrom_iterabletextwrapr#   mapr	   rstripr(   )r#   r   contents      r   indent_linesz-CodeTemplate.substitute.<locals>.indent_lines1   s    ii---M-M1-M-M-MMM G ogf===G99SW-?-?-A-ABBCCJJLLLr   matchre.Match[str]c                   |                      d          }|                      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                    d	 |D                       }t	          |          dk    r|S ||z   |z   S t          |          S )
N      r   r   {,z, c                ,    g | ]}t          |          S r!   )r	   )r)   xs     r   
<listcomp>z<CodeTemplate.substitute.<locals>.replace.<locals>.<listcomp>L   s    #6#6#6qCFF#6#6#6r   )group
isinstancelistr-   lenr	   )	r6   r#   keycomma_beforecomma_afterr   middler5   r"   s	          r   replacez(CodeTemplate.substitute.<locals>.replace9   s"   [[^^F++a..CLK1v}}!B$iq6S==#'Labb'Cr7c>>"&Kcrc(CsA!!!T** A#|FA...At$$ #6#6A#6#6#677q66Q;;!M#f,{::1vvr   )r   r	   r   r   )r#   r	   r   r$   r   r	   )r6   r7   r   r	   )substitutionsubr
   )r   r   r   rI   r5   r"   s    `` @@r   
substitutezCodeTemplate.substitute'   s     ;C	8 	8 	8 	8 	8 	8 	8	M 	M 	M 	M	 	 	 	 	 	 	4  $$Wdl;;;r   )r   r	   r   r   )r   )r
   r	   r   r	   r   r   r   )r   r   r   r   r   r	   )__name__
__module____qualname__substitution_strrecompile	MULTILINErJ   __annotations__staticmethodr   r   rL   r!   r   r   r   r      s         G2:.==LLLLMMM4 4 4 \4! ! ! ! !
 26,< ,< ,< ,< ,< ,< ,<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.   rQ   r1   typingr   collections.abcr   r   r   rM   cprintrL   r!   r   r   <module>ri      s   " " " " " "     				               211111111<< << << << << << << <<~ z			 	A 
E	) 	 	
 	
	 	 	 	 	 r   