§
    Ì²Åj  ã            
      óÎ   — 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     úGC:\Projects\Historical\venv\Lib\site-packages\torchgen/code_template.pyÚ	from_filezCodeTemplate.from_file   s„   € å�(‰^Œ^ð 	4˜qÝ §¢¡¤¨(Ñ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˜!”9�9°°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ÐK qµs¸1±v´v×7HÒ7HÑ7JÔ7JÐKÐK°!�˜!‘˜dÑ"ÐKÐKÐKÐKr   )ÚjoinÚrstrip)r#   r   s   ` r   Úindent_linesz-CodeTemplate.substitute.<locals>.indent_lines/   s9   ø€ Ø—7’7ØKÐKÐKÐK¨AÐKÑKÔKñô çŠf‰hŒhð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Ð#6¨q¥C¨¡F¤FÐ#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Ø�1Œv˜Š}ˆ}Ø˜!˜B˜$”i�Ø�q”6˜S’=�=Ø#'�LØ˜a˜b˜bœ'�CØ�r”7˜c’>�>Ø"&�KØ˜c˜r˜cœ(�CØ��s‘”ˆAØÐ!Ý! !¥TÑ*Ô*ð Ø˜�AØ#�| F¨AÑ.Ô.Ð.Ý˜A�tÑ$Ô$ð ØŸšÐ#6Ð#6°AÐ#6Ñ#6Ô#6Ñ7Ô7�Ý�q‘6”6˜Q’;�;Ø!�MØ# fÑ,¨{Ñ:Ð:å˜1‘v”v�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 Ô ×$Ò$ W¨d¬lÑ;Ô;Ð;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à€L€L�LØ€M€M�Màð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   