Ë
    øÿæixº  ã                   ó:  — d Z ddlZddlZddlZddlmZ ddlmZ ddlmZ ddlmZ ddlm	Z	 ddl
mZ d	Zd
dhZddhj                  e«      Zddddddddd e«       f
d„Z G d„ d«      Z G d„ d«      Z G d„ d«      Z ej"                  d«      Zd„ Z G d„ d«      Zy)zVprovides functionality for rendering a parsetree constructing into module
source code.é    N)Úast)Ú
exceptions)Úfilters)Ú	parsetree)Úutil)ÚPythonPrinteré
   Ú	UNDEFINEDÚSTOP_RENDERINGÚcontextÚloopTFc                 ó    — t        j                  «       }t        |«      }t        |t	        |||||||||	|
|«      | «       |j                  «       S )zYGenerate module source code given a parsetree node,
    uri, and optional source filename)r   ÚFastEncodingBufferr   Ú_GenerateRenderMethodÚ_CompileContextÚgetvalue)ÚnodeÚuriÚfilenameÚdefault_filtersÚbuffer_filtersÚimportsÚfuture_importsÚsource_encodingÚgenerate_magic_commentÚstrict_undefinedÚenable_loopÚreserved_namesÚbufÚprinters                 úa/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/mako/codegen.pyÚcompiler"      sc   € ô" ×
!Ñ
!Ó
#€Cä˜CÓ €GÜØÜØØØØØØØØ"ØØØó	
ð 	ôð" �<‰<‹>Ðó    c                   ó   — e Zd Zd„ Zy)r   c                 óž   — || _         || _        || _        || _        || _        || _        || _        || _        |	| _        |
| _	        || _
        y ©N)r   r   r   r   r   r   r   r   r   r   r   )Úselfr   r   r   r   r   r   r   r   r   r   r   s               r!   Ú__init__z_CompileContext.__init__H   sY   € ð ˆŒØ ˆŒØ.ˆÔØ,ˆÔØˆŒØ,ˆÔØ.ˆÔØ&<ˆÔ#Ø 0ˆÔØ&ˆÔØ,ˆÕr#   N)Ú__name__Ú
__module__Ú__qualname__r(   © r#   r!   r   r   G   s   „ ó-r#   r   c                   ó¼   — e Zd ZdZd„ Zd„ Zed„ «       Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zdd„Zd„ Zd„ Z	 dd„Z	 	 dd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy
)r   zZA template visitor object which generates the
    full module source for a template.

    c                 óœ  — || _         || _        || _        d g| _        t	        |t
        j                  t
        j                  f«      | _        | j                  r®d|j                  z  }|j                  «       }t        |j                  j                  «      dkD  }t        |j                  j!                  dd«      «      }t        |j                  j!                  dd«      «      }d }	d }
|j"                  rî|j$                  sâ|dgz  }nÛ| j'                  «       }	| j                  j(                  }
d}|
�¨|
j*                  j                  «       }|
j*                  j,                  s|dgz  }t        |
j                  j!                  dd«      «      }| j                  j.                  xs% t        |
j                  j!                  dd«      «      | j                  _        ndg}d	}d	x}}|€d
g}nd
g|z   D �cg c]  }|‘Œ }}| j1                  |
xs ||||||«       |	�|	D ]  }t3        |||«       Œ | j                  s| j5                  «        y y c c}w )Nz	render_%sr   ÚbufferedÚFalseÚcachedú
**pageargsÚrender_bodyr   Fr   )r    Úcompilerr   Úidentifier_stackÚ
isinstancer   ÚDefTagÚBlockTagÚin_defÚfuncnameÚget_argument_expressionsÚlenÚfilter_argsÚargsÚevalÚ
attributesÚgetÚis_blockÚis_anonymousÚwrite_toplevelÚpagetagÚ	body_declÚkwargsr   Úwrite_render_callabler   Úwrite_metadata_struct)r'   r    r4   r   Únamer>   Úfilteredr/   r1   ÚdefsrE   Úas               r!   r(   z_GenerateRenderMethod.__init__j   s#  € ØˆŒØ ˆŒØˆŒ	Ø!% ˆÔÜ  ¬	×(8Ñ(8¼)×:LÑ:LÐ'MÓNˆŒà�;Š;Ø §¡Ñ.ˆDØ×0Ñ0Ó2ˆDÜ˜4×+Ñ+×0Ñ0Ó1°AÑ5ˆHÜ˜DŸO™O×/Ñ/°
¸GÓDÓEˆHÜ˜$Ÿ/™/×-Ñ-¨h¸Ó@ÓAˆFØˆDØˆGØ�}Š} T×%6Ò%6Ø˜˜Ñ&‘à×&Ñ&Ó(ˆDØ—m‘m×+Ñ+ˆGØ ˆDØÐ"Ø×(Ñ(×AÑAÓC�Ø×(Ñ(×/Ò/Ø˜\˜NÑ*�DÜ˜g×0Ñ0×4Ñ4°X¸wÓGÓH�Ø,0¯M©M×,EÑ,Eò -ÌØ×&Ñ&×*Ñ*¨=¸'ÓBóJ�—‘Õ)ð %�~�Ø�Ø"'Ð'ˆH�xØˆ<Ø�;‰Dà )˜{¨TÒ1Ó2Ñ1˜!’AÐ1ˆDÐ2à×"Ñ"ØŠO�t˜T 4¨°8¸Vô	
ð ÐÛ�Ü% g¨x¸Õ>ð ð �{Š{Ø×&Ñ&Õ(ð ùò 3s   Ç0	I	c                 ó¨  — t        | j                  j                  «      | j                  j                  | j                  j                  <   | j                  j
                  | j                  j                  | j                  j                  | j                  j                  dœ}| j                  j                  ddt        j                  |«      d«       y )N)r   r   r   Úline_mapz"""Ú__M_BEGIN_METADATAz__M_END_METADATA
""")Úmaxr    Ú
source_mapÚlinenor4   r   r   r   Ú
writelinesÚjsonÚdumps)r'   Ústructs     r!   rI   z+_GenerateRenderMethod.write_metadata_struct›   s˜   € Ü7:Ø�L‰L×#Ñ#ó8
ˆ�‰×Ñ §¡× 3Ñ 3Ñ4ð Ÿ™×.Ñ.Ø—=‘=×$Ñ$Ø#Ÿ}™}×<Ñ<ØŸ™×/Ñ/ñ	
ˆð 	�‰×ÑØØ Ü�J‰J�vÓØ&õ		
r#   c                 ó    — | j                   d   S )Néÿÿÿÿ)r5   ©r'   s    r!   Úidentifiersz!_GenerateRenderMethod.identifiers¬   s   € à×$Ñ$ RÑ(Ð(r#   c                 ó8
  ‡ ‡‡‡— g Ši Šg Šd‰ j                   _         G ˆˆˆˆ fd„d«      } |«       }‰ j                  j                  D ]  }|j	                  |«       Œ ‰‰ j                   _        t        «       }‰D ]!  }|j                  |j                  «       «      }Œ# t        ‰ j                   «      }||_
        ‰ j                   j                  rH‰ j                   j                  r2‰ j                  j                  d‰ j                   j                  z  «       ‰ j                   j                  rA‰ j                  j                  ddj!                  ‰ j                   j                  «      ›�«       ‰ j                  j                  d«       ‰ j                  j                  d«       ‰ j                  j                  d	«       ‰ j                  j                  d
«       ‰ j                  j                  d«       ‰ j                  j                  dt"        z  «       ‰ j                  j                  dt%        j$                  «       z  «       ‰ j                  j                  d‰ j                   j&                  z  «       ‰ j                  j                  d‰ j                   j(                  z  «       ‰ j                  j                  d‰ j                   j*                  z  «       ‰ j                  j                  d‰ j                   j                  z  «       ‰ j                   j,                  r[d}‰ j                   j,                  D ]%  }||dz   z  }‰ j                  j                  |«       Œ' t/        j0                  |dddd¬«      }nd}|j3                  ‰ j                  «      }	|j4                  }
|
j                  |	j4                  «      |_        |j                  j7                  t8        «       |r%|j                  j7                  |j                  «       |‰ j                   _        ‰ j                  j                  d|	j4                  j=                  «       D �cg c]  }|j>                  ‘Œ c}z  «       ‰ j                  jA                  d«       tC        ‰«      r‰ jE                  ‰«       tC        ‰«      r&‰ jG                  ‰«       ‰ jI                  ‰d   «       ntC        ‰«      r‰ jG                  ‰«       tK        |	j4                  j=                  «       «      S c c}w )zxTraverse a template structure for module-level directives and
        generate the start of module-level code.

        Nc                   ó6   •— e Zd Zˆ fd„Zˆfd„Zˆfd„Zˆfd„Zy)ú:_GenerateRenderMethod.write_toplevel.<locals>.FindTopLevelc                 ó(   •— ‰j                  |«       y r&   )Úappend)Úsr   Úinherits     €r!   ÚvisitInheritTagzJ_GenerateRenderMethod.write_toplevel.<locals>.FindTopLevel.visitInheritTag¼   s   ø€ Ø—‘˜tÕ$r#   c                 ó$   •— |‰|j                   <   y r&   ©rJ   )ra   r   Ú
