
    Χgi              
          d dl mZ d dlZ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)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     R/var/www/html/ai-engine/env/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                j     d                      fd|D                                                       S )Nr   c                h    g | ].}t          |                                          D ]
}|z   d z   /S )
)r   
splitlines).0elr"   s      r   
<listcomp>zACodeTemplate.substitute.<locals>.indent_lines.<locals>.<listcomp>-   sA    KKKqs1vv7H7H7J7JKK!!d"KKKKr   )joinrstrip)r"   r   s   ` r   indent_linesz-CodeTemplate.substitute.<locals>.indent_lines+   s9    77KKKKAKKK fhhr   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   r+   z<CodeTemplate.substitute.<locals>.replace.<locals>.<listcomp>C   s    #6#6#6qCFF#6#6#6r   )group
isinstancelistr,   lenr   )	r/   r"   keycomma_beforecomma_afterr   middler.   r!   s	          r   replacez(CodeTemplate.substitute.<locals>.replace0   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   )r/   r0   r   r   )substitutionsubr	   )r   r   r   rA   r.   r!   s    `` @@r   
substitutezCodeTemplate.substitute!   s     ;C	8 	8 	8 	8 	8 	8 	8	 	 	 	
	 	 	 	 	 	 	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	MULTILINErB   __annotations__staticmethodr   r   rD   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   rI   typingr   r   r   rE   cprintrD   r    r   r   <module>r`      s    " " " " " " 				 $ $ $ $ $ $ $ $9< 9< 9< 9< 9< 9< 9< 9<x z			 	A 
E	) 	 	
 	
	 	 	 	 	 r   