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

322 lines
41 KiB
Plaintext
Raw Normal View History

Ë
jƒ|ãó>UdZddlZddlZddlZddlmZddlmZddlm Z ddl
m Z ddl m
Z
dd l mZdd
lmZdd lmZdd lmZdd
lmZddlmZej,rGddlZddlmZddlmZddlmZGddej<«ZGdde«Z ejBee fZ"dZ#ejHe%dfe&d<ejNd«Z(Gdd«Z)ededejTdejTdejBejTeffd „«Z+d!ejXe%ge%fdejXde%ffd"„Z-d!ejXe%e%e.ge%fdejXde%ffd#„Z/d!ejXe%e%ge%fdejXde%ffd$„Z0d!ejXe%e%e%e.ge%fdejXde%ffd%„Z1Gd&„d'e)«Z2Gd(„d)e)«Z3Gd*„d+e)«Z4Gd,„d-e)«Z5e#d.fd/e jld0ejne%d1e8dejrejHe.e%ejBejte%ejHejte%dffffd2„Z;Gd3„d4«Z<d5ejzd6ejne%d7ejne%d8ej|e%ejTfdejrejHe.e%ejBejte%ejHejte%dffej~e%ff
d9„Z@e2ZAe3ZBe4ZCe5ZDy):z2Extension API for adding custom tags and behavior.éN)ÚMarkupé)Údefaults)Únodes)Ú Environment)ÚTemplateAssertionError)ÚTemplateSyntaxError)Úconcat)ÚContext)Ú Undefined)Ú
import_string)Ú pass_context)ÚToken)Ú TokenStream)ÚParsercó4eZdZdedefdZdedededefdZy) Ú_TranslationsBasicÚmessageÚreturncóy©)Úselfrs úM/home/antigravity/intellecton/venv/lib/python3.12/site-packages/jinja2/ext.pyÚgettextz_TranslationsBasic.gettextóóÚsingularÚpluralÚncóyrr)rrrr s rÚngettextz_TranslationsBasic.ngettextsØ rN)Ú__name__Ú
__module__Ú __qualname__ÚstrrÚintr"rrrrrs0Ø3 3¨3Ó   °#ð ¸ À#ô rrc
ó<eZdZdededefdZdededededef
dZy )
Ú_TranslationsContextÚcontextrrcóyrr)rr*rs rÚpgettextz_TranslationsContext.pgettext"rrrrr cóyrr)rr*rrr s rÚ npgettextz_TranslationsContext.npgettext$sàrN)r#r$r%r&r,r'r.rrrr)r)!sAØB B°#ÐB¸ Øð Ø*-ð Ø7:ð Ø?Bð à
ô rr))Ú_rr"r,r.GETTEXT_FUNCTIONSz\s*\n\s*có,eZdZUdZej
eed<ddZe «Z
ejeed<dZ de
ddfd „Zde
dd
fd Z dd ed
ej edej edefdZdddej$dej&dffdZdddej$ej,ej.ej,ffdZ dd
edej edej4fdZ d d
edej ej.ej8dej ej.ej:dej ej8dej ej8dej edej<fdZy)!Ú ExtensionagExtensions can be used to add extra functionality to the Jinja template
system at the parser level. Custom extensions are bound to an environment
but may not store environment specific data on `self`. The reason for
this is that an extension can be bound to another environment (for
overlays) by creating a copy and reassigning the `environment` attribute.
As extensions are created by the environment they cannot accept any
arguments for configuration. One may want to work around that by using
a factory function, but that is not possible as extensions are identified
by their import name. The correct way to configure the extension is
storing the configuration values on the environment. Because this way the
environment ends up acting as central configuration storage the
attributes may clash which is why extensions have to ensure that the names
they choose for configuration are not too generic. ``prefix`` for example
is a terrible name, ``fragment_cache_prefix`` on the other hand is a good
name as includes the name of the extension (fragment cache).
Ú
identifierrNcóD|jd|j|_y).)r$r#r3)Úclss rÚ__init_subclass__zExtension.__init_subclass__LsØŸN™NÐ+¨1¨S¯\©\¨NÐ;ˆrÚtagsédÚ environmentcó||_yr)r:)rr:s rÚ__init__zExtension.__init__Ys
Ø&ˆÕrzte.Selfcóœtj|j«}|jj |j«||_|S)z=Create a copy of this extension bound to another environment.)ÚobjectÚ__new__Ú __class__Ú__dict__Úupdater:)rr:Úrvs rÚbindzExtension.bind\s6ä
^‰^˜DŸN™NÓ
+ˆØ
×ј4Ÿ=™=Ԍ؈ rÚsourceÚnameÚfilenamecó|S)zÁThis method is called before the actual lexing and can be used to
preprocess the source. The `filename` is optional. The return value
must be the preprocessed source.
r)rrErFrGs rÚ
preprocesszExtension.preprocesscs ðˆ
rÚstreamrrcó|S)a It's passed a :class:`~jinja2.lexer.TokenStream` that can be used
to filter tokens returned. This method has to return an iterable of
:class:`~jinja2.lexer.Token`\s, but it doesn't have to return a
:class:`~jinja2.lexer.TokenStream`.
r)rrJs rÚ
filter_streamzExtension.filter_streamls ðˆ
rÚparserrcót«)aIf any of the :attr:`tags` matched this method is called with the
parser as first argument. The token the parser stream is pointing at
is the name token that matched. This method has to return one or a
list of multiple nodes.
)ÚNotImplementedError)rrMs rÚparsezExtension.parsevs
ô #rÚlinenocóFtj|j||¬«S)zÓReturn an attribute node for the current extension. This is useful
to pass constants on extensions to generated template code.
::
self.attr('_my_attribute', lineno=lineno)
©rQ)rÚExtensionAttributer3)rrFrQs rÚattrzExtension.attr~sôׯ©¸ÀfÔMrÚargsÚkwargsÚdyn_argsÚ
dyn_kwargscój|g}|g}tj|j||¬«|||||¬«S)zsCall a method of the extension. This is a shortcut for
:meth:`attr` + :class:`jinja2.nodes.Call`.
rS)rÚCallrU)rrFrVrWrXrYrQs rÚ call_methodzExtension.call_methodŠsH𠈈 ˆ>؈z‰zØ I‰Id 6ˆIÓ Ø Ø Ø Øô