namespacess     €r!   ÚvisitNamespaceTagzL_GenerateRenderMethod.write_toplevel.<locals>.FindTopLevel.visitNamespaceTag¿   s   ø€ Ø(,�
˜4Ÿ9™9Ò%r#   c                 ó(   •— |‰j                   _        y r&   )r4   rE   )ra   r   r'   s     €r!   ÚvisitPageTagzG_GenerateRenderMethod.write_toplevel.<locals>.FindTopLevel.visitPageTagÂ   s   ø€ Ø(,�—‘Õ%r#   c                 óB   •— |j                   r‰j                  |«       y y r&   )Úismoduler`   )ra   r   Úmodule_codes     €r!   Ú	visitCodezD_GenerateRenderMethod.write_toplevel.<locals>.FindTopLevel.visitCodeÅ   s   ø€ Ø—=’=Ø×&Ñ& tÕ,ð !r#   N)r)   r*   r+   rc   rg   ri   rm   )rb   rl   rf   r'   s   €€€€r!   ÚFindTopLevelr^   »   s   ø„ ô%ô-ô-õ-r#   rn   z# -*- coding:%s -*-zfrom __future__ import ú, z(from mako import runtime, filters, cachezUNDEFINED = runtime.UNDEFINEDz'STOP_RENDERING = runtime.STOP_RENDERINGz__M_dict_builtin = dictz__M_locals_builtin = localsz_magic_number = %rz_modified_time = %rz_enable_loop = %rz_template_filename = %rz_template_uri = %rz_source_encoding = %rÚ Ú
r   ztemplate defined imports)ÚsourcerS   Úposr   z_exports = %ré   rY   )&r4   rE   r   ÚnodesÚaccept_visitorrf   ÚsetÚunionÚdeclared_identifiersÚ_IdentifiersÚdeclaredr   r   r    Ú	writeliner   ÚjoinÚMAGIC_NUMBERÚtimer   r   r   r   r   Ú
PythonCodeÚbranchÚtopleveldefsÚupdateÚTOPLEVEL_DECLAREDr[   ÚvaluesrJ   Úwrite_blanksr<   Úwrite_module_codeÚwrite_namespacesÚwrite_inheritÚlist)r'   rn   ÚfÚnÚmodule_identÚmodule_identifiersr   ÚimpÚimpcodeÚmain_identifiersÚmitrb   rl   rf   s   `          @@@r!   rD   z$_GenerateRenderMethod.write_toplevel°   sø  û€ ð
 ˆØˆ
Øˆà $ˆ�‰Ô÷	-ö 	-ñ ‹NˆØ—‘—”ˆAØ×Ñ˜QÕð !ð $.ˆ�‰Ô ä“uˆÛˆAØ'×-Ñ-¨a×.DÑ.DÓ.FÓG‰Lð ô *¨$¯-©-Ó8ÐØ&2ÐÔ#ð �M‰M×0Ò0Ø—‘×-Ò-à�L‰L×"Ñ"Ø%¨¯©×(EÑ(EÑEôð �=‰=×'Ò'Ø�L‰L×"Ò"à—9‘9˜TŸ]™]×9Ñ9Ô:ð=ôð 	�‰×ÑÐIÔJØ�‰×ÑÐ>Ô?Ø�‰×ÑÐHÔIØ�‰×ÑÐ8Ô9Ø�‰×ÑÐ<Ô=Ø�‰×ÑÐ3´lÑBÔCØ�‰×ÑÐ4´t·y±y³{ÑBÔCØ�‰×ÑÐ2°T·]±]×5NÑ5NÑNÔOØ�‰×ÑØ%¨¯©×(>Ñ(>Ñ>ô	
ð 	�‰×ÑÐ3°d·m±m×6GÑ6GÑGÔHØ�‰×ÑØ# d§m¡m×&CÑ&CÑCô	
ð �=‰=× Ò ØˆCØ—}‘}×,Ô,�Ø�s˜T‘zÑ!�Ø—‘×&Ñ& sÕ+ð -ô —n‘nØØØØØ3ô‰Gð ˆGà-×4Ñ4°T·Y±YÓ?ÐØ ×-Ñ-ˆØ*-¯)©)Ø×)Ñ)ó+
ÐÔ'ð 	×#Ñ#×*Ñ*Ô+<Ô=ÙØ×'Ñ'×.Ñ.¨w×/KÑ/KÔLà$6ˆ�‰Ô!Ø�‰×ÑØØ/×<Ñ<×CÑCÔEÓFÑE˜!ˆq�v‹vÐEÑFñGô	
ð 	�‰×!Ñ! !Ô$äˆ{ÔØ×"Ñ" ;Ô/äˆwŒ<Ø×!Ñ! *Ô-Ø×Ñ˜w r™{Õ+Ü�Œ_Ø×!Ñ! *Ô-äÐ$×1Ñ1×8Ñ8Ó:Ó;Ð;ùò Gs   ÑT
c                 óf  — | j                   r,|j                  }|r| j                  j                  d|z  «       | j                  j	                  |j
                  «       | j                  j                  d|›ddj                  |«      ›d�dd«       |s|s|r| j                  j                  d«       | j                  j                  | j                  j                  j                  | j                  «      «       | j                   r| j                  j                  r,d	|v r(| j                  d
   j                  j!                  d«       | j                   s˜t#        | j                  j$                  «      dkD  s"t#        | j                  j                  «      dkD  rT| j                  j                  ddj                  | j                  j                  D �cg c]	  }|›d|›�‘Œ c}«      z  «       | j'                  | j                  d¬«       | j                  j(                  D ]  }	|	j+                  | «       Œ | j-                  | j                  |||«       | j                  j                  d«       | j                  j/                  d«       |r"| j1                  ||||| j                  d¬«       yyc c}w )znwrite a top-level render callable.

        this could be the main render() method or that of a top-level def.z@runtime._decorate_toplevel(%s)údef Ú(Ú,ú):ú/__M_caller = context.caller_stack._push_frame()útry:úcontext._push_buffer()r2   rY   Úpageargsr   z!__M_locals = __M_dict_builtin(%s)Ú=T)ÚtoplevelNrt   )r9   Ú	decoratorr    r|   Ústart_sourcerS   rT   r}   r5   r`   r4   r[   r�   r   rB   Úargument_declaredÚaddr<   Úlocally_assignedÚwrite_variable_declaresru   rv   Úwrite_def_finishr†   Úwrite_cache_decorator)
r'   r   rJ   r>   r/   rK   r1   rž   ÚxrŒ   s
             r!   rH   z+_GenerateRenderMethod.write_render_callable  s1  € ð �;Š;ØŸ™ˆIÙØ—‘×&Ñ&Ø5¸	ÑAôð 	�‰×!Ñ! $§+¡+Ô.Ø�‰×ÒÚ! 3§8¡8¨D¥>Ð2à=Øô		
ñ ‘x¡6Ø�L‰L×"Ñ"Ð#;Ô<à×Ñ×$Ñ$Ø�M‰M×%Ñ%×,Ñ,¨T¯Y©YÓ7ô	
ð —’˜tŸy™y×1Ò1°|ÀtÑ7KØ×!Ñ! "Ñ%×7Ñ7×;Ñ;¸JÔGà�{Š{Ü�× Ñ ×1Ñ1Ó2°QÒ6Ü�4×#Ñ#×5Ñ5Ó6¸Ò:à�L‰L×"Ñ"Ø3Ø—(‘(ð "&×!1Ñ!1×!CÒ!Cóá!C˜Aò $%¡aÒ(Ø!Cñóñôð 	×$Ñ$ T×%5Ñ%5ÀÐ$ÔEà—‘—”ˆAØ×Ñ˜TÕ"ð !ð 	×Ñ˜dŸi™i¨°8¸VÔDØ�‰×Ñ˜tÔ$Ø�‰×!Ñ! !Ô$ÙØ×&Ñ&Ø�d˜D (¨D×,<Ñ,<Àtð 'õ ð ùòs   ÇJ.c                 ót   — |D ]3  }| j                   j                  |j                  |j                  ¬«       Œ5 y)zewrite module-level template code, i.e. that which
        is enclosed in <%! %> tags in the template.©Ústarting_linenoN)r    Úwrite_indented_blockÚtextrS   )r'   rl   rŒ   s      r!   r‡   z'_GenerateRenderMethod.write_module_codeV  s-   € ó ˆAØ�L‰L×-Ñ-¨a¯f©fÀaÇhÁhÐ-ÕOñ r#   c                 ó`   — | j                   j                  ddd|j                  d   z  d«       y)z:write the module-level inheritance-determination callable.z%def _mako_inherit(template, context):ú"_mako_generate_namespaces(context)z8return runtime._inherit_from(context, %s, _template_uri)ÚfileN)r    rT   Úparsed_attributes©r'   r   s     r!   r‰   z#_GenerateRenderMethod.write_inherit\  s5   € ð 	�‰×ÑØ3Ø0ØFØ×%Ñ% fÑ-ñ/àõ	
