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

195 lines
31 KiB
Plaintext
Raw Normal View History

Ë
LÀjZtã ó—UdZddlZddlZddlmZddlmZddlm Z ddl
m Z ddl
mZdd lmZej"r
ddlZdd
lmZed «Zej.ej0d fed
<ej4d«Zej4d«Zej4dej:«Zej4dej>ej@z«Z!ej4dej>ej@z«Z"e d«Z#e d«Z$e d«Z%e d«Z&e d«Z'e d«Z(e d«Z)e d«Z*e d«Z+e d«Z,e d«Z-e d«Z.e d«Z/e d «Z0e d!«Z1e d"«Z2e d#«Z3e d$«Z4e d%«Z5e d&«Z6e d'«Z7e d(«Z8e d)«Z9e d*«Z:e d+«Z;e d,«Z<e d-«Z=e d.«Z>e d/«Z?e d0«Z@e d1«ZAe d2«ZBe d3«ZCe d4«ZDe d5«ZEe d6«ZFe d7«ZGe d8«ZHe d9«ZIe d:«ZJe d;«ZKe d<«ZLe d=«ZMe d>«ZNe d?«ZOe d@«ZPe dA«ZQe dB«ZRe dC«ZSidDe#“dEe;“dFe'“dGe*“dHe3“dIe2“dJe6“dKe<“dLe.“dMe8“dNe/“dOe9“dPe-“dQe7“dRe)“dSe4“dTe+“e,e0e1e$e(e%e5e&e:dUœ ¥ZTeTj««D��cic]\}}||“Œ
c}}ZVeWeT«eWeV«k(sJdV«‚ej4dNdWj±dX„eYeTdY„¬Z«D««›dO�«ZZe[eIeKeJe=eNeOePg«Z\e[e=eQeKePg«Z]d[e^d\e^fd]„Z_d^d_d\e^fd`„Z`dae^d\e^fdb„Zadce^d\ebfdd„Zcdedfd\ejÈej0e^e^ffdg„ZeGdh„di«ZfGdj„d_ejΫZhGdk„dl«ZiGdm„dn«Zjdudo„ZkGdp„dqel«ZmGdr„dsejΫZnGdt„d «Zoycc}}w)vzúImplements a Jinja / Python combination lexer. The ``Lexer`` class
is used to do some preprocessing. It filters out invalid operators like
the bitshift operators we don't allow in templates. It separates
template code and python code in expressions.
éN)Ú literal_eval)Údeque)Úinterné)Úpattern)ÚTemplateSyntaxError)ÚLRUCache)Ú Environmenté2ÚLexerÚ _lexer_cachez\s+z (\r\n|\r|\n)z7('([^'\\]*(?:\\.[^'\\]*)*)'|"([^"\\]*(?:\\.[^"\\]*)*)")z¿
(
0b(_?[0-1])+ # binary
|
0o(_?[0-7])+ # octal
|
0x(_?[\da-f])+ # hex
|
[1-9](_?\d)* # decimal
|
0(_?0)* # decimal zero
)
zü
(?<!\.) # doesn't start with a .
(\d+_)*\d+ # digits, possibly _ separated
(
(\.(\d+_)*\d+)? # optional fractional part
e[+\-]?(\d+_)*\d+ # exponent part
|
\.(\d+_)*\d+ # required fractional part
)
ÚaddÚassignÚcolonÚcommaÚdivÚdotÚeqÚfloordivÚgtÚgteqÚlbraceÚlbracketÚlparenÚltÚlteqÚmodÚmulÚneÚpipeÚpowÚrbraceÚrbracketÚrparenÚ semicolonÚsubÚtildeÚ
whitespaceÚfloatÚintegerÚnameÚstringÚoperatorÚ block_beginÚ block_endÚvariable_beginÚ variable_endÚ raw_beginÚraw_endÚ
comment_beginÚ comment_endÚcommentÚlinestatement_beginÚlinestatement_endÚlinecomment_beginÚlinecomment_endÚ linecommentÚdataÚinitialÚeofú+ú-ú/z//Ú*ú%z**ú~ú[ú]ú(ú)ú{ú}z==z!=ú>) z>=ú<z<=ú=ú.ú:ú|ú,ú;zoperators droppedrPc#óFK—|]}tj|«–—Œy­w©N)ÚreÚescape)Ú.0Úxs úO/home/antigravity/intellecton/venv/lib/python3.12/site-packages/jinja2/lexer.pyú <genexpr>rZ’sèø€ÒP !”—‘˜1—ÑPùs‚!có—t|« SrT)Úlen©rXs rYú<lambda>r^’s €ÌÈAËÀw€ó)ÚkeyÚ
token_typeÚreturncóØ—|tvr t|Stdtdtdtdt
dt dtdtdtdtd td
td i j||«S) Nzbegin of commentzend of commentr6zbegin of statement blockzend of statement blockzbegin of print statementzend of print statementzbegin of line statementzend of line statementztemplate data / textzend of template)Úreverse_operatorsÚTOKEN_COMMENT_BEGINÚTOKEN_COMMENT_ENDÚ
TOKEN_COMMENTÚTOKEN_LINECOMMENTÚTOKEN_BLOCK_BEGINÚTOKEN_BLOCK_ENDÚTOKEN_VARIABLE_BEGINÚTOKEN_VARIABLE_ENDÚTOKEN_LINESTATEMENT_BEGINÚTOKEN_LINESTATEMENT_ENDÚ
TOKEN_DATAÚ TOKEN_EOFÚget)ras rYÚ_describe_token_typerr¥sv€ØÔ&Ñ&Ü  Ñ,Ð,ô Ð/ÜÐ+Ü�yܘ9ÜÐ5ÜÐ1ÜÐ8ÜÐ4Ü!Ð#<ÜÐ!8ÜÐ*ÜÐ$ð
÷
�cˆ*�jÓ!ð
"r_ÚtokenÚTokencój—|jtk(r |jSt|j«S)z#Returns a description of the token.)ÚtypeÚ
TOKEN_NAMEÚvaluerr)rss rYÚdescribe_tokenry¹s'€à ‡z�z”ZÒØ�{‰{Ðä  §
¡
Ó +Ð+r_Úexprcód—d|vr |jdd«\}}|tk(r|S|}t|«S)z0Like `describe_token` but for token expressions.rOr)Úsplitrwrr)rzrvrxs rYÚdescribe_token_exprr}Ás:€à
ˆd�{Ø—j‘j  aÓ(‰ ˆˆeà ”:Ò ØˆLàˆä  Ó %Ð%r_rxcó>—ttj|««S)zsCount the number of newline characters in the string. This is
useful for extensions that filter a stream.
)r\Ú
newline_reÚfindall)rxs rYÚcount_newlinesr�Îs€ô Œz×!Ñ! %Ó(Ó )Ð)r_Ú environmentr
có–—tj}t|j«t||j«ft|j
«t ||j
«ft|j«t||j«fg}|j�>|jt|j«td||j«zf«|j�>|jt|j«td||j«zf«t|d¬«D�cgc]}|dd‘Œ c}Scc}w)zACompiles all the rules from the environment into a list of rules.Nz ^[ \t\v]*z(?:^|(?<=\S))[^\S\r\n]*T)Úreverser)rUrVr\Úcomment_start_stringreÚblock_start_stringriÚvariable_start_stringrkÚline_statement_prefixÚappendrmÚline_comment_prefixÚTOKEN_LINECOMMENT_BEGINÚsorted)r‚ÚeÚrulesrXs rYÚ
compile_rulesr�Õs-€ä
� ‰ €Aô
� ×0Ñ0Ó 1Ü Ù
ˆk×.Ñ.Ó /ð
ô
� ×.Ñ.Ó /Ü Ù
ˆk×,Ñ,Ó -ð
ô
� ×1Ñ1Ó 2Ü Ù
ˆk×/Ñ/Ó 0ð
ð
€Eð$×(Ñ(Ð4Ø
� ‰ ä�K×5Ñ5Ó6Ü)Ø™q ×!BÑ!BÓCÑCð
ô
ð×&Ñ&Ð2Ø
� ‰ ä�K×3Ñ3Ó4Ü'Ø*©Q¨{×/NÑ/NÓ-OÑOð
ô
ô" %°Ô6Ö 7�aˆAˆaˆbŠEÒ 7Ð7ùÒ 7sÄ7 Ecóp—eZdZdZefdedejeddfd„Zde dejedd fd
„Z y) ÚFailurezjClass that raises a `TemplateSyntaxError` if called.
Used by the `Lexer` to specify known errors.
ÚmessageÚclsrbNcó —||_||_yrT)r’Ú error_class)Úselfr’r“s rYÚ__init__zFailure.__init__s€ðˆŒ ؈Õr_ÚlinenoÚfilenamez te.NoReturncó<—|j|j||«‚rT)r•r’)r–r˜r™s rYÚ__call__zFailure.__call__ s€Ø×јtŸ|™|¨V°XÓ>Ð>r_) Ú__name__Ú
__module__Ú __qualname__Ú__doc__rÚstrÚtÚTyper—ÚintÚOptionalr›©r_rYr‘r‘þsW„ñð
@SñØðØ!"§¡Ð(;Ñ!<ðà
óð ?˜sð?¨a¯j©j¸©oð?À-ô?r_r‘cóX—eZdZUeed<eed<eed<defd„Zdedefd„Zdedefd „Z y
) rtr˜rvrxrbcó—t|«SrT)ry©r–s rYÚ__str__z
Token.__str__s
€Ü˜dÓ#Ð#r_rzcó‚—|j|k(ryd|vr+|jdd«|j|jgk(Sy)z¸Test a token against a token expression. This can either be a
token type or ``'token_type:token_value'``. This can only test
against string values and types.
TrOrF)rvr|rx©r–rzs rYÚtestz
Token.tests@€ð �9‰9˜Ò Øà �$‰;Ø—:‘:˜c 1Ó%¨$¯)©)°T·Z±ZÐ)@Ñ@Ð @àr_Úiterablecó,‡—tˆfd„|D««S)z(Test against multiple token expressions.c3ó@•K—|]}‰j|«–—Œy­wrT)r¬)rWrzr–s €rYrZz!Token.test_any.<locals>.<genexpr>&søèø€Ò8 t�4—9‘9˜T—?Ñ8ùsƒ)Úany)r–r­s` rYÚtest_anyzToken.test_any$sø€äÓ8¨xÔ8Ó8Ð8r_N)
rœr�ržr£Ú__annotations__r r©Úboolr¬r±r¥r_rYrtrt
sC…Ø ƒKØ
ƒIØ ƒJð$˜ó$ð
˜ð
 ó
ð9 #ð9¨$ô9r_có,—eZdZdZdd„Zdd„Zdefd„Zy) ÚTokenStreamIteratorz`The iterator for tokenstreams. Iterate over the stream
until the eof token is reached.
rbNcó—||_yrT)Ústream)r–r·s rYr—zTokenStreamIterator.__init__.s €Øˆ� r_có—|SrTr¥r¨s rYÚ__iter__zTokenStreamIterator.__iter__1s€Øˆ r_cóÀ—|jj}|jtur |jj «t
‚t
|j«|SrT)r·ÚcurrentrvrpÚcloseÚ
StopIterationÚnext©r–rss rYÚ__next__zTokenStreamIterator.__next__4sD€Ø— ‘ ×#Ñ#ˆà �:‰:œÑ "Ø �K‰K× Ñ Ô ÜÐ ä ˆT�[‰[ÔØˆ r_)r·Ú TokenStreamrbN)rbrµ)rœr�ržrŸr—r¹rtrÀr¥r_rYrµrµ)s„ñóóð˜%ôr_rµcó,—eZdZdZdej
edejedejefd„Z de
fd„Z de fd„Z
ede fd „«Zd
edd fd „Zdefd
„Zddedd fd„Zdedejefd„Zdede fd„Zdefd„Zdd„Zdedefd„Zy )rÁzÛA token stream is an iterable that yields :class:`Token`\s. The
parser however does not iterate over it but calls :meth:`next` to go
one token ahead. The current active token is stored as :attr:`current`.
Ú generatorr+r™có®—t|«|_t«|_||_||_d|_tdtd«|_ t|«y)NFrÚ) ÚiterÚ_iterrÚ_pushedr+r™ÚclosedrtÚ
TOKEN_INITIALr»r¾)r–rÃr+r™s rYr—zTokenStream.__init__EsD€ô ˜)“_ˆŒ
Ü(-«ˆŒ ؈Œ Ø ˆŒ
؈Œ ܘQ¤
¨rÓ2ˆŒ Ü ˆT�
r_rbcó—t|«SrT)rµr¨s rYr¹zTokenStream.__iter__Ss
€Ü" 4Ó(Ð(r_cóh—t|j«xs|jjtuSrT)r³rÈr»rvrpr¨s rYÚ__bool__zTokenStream.__bool__Vs%€Ü�D—L‘LÓ!ÒG T§\¡\×%6Ñ%6¼iÐ%GÐGr_có—| S)z Are we at the end of the stream?r¥r¨s rYÚeoszTokenStream.eosYs €ðˆxˆr_rsNcó:—|jj|«y)z Push a token back to the stream.N)rÈr‰r¿s rYÚpushzTokenStream.push^s€à � ‰ ×јEÕ"r_cód—t|«}|j}|j|«||_|S)zLook at the next token.)r¾r»rÑ)r–Ú old_tokenÚresults rYÚlookzTokenStream.lookbs,€ä˜“Jˆ Ø—‘ˆØ � ‰ �&ÔØ ˆŒ ؈
r_Úncó:—t|«D]
}t|«Œy)zGot n tokens ahead.N)Úranger¾)r–rÖÚ_s rYÚskipzTokenStream.skipjs€ä�q“ò ˆAÜ ��Jñ r_rzcóP—|jj|«r t|«Sy)zqPerform the token test and return the token if it matched.
Otherwise the return value is `None`.
N)r»r¬r¾r«s rYÚnext_ifzTokenStream.next_ifos#€ð �<‰<× Ñ ˜TÔ "ܘ“:Ð àr_có(—|j|«duS)z8Like :meth:`next_if` but only returns `True` or `False`.N)rÜr«s rYÚskip_ifzTokenStream.skip_ifxs€à�|‰|˜DÓ!¨Ð-Ð-r_có*—|j}|jr!|jj«|_|S|jjtur t |j «|_|S|S#t$r|j«Y|SwxYw)z|Go one token ahead and return the old one.
Use the built-in :func:`next` instead of calling this directly.
) r»rÈÚpopleftrvrpr¾rÇr½r¼)r–Úrvs rYrÀzTokenStream.__next__|s‚€ð
�\‰\ˆà �<Š<ØŸ<™<×/Ñ/Ó1ˆDŒLðˆ ð
�\‰\×
Ñ
¤iÑ
/ð
Ü# D§J¡JÓ/�” ðˆ ˆrˆ øô!ò
Ø—
‘
• àˆ ð
úsÁA5Á5BÂBcó†—t|jjtd«|_t d«|_d|_y)zClose the stream.rÅr¥TN)rtr»r˜rprÆrÇrÉr¨s rYr¼zTokenStream.close�s.€ä˜TŸ\™\×0Ñ0´)¸RÓ@ˆŒ ܘ"“XˆŒ
؈� r_có®—|jj|«s°t|«}|jjtur:t d|›d�|jj |j|j«‚t d|›dt|j«›�|jj |j|j«‚t|«S)z}Expect a given token type and return it. This accepts the same
argument as :meth:`jinja2.lexer.Token.test`.
z%unexpected end of template, expected rNzexpected token z, got ) r»r¬r}rvrprr˜r+r™ryr¾r«s rYÚexpectzTokenStream.expect“s¶€ð�|‰|× Ñ  Ô&Ü& tÓ,ˆDà�|‰|× Ñ ¤IÑ-Ü)Ø;¸D¸8À1ÐEØ—L‘L×'Ñ'Ø—I‘IØ—M‘Mó ðô&Ø! $ ¨´¸t¿|¹|Ó0LÐ/OÐPØ— ‘ ×#Ñ#Ø— ‘ Ø—
‘
ó ð
ô�D‹zÐr_)r)rbN)rœr�ržrŸr¡ÚIterablertr¤r r—rµr¹r³rÍÚpropertyrÏrÑrÕr£rÚrÜrÞrÀr¼rär¥r_rYrÁrÁ?sü„ñð
à—:‘:˜eÑ$ð ð�j‰j˜‰oð ð—*‘*˜S‘/ó ð)Ð-ó)ðH˜$óHðð�Tòóðð#˜%ð# Dó#ð�eóñ�cð $óð
˜Cð A§J¡J¨uÑ$5óð.˜Cð. Dó.ð˜%óó"ð ˜3ð 5ôr_rÁc óh—|j|j|j|j|j|j
|j |j|j|j|j|jf }tj|«}|€t|«xt|<}|S)z(Return a lexer which is probably cached.)r†Úblock_end_stringr‡Úvariable_end_stringr…Úcomment_end_stringrˆrŠÚ trim_blocksÚ
lstrip_blocksÚnewline_sequenceÚkeep_trailing_newliner
rqr )r‚r`Úlexers rYÚ get_lexerrð¬s§€ð ×&Ñ&Ø×$Ñ$Ø×)Ñ)Ø×'Ñ'Ø×(Ñ(Ø×&Ñ&Ø×)Ñ)Ø×'Ñ'Ø×ÑØ×!Ñ!Ø×$Ñ$Ø×)Ñ)ð
€Cô
× Ñ ˜SÓ !€Eà €}Ü$)¨+Ó$6Ð6Œ �SјEà €Lr_có&‡—eZdZdZdZˆfd„ZˆxZS)ÚOptionalLStripzWA special tuple for marking a point in the state that can have
lstrip applied.
r¥có$•—t‰|�||«SrT)ÚsuperÚ__new__)r“ÚmembersÚkwargsÚ __class__s €rYrõzOptionalLStrip.__new__Ísø€Ü‰w‰˜s GÓ,Ð,r_)rœr�ržrŸÚ __slots__rõÚ
__classcell__)røs@rYròròÄsø„ñð€I÷-ð-r_ròcó¸—eZdZUejeed<ejeejedfeje fed<ejeed<y)Ú_Ruler.ÚtokensÚcommandN) rœr�ržr¡ÚPatternr r²ÚUnionÚTupler‘r¤r¥r_rYrürüÑsJ…Ø
�Y‰Y�s‰^ÓØ
�G‰G�C˜Ÿ™  c Ñ*¨A¯G©G°GÑ,<Ð<Ñ =Ó=Ø
�Z‰Z˜‰_Ôr_rücóê—eZdZdZdd„Zdedefd„Z ddedejed ejed
ejede f
d „Z
dd ejeje
eefdejed ejedejefd
„Z ddedejed ejed
ejedejeje
eeff
d„Zy)r a
Class that implements a lexer for a given environment. Automatically
created by the environment class, usually you don't have to do that.
Note that the lexer is not automatically bound to an environment.
Multiple environments can share the same lexer.
rbNcóî—tj}dtdtjtfd„}t t td«t ttd«t ttd«t ttd«t ttd«t t t"d«g}t%|«}||j&«}||j(«}||j*«}||j,«} |j.rdnd}
|j0|_|j2|_|j4|_d|›d|›d|›d �} d
j7| g|D� �
cgc]\} }
d | ›d |
›d
�‘Œc}
} z«}dt |d|›d�«t9t:d«d«t |d«t:d«gt<t |d|›d|›d|›|
›d �«t>t@fd«t |d«tCd«fd«gtDt |d|›d|›d|›|
›d�«tFd«g|ztHt |d| ›d| ›�«tJd«g|ztLt |d|›d|›d|›d|›|
›d �
«t9t:tN«d«t |d«tCd«fd«gtPt |d«tRd«g|ztTt |d«tVtXfd«gi|_-ycc}
} w)NrXrbcól—tj|tjtjz«SrT)rUÚcompileÚMÚSr]s rYÚczLexer.__init__.<locals>.cãs€Ü—:‘:˜a¤§¡¬¯©¡Ó-Ð -r_z\n?rÅz(?P<raw_begin>z(\-|\+|)\s*raw\s*(?:\-z\s*|z))rPz(?P<rKz (\-|\+|))Úrootz(.*?)(?:rHú#bygroupz.+z (.*?)((?:\+z|\-ú#popz(.)zMissing end of comment tagz(?:\+z\-z (.*?)((?:z(\-|\+|))\s*endraw\s*(?:\+zMissing end of raw directivez \s*(\n|$)z(.*?)()(?=\n|$)).rUrVr r¡rÿrüÚ
whitespace_reÚTOKEN_WHITESPACEÚfloat_reÚ TOKEN_FLOATÚ
integer_reÚ
TOKEN_INTEGERÚname_rerwÚ string_reÚ TOKEN_STRINGÚ operator_reÚTOKEN_OPERATORr�r†rèrêrérërìrírîÚjoinròrorergrfr‘rirjrkrlÚTOKEN_RAW_BEGINÚ
TOKEN_RAW_ENDrmrnr‹rhÚTOKEN_LINECOMMENT_ENDrŽ)r–r‚r�rÚ tag_rulesÚroot_tag_rulesÚblock_start_reÚ block_end_reÚcomment_end_reÚvariable_end_reÚblock_suffix_reÚ root_raw_rerÖÚrÚ
root_parts_res rYr—zLexer.__init__ßsc€ä �I‰Iˆð .”ð .œŸ™¤3™ó .ô
”-Ô!1°4Ó 8Ü ”(œK¨Ó .Ü ”*œm¨TÓ 2Ü ”'œ: tÓ ,Ü ”)œ\¨4Ó 0Ü ”+œ~¨tÓ 4ð
$
ˆ ô' {Ó3ˆá˜;×9Ñ9Ó:ˆÙ˜×5Ñ5Ó6ˆ Ù˜;×9Ñ9Ó:ˆÙ˜K×;Ñ;Ó<ˆð%0×$;Ò$;™&Àˆà(×6Ñ6ˆÔà +× <Ñ <ˆÔØ%0×%FÑ%FˆÔ"ð˜nÐ-ð.Ø!�N $ | n°Bð
8ð ðŸ™Ø
ˆMÀ.×Q¹$¸!¸Q  Q C q¨¨¨9Ò5ÓQÑ Qó
ˆ
ð
äÙ˜ - °Ð2Ó3Ü"¤:¨zÓ:Øóô ‘a˜“gœz¨4Ó0ð ô
ÜÙØ& ~Ð&6°c¸.Ð9IðJØ+Ð,¨_Ð,=¸RðAóô#Ô$5Ð6Øó
ô‘a˜“i¤'Ð*FÓ"GÐ!IÈ4ÓPð
"ô
ÜÙØ   ¨c°,°ð@Ø)˜N¨?Ð*;¸1ð>óô$Øó
ð ðñ
ô
!ÜÙ˜˜OÐ,¨D°Ð0AÐBÓCÜ&Øóð#ðñ#ô
ÜÙØ$ ^Ð$4ð5!Ø!- ¨c°,°ð@Ø)˜N¨?Ð*;¸2ð?óô
#¤:¬}Ó=Øóô‘a˜“i¤'Ð*HÓ"IÐ!KÈTÓRð ô