ð
r)rNr)NNNNN) r#r$r%Ú__doc__ÚClassVarr&Ú__annotations__r7Úsetr8ÚSetÚpriorityrr<rDÚOptionalrIÚUnionÚIterablerLrÚNodeÚListrPr'rTrUÚExprÚKeywordr[r\rrrr2r27ñð$
˜3‘Óó“u€Dˆ!%‰%‰*Óð€Hð' '°Dó  ð° óðOSñØðØ!"§¡¨C¡ðØ<=¿J¹JÀs¹Oðà óðØà
 §
¡
¨7Ñ 3Ð3Ñ 4óð$˜H𯩰·±¸Q¿V¹VÀEÇJÁJÑ=OÐ1OÑ)Pó48ñ
NØð
NØ!"§¡¨C¡ð
Nà × !Ñ !ó
Nð04Ø48Ø+/Ø-1Ø"&ñ
àð
ðj‰j˜Ÿ §
¡
Ñ
ð
˜1Ÿ6™6 %§-¡-Ñ
ð
—*‘*˜UŸZ™ZÑ 
ð —J‘J˜uŸz™zÑ

ð
˜3ð
ð
ô
rr2Ú __contextrVrWrcóL|j|jd«g|¢­i|¤ŽS)Nr)ÚcallÚresolve)rkrVrWs rÚ_gettext_aliasro¤s*ð ˆ9>‰>˜)×+¨IÓ H¸Ò Ñ HrÚfuncc ójtdtdtdtjdtfˆfd «}|S)NrkÚ__stringÚ variablesrcót|j|«}|jjr t|«}||zSr)rmÚeval_ctxÚ
autoescaper)rkrrrsrCrps €rrz"_make_new_gettext.<locals>.gettext¬s7ø€à
^‰^˜D 
Ø × Ñ × ˜ˆBðI‰~Ðr©rr r&r^ÚAny)rprs` rÚ_make_new_gettextry«s<ø€Üðœ7ð¬cðÄÇÁðÌ#ôóðð €Nrc
ó‚tdtdtdtdtdtj
dtf ˆfd «}|S)NrkÚ
__singularÚ__pluralÚ__numrsrcóœ|jd|«|j|||«}|jjr t |«}||zS)num©Ú
setdefaultrmrurvr)rkr{r|r}rsrCrps €rr"z$_make_new_ngettext.<locals>.ngettextºsKø€ð ×јU EÔ
^‰^˜D *¨h¸Ó
Ø × Ñ × ˜ˆBàI‰~Ðr©rr r&r'r^rx)rpr"s` rÚ_make_new_ngettextrƒ¹sXø€Üð Üð äð ôð ôð ô
—U ô
ô
óð ð €Orc óvtdtdtdtdtjdtf
ˆfd «}|S)NrkÚ __string_ctxrrrsrcóš|jd|«|j||«}|jjr t |«}||zS)Nr*r€)rkr…rrrsrCrps €rr,z$_make_new_pgettext.<locals>.pgettextÍsKø€ð ×јY¨ Ô
^‰^˜D Ó
à × Ñ × ˜ˆBðI‰~Ðrrw)rpr,s` rÚ_make_new_pgettextr‡ÌsHø€Üð
Üð
Ü*-ð
Ü9<ð
ÜKLÏ5É5ð
ä ô
óð
ð €OrcóŽtdtdtdtdtdtdtj
dtfˆfd «}|S) Nrkr…r{r|r}rsrcóÂ|jd|«|jd|«|j||||«}|jjr t |«}||zS)Nr*rr€)rkr…r{r|r}rsrCrps €rr.z&_make_new_npgettext.<locals>.npgettextàs_ø€ð ×јY¨ Ô×јU EÔ
^‰^˜D 
¸HÀeÓ
à × Ñ × ˜ˆBðI‰~Ðrr)rpr.s` rÚ_make_new_npgettextrŠÝseø€ôðÜðäðôðôð ô
ð ô —U
ô
ôóðð$ ÐrcófeZdZdZdhZdeddfˆfd Z d&ddd eje ddfd
Z
d&d eje ddfd Z d'd eje
ge
fd
eje
e
ege
fd eje dejeje
e
ge
fdejeje
e
e
ege
fddf dZd(dZefdej$e
ej(fdej*e
dej,ej.ee
ej$eje
ej.eje
dffffdZdddej$ej2ej4ej2ffdZefde
dej:e
de
fdZddde dej.ej4e
e
ffdZde
deje
d eje
d!ej@e
ejBfd"ejejBd#e d$e dejDfd%„Z#ˆxZ$S))ÚInternationalizationExtensionz-This extension adds gettext support to Jinja.Útransr:rNcóÜt||«t|jd<|j |j
|j |j|j|jd¬«y)Nr/F)Úinstall_gettext_translationsÚinstall_null_translationsÚinstall_gettext_callablesÚuninstall_gettext_translationsÚextract_translationsÚnewstyle_gettext)
Úsuperr<roÚglobalsÚextendÚ_installÚ
_install_nullÚ_install_callablesÚ
_uninstallÚ_extract)rr:r@s €rr<z&InternationalizationExtension.__init__s]ø€Ü
јÔ%Ü#1ˆ ×јCÑ Ø×ÑØ)-¯©Ø&*×&8Ñ&8Ø&*×&=Ñ&=Ø+/¯?©?Ø!%§¡Ø
õ
rÚ translationsÚ_SupportedTranslationsÚnewstylecóÐt|dd«}| |j}t|dd«}| |j}t|dd«}t|dd«}|j|||||¬«y)ugettextÚ ungettextr,r.)r,r.)Úgetattrrr")rrrr"r,r.s rr˜z&InternationalizationExtension._installs{ô
˜
°DÓ9ˆØ ˆ"×*ˆ˜°dÓØ Ð Ø,ˆHä˜<¨°TÓ:ˆÜ˜L¨+°tÓ<ˆ Ø ×ÑØ ¸8Èyð õ
rc
óTddl}|j«}t|d«r
|j}ndtdtdtfd}t|d«r
|j
}n"dtdtdtd t dtf
d
}|j|j|j|||¬ «y) Nrr,Úsrcó|Srr)s rr,z=InternationalizationExtension._install_null.<locals>.pgettext*sØrr.Úpr có|dk(r|S|S)Nrr)r s rr.z>InternationalizationExtension._install_null.<locals>.npgettext1sØ šFÐ)r)rr"r,r.) rÚNullTranslationsÚhasattrr,r&r.r'r")rrrr,r.s rr™z+InternationalizationExtension._install_null Ûà× ä < Ô #×,‰Hð
œCð
¤Cð
¬Có
ô < Ô $×.‰Ið
*œSð
*¤Sð
*¬Sð
*´
*¼Só

