
    %hW              
           d dl Z d dlmZmZ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 )    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dS )CodeTemplatez-(^[^\n\S]*)?\$([^\d\W]\w*|\{,?[^\d\W]\w*\,?})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     V/var/www/html/auto_sub_bot/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 Nc                 "    || _         || _        d S 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                  S )Nvr   c                 4    J | v r|          n|          S r    )r   r   r   s    r   lookupz'CodeTemplate.substitute.<locals>.lookup$   s&    ??? !V6!99Q7r   indentc                 j     d                      fd|D                                                       S )Nr   c                 h    g | ].}t          |                                          D ]
}|z   d z   /S )
)str
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   matchc                    |                      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>@   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>.replace-   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#   objectr   r   substitutionsubr	   )r   r   r   r=   r+   r   s    `` @@r   
substitutezCodeTemplate.substitute   s     ;C	8c 	8f 	8 	8 	8 	8 	8 	8 	8	 	&)9 	c 	 	 	 	
	5: 	# 	 	 	 	 	 	 	4  $$Wdl;;;r   )r   r   )__name__
__module____qualname__substitution_strrecompile	MULTILINEr?   r#   __annotations__staticmethodr   r   r   r   r>   rA   r   r   r   r   r      s         G2:.==LLLLMMM4C 4N 4 4 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)rF   typingr   r   r   r   r   rB   cprintrA   r   r   r   <module>r\      s    				 5 5 5 5 5 5 5 5 5 5 5 59< 9< 9< 9< 9< 9< 9< 9<x z			 	A 
E	) 	 	
 	
	 	 	 	 	 r   