
    wi              
          d dl m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     f/root/.openclaw/workspace/chatterbox_venv_py311/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>1   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>G   s    #6#6#6qCFF#6#6#6r   )group
isinstancelistr-   lenr	   )	r0   r#   keycomma_beforecomma_afterr   middler/   r"   s	          r   replacez(CodeTemplate.substitute.<locals>.replace4   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	   )r0   r1   r   r	   )substitutionsubr
   )r   r   r   rB   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	MULTILINErC   __annotations__staticmethodr   r   rE   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   rJ   typingr   collections.abcr   r   r   rF   cprintrE   r!   r   r   <module>rb      s    " " " " " " 				              2111111119< 9< 9< 9< 9< 9< 9< 9<x z			 	A 
E	) 	 	
 	
	 	 	 	 	 r   