×ÑØ רØð õ
rrr"r,r.có|||j_|jjr0t|«}t|«}| t |«}| t |«}|jj j||||¬«y©N)rr"r,r.)r:r”ryr‡rrB)rrr"r,r.s rz0InternationalizationExtension._install_callables<ð Ð Ø08ˆD× Ñ Ô × Ñ × Ó0ˆ)¨(Ó3ˆÐ-¨hÓ7àÐ/° Ó: à ×Ñ× Ñ × h¸ÈYð
rcó^dD](}|jjj|d«Œ*yr­)r:rÚpop)rrÚkeys rrz(InternationalizationExtension._uninstallTs-Ø 4ˆ × Ñ × ¨dÕ  4rrEÚgettext_functions.cópt|t«r|jj|«}t ||«Sr)Ú
isinstancer&r:rPÚextract_from_ast)rrEs rz&InternationalizationExtension._extractXs2ô fœcÔ ×%×+¨FÓ3ˆFÜ Ð(9Ó:rrMrc
ó’ t|j«j}d}|jjd«}| |j}d}d}d}i}d} |jj
j dk7rÝ|r|jjd«|jjd«rn£|jjd«}
|
j|vr0|jd|
jd |
jt¬
«|jj
j d k(r5t|j«|j«x||
j<} nP| €|
jd vr|
jd
k(} Œ0tj|
jd«x||
j<} |€{t| tj«rPtjdd«}|||
j<tj tjdd«| «}n| }|
jdk(}|jj
j dk7rŒÝ|jjd«d} d}
t#«}|j%|d«\}}|r4|j'|«|€!tj|dd«}|ddk(}|jj
j)d«rd}
t|j«|jj
j dk7rw|jjd«}
|
j|vr0|jd|
jd|
jt¬
«||
j}|
jdk(}|jjd«|j%|d«\}} t|j«|j'|«nt|j«|D] }||vsŒtj|d«||<Œ"|
sd}n||jd|«| €|j*j,d} | r$|j/|«}| r|j/| «} |j1|| |||t3|«|xr|
«}|j5|«|||gS|S)zParse a translatable tag.NÚstringFÚ block_endÚcommaÚcolonrFztranslatable variable z defined twice.)ÚexcÚassign)ÚtrimmedÚ notrimmedr¼ÚloadÚ_transÚstorerTrzname:pluralizezunknown variable z for pluralizationzpluralize without variablesúext.i18n.trimmed)ÚnextrJrQÚnext_ifÚvalueÚcurrentÚtypeÚexpectÚskip_ifÚfailrÚparse_expressionrÚNamer³r[ÚAssignraÚ _parse_blockrBÚtestr:ÚpoliciesÚ_trim_whitespaceÚ
_make_nodeÚboolÚ
set_lineno)rrMrQr*Ú
context_tokenÚ plural_exprÚplural_expr_assignmentÚnum_called_numrsÚtokenÚvarrÚ have_pluralÚ
referencedÚsingular_namesrÚ plural_namesrFÚnodes rrPz#InternationalizationExtension.parsecsHäf—m‘mÓàˆØŸ
×-¨hÓ7ˆ
à Ð #×)ˆ
/3ˆ Ø;?ÐØˆØ-/ˆ ؈Øm‰m×(¨KÓØ
×$ }‰}×$ WÔà—M‘M×Ó0ˆ{‰{˜iÑ Ø,¨U¯[©[¨O¸?ЗL‘LÜôð}‰}×)¨XÒV—]#Ø/5×/FÑ/FÓ/HÐH ˜%Ÿ+™+ÑØ U§[¡[Ð4LÑ%LØŸ+™+¨Ñ2Ùä/4¯z©z¸%¿+¹+ÀvÓ/NÐN ˜%Ÿ+™+ÑàИc¤5§:¡:Ô.Ü"'§*¡*¨X°vÓ">KØ-8I˜eŸk™kÑ*Ü-2¯\©\ÜŸ
 8¨WÓ5°só.Ñ#&KØ!&§¡°Ñ!5ðGm‰m×#×(¨KÔ7ðJ 
