
    rh              
          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(  r, e
d      Z eej                  d	d
gddgddddgg              yy)    )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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/ai-insurance-compliance-backend/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                  t        j                  j                  d |D                    }t	        j
                  ||       }dj                  t        t        j                  |j                                     j                         S )N
c              3  N   K   | ]  }t        |      j                           y wr   )r	   
splitlines).0es     r   	<genexpr>z@CodeTemplate.substitute.<locals>.indent_lines.<locals>.<genexpr>3   s     -Mac!f.?.?.A-Ms   #%)prefix)
join	itertoolschainfrom_iterabletextwrapindentmapr	   rstripr!   )r+   r   contents      r   indent_linesz-CodeTemplate.substitute.<locals>.indent_lines1   sf    ii---M1-MMG oogf=G99SW-?-?-ABCJJLLr   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   {,z, )group
isinstancelistr&   r	   len)
matchr+   keycomma_beforecomma_afterr   xmiddler/   r   s
           r   replacez(CodeTemplate.substitute.<locals>.replace9   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]rB   r	   )r;   zre.Match[str]rB   r	   )substitutionsubr
   )r   r   r   rA   r/   r   s    `` @@r   
substitutezCodeTemplate.substitute'   s>     ;C	8	M	4   $$Wdll;;r   )r   r	   rB   r   )r3   )r
   r	   r   r	   rB   Noner   )r   zMapping[str, object] | Noner   rC   rB   r	   )__name__
__module____qualname__substitution_strrecompile	MULTILINErD   __annotations__staticmethodr   r   rF   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   r'   rL   r*   typingr   collections.abcr   r   r   rH   cprintrF   r   r   r   <module>rd      s    "  	    1<< <<~ z			A 
	) 	 	
	 r   