Files
intellecton/venv/lib/python3.12/site-packages/jinja2/__pycache__/compiler.cpython-312.pyc
T

562 lines
102 KiB
Plaintext
Raw Normal View History

Ë
LÀj“!ãó —dZddlZddlmZddlmZddlmZddl m
Z
ddl m Z
ddlmZdd lmZd
d lmZd
d lmZd
d
lmZd
dlmZd
dlmZd
dlmZd
dlmZd
dlmZd
dlmZd
dlmZd
dlm Z d
dl!m"Z"ejFr
ddl$Z%d
dl&m'Z'ejPdejRdejTf¬«Z+dddddd d!d"d#œZ,d$e+d%e+fd&„Z-d'e.d%ejRd(ej^d)gdffd*„Z0d'e.d%ejRd(ejbd)gdffd+„Z2 dFd,ejfd-d.d/ejhe.d0ejhe.d1ejhejjd2e6d3e6d%ejhe.fd4„Z7d5ejTd%e6fd6„Z8d7ejrejtd8ejre.d%ejve.fd9„Z<Gd:„d;«Z=Gd<„d)«Z>Gd=„d>e?«Z@Gd?„d@e"«ZAGdA„dBe"«ZBGdC„dDeC«ZDGdE„d(e"«ZEy)Gz0Compiles nodes from the parser into Python code.éN)Úcontextmanager)Úupdate_wrapper)ÚStringIO)Úchain)Ú iskeyword)Úescape)ÚMarkupé)Únodes)ÚTemplateAssertionError)ÚSymbols)ÚVAR_LOAD_ALIAS)ÚVAR_LOAD_PARAMETER)ÚVAR_LOAD_RESOLVE)ÚVAR_LOAD_UNDEFINED)Ú EvalContext)Ú Optimizer)Ú_PassArg)Úconcat)Ú NodeVisitor)Ú EnvironmentÚF.)Úboundz==z!=ú>z>=ú<z<=Úinznot in)ÚeqÚneÚgtÚgteqÚltÚlteqrÚnotinÚfÚreturnc
�dddtjdddtjdtjf
ˆfd„ }t |‰«S) NÚselfÚ
CodeGeneratorÚnodeÚframeÚFrameÚkwargsr%cóØ•—|j�S|jjs=|jj||j«}||k7r|j||«S‰|||fi|¤ŽS©N)Ú optimizerÚeval_ctxÚvolatileÚvisit)r'r)r*r,Únew_noder$s €úR/home/antigravity/intellecton/venv/lib/python3.12/site-packages/jinja2/compiler.pyÚnew_funczoptimizeconst.<locals>.new_func.sbø€ð �>‰>Ð %¨e¯n©n×.EÒ.EØ—~‘~×+Ñ+¨D°%·.±.ÓAˆHà˜4ÒØ—z‘z (¨EÓ2Ð2á��t˜UÑ- fÑ-Ð-ó)r ÚExprÚtÚAnyr)r$r5s` r4Ú
optimizeconstr:-sKø€ð
.Øð
.Ü%*§Z¡Zð
.Ø8?ð
.ÜKLÏ5É5ð
.ä
�‰õ
.ô ˜( AÓ &Ð&r6Úopr(r+c óZ‡—tdddtjdtddfˆfd„ «}|S)Nr'r(r)r*r%cóþ•—|jjrw‰|jjvr_|jd‰›d�«|j |j
|«|jd«|j |j |«n^|jd«|j |j
|«|jd‰›d�«|j |j |«|jd«y)Nz environment.call_binop(context, ú, ú(ú ú))Ú environmentÚ sandboxedÚintercepted_binopsÚwriter2ÚleftÚright©r'r)r*r;s €r4Úvisitorz_make_binop.<locals>.visitor>s»ø€ð
× Ñ × &Ò &¨2°×1AÑ1A×1TÑ1TÑ+Tà �J‰JÐ9¸"¸¸rÐBÔ CØ �J‰J�t—y‘y %Ô (Ø �J‰J�tÔ Ø �J‰J�t—z‘z 5Õ )à �J‰J�sŒOØ �J‰J�t—y‘y %Ô (Ø �J‰J˜˜2˜$˜a�yÔ !Ø �J‰J�t—z‘z 5Ô )à �
‰
�3�r6)r:r ÚBinExprr+©r;rIs` r4Ú _make_binoprL=s<ø€Üð�oð¬U¯]©]ðÄ5ðÈTôóðð €Nr6c óZ‡—tdddtjdtddfˆfd„ «}|S)Nr'r(r)r*r%cóH•—|jjrJ‰|jjvr2|jd‰›d�«|j |j
|«n0|jd‰z«|j |j
|«|jd«y)Nzenvironment.call_unop(context, r>r?rA)rBrCÚintercepted_unopsrEr2r)rHs €r4rIz_make_unop.<locals>.visitorUs|ø€ð
× Ñ × &Ò &¨2°×1AÑ1A×1SÑ1SÑ+Sà �J‰JÐ8¸¸¸bÐAÔ BØ �J‰J�t—y‘y %Õ (à �J‰J�s˜R‘xÔ Ø �J‰J�t—y‘y %Ô (à �
‰
�3�r6)r:r Ú UnaryExprr+rKs` r4Ú
_make_unoprQRs>ø€ôð
�oð
¬U¯_©_ð
ÄUð
Ètô
óð
ð €Nr6r)rBrÚnameÚfilenameÚstreamÚ
defer_initÚ optimizedcóÔ—t|tj«s td«‚|j ||||||«}|j |«|€|j j«Sy)z+Generate the python source for a node tree.z Can't compile non template nodesN)Ú
isinstancer ÚTemplateÚ TypeErrorÚcode_generator_classr2rTÚgetvalue)r)rBrRrSrTrUrVÚ generators r4Úgenerater^esf€ô �dœEŸN™NÔ +ÜÐ:Ó;Ð;à×0Ñ0Ø�T˜8 V¨Z¸ó€Ið‡O�O�DÔà
€~Ø×Ñ×(Ñ(Ó*Ð*à r6ÚvaluecóT—|�|tus|turyt|«ttt
t ttthvryt|«tttthvrtd„|D««St|«tur td„|j!«D««Sy)z)Does the node have a safe representation?Tc3ó2K—|]}t|«–—Œy­wr.©Ú
has_safe_repr)Ú.0Úvs r4ú <genexpr>z has_safe_repr.<locals>.<genexpr>†sèø€Ò3¨”= ×#Ñ3ùs‚c3óRK—|]\}}t|«xr t|«–—Œ!y­wr.rb©rdÚkres r4rfz has_safe_repr.<locals>.<genexpr>‰s&èø€ÒS¹T¸QÀ”= Ó#Ò8¬
°aÓ(8Ó8ÑSùs‚%'F)ÚNotImplementedÚEllipsisÚtypeÚboolÚintÚfloatÚcomplexÚrangeÚstrr ÚtupleÚlistÚsetÚ frozensetÚallÚdictÚitems©r_s r4rcrc}s‚€à €}˜¤Ñ/°5¼HÑ3DØä ˆEƒ{”tœS¤%¬´%¼¼fÐEÑEØä ˆEƒ{”uœd¤C¬Ð3Ñ3ÜÑ3¨UÔ3Ó3Ð3ä ˆEƒ{”dÑÜÑSÀUÇ[Á[Ã]ÔSÓSÐSà r6r Únamescó˜—t|«} |D]}|j|«Œ |jS#t$rY|jSwxYw)z”Check if the names passed are accessed undeclared. The return value
is a set of all the undeclared names from the sequence of names found.
)ÚUndeclaredNameVisitorr2Ú VisitorExitÚ
undeclared)r r{rIr)s r4Úfind_undeclaredr€Žs\€ô $ EÓ*€Gð
Øò ˆDØ �M‰M˜$Õ ñ ð × Ñ Ðøô ò
Ø Ø × Ñ Ðð
ús�2² A ÁA cób—eZdZdejej ejfddfd„Zy)ÚMacroRefr)r%Ncó<—||_d|_d|_d|_y©NF)r)Úaccesses_callerÚaccesses_kwargsÚaccesses_varargs©r'r)s r4Ú__init__zMacroRef.__init__žs!€ØˆŒ Ø$ˆÔØ$ˆÔØ %ˆÕr6) Ú__name__Ú
__module__Ú __qualname__r8ÚUnionr ÚMacroÚ CallBlockr‰©r6r4r‚r‚�s+„ð&˜QŸW™W U§[¡[°%·/±/Ð%AÑBð&Àtô&r6r‚c óˆ—eZdZdZ d dedej ddej eddfd„Zd
d„Z dd e
ddfd
„Z d
d „Z e Z
y)r+z&Holds compile time information for us.Nr0ÚparentÚlevelr%cóV—||_||_|€'t|¬«|_d|_d|_d|_nOt|j|¬«|_|j|_|j
|_|j |_d|_d|_d|_ d|_
d|_ y)N©r“F) r0r’r
ÚsymbolsÚrequire_output_checkÚbufferÚblockÚtoplevelÚ rootlevelÚ
loop_frameÚ block_frameÚ
soft_frame)r'r0r’r“s r4r‰zFrame.__init__¨s¥€ð !ˆŒ
ðˆŒ à ˆ>Ü"¨Ô/ˆDŒLð).ˆDÔ %ð ,0ˆDŒKð+/ˆD�Jô# 6§>¡>¸Ô?ˆDŒLØ(.×(CÑ(CˆDÔ %Ø Ÿ-™-ˆDŒKØŸ™ˆDŒJðˆŒ
ð
ˆŒð ˆŒØ ˆÔð
 ˆ�r6cóÌ—tj|j«}|jj |j«|j