×ј[Ԉ؈ Ü“Uˆ
ð$(×#4Ñ#4°V¸TÓ#BÑ ˆ˜Ù Ø × Ñ ˜nÔ Ð#Ÿj™j¨¸Ñ):¸C Ø!/°Ñ!2°eÑ!;ð =‰=× Ñ × %Ð&6Õ ˆKÜ Ô Ø}‰}×)¨[ÒŸ
×,¨VÓ4Ø—;‘; iÑ—K‘KØ+¨E¯K©K¨?Ð:LП Ü ôð
¯ © Ñ4 Ø!&§¡°Ñ!5Ø M‰M× Ñ  Ô -Ø#'×#4Ñ#4°V¸UÓ#CÑ ˆL˜ Ô Ø × Ñ ˜lÕ Ô ðò ;ˆ˜$Ü"'§*¡*¨T°6Ó": ˜$ð؉KØ
Ð
Ø K‰KÐ5°vÔ ˆ×&×/Ð0BÑCˆ Ø×,¨XÓ6ˆHÙØ×.¨vÓ6àØ Ø Ø Ø Ø Ü Ó Ø Ò *˜{ó
ˆð
˜ÔØ *¨DÐ ˆKrÚ_ws_recóB|jd|j««S) )ÚsubÚstrip)rs rz.InternationalizationExtension._trim_whitespaceÝsØz‰z˜#˜vŸ|™|.rÚallow_pluralizecóRg}g} |jjjdk(rV|j|jjjj dd««t
|j«n|jjjdk(r|t
|j«|jjd«j}|j|«|jd|d«|jjd«nü|jjjd k(r¦t
|j«|jjjdk(r |jjjnd
}|d k(rn{|d k(r|rns|jd
«n|dk(r|jd«|jd|d«n3|jjr|jd«n td«Œ|t|«fS)z1Parse until the next block tag with a given name.Údataú%%Úvariable_beginrFz%(z)sÚ variable_endÚ block_beginNÚendtransÚ pluralizez:a translatable section can have only one pluralize sectionrz6trans blocks can't be nested; did you mean `endtrans`?zBcontrol structures in translatable sections are not allowed; saw `ú`zunclosed translation blockzinternal parser error) rJÚappendrÄÚreplacerÂÚeosÚ RuntimeErrorr
)rrMÚbufrFÚ
block_names rz*InternationalizationExtension._parse_blockàðˆ
؈àØ}‰}×)¨VÒ
˜6Ÿ=™=×0×6×>¸sÀDÓV—]×&×+Ð/?ÒV—]—}‘}×+¨FÓ9Ø×! 
˜R ˜v R˜
×$ ×&×+¨}ÒV—]—}‘}×1°VÒ—M‘M×ðð
 ÒؠؗKð  7Ò—K‘KØð ðØ&˜< ð× Ð"Ð#:Ó;ñIðLœ6 #&rrrr*rsÚvars_referencedr×cóª|jj}|s(|s&|jdd«}|r|jdd«}d} tj|«g}