r#   c                 óx  ‡ ‡‡— ‰ j                   j                  dddddddd«       ‰ j                   j                  d«       |j                  «       D �]¥  }d|j                  v rd	‰ j
                  _        ‰ j                   j                  |j                  «       t        |j                  «      rÒ‰ j                   j                  d
«       g Š‰ j
                  j                  j                  |«      Šd	‰ _         G ˆˆˆ fd„d«      } |«       }|j                  D ]  }|j                  |«       Œ ‰ j                   j                  ddj                  ‰«      z  «       ‰ j                   j                  d«       d‰ _        d}nd}d|j                   v rJ‰ j                   j                  d|j"                  ›d|j                   j%                  dd«      ›d|›d�«       n„d|j                   v rJ‰ j                   j                  d|j"                  ›d|›d|j                   j%                  dd«      ›d�«       n,‰ j                   j                  d|j"                  ›d|›d�«       t'        |j                  j%                  dd«      «      r(‰ j                   j                  d |j"                  z  «       ‰ j                   j                  d!t)        |j"                  «      z  «       ‰ j                   j+                  d"«       �Œ¨ t        |«      s‰ j                   j                  d#«       ‰ j                   j                  d«       y)$z5write the module-level namespace-generating callable.z'def _mako_get_namespace(context, name):r™   z+return context.namespaces[(__name__, name)]úexcept KeyError:r­   Nz'def _mako_generate_namespaces(context):ÚimportTzdef make_namespace():c                   ó(   •— e Zd Zd„ Zd„ Zˆ ˆˆfd„Zy)ú<_GenerateRenderMethod.write_namespaces.<locals>.NSDefVisitorc                 ó&   — | j                  |«       y r&   ©ÚvisitDefOrBase©ra   r   s     r!   ÚvisitDefTagzH_GenerateRenderMethod.write_namespaces.<locals>.NSDefVisitor.visitDefTag€  ó   € Ø×(Ñ(¨Õ.r#   c                 ó&   — | j                  |«       y r&   r·   r¹   s     r!   ÚvisitBlockTagzJ_GenerateRenderMethod.write_namespaces.<locals>.NSDefVisitor.visitBlockTagƒ  r»   r#   c                 ó¼   •— |j                   r t        j                  	 di |j                  ¤Ž‚‰j	                  |‰d¬«       ‰j                  |j                  «       y )NF©Únested)z.Can't put anonymous blocks inside <%namespace>)rC   r   ÚCompileExceptionÚexception_kwargsÚwrite_inline_defr`   r:   )ra   r   Úexportr[   r'   s     €€€r!   r¸   zK_GenerateRenderMethod.write_namespaces.<locals>.NSDefVisitor.visitDefOrBase†  s[   ø€ Ø×,Ò,Ü",×"=Ñ"=ð!/ñ#ð #'×"7Ñ"7ñ#ð ð
 ×-Ñ-¨d°KÈÐ-ÔNØŸ™ d§m¡mÕ4r#   N©r)   r*   r+   rº   r½   r¸   )rÄ   r[   r'   s   €€€r!   ÚNSDefVisitorrµ     s   ø„ ò/ò/÷5r#   rÆ   úreturn [%s]r–   Fzmake_namespace()ÚNoner®   zns = runtime.TemplateNamespace(z3, context._clean_inheritance_tokens(), templateuri=z, callables=z,  calling_uri=_template_uri)Úmodulezns = runtime.ModuleNamespace(z1, context._clean_inheritance_tokens(), callables=z$, calling_uri=_template_uri, module=Ú)zns = runtime.Namespace(z, calling_uri=_template_uri)Úinheritabler0   zcontext['self'].%s = nsz'context.namespaces[(__name__, %s)] = nsé   Úpass)r    rT   r|   r…   r@   r4   Úhas_ns_importsrŸ   rS   r<   ru   r[   r�   r9   rv   r}   r¯   rJ   rA   r?   Úreprr†   )	r'   rf   r   rÆ   ÚvisrŒ   Úcallable_namerÄ   r[   s	   `      @@r!   rˆ   z&_GenerateRenderMethod.write_namespacesg  s‰  ú€ à�‰×ÑØ5ØØ9ØØ0Ø9ØØô		
ð 	�‰×ÑÐHÔIà×%Ñ%×'ˆDØ˜4Ÿ?™?Ñ*Ø/3�—‘Ô,Ø�L‰L×%Ñ% d§k¡kÔ2Ü�4—:‘:ŒØ—‘×&Ñ&Ð'>Ô?Ø�Ø"Ÿm™m×7Ñ7×>Ñ>¸tÓD�Ø"�”÷5õ 5ñ" #“n�ØŸœ�AØ×$Ñ$ SÕ)ð $à—‘×&Ñ& }¸¿¹ÀÓ8HÑ'IÔJØ—‘×&Ñ& tÔ,Ø#�”Ø 2‘à &�à˜×/Ñ/Ñ/Ø—‘×&Ò&ð Ÿ	›	Ø×.Ñ.×2Ñ2°6¸6ÕBÚ%ðõ
ð ˜T×3Ñ3Ñ3Ø—‘×&Ò&ð Ÿ	›	Ú%Ø×.Ñ.×2Ñ2°8¸VÕDðõ
ð —‘×&Ò&ð —y“y¢-ð1ôô �D—O‘O×'Ñ'¨°wÓ?Ô@Ø—‘×&Ñ&Ð'@ÀDÇIÁIÑ'NÔOà�L‰L×"Ñ"Ø9¼DÀÇÁ»OÑKôð �L‰L×%Ñ% aÖ(ðU (ôV �:ŒØ�L‰L×"Ñ" 6Ô*Ø�‰×Ñ˜tÕ$r#   Nc                 ól  — |j                   D �ci c]  }|j                  |“Œ }}t        «       }|j                  |j                  «      }|j                  |j
                  j                  «       D �cg c]  }|j                  ‘Œ c}«      }|j                  |j                  «      }|j                  |j                  «      }| j                  j                  rd|v }|j                  d«       nd}|�|j                  |«      }|rÁt        | j                  dd«      rª| j                  j!                  d«       d| j                  _        | j                  j$                  j'                  «       D ]W  \  }}	d|	j(                  v sŒ| j                  j!                  d|›d	t+        j,                  d
|	j(                  d   «      ›d�«       ŒY |r| j                  j!                  d«       |D �]¨  }||v r}||   }
|
j.                  r4|
j0                  s| j3                  |
|«       Œ8| j5                  |
|d¬«       ŒM|
j7                  «       r| j3                  |
|«       Œp| j5                  |
|d¬«       Œ…|| j                  j$                  v r"| j                  j!                  |›d|›d�«       Œ¿t        | j                  dd«      rr| j                  j8                  r6| j                  j;                  |›d|›d�d|z  d|›d|›d�dd|z  dd«       �Œ"| j                  j!                  |›d|›d|›d�«       �ŒH| j                  j8                  r*| j                  j;                  d|›d|›d�dd|z  d«       �Œˆ| j                  j!                  |›d|›d�«       �Œ« | j                  j!                  d«       yc c}w c c}w )a  write variable declarations at the top of a function.

        the variable declarations are in the form of callable
        definitions for defs and/or name lookup within the
        function's context argument. the names declared are based
        on the names that are referenced in the function body,
        which don't otherwise have any explicit assignment
        operation. names that are assigned within the body are
        assumed to be locally-scoped variables and are not
        separately declared.

        for def callable definitions, if the def is a top-level
        callable then a 'stub' callable is generated which wraps
        the current Context into a closure. if the def is not
        top-level, it is fully rendered as a local closure.

        r   FNrÎ   z_import_ns = {}Tr³   z_mako_get_namespace(context, z)._populate(_import_ns, z\s*,\s*rÊ   z%loop = __M_loop = runtime.LoopStack()r¿   z  = _mako_get_namespace(context, z = _import_ns.get(z, UNDEFINED)zif %s is UNDEFINED:r™   z = context[Ú]r²   z&raise NameError("'%s' is not defined")z, context.get(z, UNDEFINED))z = context.get(z__M_writer = context.writer())rL   r:   rw   rx   Ú
undeclaredÚclosuredefsr…   Ú
differencer    Úlocally_declaredr4   r   ÚdiscardÚintersectionÚgetattrr    r|   Úhas_importsrf   Úitemsr@   ÚreÚsplitrB   rC   Úwrite_def_declrÃ   Úis_rootr   rT   )r'   r[   r�   ÚlimitÚcÚcomp_identsÚto_writeÚhas_loopÚidentÚnsÚcomps              r!   r£   z-_GenerateRenderMethod.write_variable_declaresÄ  s?  € ð( /:×.>Ò.>Ó?Ñ.>¨�q—z‘z 1‘}Ð.>ˆÐ?Ü“5ˆð —>‘> +×"8Ñ"8Ó9ˆð —>‘>Ø!,×!8Ñ!8×!?Ñ!?Ô!AÓBÑ!A˜AˆQ�Z‹ZÐ!AÑBó
ˆð ×&Ñ& {×'DÑ'DÓEˆð ×&Ñ& {×'CÑ'CÓDˆà�=‰=×$Ò$Ø Ð)ˆHØ×Ñ˜VÕ$àˆHð ÐØ×,Ñ,¨UÓ3ˆHáœ §¡Ð/?ÀÔGØ�L‰L×"Ñ"Ð#4Ô5Ø(,ˆD�M‰MÔ%Ø!Ÿ]™]×5Ñ5×;Ñ;Ö=‘	��rØ˜rŸ}™}Ò,Ø—L‘L×*Ò*ò "ÜŸH™H Z°·±¸xÑ1HÕIð	õð >ñ Ø�L‰L×"Ñ"Ð#JÔKäˆEØ˜Ñ#Ø" 5Ñ)�Ø—=’=Ø×,Ò,Ø×+Ñ+¨D°+Õ>à×-Ñ-¨d°KÈÐ-ÕMà—|‘|”~Ø×+Ñ+¨D°+Õ>à×-Ñ-¨d°KÈÐ-ÕMà˜$Ÿ-™-×2Ñ2Ñ2Ø—‘×&Ñ&Ú?DÂeÐLõô ˜4Ÿ=™=Ð*:¸EÔBØ—}‘}×5Ò5ØŸ™×/Ñ/â$¢eð-à1°EÑ9Ø"Ú27ºÐ?Ø.ØFÈÑNØ Ø ö
ð Ÿ™×.Ñ.ò  %¢eªUð4öð —}‘}×5Ò5ØŸ™×/Ñ/Ø"Ú27ºÐ?Ø.ØFÈÑNØ öð Ÿ™×.Ñ.ÚAFÊÐNöða ðh 	�‰×ÑÐ>Õ?ùòQ @ùò Cs   �N,Á1N1c                 óD  — |j                   }|j                  «       }|j                  d¬«      }| j                  sWt        | j                  j
                  «      dkD  s"t        | j                  j                  «      dkD  r|j                  dd«       n|j                  dd«       | j                  j                  d|›ddj                  |«      ›d	�«       | j                  j                  d