j
«|_|S)z!Create a copy of the current one.)ÚobjectÚ__new__Ú __class__Ú__dict__Úupdater–Úcopy©r'Úrvs r4r¥z
Frame.copyÛsC€ä
�^‰^˜DŸN™NÓ
+ˆØ
� ‰ ×ј4Ÿ=™=Ô)Ø—\‘\×&Ñ&Ó(ˆŒ
؈ r6ÚisolatedcóŽ—|r.t|j|jjdz¬«St|j|«S)zReturn an inner frame.r
r•)r+r0r–r“)r'r¨s r4Úinnerz Frame.innerâs6€á ܘŸ™¨d¯l©l×.@Ñ.@À1Ñ.DÔEÐ EÜ�T—]‘] DÓ)Ð)r6cóB—|j«}d|_d|_|S)a&Return a soft frame. A soft frame may not be modified as
standalone thing as it shares the resources with the frame it
was created of, but it's not a rootlevel frame any longer.
This is only used to implement if-statements and conditional
expressions.
FT)r¥r›ržr¦s r4Úsoftz
Frame.softès"€ð�Y‰Y‹[ˆØˆŒ ؈Œ
؈ r6)NN)r%zte.Self©F)rŠr‹rŒÚ__doc__rr8ÚOptionalrnr‰r¥rmrªr¬Ú__copy__r�r6r4r+r+¥sn„Ù0ð
'+Ø!%ñ 1 àð1 ð—
‘
˜7Ñ#ð1 ð�z‰z˜#‰ð 1 ð
ó 1 ófñ*˜dð*¨wó*ó ð�Hr6có—eZdZdZy)r~z?Exception used by the `UndeclaredNameVisitor` to signal a stop.N©rŠr‹rŒr®r�r6r4r~r~øs„ÚIr6r~có„—eZdZdZd d„Zdej ddfd„Zdejddfd„Z dejddfd„Z y)
ÚDependencyFinderVisitorz.A visitor that collects filter and test calls.r%Ncó@—t«|_t«|_yr.)ruÚfiltersÚtests©r's r4r‰z DependencyFinderVisitor.__init__ÿs€Ü#&£5ˆŒ Ü!$£ˆ�
r6r)cóp—|j|«|jj|j«yr.)Ú
generic_visitr¶ÚaddrRrˆs r4Ú visit_Filterz$DependencyFinderVisitor.visit_Filters&€Ø ×ј4Ô Ø � ‰ ×јŸ™Õ#r6cóp—|j|«|jj|j«yr.)rºr·r»rRrˆs r4Ú
visit_Testz"DependencyFinderVisitor.visit_Tests$€Ø ×ј4Ô Ø �
‰
�‰�t—y‘yÕ!r6có—y)zStop visiting at blocks.Nr�rˆs r4Ú visit_Blockz#DependencyFinderVisitor.visit_Block ó�r6©r%N) rŠr‹rŒr®r‰r ÚFilterr¼ÚTestr¾ÚBlockrÀr�r6r4r´r´üsO„Ù8ó'ð$ §¡ð$°$ó$ð"˜uŸz™zð"¨dó"ð' § ¡ ð'°ô'r6r´có‚—eZdZdZdej
eddfd„Zdejddfd„Z
dejddfd„Z y) r}z¡A visitor that checks if a name is accessed without being
declared. This is different from the frame visitor as it will
not stop at closure frames.
r{r%NcóB—t|«|_t«|_yr.)rur{r)r'r{s r4r‰zUndeclaredNameVisitor.__init__s€Ü˜“ZˆŒ
Ü&)£eˆ�r6r)có.—|jdk(ra|j|jvrI|jj |j«|j|jk(r
t «‚y|jj
|j«y)NÚload)ÚctxrRr{rr»r~Údiscardrˆs r4Ú
visit_Namez UndeclaredNameVisitor.visit_Namesh€Ø �8‰8�vÒ  $§)¡)¨t¯z©zÑ"9Ø �O‰O× Ñ  § ¡ Ô *Ø�‰ $§*¡*Ò,Ü!“mÐ#ð-ð
�J‰J× Ñ ˜tŸy™yÕ )r6có—y)zStop visiting a blocks.Nr�rˆs r4rÀz!UndeclaredNameVisitor.visit_Block!rÁr6)
rŠr‹rŒr®r8ÚIterablerrr‰r ÚNamerÌrÅrÀr�r6r4r}r}sP„ñð
,˜aŸj™j¨™oð,°$ó,ð*˜uŸz™zð*¨dó*ð& § ¡ ð&°ô&r6r}có—eZdZdZy)Ú CompilerExitz¼Raised if the compiler encountered a situation where it just
doesn't make sense to further process the code. Any block that
raises such an exception is not further processed.
Nr²r�r6r4rÑrÑ%s„òr6rÑcóZ—eZdZU dŠdddejedejedejej deded dfd
„Ze d efd „«Z
d ed
e d dfd„Z d efd„Z
ded dfd„Z d‹deded dfd„ZdŒd„Zd�de d dfd„ZdŽdedejej(d dfd„Zded dfd„Z dŽdededejej(d dfd„Zdej0ej(ded dfd„Zded dfd „Z d�dedejej(d!e d dfd"„Zd�dejej(d!e d dfd#„Z dŽdej:ej<ej>ej@fded$ejejBeejDfd dfd%„Z#dej0ej(d dfd&„Z$ded dfd'„Z%d‹ded(ed dfd)„Z&d�d*ed+ed efd,„Z'ded efd-„Z(dej:ejRejTfded ejVee,ffd.„Z-d/e,ded dfd0„Z.dej(d efd1„Z/ded efd2„Z0dŒd3„Z1ded dfd4„Z2dŒd5„Z3d6ed dfd7„Z4d6ed dfd8„Z5dŒd9„Z6d efd:„Z7d efd;„Z8ded efd<„Z9d6ed efd=„Z:dŒd>„Z;ded dfd?„Z< dŽdejzdejed dfd@„Z>dej~ded dfdA„Z@dej‚ded dfdB„ZBdej†ded dfdC„ZDdej:ejŠejŒfded dfdD„ZGdejŠded dfdE„ZHdejŒded dfdF„ZIdej”ded dfdG„ZKdej˜ded dfdH„ZMdejRded dfdI„ZNdejTded dfdJ„ZOdej ded dfdK„ZQdej¤ded dfdL„ZSdej¨ded dfdM„ZUGdN„dOej¬«ZWeXdPejDd ejDfdQ„«ZYdZZejeWe[dR<d eWfdS„Z\dTej0ejDd efdU„Z]dej¼dedVeWd efdW„Z_dej¼dedVeWd dfdX„Z`dej¼dedVeWd dfdY„ZadejÄded dfdZ„ZcdejÈded dfd[„ZedejÌded dfd\„ZgdejÐded dfd]„ZidejÔded dfd^„ZkdejØded dfd_„ZmdejÜded dfd`„ZodejVded dfda„Zpdejâded dfdb„Zrdejæded dfdc„Zteudd«Zveude«Zweudf«Zxeudg«Zyeudh«Zzeudi«Z{eudj«Z|eudk«Z}eudl«Z~edd«Z€ede«Z�edm«Z‚eƒde�jded dfdn„«Z…eƒde�j ded dfdo„«Z‡de�jded dfdp„Z‰eƒde�jded dfdq„«Z‹eƒde�jded dfdr„«Z�de�jded dfds„Z�e�dej:ej>ej@fdedted e�j"dfdu„«Z’eƒdej>ded dfdv„«Z“eƒdej@ded dfdw„«Z”eƒde�j*ded dfdx„«Z–eƒ d‹dej<dedyed dfdz„«Z—de�j0ded dfd{„Z™de�j4ded dfd|„Z›de�j8ded dfd}„Z�de�j<ded dfd~„ZŸde�j@ded dfd„Z¡de�jDded dfd€„Z£de�jHded dfd�„Z¥de�jLded dfd‚„Z§de�jPded dfdƒ„Z©de�jTded dfd„„Z«de�jXded dfd…„Z­de�j\ded dfd†„Z¯de�j`ded dfd‡„Z±de�jdded dfdˆ„Z³de�jhded dfd‰„Zµy)‘r(NrBrrRrSrTrUrVr%có’—|€
t«}||_||_||_||_d|_||_d|_|rt|«|_i|_ i|_
d|_ d|_ d|_
i|_i|_g|_d|_d|_d|_d|_d|_d|_g|_g|_dg|_y)NFrr
TÚcontext)rrBrRrSrTÚcreated_block_contextrUr/rÚimport_aliasesÚblocksÚextends_so_farÚhas_known_extendsÚ code_linenor·r¶Ú
debug_infoÚ_write_debug_infoÚ
_new_linesÚ
_last_lineÚ _first_writeÚ_last_identifierÚ _indentationÚ
_assign_stackÚ_param_def_blockÚ_context_reference_stack)r'rBrRrSrTrUrVs r4r‰zCodeGenerator.__init__-sô€ð ˆ>Ü“ZˆFØ&ˆÔ؈Œ Ø ˆŒ
؈Œ Ø%*ˆÔ"Ø$ˆŒØ04ˆŒá Ü& {Ó3ˆDŒNð13ˆÔð13ˆŒ ð ˆÔð
"'ˆÔðˆÔð(*ˆŒ
Ø)+ˆŒ ð68ˆŒØ26ˆÔðˆŒðˆŒð!ˆÔð!"ˆÔðˆÔð24ˆÔð57ˆÔð*3¨ ˆÕ%r6có—|jduSr.)r/r¸s r4rVzCodeGenerator.optimizedvs€à�~‰~ TÐ)Ð)r6ÚmsgÚlinenoz te.NoReturncóF—t|||j|j«‚)z*Fail with a :exc:`TemplateAssertionError`.)r rRrS)r'rærçs r4ÚfailzCodeGenerator.fail|s€ä$ S¨&°$·)±)¸T¿]¹]ÓKÐKr6cóJ—|xjdz
c_d|j›�S)zGet a new unique identifier.r
Út_)ràr¸s r4Útemporary_identifierz"CodeGenerator.temporary_identifier€s'€à ×Ò Ñ"ÕØ�D×)Ñ)Ð*Ð+Ð+r6r*cój—|j«|_|j|j›d�«y)z7Enable buffering for the frame from that point onwards.z = []N)rìr˜Ú writeline©r'r*s r4r˜zCodeGenerator.buffer…s)€à×0Ñ0Ó2ˆŒ Ø �‰˜%Ÿ,™,˜ uÐ-Õ.r6Úforce_unescapedcó —|sí|jjr¡|jd«|j«|jd|j›d�«|j «|jd«|j«|jd|j›d�«|j «y|jj r |jd|j›d�«y|jd|j›d�«y)z(Return the buffer contents of the frame.zif context.eval_ctx.autoescape:zreturn Markup(concat(ú))úelse:zreturn concat(rAN)r0r1rîÚindentr˜ÚoutdentÚ
autoescape)r'r*rðs r4Úreturn_buffer_contentsz$CodeGenerator.return_buffer_contentsŠsÊ€ñØ�~‰~×&Ò&Ø—‘Ð@ÔAØ— ‘ ”
Ø—‘Ð!6°u·|±|°nÀBÐGÔHØ— ‘ ”Ø—‘˜wÔ'Ø— ‘ ”
Ø—‘ °· ± ¨~¸QÐ?Ô@Ø— ‘ ”ØØ—‘×*Ò*Ø—‘Ð!6°u·|±|°nÀBÐGÔHØØ �‰˜¨¯ ©  ~°QÐ7Õ8r6có.—|xjdz
c_y)zIndent by one.r
N©rár¸s r4rôzCodeGenerator.indentžs€à ×Ò˜QÑÖr6Ústepcó.—|xj|zc_y)zOutdent by step.Nrù)r'rús r4rõzCodeGenerator.outdent¢s€à ×Ò˜TÑ!Ör6r)có€—|j€|jd|«y|j|j›d�|«y)z%Yield or write into the frame buffer.Núyield ú.append()r˜rî)r'r*r)s r4Ú start_writezCodeGenerator.start_write¦s3€à �<‰<Ð Ø �N‰N˜8 TÕ *à �N‰N˜eŸl™l˜^¨8Ð4°dÕ ;r6có@—|j�|jd«yy)z1End the writing process started by `start_write`.NrA)r˜rErïs r4Ú end_writezCodeGenerator.end_write­s€à �<‰<Ð #Ø �J‰J�s�Oð $r6Úscól—|j||«|j|«|j|«y)z4Simple shortcut for start_write + write + end_write.N)rÿrEr)r'rr*r)s r4Ú simple_writezCodeGenerator.simple_write²s+€ð
×ј Ô%Ø �
‰
�1Œ
Ø �‰�uÕr6r cóx— |jd«|D]}|j||«Œy#t$rYywxYw)z•Visit a list of nodes as block in a frame. If the current frame
is no buffer a dummy ``if 0: yield None`` is written automatically.
ÚpassN)rîr2rÑ)r'r r*r)s r4Ú
blockvisitzCodeGenerator.blockvisitºsB€ð Ø �N‰N˜6Ô "Øò
(�ؗ
‘
˜4 Õ'ñ
(øäò Ù ð ús ‚*-­ 9¸9Úxcóì—|jrÍ|js‹|jjd|jz«|xj|jz
c_|j
�8|j j|j
|jf«d|_d|_|jjd|jz«d|_|jj|«y)z&Write a string into the output stream.ú
NFz r) rÝrßrTrErÚrÜrÛÚappendrá)r'rs r4rEzCodeGenerator.writeÅs·€à �?Š?Ø×$Ò$Ø— ‘ ×!Ñ! $¨¯©Ñ"8Ô9Ø× Ò  D§O¡OÑ3Õ Ø×)Ñ)Ð5Ø—O‘O×*Ñ*¨D×,BÑ,BÀD×DTÑDTÐ+UÔVØ-1�DÔ*Ø %ˆDÔ Ø �K‰K× Ñ ˜f t×'8Ñ'8Ñ8Ô 9؈DŒOØ � ‰ ×ј!Õr6ÚextracóJ—|j||«|j|«y)z!Combination of newline and write.N)ÚnewlinerE)r'rr)r s r4rîzCodeGenerator.writelineÓs€ð
� ‰ �T˜5Ô!Ø �
‰
�1�
r6có¾—t|jd|z«|_|�=|j|jk7r#|j|_|j|_yyy)z/Add one or more newlines before the next write.r
N)ÚmaxrÝrçrÞrÜ)r'r)r s r4rzCodeGenerator.newlineÚsL€ä˜dŸo™o¨q°5©yÓ9ˆŒØ Ð  § ¡ ¨t¯©Ò >Ø%)§[¡[ˆDÔ "Ø"Ÿk™kˆD�Oð!?Ð r6Ú extra_kwargscóº—td„td„|jD«|xsd«D««}|jD]%}|j d«|j ||«Œ'|se|jD]%}|j d«|j ||«Œ'|�/|j
«D]\}}|j d|›d|›�«Œ|jr-|j d«|j |j|«|�r|j�|j d«n|j d «|jD]M}|j |j›d
�«|j |j|«|j d«ŒO|�/|j
«D]\}}|j |›d
|›d�«Œ|j�?|j d «|j |j|«|j d «y|j d
«y|j�.|j d«|j |j|«yy)a+Writes a function call to the stream for the current node.
A leading comma is added automatically. The extra keyword
arguments may not include python keywords otherwise a syntax
error could occur. The extra keyword arguments should be given
as python dict.
c3óbK—|]'}ttjt|««–—Œ)y­wr.)Úis_python_keywordr8Úcastrr)rdris r4rfz*CodeGenerator.signature.<locals>.<genexpr>ïs'èø€ò
àô
œaŸf™f¤S¨!›n× -ñ
ùs‚-/c3ó4K—|]}|j–—Œy­wr.)Úkey©rdrs r4rfz*CodeGenerator.signature.<locals>.<genexpr>ñsèø€Ò7 a˜AŸE�EÑ7ùó‚r�r>Nú=z, *z
, **dict({z, **{ú: z}, **rAú}z, **) Úanyrr,ÚargsrEr2ryÚdyn_argsÚ
dyn_kwargsrr_) r'r)r*rÚkwarg_workaroundÚargÚkwargrr_s r4Ú signaturezCodeGenerator.signatureás
€ôñ
äÑ7¨4¯;©;Ô7¸Ò9KÈÓLô
ó
Ðð
—9‘9ò #ˆCØ �J‰J�tÔ Ø �J‰J�s˜EÕ "ð #ñ ØŸ™ò
)�ؗ
‘
˜4Ô Ø—
‘
˜5 %Õ(ð
)ðÐ'Ø".×"4Ñ"4Ó"6ò3‘J�C˜Ø—J‘J  C 5¨¨%¨Ð1Õ2ð3à �=Š=Ø �J‰J�uÔ Ø �J‰J�t—}‘} eÔ ,â Ø�‰Ð*Ø—
‘
˜<Õ(à—
‘
˜7Ô#ØŸ™ò
!�ؗ
‘
˜eŸi™i˜]¨"Ð-Ô.Ø—
‘
˜5Ÿ;™;¨Ô.Ø—
‘
˜4Õ ð
!ðÐ'Ø".×"4Ñ"4Ó"6ò6‘J�C˜Ø—J‘J # ¨¨5¨'°Ð4Õ5ð6à�‰Ð*Ø—
‘
˜7Ô#Ø—
‘
˜4Ÿ?™?¨EÔ2Ø—
‘
˜3•à—
‘
˜3•à
�_‰_Ð
(Ø �J‰J�vÔ Ø �J‰J�t—‘¨Õ .ð)r6c
óÖ—t«}|D]}|j|«Œ|j|jdf|j|jdffD�]\}}}t |«D]ü}||vr|j «||<|j
d«|j«|j
||›d|›d|›d�«|j«|j
d«|j«|j
d«|j
d ||›d
�«|j«|j
d |d d
›d|›d�«|j«|j«Œþ�Œy )aæFind all filter and test names used in the template and
assign them to variables in the compiled namespace. Checking
that the names are registered with the environment is done when
compiling the Filter and Test nodes. If the node is in an If or
CondExpr node, the check is done at runtime instead.
.. versionchanged:: 3.0
Filters and tests in If and CondExpr nodes are checked at
runtime instead of compile time.
r¶r·útry:z = environment.ú[ú]zexcept KeyError:z
@internalcodeúdef z
(*unused):zraise TemplateRuntimeError("No Néÿÿÿÿú named z found.")) r´r2r¶r·Úsortedrìrîrôrõ)r'r rIr)Úid_mapr{Ú
dependencyrRs r4Úpull_dependencieszCodeGenerator.pull_dependenciess\€ô*Ó+ˆàò ˆDØ �M‰M˜$Õ ð ð�\‰\˜7Ÿ?™?¨IÐ 6à—
‘
Ø—
‘
Øð
ð*
ó Ñ %ˆF�E˜:ô˜u›
ò
�ؘvÑ%Ø#'×#<Ñ#<Ó#>�F˜4‘L𗑘vÔ&Ø— ‘ ”
Ø—‘ &¨¡, ¨¸z¸lÈ!ÈDÈ8ÐSTÐUÔVØ— ‘ ”Ø—‘Ð1Ô2Ø— ‘ ”
Ø—‘˜Ô/Ø—‘  f¨T¡l ^°:Ð>Ô?Ø— ‘ ”
Ø—‘Ø5°jÀÀ"°oÐ5Fؘd˜X Yð0ôð— ‘ ”Ø— ‘ •ò)
ñ r6c ó´—g}|jjj«D]‰\}\}}|tk(rŒ|tk(r)|j |›d|j
«›d|›d�«ŒE|tk(r|j |›d|›�«Œe|tk(r|j|«Œ€td«‚|r$|j dj|«›d�«yy)Nú = r?rAzunknown load instructionú
= missing) r–ÚloadsryrrrîÚget_resolve_funcrrr ÚNotImplementedErrorÚjoin)r'r*ÚundefsÚtargetÚactionÚparams r4Ú enter_framezCodeGenerator.enter_frameHsـ؈Ø',§}¡}×':Ñ':×'@Ñ'@Ó'Bò
FÑ #ˆF‘O�V˜UØÔ+Ò+ØØÔ+Ò+Ø—‘ & ¨¨T×-BÑ-BÓ-DÐ,EÀQÀuÀiÈqÐQÕRØœ>Ò)Ø—‘ & ¨¨U¨GÐ4Õ5ØÔ-Ò-Ø—
‘
˜fÕ%ä)Ð*DÓEÐEð
Fñ Ø �N‰N˜eŸj™j¨Ó0Ð1°Ð<Õ =ð r6Úwith_python_scopecó²—|sUg}|jjD]}|j|«Œ|r$|jdj |«›d�«yyy)Nr1r2)r–r3r rîr6)r'r*r<r7r8s r4Ú leave_framezCodeGenerator.leave_frameXsY€Ù ؈FØŸ-™-×-Ñ-ò
&�ؗ
‘
˜fÕ%ð
&áØ—‘ %§*¡*¨VÓ"4Ð!5°ZÐ@ÕAðð !r6Ú async_valueÚ
sync_valuecó6—|jjr|S|Sr.)rBÚis_async)r'r?r@s r4Ú choose_asynczCodeGenerator.choose_async`s€Ø"×.Ñ.×7Ò7ˆ{ÐG¸ZÐGr6có,—|j«›d|›�S)Nr))rC)r'rRs r4ÚfunczCodeGenerator.funccs€Ø×#Ñ#Ó%Ð& d¨4¨&Ð1Ð1r6c
óè—|j«}|jj|«t|«}d}t «}g}t |j «D]s\}}|jdk(r|}|jdvr|j|j«|j|jj|j««Œut|jd«} d| vrZ|�' |j|t|j «z
n*|j|jj%d««d|_d| vr5d|vr1|j|jj%d««d|_d| vr5d|vr1|j|jj%d««d|_d |_|jj|«|j/|j1d
«›d d j3|«›d
�|«|j5«|j7|«|j9|«|j;|«t |j «D]¼\}}|jj|j«}
|j/d|
›d�«|j5« |j|t|j «z
} |j/|
›d�«|j=| |«|j?|
«|jA«Œ¾|jC«|jE|j|«|jG|d¬«|jI|d¬«|jA«||fS#t$r |j!d|j"«Y�ŒvwxYw#t$r1|j/|
›d|j›d|j›d�«YŒîwxYw)z/Dump the function def of a macro or call block.NÚcaller)r,Úvarargs)rGr,rHzhWhen defining macros or call blocks the special "caller" argument must be omitted or be given a default.Tr,rHFÚmacror?r>ú):úif ú is missing:r1z = undefined("parameter z was not provided", name=rA)rð©r<)%rªr–Ú analyze_noder‚ruÚ enumeraterrRr»r Úrefr€ÚbodyÚdefaultsÚlenÚ
IndexErrorrérçÚdeclare_parameterr…r†r‡r—rîrEr6rôr˜r;Úpush_parameter_definitionsr2Úmark_parameter_storedrõÚpop_parameter_definitionsrr÷r>) r'r)r*Ú macro_refÚexplicit_callerÚskip_special_paramsrÚidxr"rrPÚdefaults r4Ú
macro_bodyzCodeGenerator.macro_bodyfsb€ð— ‘ “
ˆØ
�
‰
×"Ñ" 4Ô(ܘT“Nˆ àˆÜ!›eÐØˆä! $§)¡)Ó,ò 5‰HˆC�Ø�x‰x˜8Ò#Ø"%�Ø�x‰xÐ0Ñ0Ø#×'Ñ'¨¯©Ô1Ø �K‰K˜Ÿ
™
×)Ñ)¨#¯(©(Ó3Õ 4ð  5ô% T§Y¡YÐ0OÓPˆ
à �zÑ !ðÐ*ðØ—M‘M /´C¸¿ ¹ ³NÑ"BÓCð— ‘ ˜EŸM™M×;Ñ;¸HÓEÔFØ(,ˆIÔ %Ø �zÑ ! hÐ6IÑ&IØ �K‰K˜Ÿ
™
×7Ñ7¸ÓAÔ BØ(,ˆIÔ %Ø ˜
Ñ " yÐ8KÑ'KØ �K‰K˜Ÿ
™
×7Ñ7¸ ÓBÔ CØ)-ˆIÔ &ð&+ˆÔ"Ø
�
‰
×"Ñ" 4Ô(Ø �‰˜$Ÿ)™) GÓ,Ð-¨Q¨t¯y©y¸«Ð.?¸rÐBÀDÔIØ � ‰ Œ
à � ‰ �EÔØ ×јÔà ×'Ñ'¨Ô.Ü! $§)¡)Ó,ò ‰HˆC�Ø—-‘-×#Ñ# C§H¡HÓ-ˆCØ �N‰N˜S   \Ð2Ô 3Ø �K‰KŒMð
+ØŸ-™-¨¬c°$·)±)«nÑ(<Ñ=�ð—‘ #  c˜{Ô+Ø—
‘
˜7 EÔ*Ø × &Ñ & sÔ +Ø �L‰L�Nð ð
×&Ñ&Ô(à �‰˜Ÿ ™  5Ô)Ø ×#Ñ# E¸4Ð#Ô@Ø ×ј°$ÐÔ7Ø � ‰ Œà�iÐÐøôe"òØ—I‘Ið1🠙 ÷ ðûôBò
Ø—‘Ø�eÐ3°C·H±H°<ð@Ø ŸX™X˜L¨ð+öð
ús$Ã-%N Ê7%N7Î %N4Î3N4Î77O1Ï0O1rYc
óV—djd„|jjD««}t|jdd«}t |jj«dk(r|dz
}|j d|›d|›d |j ›d|j›d|j›d
� «y) z<Dump the macro definition for the def created by macro_body.r>c3óFK—|]}t|j«–—Œy­wr.)ÚreprrRrs r4rfz*CodeGenerator.macro_def.<locals>.<genexpr>»sèø€ÒH¨qœd 1§6¡6ŸlÑHùs‚!rRNr
ú,zMacro(environment, macro, z, (z), z, context.eval_ctx.autoescape)) r6r)rÚgetattrrSrEr†r‡r…)r'rYr*Ú arg_tuplerRs r4Ú macro_defzCodeGenerator.macro_def¹s¥€à—I‘IÑH°I·N±N×4GÑ4GÔHÓHˆ Ü�y—~‘~ v¨tÓ4ˆÜ ˆy�~‰~×"Ñ"Ó # qÒ (Ø ˜Ñ ˆIØ �
‰
Ø(¨¨°°I°;ð?Ø×)Ñ)Ð,¨B¨y×/IÑ/IÐ.LðMØ×)Ñ)Ð,Ð,Jð
Lõ
r6có^—d|j›�}|j�|›d|j›�}|S)z.Return a human readable position for the node.zline ú in )rçrR)r'r)r§s r4ÚpositionzCodeGenerator.positionÅs5€à�T—[‘[�MÐ
"ˆØ �9‰9Ð Ø�4�t˜DŸI™I˜=Ð)ˆB؈ r6cóŠ—djd„|jj«j«D««}d|›d�S)Nr>c3ó0K—|]\}}|›d|›�–—Œy­w©rNr�)rdrRr8s r4rfz3CodeGenerator.dump_local_context.<locals>.<genexpr>Ís'èø€ò
á��fðˆh�b˜˜Ô !ñ
ùó‚ú{r)r6r–Ú dump_storesry)r'r*Úitems_kvs r4Údump_local_contextz CodeGenerator.dump_local_contextÌsD€Ø—9‘9ñ
à %§
¡
× 9Ñ 9Ó ;× AÑ AÓ Cô
ó
ˆð�H�:˜RÐ Ð r6có®—|jd«|jd«|jd«|jd«|jd«y)z·Writes a common preamble that is used by root and block functions.
Primarily this sets up common local helpers and enforces a generator
through a dead branch.
z$resolve = context.resolve_or_missingz!undefined = environment.undefinedzconcat = environment.concatzcond_expr_undefined = Undefinedzif 0: yield NoneN©rîr¸s r4Ú
write_commonszCodeGenerator.write_commonsÓsG€ð
�‰Ð=Ô>Ø �‰Ð:Ô;Ø �‰Ð4Ô5ð
�‰Ð8Ô9Ø �‰Ð)Õ*r6cój—|jj|jj««y)aQPushes all parameter targets from the given frame into a local
stack that permits tracking of yet to be assigned parameters. In
particular this enables the optimization from `visit_Name` to skip
undefined expressions for parameters in macros as macros can reference
otherwise unbound parameters.
N)rãr r–Údump_param_targetsrïs r4rVz(CodeGenerator.push_parameter_definitionsàs%€ð
×Ñ×$Ñ$ U§]¡]×%EÑ%EÓ%GÕHr6có8—|jj«y)z+Pops the current parameter definitions set.N)rãÚpopr¸s r4rXz'CodeGenerator.pop_parameter_definitionsés€à ×Ñ×!Ñ!Õ#r6r8cóZ—|jr|jdj|«yy)z€Marks a parameter in the current parameter definitions as stored.
This will skip the enforced undefined checks.
r*N)rãrË©r'r8s r4rWz#CodeGenerator.mark_parameter_storedís+€ð × Ò Ø × !Ñ ! "Ñ %× -Ñ -¨fÕ 5ð !r6có:—|jj|«yr.)rär rys r4Úpush_context_referencez$CodeGenerator.push_context_referenceôs€Ø ×%Ñ%×,Ñ,¨VÕ4r6có8—|jj«yr.)rärwr¸s r4Úpop_context_referencez#CodeGenerator.pop_context_reference÷s€Ø ×%Ñ%×)Ñ)Õ+r6có —|jdS)Nr*©rär¸s r4Úget_context_refzCodeGenerator.get_context_refús€Ø×,Ñ,¨RÑ0Ð0r6có6—|jd}|dk(ry|›d�S)Nr*rÔÚresolvez.resolverrys r4r4zCodeGenerator.get_resolve_funcýs*€Ø×.Ñ.¨rÑ2ˆØ �YÒ ØØ�˜Ð"Ð"r6cóL—|j«›d|j|«›d�S)Nz .derived(rA)r€rprïs r4Úderive_contextzCodeGenerator.derive_contexts,€Ø×&Ñ&Ó(Ð)¨°4×3JÑ3JÈ5Ó3QÐ2RÐRSÐTÐTr6có>—|jsy||jdvS)z4Checks if a given target is an undeclared parameter.Fr*)rãrys r4Úparameter_is_undeclaredz%CodeGenerator.parameter_is_undeclareds$€à×$Ò$ØØ˜×.Ñ.¨rÑ2Ð2Ð2r6cóJ—|jjt««y)z+Pushes a new layer for assignment tracking.N)râr rur¸s r4Úpush_assign_trackingz"CodeGenerator.push_assign_tracking s€à ×Ñ×!Ñ!¤#£%Õ(r6cóx—|jj«}|js|js |jr|sy|D�cgc]
}|dddk7sŒ |‘Œ}}t |«dk(r�t
t|««}|jj|«}|jr|jd|›d|›�«y|jr|jd|›d|›�«y|jd|›d|›�«n¾|jr|jd«n/|jr|jd «n|jd
«tt|««D]I\}}|r|jd «|jj|«}|j|›d |›�«ŒK|jd
«|jsu|jsh|ret |«dk(r|jd|d›d�«yd jtt t|«««}|jd|›d�«yyyycc}w)zoPops the topmost level for assignment tracking and updates the
context variables if necessary.
Nr
Ú_z _loop_vars[ú] = z _block_vars[ú
context.vars[z_loop_vars.update({z_block_vars.update({úcontext.vars.update({r>rú})úcontext.exported_vars.add(rrAzcontext.exported_vars.update((rò)rârwr�rœršrSÚnextÚiterr–rPrîrOr,rEr6Úmapra) r'r*ÚvarsrÚ public_namesrRrPr\Ú names_strs r4Úpop_assign_trackingz!CodeGenerator.pop_assign_trackingsÿ€ð×!Ñ!×%Ñ%Ó'ˆà×!Ò!Ø×$Ò$Ø—N’NÙà Ø#'Ö8˜a¨1¨R¨a¨5°C«<šÐ8ˆ Ð8Ü ˆt‹9˜Š>Üœ˜T›
Ó#ˆDØ—-‘-×#Ñ# DÓ)ˆCØ×ÒØ—‘ ¨T¨H°D¸¸Ð>Ô?ØØ× Ò Ø—‘ ¨d¨X°T¸#¸Ð?Ô@ØØ �N‰N˜]¨4¨(°$°s°eÐ<Õ =à×ÒØ—‘Ð4Õ5Ø×"Ò"Ø—‘Ð5Õ6à—‘Ð6Ô7Ü&¤v¨d£|Ó4ò
/‘ ��TÙØ—J‘J˜tÔ$Ø—m‘m×'Ñ'¨Ó-�Ø—
‘
˜d˜X R¨ uÐ-Õ.ð 
/ð
�J‰J�tÔ Ø× Ò ¨×)9Ò)9¹lÜ�<Ó  AÒ%Ø—‘Ð!;¸LȹOÐ;NÈaÐPÕQà ŸI™I¤c¬$´°|Ó0DÓ&EÓF� Ø—‘Ð!?À ¸{È"ÐMÕNð ?KÐ)9Ð ùò19s Á
H7ÁH7c ó
—|�Jd«‚t|j|j«}ddlm}ddlm}|jj rt||z«}n t|«}|jddj|«z«|jrdnd}|jtj«du}|jtj«D]]} | j|j vr*|j#d | j›d
�| j$«| |j | j<Œ_|jtj&«D]‘}
|
j(|j*vsŒ|
j(} |j-«x|j*| <} d | vr0| j/d d«\}
}|jd |
›d
|›d| ›�«Œ{|jd| ›d| ›�«Œ“|jd|j›�«|j|j1d«›d|›d�d¬«|j3«|j5«t7|«}dt9|j:d«vr/|j<j?d«}|j|›d�«|j<jA|«dx|_!|_"|xr
|jF |_$|r|jd«|jK|«|jM|j:«|jO|j:|«|jQ|d¬«|jS«|�r|jFs!|j3«|jd«|j3«|jj s|jd«n•|jd«|jd«|j3«|jd«|j3«|jd «|jS«|jS«|jd!«|jSd|jF z«|j jU«D�]ƒ\}} |j|j1d"|z«›d|›d�| d«|j3«|j5«t7|«}d|_+t9| j:d#«}d|vr/|j<j?d«}|j|›d�«d$|vr5|j<j?d$«}|j|›d%|›d&|›d'�«|j<jA| «||_,|jd(«|jK|«|jM| j:«|jO| j:|«|jQ|d¬«|jS«�Œ†djd)„|j D««}|jd*|›d+�d¬«d,jd-„|jZD««}|jd.|›�«y)/Nzno root frame allowedr
)Úasync_exported)Úexportedzfrom jinja2.runtime import r>Úz, environment=environmentzblock z defined twiceú.zfrom z import z as zimport zname = Úrootz(context, missing=missingrJ)r r'r¸z = TemplateReference(context)Tzparent_template = NonerMúif parent_template is not None:z4yield from parent_template.root_render_func(context)z0agen = parent_template.root_render_func(context)r&zasync for event in agen:z yield eventzfinally: await agen.aclose()Úblock_)r'ÚsuperrŸz = context.super(z, block_rAz_block_vars = {}c3ó*K—|] }|›d|›�–—Œ
y­w)z: block_Nr�rs r4rfz/CodeGenerator.visit_Template.<locals>.<genexpr>²sèø€Ò!K¸! Q E¨°!°Ô"5Ñ!Kùs‚z
blocks = {rú&c3ó0K—|]\}}|›d|›�–—Œy­w)rNr�rhs r4rfz/CodeGenerator.visit_Template.<locals>.<genexpr>´sèø€ÒG©t¨q°! 1 # Q q c¤
ÑGùrlz
debug_info = ).rrBrRÚruntimer˜r™rBr,rîr6rUÚfindr ÚExtendsÚfind_allrÅr×rérçÚ ImportedNameÚ
importnamerÖrìÚrsplitrErôrsr+r€rQr–rUrNršr›rÙr—r;r/rr>rõryr�r™rÛ)r'r)r*r0r˜r™Úexported_namesÚenvenvÚ have_extendsr™Úimport_ÚimpÚaliasÚmoduleÚobjrPrRr�rÚ
blocks_kv_strÚ debug_kv_strs r4Úvisit_TemplatezCodeGenerator.visit_Template=s€ðˆ}Ð5Ð5Ó5ˆ}ܘt×/Ñ/°·±Ó;ˆå+Ý%à × Ñ × $Ò $Ü# H¨~Ñ$=Ó>‰Nä# HÓ-ˆNà �‰Ð4°t·y±yÀÓ7PÑPÔQð—’‘Ð,Gˆð—y‘y¤§¡Ó/°tÐ;ˆ ð—]‘]¤5§;¡;Ó/ò ,ˆEØ�z‰z˜TŸ[™[Ñ(Ø— ‘ ˜F 5§:¡: .°Ð?ÀÇÁÔNØ&+ˆD�K‰K˜Ÿ
™
Ò #ð ,ð —}‘}¤U×%7Ñ%7Ó8ò ?ˆGØ×!Ñ!¨×)<Ñ)<Ò<Ø×(Ñ(�Ø37×3LÑ3LÓ3NÐN�×#Ñ# CÑ(¨5ؘ#‘:Ø"%§*¡*¨S°!Ó"4‘K�F˜CØ—N‘N U¨6¨(°(¸3¸%¸tÀEÀ7Ð#KÕLà—N‘N W¨S¨E°°e°WÐ#=Õ>ð ?ð
�‰˜ §¡ 
Ð.Ô/ð
�‰Ø�y‰y˜Ó Ð!Ð!:¸6¸(À"Ð EÈQð ô
ð
� ‰ Œ
Ø ×ÑÔô�h“ˆØ ”_ T§Y¡Y° Ó:Ñ :Ø—-‘-×1Ñ1°&Ó9ˆCØ �N‰N˜c˜UÐ"?Ð@Ô AØ
�
‰
×"Ñ" 4Ô(Ø+/Ð/ˆŒ˜œØ%1Ò%P¸$×:PÑ:PÐ6PˆÔ"Ù Ø �N‰NÐ3Ô 4Ø ×Ñ˜ÔØ ×јtŸy™yÔ)Ø �‰˜Ÿ ™  5Ô)Ø ×ј°$ÐÔ7Ø � ‰ Œò Ø×)Ò)Ø— ‘ ”
Ø—‘Ð@ÔAØ �K‰KŒMØ×#Ñ#×,Ò,Ø—‘ÐUÕVà—‘ÐQÔRØ—‘˜vÔ&Ø— ‘ ”
Ø—‘Ð9Ô:Ø— ‘ ”
Ø—‘˜}Ô-Ø— ‘ ”Ø— ‘ ”Ø—‘Ð=Ô>Ø �L‰L˜ $×"8Ñ"8Ð8Ñ9Ô :ð Ÿ;™;×,Ñ,Ó.ó ‰KˆD�%Ø �N‰NØ—9‘9˜X¨™_Ó-Ð.Ð.GÈÀxÈrÐRØØô
ð
�K‰KŒMØ × Ñ Ô ô  ›/ˆKØ&*ˆKÔ #Ü(¨¯©Ð5FÓGˆJؘÑ#Ø!×)Ñ)×;Ñ;¸FÓC�Ø—‘ # Ð&CÐDÔEؘ*Ñ$Ø!×)Ñ)×;Ñ;¸GÓD�Ø—‘ # Ð&7¸°x¸xÈÀvÈQÐOÔPØ × Ñ × ,Ñ ,¨UÔ 3Ø $ˆKÔ Ø �N‰NÐ-Ô .Ø × Ñ ˜[Ô )Ø × "Ñ " 5§:¡:Ô .Ø �O‰O˜EŸJ™J¨ Ô 4Ø × Ñ ˜[¸DÐ Ô AØ �L‰LŽNð7 ð:Ÿ ™ Ñ!K¸t¿{¹{Ô!KÓKˆ
Ø �‰˜ ] O°2Ð6¸aˆÔ@Ø—x‘xÑG°t·±ÔGÓGˆ Ø �‰˜ |Ð&6Ð7Õ8r6có—d}|jrB|jry|jdkDr&|jd«|j «|dz
}|j
r|j
|«}n|j«}|jr`|jd|j›d�|«|j «|jd|j›d�|«|j«|jjs0|j€$|jd |j›d
|›d �|«nÌ|jd |j›d
|›d �«|jd
«|j «|j|j«›d�|«|j «|jd|«|j«|j«|jd|jdd«›�«|j|«y)z.Call a block and register it for the template.rNúif parent_template is None:r
zif len(context.blocks[z]) <= 1:z+raise TemplateRuntimeError("Required block z not found")zyield from context.blocks[z][0](rAzgen = context.blocks[r&úfor event in gen:Úeventú finally: úawait gen.aclose()ú gen.close())ršrÙrØrîrôÚscopedr„r€ÚrequiredrRrõrBrBr˜rCr)r'r)r*r“rÔs r4rÀzCodeGenerator.visit_Block·s»€àˆØ �>Š>ð×%Ò%ØØ×"Ñ" QÒ&Ø—‘Ð<Ô=Ø— ‘ ”
ؘ‘
�à �;Š;Ø×)Ñ)¨%Ó0‰Gà×*Ñ*Ó,ˆGà �=Š=Ø �N‰NÐ3°D·I±I°=ÀÐIÈ4Ô PØ �K‰KŒMØ �N‰NØ=¸d¿i¹i¸]È,ÐWØô
ð
�L‰LŒNà×Ñ×(Ò(¨U¯\©\Ð-AØ �N‰NØ,¨T¯Y©Y¨M¸¸w¸iÀqÐIÈ4õ
ð
�N‰NÐ2°4·9±9°-¸uÀWÀIÈQÐOÔ PØ �N‰N˜6Ô "Ø �K‰KŒMØ �N‰NØ×$Ñ$Ó&Ð'Ð'8Ð9Øô
ð
�K‰KŒMØ × Ñ ˜g uÔ -Ø �L‰LŒNØ �L‰LŒNØ �N‰NؘD×-Ñ-Ð.BÀMÓRÐSÐTô
ð
� ‰ �UÕr6có¨—|js|jd|j«|jdkDrd|js!|j d«|j
«|j d«|jr
t«‚|j«|j d|«|j|j|«|jd|j›d�«|j d«|j
«|j d «|j«|jrd
|_|xjd z
c_y )
zCalls the extender.z,cannot use extend from a non top-level scoperr�z5raise TemplateRuntimeError("extended multiple times")z+parent_template = environment.get_template(r>rAz9for name, parent_block in parent_template.blocks.items():z8context.blocks.setdefault(name, []).append(parent_block)Tr
N)ršrérçrØrÙrîrôrÑrõr2ÚtemplaterErRr›©r'r)r*s r4Ú
visit_ExtendszCodeGenerator.visit_Extendsès€à�~Š~Ø �I‰IÐDÀdÇkÁkÔ Rð
× Ñ  Ò "ð
×)Ò)Ø—‘Ð@ÔAØ— ‘ ”
Ø �N‰NÐRÔ Sð×%Ò%Ü"“nÐ$à— ‘ ”à �‰ÐDÀdÔKØ �
‰
�4—=‘= %Ô(Ø �
‰
�R˜Ÿ ™ �} AÐ&Ô'Ø �‰ÐRÔSØ � ‰ Œ
Ø �‰ÐQÔRØ � ‰ Œð
�?Š?Ø%)ˆDÔ "ð
×Ò˜qÑ Ör6c󈇇—|jr!‰jd«‰j«d}t|jt
j «rTt|jjt«rd}nct|jjttf«r9d}n6t|jt
jt
jf«rd}‰jd|›d�|«‰j|j‰«‰jd‰j›d�«|jrs‰j!«‰jd «‰j«‰jd
«‰j!«‰jd «‰j«dˆˆfd
„ }|j"r£‰jd‰j%‰«›d�«‰jd«‰j«‰j‰j'«›d�«|«‰j!«‰jd‰j'dd«›�«n@‰j(j*r‰jd«|«n‰jd«|jr‰j!«y y )zHandles includes.r&Úget_or_select_templateÚ get_templateÚselect_templateztemplate = environment.r?r>rAzexcept TemplateNotFound:rróNcój•—‰j«‰jd‰«‰j«y)Nr¸)rôrrõ)r*r's€€r4Ú loop_bodyz.CodeGenerator.visit_Include.<locals>.loop_body-s%ø€Ø �K‰KŒMØ × Ñ ˜g uÔ -Ø �L‰L�Nr6zNgen = template.root_render_func(template.new_context(context.get_all(), True, ròr·r¹rºr»zGfor event in (await template._get_default_module_async())._body_stream:z6yield from template._get_default_module()._body_streamrÂ)Úignore_missingrîrôrXr¿r ÚConstr_rrrsrtÚTupleÚListr2rErRrõÚ with_contextrprCrBrB)r'r)r*Ú func_namerÇs` ` r4Ú
visit_IncludezCodeGenerator.visit_Includesù€à × Ò Ø �N‰N˜6Ô "Ø �K‰KŒMà,ˆ Ü �d—m‘m¤U§[¡[Ô 1ܘ$Ÿ-™-×-Ñ-¬sÔ3Ø*‘ ܘDŸM™M×/Ñ/´%¼°Ô?Ø-‘ Ü
˜Ÿ
™
¬¯ © ´U·Z±ZÐ'@Ô
AØ)ˆIà �‰Ð0°° ¸1Ð=¸tÔDØ �
‰
�4—=‘= %Ô(Ø �
‰
�R˜Ÿ ™ �} AÐ&Ô'Ø × Ò Ø �L‰LŒNØ �N‰NÐ5Ô 6Ø �K‰KŒMØ �N‰N˜6Ô "Ø �L‰LŒNØ �N‰N˜7Ô #Ø �K‰KŒMö ð
× Ò Ø �N‰Nðà×+Ñ+¨EÓ2Ð3°2ð7ô
ð
�N‰N˜6Ô "Ø �K‰KŒMØ �N‰N˜d×/Ñ/Ó1Ð2Ð2CÐDÔ EÙ ŒKØ �L‰LŒNØ �N‰NؘD×-Ñ-Ð.BÀMÓRÐSÐTõ
ð×
Ñ
×
&Ò
&Ø �N‰Nð!ô
ñ
�Kà �N‰NÐSÔ Tà × Ò Ø �L‰L�Nð r6có–—|j|jd«›d�«|j|j|«|jd|j›d�«|j
r;d|jd«›�}|j|›d|j
|«›d�«y|jd |jd«›d
�«y) Núawait zenvironment.get_template(r>z).Ú make_moduleÚ_asyncz(context.get_all(), True, rAÚ_get_default_modulez (context))rErCr2r¿rRrÌrp)r'r)r*Úf_names r4Ú_import_commonzCodeGenerator._import_commonLs¾€ð
�
‰
�d×'Ñ'¨Ó1Ð2Ð2KÐLÔMØ �
‰
�4—=‘= %Ô(Ø �
‰
�R˜Ÿ ™ �} BÐ'Ô(à × Ò Ø" 4×#4Ñ#4°XÓ#>Ð"?Ð@ˆFØ �J‰JØ�(Ð4°T×5LÑ5LÈUÓ5SÐ4TÐTUÐVõ
ð
�J‰JÐ,¨T×->Ñ->¸xÓ-HÐ,IÈÐSÕ Tr6có~—|j|jj|j«›d�|«|jr|j d|j›d�«|j
||«|jr<|jjd«s |jd|j›d�«yyy)zVisit regular imports.r1rŒr‹rŠúcontext.exported_vars.discard(rAN)rîr–rPr8ršrErÕÚ
startswithrÀs r4Ú visit_ImportzCodeGenerator.visit_Import[s”€à �‰˜%Ÿ-™-×+Ñ+¨D¯K©KÓ8Ð9¸Ð=¸tÔDØ �>Š>Ø �J‰J˜ t§{¡{ o°TÐ:Ô ;à ×јD %Ô(à �>Š> $§+¡+×"8Ñ"8¸Ô"=Ø �N‰NÐ;¸D¿K¹K¸?È!ÐLÕ Mð#>ˆ>r6c ó̇—|j|«|jd«|j|‰«g}g}|jD�]H}t |t
«r|\}}n|}|j
‰jj|«›d|›d�«|j
d‰jj|«›d�«|j«|j|«jdd«jdd «}d
|›d |›�}|j
‰jj|«›d |›d
|›d�«|j«‰js�Œ|j|«|jd«r�Œ8|j|«�ŒK|rst!|«dk(r6|d}|j
d|›d‰jj|«›�«n/dj#ˆfd„|D««} |j
d| ›d�«|r\t!|«dk(r|j
d|d›d�«ydj#t%t&|««}
|j
d|
›d�«yy)zVisit named imports.zincluded_template = z = getattr(included_template, z
, missing)rKrLrmz{{rz}}z9the template {included_template.__name__!r} (imported on z%) does not export the requested name z = undefined(fz, name=rArŠr
rrŒr‹r>c3ó^•K—|]$}|›d‰jj|«›�–—Œ&y­wrk)r–rP)rdrRr*s €r4rfz1CodeGenerator.visit_FromImport.<locals>.<genexpr>�s1øèø€ò%Ø?C�t�h˜b §¡×!2Ñ!2°4Ó!8Ð 9Ô:ñ%ùsƒ*-r�rŽr×z)context.exported_vars.difference_update((ròN)rrErÕr{rXrsrîr–rPrôrhÚreplacerõršr rØrSr6r’ra) r'r)r*Ú var_namesÚdiscarded_namesrRr¯rhÚmessageÚnames_kvr•s ` r4Úvisit_FromImportzCodeGenerator.visit_FromImportfsTø€à � ‰ �TÔØ �
‰
Ð)Ô*Ø ×јD %Ô(؈ ؈ؗJ‘Jó 2ˆDܘ$¤Ô&Ø"‘ �‘eà�Ø �N‰NØ—=‘=×$Ñ$ UÓ+Ð,ð-/Ø/3¨h°jðBô
ð
�N‰N˜S §¡×!2Ñ!2°5Ó!9Ð :¸,ÐGÔ HØ �K‰KŒMð
—}‘} TÓ*×2Ñ2°3¸Ó=×EÑEÀcÈ4ÓPˆHð!Ø!) 
ð+7Ø7;°hð@ð
ð
�N‰NØ—=‘=×$Ñ$ UÓ+Ð,¨N¸7¸+ÀWÈTÈHÐTUÐVô
ð
�L‰LŒNØ�~Œ~Ø× Ñ  Ô'Ø×'Ñ'¨Ö,Ø#×*Ñ*¨5Ö1ð9 2ñ< Ü�9‹~ Ò"Ø  ‘|�Ø—‘ ¨t¨h°d¸5¿=¹=×;LÑ;LÈTÓ;RÐ:SÐTÕUàŸ9™9ó%ØGPô%ó�ð—‘Ð!7¸°zÀÐEÔFÙ Ü�?Ó# qÒ(Ø—‘Ð!?ÀÐPQÑ@RÐ?UÐUVÐWÕXà ŸI™I¤c¬$°Ó&@ÓA� Ø—‘Ø?À ¸{È"ÐMõð r6có"—|j«}d|_|j«}|j«}|jxsOdt|j d¬«d«vxs/t d„|j
tj«D««}d}|r|jjd«}|jj|d¬«|jr|jj|d ¬«|j�r¶|j«}|jj|d
¬«|j|j!|«›d �|j«|j#«|j%|«|j|j'd d
««|j)|j*|«|j-d«|j-|j'dd««|j-d«|j#«|jd|j«|j)|j|«|j-d«|j#«|jd«|j)|j*|«|j/d«|j1|d¬«|jrV|j|j!d«›d�|«|j#«|j3|«|j2|_|r|j|›d�«|j
tj4«D]>} | j6dk(sŒ| j8dk(sŒ#|j;d| j<«Œ@|jr$|j«}
|j|
›d�«|j|j'd d
«|«|j)|j*|«|r(|j-d|›d|j'd«›d�«n|j-d«|jr|j-›d�«|jr|j-d«nn|j>j@r|s|j-d «|j)|jB|«|j>j@r|s|j-d!«|jr|j-d!«|jr|j-d"«n|j-|rd#nd«|j#«|j%|«|jd$«|jE|jF|«|jr|j
›d%�«|j/«|j1||jxr
|j ¬«|jrs|jd
›d�«|j#«|j%|«|jE|j|«|j1|«|j/«|jrâ|jI|«|j/«|jK||«|j-|j'd&«›d'�«|j>j@r|j-d «|j)|jB|«|j>j@r|j-d!«|j-d(«|jM|«|jNr3|jNd)jQ|jjR«yy)*NTÚloop)rQ)Úonly)rãc3ó4K—|]}|j–—Œy­wr.)r¼)rdr™s r4rfz*CodeGenerator.visit_For.<locals>.<genexpr>ªsèø€ÒH E�5—<•<ÑHùrrQ)Ú
for_branchÚelseÚtestz(fiter):z
async for zfor rgzauto_aiter(fiter)Úfiterú:rKrýérMz%(reciter, loop_render_func, depth=0):r2Ústorez8Can't assign to special loop variable in for-loop targetz = 1r>ÚAsyncz LoopContext(r?Úreciterz auto_aiter(rAz&, undefined, loop_render_func, depth):z
, undefined):z_loop_vars = {}z = 0rÐzloop(z, loop)r*)*rªrœÚ recursiver€Úiter_child_nodesrr¦r rÅr–rUrNÚelse_rèrìrîrErôr;rCr2r8rErõr>r˜rÏrÊrRrérçrBrBr‘rrQr÷rÿrrâÚdifference_updateÚstores) r'r)r*rœÚ
test_frameÚ
else_frameÚ
extended_loopÚloop_refÚloop_filter_funcrRÚiteration_indicators r4Ú visit_ForzCodeGenerator.visit_For�s؀ؗ[‘[“]ˆ
Ø $ˆ
ÔØ—[‘[“]ˆ
Ø—[‘[“]ˆ
ð
�N‰Nò
IØÜ˜t×4Ñ4¸)Ð4ÓDÀiÓPðQò
IôÑH¨T¯]©]¼5¿;¹;Ó-GÔHÓHð ðˆÙ Ø!×)Ñ)×;Ñ;¸FÓCˆHà×Ñ×'Ñ'¨¸Ð'Ô@Ø �:Š:Ø × Ñ × +Ñ +¨D¸VÐ +Ô Dà �9‹9Ø#×8Ñ8Ó:Ð Ø × Ñ × +Ñ +¨D¸VÐ +Ô DØ �N‰N˜dŸi™iÐ(8Ó9Ð:¸(ÐCÀTÇYÁYÔ OØ �K‰KŒMØ × Ñ ˜ZÔ (Ø �N‰N˜4×,Ñ,¨\¸6ÓBÔ CØ �J‰J�t—{‘{ JÔ /Ø �J‰J�vÔ Ø �J‰J�t×(Ñ(Ð)<¸gÓFÔ GØ �J‰J�sŒOØ �K‰KŒMØ �N‰N˜5 $§)¡)Ô ,Ø �J‰J�t—y‘y *Ô -Ø �J‰J�sŒOØ �K‰KŒMØ �N‰N˜8Ô $Ø �J‰J�t—{‘{ JÔ /Ø �L‰L˜ŒOØ × Ñ ˜Z¸4Ð Ô @ð
�>Š>Ø �N‰NØ—9‘9˜VÓ$Ð%Ð%JÐKÈTô
ð
�K‰KŒMØ �K‰K˜
Ô #ð!+× 1Ñ 1ˆJÔ ñ Ø �N‰N˜h˜Z zÐ2Ô 3à—M‘M¤%§*¡*Ó-ò ˆDØ�x‰x˜7Ó" t§y¡y°FÓ':Ø— ‘ ØNØ—K‘Kõð ð �:Š:Ø"&×";Ñ";Ó"=Ð Ø �N‰NÐ1Ð2°$Ð7Ô 8à �‰�t×(Ñ(¨°vÓ>ÀÔEØ �
‰
�4—;‘; 
Ô+Ù Ø �J‰J˜˜H˜: T¨$×*;Ñ*;¸GÓ*DÐ)EÀ\ÐRÕ Sà �J‰J�vÔ à �9Š9Ø �J‰JÐ*Ð+¨1Ð-Ô .Ø �>Š>Ø �J‰J�yÕ !à×Ñ×(Ò(±Ø—
‘
˜=Ô)Ø �J‰J�t—y‘y %Ô (Ø×Ñ×(Ò(±Ø—
‘
˜3”Ø �9Š9Ø �J‰J�sŒOà �>Š>Ø �J‰JÐ?Õ @à �J‰J©-‘¸SÔ Aà � ‰ Œ
Ø ×јÔ$à �‰Ð(Ô)Ø �‰˜Ÿ ™  :Ô.Ø �:Š:Ø �N‰NÐ1Ð2°$Ð7Ô 8Ø � ‰ ŒØ ×ÑØ ¨$¯.©.Ò*KÀÇÁ¸^ð ô
ð �:Š:Ø �N‰N˜SÐ!4Ð 5°QÐ7Ô 8Ø �K‰KŒMØ × Ñ ˜ZÔ (Ø �O‰O˜DŸJ™J¨
Ô 3Ø × Ñ ˜ZÔ (Ø �L‰LŒNð �>Š>Ø × 'Ñ '¨
Ô 3Ø �L‰LŒNØ × Ñ ˜U DÔ )Ø �J‰J˜$×+Ñ+¨HÓ5Ð6°eÐ<Ô =Ø×Ñ×(Ò(Ø—
‘
˜=Ô)Ø �J‰J�t—y‘y %Ô (Ø×Ñ×(Ò(Ø—
‘
˜3”Ø �J‰J�yÔ !Ø �N‰N˜5Ô !ð × Ò Ø × Ñ ˜rÑ "× 4Ñ 4°Z×5GÑ5G×5NÑ5NÕ Oð r6cóæ—|j«}|jd|«|j|j|«|j d«|j «|j
|j|«|j«|jD]}}|jd|«|j|j|«|j d«|j «|j
|j|«|j«Œ|jrN|jd«|j «|j
|j|«|j«yy)NrKrêzelif ró) r¬rîr2rèrErôrrQrõÚelif_rñ)r'r)r*Úif_framerüs r4Úvisit_IfzCodeGenerator.visit_If(sü€Ø—:‘:“<ˆØ �‰�u˜dÔ#Ø �
‰
�4—9‘9˜hÔ'Ø �
‰
�3ŒØ � ‰ Œ
Ø �‰˜Ÿ ™  8Ô,Ø � ‰ ŒØ—Z‘Zò ˆEØ �N‰N˜7 EÔ *Ø �J‰J�u—z‘z 8Ô ,Ø �J‰J�sŒOØ �K‰KŒMØ �O‰O˜EŸJ™J¨Ô 1Ø �L‰L�Nð
 ð �:Š:Ø �N‰N˜7Ô #Ø �K‰KŒMØ �O‰O˜DŸJ™J¨Ô 1Ø �L‰L�Nð r6cóª—|j||«\}}|j«|jrY|jj d«s|j d|j›d�«|j
d|j›d�«|j |jj|j«›d�«|j||«y)NrŠr�rArŒr‹r1)
r^rršrRrØrErîr–rPre)r'r)r*Ú macro_framerYs r4Ú visit_MacrozCodeGenerator.visit_Macro=s¡€Ø!%§¡°°uÓ!=ш �YØ � ‰ ŒØ �>Š>Ø—9‘9×'Ñ'¨Ô,Ø—
‘
Ð7¸¿ ¹ °}ÀAÐFÔGØ �N‰N˜]¨4¯9©9¨-°tÐ<Ô =Ø �
‰
�e—m‘m×'Ñ'¨¯ © Ó2Ð3°3Ð7Ô8Ø �‰�y +Õ.r6cóö—|j||«\}}|jd«|j||«|j||«|j |j
|d¬«|j
|«y)Nz caller = T)Úforward_caller)r^rîrerÿÚ
visit_CallÚcallr)r'r)r*Ú
call_framerYs r4Úvisit_CallBlockzCodeGenerator.visit_CallBlockGsc€Ø $§¡°°eÓ <ш
�IØ �‰�{Ô#Ø �‰�y *Ô-Ø ×ј Ô%Ø �‰˜Ÿ ™  5¸ˆÔ>Ø �‰�uÕr6cóv—|j«}|jj|«|j|«|j |«|j |j |«|j||«|j|j|«|j|«|j|«yr.) rªr–rNr;r˜rrQrÿr¼Úfilterrr>)r'r)r*Ú filter_frames r4Úvisit_FilterBlockzCodeGenerator.visit_FilterBlockOs‹€Ø—{‘{“}ˆ Ø×Ñ×)Ñ)¨$Ô/Ø ×јÔ&Ø � ‰ �LÔ!Ø �‰˜Ÿ ™  <Ô0Ø ×ј Ô%Ø ×ј$Ÿ+™+ |Ô4Ø �‰�uÔØ ×јÕ&r6có°—|j«}|jj|«|j|«t |j
|j «D]J\}}|j«|j||«|jd«|j||«ŒL|j|j|«|j|«y)Nr1)
rªr–rNr;ÚzipÚtargetsÚvaluesrr2rErrQr>)r'r)r*Ú
with_framer8Úexprs r4Ú
visit_WithzCodeGenerator.visit_WithZs¤€Ø—[‘[“]ˆ
Ø×Ñ×'Ñ'¨Ô-Ø ×јÔ$Ü § ¡ ¨d¯k©kÓ:ò $‰LˆF�DØ �L‰LŒNØ �J‰J�v˜zÔ *Ø �J‰J�uÔ Ø �J‰J�t˜UÕ #ð  $ð
�‰˜Ÿ ™  :Ô.Ø ×јÕ$r6có^—|j|«|j|j|«yr.)rr2r)rÀs r4Úvisit_ExprStmtzCodeGenerator.visit_ExprStmtfs €Ø � ‰ �TÔØ �
‰
�4—9‘9˜eÕ$r6cót—eZdZUejej
defed<ejeed<y)úCodeGenerator._FinalizeInfo.ÚconstÚsrcN)rŠr‹rŒr8r¯ÚCallablerrÚ__annotations__r�r6r4Ú
_FinalizeInforjs,…Ø�z‰z˜!Ÿ*™* S¨# XÑ.Ñ/Ó/Ø
�Z‰Z˜‰_Ôr6rr_có—t|«S)z¼The default finalize function if the environment isn't
configured with one. Or, if the environment has one, this is
called on that function's output for constants.
)rrrzs r4Ú_default_finalizezCodeGenerator._default_finalizens€ô �5‹zÐr6Ú _finalizecób‡‡‡—‰j� ‰jS‰jx}Šd}‰jjrÌd}‰jjŠtj
dtj dtjdijt j‰««}d}|€(dtjdtjfˆˆfd„ }n4|›|›d �}|dk(r(dtjdtjfˆˆˆfd
„ }‰j||«‰_‰jS) a‰Build the finalize function to be used on constants and at
runtime. Cached so it's only created once for all output nodes.
Returns a ``namedtuple`` with the following attributes:
``const``
A function to finalize constant data at compile time.
``src``
Source code to output around nodes to be evaluated at
runtime.
Nzenvironment.finalize(rÔúcontext.eval_ctxrBr_r%có •—‰‰|««Sr.r�)r_r]Ú env_finalizes €€r4Úfinalizez.CodeGenerator._make_finalize.<locals>.finalizešsø€Ù"¡<°Ó#6Ó7Ð7r6r>có6•—‰‰‰j|««Sr.)rB)r_r]r"r's €€€r4r#z.CodeGenerator._make_finalize.<locals>.finalize¢sø€Ù&¡|°D×4DÑ4DÀeÓ'LÓMÐMr6) rrrBr#rrÔÚ eval_contextÚgetÚfrom_objr8r9r)r'r#rÚpass_argr]r"s` @@r4Ú_make_finalizezCodeGenerator._make_finalizexsú€ð �>‰>Ð %Ø—>‘>Ð !ð"×3Ñ3Ð3ˆ�7؈à × Ñ × $Ò $Ø)ˆCØ×+Ñ+×4Ñ4ˆLä× Ñ  )Ü×%Ñ%Ð'9Ü×$Ñ$ mð÷‰cÜ×!Ñ! ,Ó/óð
ðˆHàÐð8¤A§E¡Eð8¬a¯e©e÷8ð˜˜h˜Z rÐ*�à˜}Ò,ðN¬¯©ðN´!·%±%÷Nð×+Ñ+¨H°cÓ:ˆŒØ�~‰~Ðr6Úgroupcó*—tt|««S)z™Given a group of constant values converted from ``Output``
child nodes, produce a string to write to the template module
source.
)rar)r'r*s r4Ú_output_const_reprz CodeGenerator._output_const_repr¨s€ô
”F˜5“MÓ"Ð"r6r#cóæ—|j|j«}|jjr t|«}t |t
j «r t|«S|j|«S)aCTry to optimize a child of an ``Output`` node by trying to
convert it to constant, finalized data at compile time.