|*|
j dtj|««d| } |+d| } |
j
tj|«|f«tjtj| d«|
gdd«} |rP|j«D]<\} }
|r| d k(rŒ| jjtj| |
««Œ>nˆtj| «} |rqtj| tj|j«D
cgc].\} }
tj tj| «|
«Œ0c}
} ««} tj"| g«Scc}
} w)
z/Generates a useful node from the data provided.rèrNrr r)r:r”rÚConstÚinsertr—r[ÚitemsrWrjÚMarkSafeIfAutoescapeÚModÚDictÚPairÚOutput)rrrr*rsr×Ú func_nameÚ func_argsrÞs rz(InternationalizationExtension._make_nodeð×ñ
¡xØ×¨cÓ2ˆØŸ¨¨cÓ2àˆ Ü).¯©°XÓ)>Ð(?ˆ à Ð Ø × Ñ ˜Q¤§ ¡ ¨GÓ 4Ô ˜I˜;˜ˆIà Ð ˜I˜;˜ˆIØ × Ñ œeŸk™k¨&Ó1°;Ð z‰zœ%Ÿ*™* Y°ÓÀBÈÈdÓñ
Ø'Ÿo™oÓ
>
" c¨U¢lØØ ×"¤5§=¡=°°eÓ#<Õ 
×-¨dÓ3ˆDÙÜ—y‘yØÜ—J‘Jð/8¯o©oÓ.?÷á *  "ŸJ™J¤u§{¡{°3Ó'7¸Õóóô|‰|˜T˜FÓ#ùó
sÅ:3Gr)NNN)rrN)%r#r$r%r]r8rr<r^rdr˜r™ÚCallabler&r'rr0rerÚTemplateÚSequenceÚIteratorÚTuplerœrgrhrPÚPatternrÐriÚ
__classcell__)r@s@röø„Ù ˆ9€Dð

 