|›ddj                  |«      ›d�«       | j                  j                  d«       y)z>write a locally-available callable referencing a top-level defT©Úas_callr   zcontext._locals(__M_locals)r   r”   r•   r–   r—   zreturn render_rÊ   N)r:   r;   r9   r<   r[   r¢   r    Úinsertr    r|   r}   )r'   r   r[   r:   Ú	namedeclsÚnameargss         r!   rß   z$_GenerateRenderMethod.write_def_declB  sÙ   € à—=‘=ˆØ×1Ñ1Ó3ˆ	Ø×0Ñ0¸Ð0Ó>ˆà�{Š{Ü�× Ñ ×1Ñ1Ó2°QÒ6Ü�4×#Ñ#×5Ñ5Ó6¸Ò:à�O‰O˜AÐ<Õ=à�O‰O˜A˜yÔ)Ø�‰×Ò²¸#¿(¹(À9Õ:MÐNÔOØ�‰×ÒÚ&.°·±¸Õ0BÐCô	
ð 	�‰×Ñ˜tÕ$r#   c           	      óâ  — |j                  «       }|j                  }|r| j                  j                  d|z  «       | j                  j                  d|j                  ›ddj                  |«      ›d�«       t        |j                  j                  «      dkD  }t        |j                  j                  dd«      «      }t        |j                  j                  d	d«      «      }| j                  j                  d
d«       |s|s|r| j                  j                  d«       |j                  ||¬«      }| j                  |«       | j                  j!                  |«       |j"                  D ]  }	|	j%                  | «       Œ | j                  j'                  «        | j)                  ||||«       | j                  j                  d«       |r#| j+                  ||j                  |d|dd¬«       yy)z?write a locally-available def callable inside an enclosing def.z&@runtime._decorate_inline(context, %s)r”   r•   r–   r—   r   r/   r0   r1   r˜   r™   rš   r¿   NFT)Úinliner�   )r;   rž   r    r|   r:   r}   r<   r=   r>   r?   r@   rA   rT   r�   r£   r5   r`   ru   rv   Úpopr¤   r¥   )
r'   r   r[   rÀ   rí   rž   rK   r/   r1   rŒ   s
             r!   rÃ   z&_GenerateRenderMethod.write_inline_defU  s§  € ð ×1Ñ1Ó3ˆ	à—N‘Nˆ	ÙØ�L‰L×"Ñ"Ø8¸9ÑDôð 	�‰×ÒØ!Ÿ]›]¨C¯H©H°YÕ,?Ð@ô	
ô �t×'Ñ'×,Ñ,Ó-°Ñ1ˆÜ˜Ÿ™×+Ñ+¨J¸Ó@ÓAˆÜ�d—o‘o×)Ñ)¨(°GÓ<Ó=ˆØ�‰×Ñà=Øô	
ñ
 ‘x¡6Ø�L‰L×#Ñ#Ð$<Ô=à!×(Ñ(¨°fÐ(Ó=ˆà×$Ñ$ [Ô1à×Ñ×$Ñ$ [Ô1Ø—”ˆAØ×Ñ˜TÕ"ð à×Ñ×!Ñ!Ô#à×Ñ˜d H¨h¸Ô?Ø�‰×Ñ˜tÔ$ÙØ×&Ñ&ØØ—‘ØØØØØð 'õ ð r#   c                 ó®  — |s>|s<|s:| j                   j                  d«       |r| j                   j                  ddd«       |s|s|�r|s|r| j                   j                  dd«       n| j                   j                  dd«       |r| j                   j                  d«       d}|r'| j                  |j                  j
                  |d«      }| j                   j                  d«       |r)|s'| j                  | j                  j                  |d«      }|s|r| j                   j                  d	|z  «       y| j                   j                  d
|z  d«       yy)aJ  write the end section of a rendering function, either outermost or
        inline.

        this takes into account if the rendering function was filtered,
        buffered, etc.  and closes the corresponding try: block if any, and
        writes code to retrieve captured content, apply filters, send proper
        return value.ú	return ''úfinally:z!context.caller_stack._pop_frame()Nz__M_buf = context._pop_buffer()ú6__M_buf, __M_writer = context._pop_buffer_and_writer()ú__M_buf.getvalue()Fz	return %sú__M_writer(%s))r    r|   rT   Úcreate_filter_callabler=   r>   r4   r   )r'   r   r/   rK   r1   Ú	callstackra   s          r!   r¤   z&_GenerateRenderMethod.write_def_finishƒ  s5  € ñ ¡©xØ�L‰L×"Ñ" ;Ô/ÙØ—‘×'Ñ'ØÐ CÀTôñ ‘x¢6Ù™6ð
 —‘×'Ñ'ØÐ Aõð —‘×'Ñ'ØØLôñ
 Ø—‘×&Ñ&Ð'JÔKà$ˆAÙØ×/Ñ/Ø×$Ñ$×)Ñ)¨1¨eó�ð �L‰L×"Ñ" 4Ô(Ù¡Ø×/Ñ/Ø—M‘M×0Ñ0°!°Uó�ñ ™6Ø—‘×&Ñ& {°Q¡Õ7à—‘×'Ñ'Ð(8¸1Ñ(<¸kÕJð? $*r#   c                 ó   ‡ ‡— ‰ j                   j                  d|›d|›�«       ‰j                  j                  dt	        |«      «      }i }	‰ j
                  j                  �8|	j                  ˆ fd„‰ j
                  j                  j                  D «       «       |	j                  ˆfd„‰j                  D «       «       d|	v rt        t        |	d   «      «      |	d<   ‰ j                   j                  d|›d	d
j                  |«      ›d�«       |D �
cg c]#  }
d|
v rd|
j                  d«      d   fdz  z  n|
‘Œ% }}
‰ j                  ||‰j                  «       ¬«       |ržd|›d|›d	d
j                  |«      ›ddj                  |	j                  «       D ��cg c]  \  }}|›d|›d�‘Œ c}}«      ›d|›d�}‰ j                  ‰ j
                  j                   |d«      }‰ j                   j#                  d|z   d«       y‰ j                   j#                  d|›d|›d	d
j                  |«      ›ddj                  |	j                  «       D ��cg c]  \  }}|›d|›d�‘Œ c}}«      ›d|›d�dd«       yc c}
w c c}}w c c}}w )zhwrite a post-function decorator to replace a rendering
        callable with a cached version of itself.Ú__M_z = Ú	cache_keyNc              3   óš   •K  — | ]B  }|j                  d «      r/|dk7  r*|dd ‰j                  j                  j                  |   f–— ŒD y­w©Úcache_rü   é   N)Ú
startswithr4   rE   r¯   )Ú.0Úpar'   s     €r!   Ú	<genexpr>z>_GenerateRenderMethod.write_cache_decorator.<locals>.<genexpr>Ê  sL   øè ø€ ð áA�BØ—=‘= Ô*¨r°[Ò/@ð �A�B�˜Ÿ™×.Ñ.×@Ñ@ÀÑDÔEÙAùs   ƒAAc              3   ór   •K  — | ].  }|j                  d «      r|dk7  r|dd ‰j                  |   f–— Œ0 y­wrþ   )r  r¯   )r  r  Únode_or_pagetags     €r!   r  z>_GenerateRenderMethod.write_cache_decorator.<locals>.<genexpr>Ï  sB   øè ø€ ð 
á7�Ø�}‰}˜XÔ&¨2°Ò+<ð ��ˆV�_×6Ñ6°rÑ:Ô;Ù7ùs   ƒ47Útimeoutr”   r•   r–   r—   rœ   z%s=%sr   rt   )r�   rá   z.context.get('local').cache._ctx_get_or_create(z, lambda:__M_z),  context, rp   ro   z__M_defname=rÊ   Fzreturn z9__M_writer(context.get('local').cache._ctx_get_or_create(z), context, z))ró   )r    r|   r¯   rA   rÏ   r4   rE   rƒ   Úintr?   r}   rÞ   r£   Úundeclared_identifiersrÜ   rø   r   rT   )r'   r  rJ   r>   r/   r[   rð   r�   ÚcachekeyÚ
cache_argsrM   Ú	pass_argsÚkÚvra   s   ``             r!   r¥   z+_GenerateRenderMethod.write_cache_decorator¶  s_  ù€ ð 	�‰×Ò²±dÐ;Ô<Ø"×4Ñ4×8Ñ8Øœ˜d›ó
ˆð ˆ
Ø�=‰=× Ñ Ð,Ø×Ñó àŸ-™-×/Ñ/×AÒAóô ð
 	×Ñó 
à%×7Ò7ó
ô 	
ð
 ˜
Ñ"Ü$'¬¨Z¸	Ñ-BÓ(CÓ$DˆJ�yÑ!à�‰×Ò²°c·h±h¸tµnÐEÔFñ LPó
ÙKOÀa°#¸±(ˆG˜Ÿ™ › Q™Ð)¨AÑ-Ò.ÀÑAÈ4ð 	ð 
ð 	×$Ñ$ØØØ!×8Ñ8Ó:ð 	%ô 	
ò
 ò ÚØ—H‘H˜YÕ'Ø—G‘GØ8B×8HÑ8HÔ8JÔKÑ8J±°°1¢aªÒ+Ð8JÒKõò ðð ð ×+Ñ+Ø—‘×,Ñ,¨a°óˆAð �L‰L×#Ñ# I°¡M°4Õ8à�L‰L×#Ò#ò
 ÚØ—H‘H˜YÕ'Ø—G‘GØ8B×8HÑ8HÔ8JÔKÑ8J±°°1¢aªÒ+Ð8JÒKõò ðð Øõùò=
ùó& Lùó( Ls   Ä(I/ÆI4ÉI:c                 ó¼  — d„ }d|vrx|rv| j                   j                  r-| j                   j                  j                  j                  |z   }| j                   j                  rd|vr| j                   j                  |z   }|D ]W  }|dk(  rŒ	t        j                  d|«      }|r#|j                  dd«      \  }} ||«      }	|	|z   }n ||«      }|€J ‚|›d|›d�}ŒY |S )z§write a filter-applying expression based on the filters
        present in the given filter names, adjusting for the global
        'default' filter aliases as needed.c                 óx   — t        j                  d| «      rd| z   S t        j                  j	                  | | «      S )Nz
decode\..+zfilters.)rÝ   Úmatchr   ÚDEFAULT_ESCAPESrA   re   s    r!   Úlocate_encodezC_GenerateRenderMethod.create_filter_callable.<locals>.locate_encode  s4   € Ü�x‰x˜ tÔ,Ø! DÑ(Ð(ä×.Ñ.×2Ñ2°4¸Ó>Ð>r#   rŒ   z(.+?)(\(.*\))rÌ   rt   r•   rÊ   )r4   rE   r=   r>   r   rÝ   r  Úgroup)
r'   r>   ÚtargetÚis_expressionr  ÚeÚmræ   Úfargsr‹   s
             r!   rø   z,_GenerateRenderMethod.create_filter_callable	  sÚ   € ò
	?ð �d‰?ÙØ—=‘=×(Ò(ØŸ=™=×0Ñ0×<Ñ<×AÑAÀDÑH�DØ—=‘=×0Ò0°SÀ±_ØŸ=™=×8Ñ8¸4Ñ?�DÛˆAà�CŠxØÜ—‘Ð)¨1Ó-ˆAÙØ Ÿw™w q¨!›}‘��uÙ! %Ó(�Ø˜‘I‘á! !Ó$�Ø�}Ð$�}Ú!"¢FÐ+‰Fð ð ˆr#   c                 ó>  — | j                   j                  |j                  «       t        |j                  «      sh| j
                  j                  �3t        | j
                  j                  j                  j                  «      st        | j
                  j                  «      rS| j                  |j                  j                  d|j                  z  d«      }| j                   j                  d|z  «       y | j                   j                  d|j                  z  «       y )Nz%sTr÷   )r    rŸ   rS   r<   Úescapesr4   rE   r=   r>   r   rø   Úescapes_coder«   r|   )r'   r   ra   s      r!   ÚvisitExpressionz%_GenerateRenderMethod.visitExpression)  sÆ   € Ø�‰×!Ñ! $§+¡+Ô.ä�—‘Ôà—‘×%Ñ%Ð1Ü˜Ÿ™×-Ñ-×9Ñ9×>Ñ>Ô?ä�4—=‘=×0Ñ0Ô1à×+Ñ+Ø×!Ñ!×&Ñ&¨¨t¯y©yÑ(8¸$óˆAð �L‰L×"Ñ"Ð#3°aÑ#7Õ8à�L‰L×"Ñ"Ð#3°d·i±iÑ#?Õ@r#   c                 óä  ‡‡— ‰j                   rz| j                  j                  d «       ‰j                  rR| j                  j                  d«       | j                  j                  d«       | j                  j                  d «       y y | j                  j	                  ‰j
                  «       | j                  j                  r&‰j                  dk(  rt        ‰| j                  «      }n‰j                  }| j                  j                  |«       ‰j                  «       Šˆfd„}‰r-t        d„ ‰D «       «      rt        ˆfd„‰D «       «      s |«       r| j                  j                  d«       y y )Nrô   zloop = __M_loop._exit()Úforc                  ó„   •— ‰D ]:  } t        | t        j                  «      rŒt        | t        j                  «      r y y y )NTF©r6   r   ÚCommentÚControlLine)râ   Úchildrens    €r!   Ú_search_for_control_linezH_GenerateRenderMethod.visitControlLine.<locals>._search_for_control_lineP  s6   ø€ Û!�AÜ! !¤Y×%6Ñ%6Ô7Ø Ü# A¤y×'<Ñ'<Ô=Ù#Ù ñ "r#   c              3   óp   K  — | ].  }t        |t        j                  t        j                  f«      –— Œ0 y ­wr&   r!  )r  râ   s     r!   r  z9_GenerateRenderMethod.visitControlLine.<locals>.<genexpr>Z  s0   è ø€ ð á%˜ô ˜q¤9×#4Ñ#4´i×6KÑ6KÐ"L×MÙ%ùs   ‚46c              3   ó¤   •K  — | ]G  }t        |t        j                  «      r+‰j                  |j                  «      xs |j
                  –— ŒI y ­wr&   )r6   r   r#  Ú