°Dõ

ðTXñ
Ø
Ø@AÇ
Á
È4Ñ@Pð
à
ó
ñ$
 a§j¡j°Ñ&6ð
À$ó
ð@&*Ø<@ØGKñ

à˜S˜E 3˜
ð—*‘*˜c 3¨˜_¨cÐ
ð—**˜
ð
—**˜QŸZ™Z¨¨c¨
°C¨Ñ 
ð —:‘:˜aŸj™j¨#¨s°C¸Ð)=¸sÐ)BÑ

ð
ó
ó0.?ñ ˜˜UŸ^™^Ð Ÿ:™: c™?ð 
Ø S˜!Ÿ'™' !§*¡*¨S¡/°1·7±7¸1¿:¹:Àc¹?ÈCÐ;OÑ3PÐ"PÑ
ó x˜Hðx¨¯©°·±¸Q¿V¹VÀEÇJÁJÑ=OÐ1OÑ)PóxðtFLñ/ /°A·I±I¸c±Nð/ÐPSó-ð-'Ø15ð-
˜˜!Ñ "ó-'ð^<ð<
˜3‘ð<˜Cð <
—66˜#˜uŸz™z˜ < —ZZ §
¡
Ñ
<ð<ð<
÷<$rcó:eZdZdZdhZdddej fdZy)ÚExprStmtExtensionzrAdds a `do` tag to Jinja that works like the print statement just
that it doesn't print the return value.
ÚdorMrrcó–tjt|j«j¬«}|j «|_|S)NrS)rÚExprStmtrÂrJrQÚ parse_tuplerÞ)rrMs rrPzExprStmtExtension.parseUs4Ü~‰~¤T¨&¯-©-Ó%8×%?Ñ%?Ô@ˆØ×(ˆŒ ؈ rN)r#r$r%r]r8rr rPrrrr r Ns'ñð
ˆ6€Dð˜H𨯩ôrr cóneZdZdZddhZdddej ejejffdZ
y) ÚLoopControlExtensionz/Adds break and continue to the template engine.ÚbreakÚcontinuerMrrcóÊt|j«}|jdk(r tj|j
¬«Stj |j
¬«S)NrrS)rJrÚBreakrQÚContinue)rrMs rrPzLoopControlExtension.parse`sBÜV—]#ˆØ ;‰;˜ —;; e§l¡lÔ ~‰~ U§\¡\Ô2rN) r#r$r%r]r8r^rerrrrPrrrrr[s8Ù  €Dð3˜H𯩰·±¸e¿n¹nÐ1LÑ)Mô3rrcóJeZdZdZdhZdddej fdZdede fdZ
y )
ÚDebugExtensiona·A ``{% debug %}`` tag that dumps the available variables,
filters, and tests.