is_ternaryÚkeywordÚisend)r  râ   r   s     €r!   r  z9_GenerateRenderMethod.visitControlLine.<locals>.<genexpr>^  sB   øè ø€ ð á%˜Ü! !¤Y×%:Ñ%:Ô;ð —_‘_ Q§Y¡YÓ/Ò:°1·7±7Ó:Ù%ùs   ƒAArÍ   )r*  r    r|   Úhas_loop_contextrŸ   rS   r4   r   r)  Úmangle_mako_loopr«   Úget_childrenÚall)r'   r   r«   r%  r$  s    `  @r!   ÚvisitControlLinez&_GenerateRenderMethod.visitControlLine:  s  ù€ Ø�:Š:Ø�L‰L×"Ñ" 4Ô(Ø×$Ò$Ø—‘×&Ñ& zÔ2Ø—‘×&Ñ&Ð'@ÔAØ—‘×&Ñ& tÕ,ð %ð
 �L‰L×%Ñ% d§k¡kÔ2Ø�}‰}×(Ò(¨T¯\©\¸UÒ-BÜ'¨¨d¯l©lÓ;‘à—y‘y�Ø�L‰L×"Ñ" 4Ô(Ø×(Ñ(Ó*ˆHô!ñ Üñ á%óô ô ó á%óô ñ
 ,Ô-à—‘×&Ñ& vÕ.ð .r#   c                 ó°   — | j                   j                  |j                  «       | j                   j                  dt	        |j
                  «      z  «       y )Nr÷   )r    rŸ   rS   r|   rÏ   Úcontentr°   s     r!   Ú	visitTextz_GenerateRenderMethod.visitTextg  s9   € Ø�‰×!Ñ! $§+¡+Ô.Ø�‰×ÑÐ/´$°t·|±|Ó2DÑDÕEr#   c           
      óZ  — t        |j                  j                  «      dkD  }|r| j                  j	                  dd«       |j
                  D ]  }|j                  | «       Œ |rG| j                  j	                  ddd| j                  |j                  j                  dd«      z  d «       y y )	Nr   z#__M_writer = context._push_writer()r™   rô   rõ   r÷   rö   F)r<   r=   r>   r    rT   ru   rv   rø   )r'   r   rK   rŒ   s       r!   ÚvisitTextTagz"_GenerateRenderMethod.visitTextTagk  s¤   € Ü�t×'Ñ'×,Ñ,Ó-°Ñ1ˆÙØ�L‰L×#Ñ#Ø5°vôð —”ˆAØ×Ñ˜TÕ"ð áØ�L‰L×#Ñ#ØØHØ Ø×-Ñ-Ø×$Ñ$×)Ñ)Ð+?Àóñð õð r#   c                 óÄ  — |j                   sÏ| j                  j                  |j                  |j                  ¬«       | j
                  s‘t        | j                  j                  «      dkD  rn| j                  j                  d«       | j                  j                  ddj                  |j                  «       D �cg c]  }t        |«      ‘Œ c}«      z  «       y y y y c c}w )Nr¨   r   z0__M_locals_builtin_stored = __M_locals_builtin()z�__M_locals.update(__M_dict_builtin([(__M_key, __M_locals_builtin_stored[__M_key]) for __M_key in [%s] if __M_key in __M_locals_builtin_stored]))r–   )rk   r    rª   r«   rS   r9   r<   r[   r¢   r|   r}   ry   rÏ   )r'   r   r¦   s      r!   rm   z_GenerateRenderMethod.visitCode~  sÄ   € Ø�}Š}Ø�L‰L×-Ñ-Ø—	‘	¨4¯;©;ð .ô ð —;’;¤3 t×'7Ñ'7×'HÑ'HÓ#IÈAÒ#Mð
 —‘×&Ñ&ØFôð —‘×&Ñ&ðGð —h‘h°×1JÑ1JÔ1LÓMÑ1L¨A¤ Q¥Ð1LÑMÓNñOõð $N�;ð ùò"  Ns   Â:Cc                 ó>  — | j                   j                  |j                  «       |j                  j	                  d«      }|r0| j                   j                  d|j                  d   ›d|›d�«       y | j                   j                  d|j                  d   z  «       y )Nr>   zruntime._include_file(context, r®   z, _template_uri, rÊ   z1runtime._include_file(context, %s, _template_uri))r    rŸ   rS   r@   rA   r|   r¯   )r'   r   r>   s      r!   ÚvisitIncludeTagz%_GenerateRenderMethod.visitIncludeTag“  s€   € Ø�‰×!Ñ! $§+¡+Ô.Ø�‰×"Ñ" 6Ó*ˆÙØ�L‰L×"Ò"à×)Ñ)¨&Ó1²4ð9õð
 �L‰L×"Ñ"ØCØ×)Ñ)¨&Ñ1ñ3õr#   c                  ó   — y r&   r,   r°   s     r!   rg   z'_GenerateRenderMethod.visitNamespaceTag¡  ó   € Ør#   c                  ó   — y r&   r,   r°   s     r!   rº   z!_GenerateRenderMethod.visitDefTag¤  r9  r#   c                 óš  — |j                   r)| j                  j                  d|j                  z  «       y |j	                  d¬«      }|dgz  }| j                  j                  d|j                  z  «       | j                  j                  d|j                  ›ddj                  |«      ›d	�«       | j                  j                  d
«       y )Nz%s()Trê   r2   zOif 'parent' not in context._data or not hasattr(context._data['parent'], '%s'):zcontext['self'].r•   r–   rÊ   rq   )rC   r    r|   r:   r;   r}   )r'   r   rî   s      r!   r½   z#_GenerateRenderMethod.visitBlockTag§  s¦   € Ø×ÒØ�L‰L×"Ñ" 6¨D¯M©MÑ#9Õ:à×4Ñ4¸TÐ4ÓBˆHØ˜˜Ñ&ˆHØ�L‰L×"Ñ"ð>Ø@DÇÁñNôð �L‰L×"Ò"Ø,0¯M«M¸3¿8¹8ÀHÕ;MÐNôð �L‰L×"Ñ" 4Õ(r#   c                 ó&   — | j                  |«       y r&   ©ÚvisitCallTagr°   s     r!   ÚvisitCallNamespaceTagz+_GenerateRenderMethod.visitCallNamespaceTag¶  s   € ð 	×Ñ˜$Õr#   c                 óÆ  ‡ ‡‡‡	— ‰ j                   j                  d«       dgŠ	‰ j                  j                  |d¬«      Š‰j                  |d¬«      Š‰j	                  d«       ‰ j
                  j                  ‰«        G ˆˆˆ	ˆ fd„d«      } |«       }|j                  D ]  }|j                  |«       Œ ‰ j
                  j                  «        |j                  j                  «       }‰ j                   j                  d	d
j                  |«      z  «       d}|r‰ j                   j                  dd«       ‰ j                  ‰«       ‰ j
                  j                  ‰«       |j                  D ]  }|j                  ‰ «       Œ ‰ j
                  j                  «        ‰ j                  ||ddd¬«       ‰ j                   j                  d dd
j                  ‰	«      z  d «       ‰ j                   j                  dd«       ‰ j                   j!                  |j"                  «       ‰ j                   j                  d‰ j%                  g |j&                  d«      z  ddd «       y )Nzdef ccall(caller):ÚbodyTr¿   FÚcallerc                   ó*   •— e Zd Zd„ Zd„ Zˆ ˆˆˆfd„Zy)ú6_GenerateRenderMethod.visitCallTag.<locals>.DefVisitorc                 ó&   — | j                  |«       y r&   r·   r¹   s     r!   rº   zB_GenerateRenderMethod.visitCallTag.<locals>.DefVisitor.visitDefTagÊ  ó   € Ø× Ñ  Õ&r#   c                 ó&   — | j                  |«       y r&   r·   r¹   s     r!   r½   zD_GenerateRenderMethod.visitCallTag.<locals>.DefVisitor.visitBlockTagÍ  rF  r#   c                 óÜ   •— ‰j                  |‰d¬«       |j                  s‰j                  |j                  «       |j                  ‰j                  v r‰j                  |j                  = y y )NFr¿   )rÃ   rC   r`   r:   rÕ   )ra   r   Úbody_identifiersÚcallable_identifiersrÄ   r'   s     €€€€r!   r¸   zE_GenerateRenderMethod.visitCallTag.<locals>.DefVisitor.visitDefOrBaseÐ  s_   ø€ Ø×%Ñ% dÐ,@ÈÐ%ÔOØ×(Ò(Ø—M‘M $§-¡-Ô0ð —=‘=Ð$4×$@Ñ$@Ñ@Ø(×4Ñ4°T·]±]ÑCð Ar#   NrÅ   )rI  rJ  rÄ   r'   s   €€€€r!   Ú
DefVisitorrD  É  s   ø„ ò'ò'÷Dð Dr#   rK  zdef body(%s):r–   rš   r™   )rù   rÇ   zccontext.caller_stack.nextcaller = runtime.Namespace('caller', context, callables=ccall(__M_caller))r÷   rô   z&context.caller_stack.nextcaller = None)r    r|   r[   r�   Úadd_declaredr5   r`   ru   rv   rñ   rF   r;   r}   rT   r£   r¤   rŸ   rS   rø   Ú
expression)
r'   r   rK  rÐ   rŒ   Úbodyargsr/   rI  rJ  rÄ   s
   `      @@@r!   r>  z"_GenerateRenderMethod.visitCallTag¼  s  û€ Ø�‰×ÑÐ3Ô4Ø�ˆØ#×/Ñ/×6Ñ6°tÀDÐ6ÓIÐØ/×6Ñ6°tÀEÐ6ÓJÐð
 	×%Ñ% hÔ/à×Ñ×$Ñ$Ð%5Ô6÷	Dö 	Dñ  ‹lˆØ—”ˆAØ×Ñ˜SÕ!ð à×Ñ×!Ñ!Ô#à—>‘>×:Ñ:Ó<ˆØ�‰×Ñ˜°·±¸(Ó1CÑCÔDð ˆÙØ�L‰L×#Ñ#Ð$<¸fÔEØ×$Ñ$Ð%5Ô6Ø×Ñ×$Ñ$Ð%5Ô6à—”ˆAØ×Ñ˜TÕ"ð à×Ñ×!Ñ!Ô#à×Ñ˜d H¨e°UÀeÐÔLØ�‰×Ñ  m°s·x±xÀÓ7GÑ&HÈ$ÔOà�‰×Ñð+ð ô	
ð 	�‰×!Ñ! $§+¡+Ô.Ø�‰×ÑØØ×)Ñ)¨"¨d¯o©o¸tÓDñEàØ4Øõ	
r#   )FN)T)FF)r)   r*   r+   Ú__doc__r(   rI   Úpropertyr[   rD   rH   r‡   r‰   rˆ   r£   rß   rÃ   r¤   r¥   rø   r  r/  r2  r4  rm   r7  rg   rº   r½   r?  r>  r,   r#   r!   r   r   c   s´   „ ñò
/)òb
ð" ñ)ó ð)òk<òZ7òrPò	
ò[%óz|@ò|%ò&,ð^ ;?ó1Kðt ØóQòfò@Aò"+/òZFòò&ò*òòò)ò óB
r#   r   c                   óˆ   — e Zd ZdZdd„Zd„ Zed„ «       Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)rz   zCtracks the status of identifier names as template code is rendered.Nc                 ó@  — |�� t        |t        j                  «      r*t        «       | _        t        j                  «       | _        �nt        |j                  «      j                  |j                  j                  «       D �cg c]  }|j                  ‘Œ c}«      j                  |j                  «      j                  |j                  «      | _        |r*| j                  j                  |j                  «      | _        t        j                  di |j                  ¤Ž| _        n(t        «       | _        t        j                  «       | _        || _        t        «       | _        t        «       | _        t        «       | _        t        «       | _        t        j                  «       | _	        || _        |�|j%                  | «       | j                  j&                  j)                  | j                  «      }|r't+        j,                  ddj/                  |«      z  «      ‚y c c}w )Nz'Reserved words declared in template: %sro   r,   )r6   r   ÚNamespaceTagrw   r{   r   ÚSetLikeDictr‚   rx   rÕ   r…   rJ   r×   r    rÔ   r4   r¢   r   rv   r   rÙ   r   ÚNameConflictErrorr}   )r'   r4   r   ÚparentrÀ   râ   Úillegal_namess          r!   r(   z_Identifiers.__init__  s¯  € ØÑô ˜$¤	× 6Ñ 6Ô7Ü #£�”Ü$(×$4Ñ$4Ó$6�Ö!ô
 ˜Ÿ™Ó(ß‘U¨F×,>Ñ,>×,EÑ,EÔ,GÓHÑ,G q˜AŸF›FÐ,GÑHÓIß‘U˜6×2Ñ2Ó3ß‘U˜6×3Ñ3Ó4ð	 ”ñ Ø$(§M¡M×$7Ñ$7¸×8IÑ8IÓ$J�D”Mô %)×$4Ñ$4Ñ$K°v×7JÑ7JÑ$K�Õ!ä›EˆDŒMÜ $× 0Ñ 0Ó 2ˆDÔà ˆŒô ›%ˆŒô
 !$£ˆÔô
 !$£ˆÔô "%£ˆÔô  ×+Ñ+Ó-ˆÔàˆŒ	àÐØ×Ñ Ô%àŸ™×4Ñ4×AÑAØ×!Ñ!ó
ˆñ Ü×.Ñ.Ø9Ø—)‘)˜MÓ*ñ+óð ð ùòc Is   ÂHc                 ó2   — t        | j                  || fi |¤ŽS )zUcreate a new Identifiers for a new Node, with
        this Identifiers as the parent.)rz   r4   )r'   r   rG   s      r!   r�   z_Identifiers.branchH  s   € ô ˜DŸM™M¨4°Ñ@¸Ñ@Ð@r#   c                 óz   — t        | j                  j                  | j                  «      j	                  «       «      S r&   )rw   r‚   rx   rÕ   r…   rZ   s    r!   rL   z_Identifiers.defsN  s-   € ä�4×$Ñ$×*Ñ*¨4×+;Ñ+;Ó<×CÑCÓEÓFÐFr#   c                 ó†  — dt        | j                  «      ›dt        | j                  «      ›dt        | j                  «      ›d| j                  j                  «       D �cg c]  }|j                  ‘Œ c}›d| j                  j                  «       D �cg c]  }|j                  ‘Œ c}›d| j                  ›d�S c c}w c c}w )NzIdentifiers(declared=z, locally_declared=z, undeclared=z, topleveldefs=z, closuredefs=z, argumentdeclared=rÊ   )	rŠ   r{   r×   rÔ   r‚   r…   rJ   rÕ   r    )r'   râ   s     r!   Ú__repr__z_Identifiers.__repr__R  s“   � ô �T—]‘]Õ#Ü�T×*Ñ*Õ+Ü�T—_‘_Õ%Ø!%×!2Ñ!2×!9Ñ!9Ô!;Ó<Ñ!;˜A�—“Ð!;Ó<Ø!%×!1Ñ!1×!8Ñ!8Ô!:Ó;Ñ!:˜A�—“Ð!:Ó;Ø×&Ó&ð
ð	
ùò =ùÚ;s   Á B9ÂB>c                 ó   — |j                  «       D ]K  }|dk7  sŒ	|| j                  j                  | j                  «      vsŒ1| j                  j                  |«       ŒM |j                  «       D ]  }| j                  j                  |«       Œ y)zlupdate the state of this Identifiers with the undeclared
        and declared identifiers of the given node.r   N)r	  r{   rx   r×   rÔ   r¡   ry   ©r'   r   ræ   s      r!   Úcheck_declaredz_Identifiers.check_declareda  s}   € ð ×0Ñ0Ö2ˆEØ˜	Ó! e°4·=±=×3FÑ3FØ×%Ñ%ó4ò 'ð —‘×#Ñ# EÕ*ð	 3ð
 ×.Ñ.Ö0ˆEØ×!Ñ!×%Ñ% eÕ,ñ 1r#   c                 óŽ   — | j                   j                  |«       || j                  v r| j                  j                  |«       y y r&   )r{   r¡   rÔ   Úremove)r'   ræ   s     r!   rL  z_Identifiers.add_declaredm  s7   € Ø�‰×Ñ˜%Ô Ø�D—O‘OÑ#Ø�O‰O×"Ñ" 5Õ)ð $r#   c                 ó&   — | j                  |«       y r&   ©r^  r°   s     r!   r  z_Identifiers.visitExpressionr  ó   € Ø×Ñ˜DÕ!r#   c                 ó&   — | j                  |«       y r&   rb  r°   s     r!   r/  z_Identifiers.visitControlLineu  rc  r#   c                 óœ   — |j                   s@| j                  |«       | j                  j                  |j	                  «       «      | _        y y r&   )rk   r^  r¢   rx   ry   r°   s     r!   rm   z_Identifiers.visitCodex  sA   € Ø�}Š}Ø×Ñ Ô%Ø$(×$9Ñ$9×$?Ñ$?Ø×)Ñ)Ó+ó%ˆDÕ!ð r#   c                 óf   — | j                   |u r#|j                  D ]  }|j                  | «       Œ y y r&   )r   ru   rv   ©r'   r   rŒ   s      r!   rg   z_Identifiers.visitNamespaceTag  s1   € ð �9‰9˜ÑØ—Z”Z�Ø× Ñ  Õ&ñ  ð r#   c                 óò   — |j                  |j                  «      }|||j                  <   |�K||urF|j                  s|j                  r-t        j                  d|j                  z  fi |j
                  ¤Ž‚y y y )Nz<%%def or %%block named '%s' already exists in this template.)rA   r:   rB   r   rÁ   rÂ   )r'   Ú
collectionr   Úexistings       r!   Ú_check_name_existsz_Identifiers._check_name_exists‡  s‚   € Ø—>‘> $§-¡-Ó0ˆØ$(ˆ
�4—=‘=Ñ!àÐ Ø Ñ$Ø—’ (×"3Ò"3ä×-Ñ-ð+Ø-1¯]©]ñ;ñð ×'Ñ'ñð ð #4ð %ð !r#   c                 óH  — |j                  «       r)|j                  s| j                  | j                  |«       n*|| j                  ur| j                  | j
                  |«       |j                  «       D ]K  }|dk7  sŒ	|| j                  j                  | j                  «      vsŒ1| j                  j                  |«       ŒM || j                  u rS|j                  «       D ]  }| j                  j                  |«       Œ |j                  D ]  }|j                  | «       Œ y y ©Nr   )rà   rC   rk  r‚   r   rÕ   r	  r{   rx   r×   rÔ   r¡   ry   r    ru   rv   ©r'   r   ræ   rŒ   s       r!   rº   z_Identifiers.visitDefTag•  só   € Ø�<‰<Œ> $×"3Ò"3Ø×#Ñ# D×$5Ñ$5°tÕ<Ø˜Ÿ™Ñ"Ø×#Ñ# D×$4Ñ$4°dÔ;à×0Ñ0Ö2ˆEØ˜	Ó! e°4·=±=×3FÑ3FØ×%Ñ%ó4ò 'ð —‘×#Ñ# EÕ*ð	 3ð �4—9‘9ÑØ×2Ñ2Ö4�Ø×&Ñ&×*Ñ*¨5Õ1ð 5ð —Z”Z�Ø× Ñ  Õ&ñ  ð	 r#   c                 ó  — || j                   ur×|j                  sËt        | j                   t        j                  «      rEt        j                  d|j                  ›d| j                   j                  ›d�fi |j                  ¤Ž‚t        | j                   t        j                  t        j                  f«      r.t        j                  d|j                  ›d�fi |j                  ¤Ž‚|j                  «       D ]K  }|dk7  sŒ	|| j                  j                  | j                  «      vsŒ1| j                  j!                  |«       ŒM |j                  sB| j#                  | j$                  |«       | j                  j!                  |j&                  «       n*|| j                   ur| j#                  | j(                  |«       |j+                  «       D ]  }| j,                  j!                  |«       Œ |j.                  D ]  }|j1                  | «       Œ y )NzNamed block 'z' not allowed inside of def 'Ú'z#' not allowed inside of <%call> tagr   )r   rC   r6   r   r7   r   rÁ   rJ   rÂ   ÚCallTagÚCallNamespaceTagr	  r{   rx   r×   rÔ   r¡   rk  r‚   r:   rÕ   ry   r    ru   rv   rn  s       r!   r½   z_Identifiers.visitBlockTag©  s¦  € Ø�t—y‘yÑ ¨×):Ò):Ü˜$Ÿ)™)¤Y×%5Ñ%5Ô6Ü ×1Ò1à—y“y $§)¡)§.£.ð2ñð ×+Ñ+ñð ô
 Ø—	‘	œI×-Ñ-¬y×/IÑ/IÐJôô !×1Ò1à—y“yð#ñð ×+Ñ+ñð ð ×0Ñ0Ö2ˆEØ˜	Ó! e°4·=±=×3FÑ3FØ×%Ñ%ó4ò 'ð —‘×#Ñ# EÕ*ð	 3ð × Ò Ø×#Ñ# D×$5Ñ$5°tÔ<Ø�O‰O×Ñ §¡Õ.Ø˜Ÿ™Ñ"Ø×#Ñ# D×$4Ñ$4°dÔ;Ø×.Ñ.Ö0ˆEØ×"Ñ"×&Ñ& uÕ-ð 1à—”ˆAØ×Ñ˜TÕ"ñ r#   c                 óÀ   — |j                  «       D ]K  }|dk7  sŒ	|| j                  j                  | j                  «      vsŒ1| j                  j                  |«       ŒM y rm  )r	  r{   rx   r×   rÔ   r¡   r]  s      r!   r4  z_Identifiers.visitTextTagÊ  sR   € Ø×0Ñ0Ö2ˆEØ˜	Ó! e°4·=±=×3FÑ3FØ×%Ñ%ó4ò 'ð —‘×#Ñ# EÕ*ñ	 3r#   c                 ó&   — | j                  |«       y r&   rb  r°   s     r!   r7  z_Identifiers.visitIncludeTagÑ  rc  r#   c                 ó†   — |j                  «       D ]  }| j                  j                  |«       Œ | j                  |«       y r&   )ry   r    r¡   r^  r]  s      r!   ri   z_Identifiers.visitPageTagÔ  s7   € Ø×.Ñ.Ö0ˆEØ×"Ñ"×&Ñ& uÕ-ð 1à×Ñ˜DÕ!r#   c                 ó&   — | j                  |«       y r&   r=  r°   s     r!   r?  z"_Identifiers.visitCallNamespaceTagÙ  s   € Ø×Ñ˜$Õr#   c                 ó>  — || j                   u r±|j                  «       D ]K  }|dk7  sŒ	|| j                  j                  | j                  «      vsŒ1| j
                  j                  |«       ŒM |j                  «       D ]  }| j                  j                  |«       Œ |j                  D ]  }|j                  | «       Œ y |j                  «       D ]K  }|dk7  sŒ	|| j                  j                  | j                  «      vsŒ1| j
                  j                  |«       ŒM y rm  )r   r	  r{   rx   r×   rÔ   r¡   ry   r    ru   rv   rn  s       r!   r>  z_Identifiers.visitCallTagÜ  sõ   € Ø�4—9‘9ÑØ×4Ñ4Ö6�Ø˜IÓ%¨%°t·}±}×7JÑ7JØ×)Ñ)ó8ò +ð —O‘O×'Ñ'¨Õ.ð	 7ð
 ×2Ñ2Ö4�Ø×&Ñ&×*Ñ*¨5Õ1ð 5à—Z”Z�Ø× Ñ  Õ&ñ  ð ×4Ñ4Ö6�Ø˜IÓ%¨%°t·}±}×7JÑ7JØ×)Ñ)ó8ò +ð —O‘O×'Ñ'¨Õ.ñ	 7r#   )NNF)r)   r*   r+   rO  r(   r�   rP  rL   r[  r^  rL  r  r/  rm   rg   rk  rº   r½   r4  r7  ri   r?  r>  r,   r#   r!   rz   rz     st   „ áMóAòFAð ñGó ðGò
ò
-ò*ò
"ò"òò'òò'ò(#òB+ò"ò"ò
 ó/r#   rz   zã^for\s+((?:\(?)\s*(?:\(?)\s*[A-Za-z_][A-Za-z_0-9]*(?:\s*,\s*(?:[A-Za-z_][A-Za-z_0-9]*),??)*\s*(?:\)?)(?:\s*,\s*(?:(?:\(?)\s*[A-Za-z_][A-Za-z_0-9]*(?:\s*,\s*(?:[A-Za-z_][A-Za-z_0-9]*),??)*\s*(?:\)?)),??)*\s*(?:\)?))\s+in\s+(.*):c                 óz  — t        «       }| j                  |«       |j                  r‡d| j                  d   _        t
        j                  | j                  «      }|r:|j                  d|j                  d«      z  d«       d|j                  d«      z  }|S t        d| j                  z  «      ‚| j                  }|S )	z—converts a for loop into a context manager wrapped around a for loop
    when access to the `loop` variable has been detected in the for loop body
    TrY   zloop = __M_loop._enter(%s)rt   r™   zfor %s in loop:rÌ   zCouldn't apply loop context: %s)ÚLoopVariablerv   Údetectedru   r+  Ú	_FOR_LOOPr  r«   rT   r  ÚSyntaxError)r   r    Úloop_variabler  r«   s        r!   r,  r,  ú  s¨   € ô !“N€MØ×Ñ˜Ô&Ø×ÒØ*.ˆ�
‰
�2‰Ô'Ü—‘ §	¡	Ó*ˆÙØ×ÑØ,¨u¯{©{¸1«~Ñ=Øôð
 % u§{¡{°1£~Ñ5ˆDð
 €Kô Ð?À$Ç)Á)ÑKÓLÐLà�y‰yˆØ€Kr#   c                   ó.   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zy)ry  zQA node visitor which looks for the name 'loop' within undeclared
    identifiers.c                 ó   — d| _         y )NF)rz  rZ   s    r!   r(   zLoopVariable.__init__  s	   € Øˆ�r#   c                 ó„   — d|j                  «       v rd| _        y |j                  «       D ]  }|j                  | «       Œ y )Nr   T)r	  rz  r-  rv   rg  s      r!   Ú_loop_reference_detectedz%LoopVariable._loop_reference_detected  s;   € Ø�T×0Ñ0Ó2Ñ2Ø ˆD�Mà×&Ñ&Ö(�Ø× Ñ  Õ&ñ )r#   c                 ó&   — | j                  |«       y r&   ©r�  r°   s     r!   r/  zLoopVariable.visitControlLine   ó   € Ø×%Ñ% dÕ+r#   c                 ó&   — | j                  |«       y r&   rƒ  r°   s     r!   rm   zLoopVariable.visitCode#  r„  r#   c                 ó&   — | j                  |«       y r&   rƒ  r°   s     r!   r  zLoopVariable.visitExpression&  r„  r#   N)	r)   r*   r+   rO  r(   r�  r/  rm   r  r,   r#   r!   ry  ry    s    „ ñòò'ò,ò,ó,r#   ry  )rO  rU   rÝ   r   Úmakor   r   r   r   r   Ú
mako.pygenr   r~   r„   rx   ÚRESERVED_NAMESÚ	frozensetr"   r   r   rz   r{  r,  ry  r,   r#   r!   Ú<module>r‹     sÄ   ðñó Û 	Û å Ý Ý Ý Ý Ý $ð €ð
 !Ð"2Ð3Ð Ø˜VÐ$×*Ñ*Ð+<Ó=€ð ØØØØØØØØÙ“;ó%÷P-ñ -÷8[
ñ [
÷|k/ñ k/ð\ ˆB�J‰Jð&ó€	ò÷.,ò ,r#   