Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes15kdownloads
parser.cpython-313.pyc303 linesDownload Raw Back to __pycache__
1�

2��j����H�%SrSSKrSSKrSSKJr SSKJr SSKJr SSKJ	r	 SSKJ3r4 \R(a5SSKr
SS	KJr \R "S6\R"\R$5r\R "S\R(\R*5r\"/SQ5r\"/S
Q5r\R4\R6\R8\R:\R<\R>S.r \RB\"\RF\RH4\%S'"SS5r&g)z8Parse tokens from the lexer into nodes for the compiler.�N�)�nodes)�TemplateAssertionError)�TemplateSyntaxError)�describe_token)�describe_token_expr)�Environment�_ImportInclude�7_MacroCall)�for�if�block�extends�print�macro�include�from�import�set�with�8autoescape)�eq�ne�lt�lteq�gt�gteq)�add�sub�mul�div�floordiv�mod�_math_nodesc�
�\rSrSrSrSUSSS\S\R\S\R\S	\R\S9S4SjjrS\	4S\S
\R\10S\R\	S11S4SjjrS\R\S\R\R\S4S
\R\12S13S4SjrSVS\S
\R\14S15S4SjjrSWS\R\R\S4S
\R\16S17S4SjjrSVS\R\R\S4S18\4SjjrSVS
\R\19S20\R*4SjjrS21\R.\R0\R\R044SjrSXS\R\S4S\S22\R\R04SjjrS23\R.\R6\R844SjrS24\R<4SjrS25\R@4Sjr!S26\RD4S jr#S27\RH4S!jr%S28\RL4S"jr'S29\RP4S#jr)S$\*S%\S30\*4S&jr+S31\RX4S'jr-S32\R\4S(jr/S33\R`4S)jr1S$\2S34S4S*jr3S35\Rh4S+jr5S36\Rl4S,jr7S37\Rp4S-jr9S38\Rt4S.jr;\<RzSYS/\S0S1S39\R|4S2jj5r?\<RzSZS/\S0\S\R\R\S4S3\S40\R.\R�\R|\R4441S4jj5r?SZS/\S0\S\R\R\S4S3\S42\R.\R�\R|\R4443S5jjr?S[S6\S44\R�4S7jjrBS45\R�4S8jrCS46\R�4S9jrDS47\R�4S:jrES48\R�4S;jrFS49\R�4S<jrGS50\R�4S=jrHS51\R�4S>jrIS52\R�4S?jrJS53\R�4S@jrKS[SA\S54\R�4SBjjrLSXS3\S55\R�4SCjjrMS\SD\S6\S\R\R\S4SE\S3\S56\R.\R\R�44SFjjrNS57\R4SGjrOS58\R�4SHjrQS$\R�S59\R�4SIjrRS$\R�S60\R�4SJjrSS$\R�S61\R.\R�\R�44SKjrVS62\R�4SLjrWS63\R\R\R�\R\R�\R\R�\R\R�44SMjrYS$\R�S64\R�4SNjr[SXS$\R\R�SO\S65\R\R�4SPjjr\S$\R�S66\R�4SQjr]SVS\R\R\S4S67\R\R04SRjjr^S68\R�4SSjr`STrag)]�Parser�0z}This is the central parsing class Jinja uses.  It's passed to69extensions and can be used to parse expressions or statements.70N�environmentr	�source�name�filename�state�returnc�"�XlURX#XE5UlX0lX@lSUl0UlUR5H/nURHnURURU'M M1 SUl71/Ul/Ulg)NFr)
r(�	_tokenize�streamr*r+�closed�72extensions�iter_extensions�tags�parse�_last_identifier�73_tag_stack�_end_token_stack)�selfr(r)r*r+r,�	extension�tags        �SD:\code\apps\devtools\python\user_packages\Python313\site-packages\jinja2/parser.py�__init__�Parser.__init__5s���'��!�+�+�F�(�J����	� �
����
�	
��%�4�4�6�I� �~�~��'0�������$�&�7�!"���')���;=����msg�lineno�exczte.NoReturnc��Uc URRRnU"XURUR5e)z�Convenience method that raises `exc` with the message, passed74line number or last line number as well as the current name and75filename.76)r0�currentrAr*r+)r9r@rArBs    r<�fail�Parser.failLs5���>��[�[�(�(�/�/�F��#�t�y�y�$�-�-�8�8r?�end_token_stack.c77��[5nUH"nUR[[U55 M$ U(a1SR	[[78[[US555nOSnUcS/nOSU<S3/nU(a3UbX;aUR
SUS35 OUR
SUS35 UR(a#UR
SURS<S35 URS	R	U5U5 g)79Nz or �����zUnexpected end of template.zEncountered unknown tag �.z\You probably made a nesting mistake. Jinja is expecting this tag, but currently looking for z*Jinja was looking for the following tags: z/The innermost block that needs to be closed is � )	r�update�mapr�join�repr�appendr7rE)r9r*rGrA�expected�exprs�currently_looking�messages        r<�_fail_ut_eof�Parser._fail_ut_eofZs�� #�u��$�E��O�O�C� 3�U�;�<�%��17����D�#�1�?�2�3F�G�H�2��!%���<�4�5�G�1�$���;�<�G����D�$4����2�2C�1D�A�G��80���@�AR�@S�ST�U���?�?��N�N���O�O�B�'�*�!�-�
�81	
�	�	�#�(�(�7�#�V�,r?c�<�URXRU5 g)z�Called if the parser encounters an unknown tag.  Tries to fail82with a human readable error message that could help to identify83the problem.84N)rUr8)r9r*rAs   r<�fail_unknown_tag�Parser.fail_unknown_tag�s��	
���$� 5� 5�v�>r?�85end_tokensc�z�[UR5nUbURU5 URSX25 g)z9Like fail_unknown_tag but for end of template situations.N)�listr8rPrU)r9rZrA�stacks    r<�fail_eof�Parser.fail_eof�s6���T�*�*�+���!��L�L��$����$��.r?�extra_end_rulesc��URRRS;agUb%URRRU5$g)zAre we at the end of a tuple?)�variable_end�	block_end�rparenTF)r0rD�type�test_any)r9r`s  r<�is_tuple_end�Parser.is_tuple_end�sD���;�;���#�#�'N�N��
�
(��;�;�&�&�/�/��@�@�r?c���U=RS-
sl[R[R5n[R86R
USUR3US9 U$)zDReturn a new free identifier as :class:`~jinja2.nodes.InternalName`.r�fi�rA)r6�object�__new__r�InternalName�Noder=)r9rA�rvs   r<�free_identifier�Parser.free_identifier�sS������"��
�^�^�E�.�.�
/��
�87�88���B�"�T�%:�%:�$;� <�V��L��	r?c�n�URRnURS:waURSUR5 UR89R
UR5 SnUR[;aV[USURRR35nU"5U(aUR90R5 $$URS:Xa2UR5U(aUR91R5 $$URS:Xa2UR5U(aUR92R5 $$URRUR5nUb*U"U5U(aUR93R5 $$UR94R5 SnURURUR5 U(aUR95R5 gg!U(aUR96R5 ff=f)	zParse a single statement.r*ztag name expectedT�parse_�call�filterNF)r0rDrerErAr7rP�value�_statement_keywords�getattr�pop�parse_call_block�parse_filter_blockr2�getrX)r9�token�pop_tag�f�exts     r<�parse_statement�Parser.parse_statement�s������#�#���:�:����I�I�)�5�<�<�8������u�{�{�+���	&��{�{�1�1��D�F�4�;�;�+>�+>�+D�+D�*E�"F�G���s� ����#�#�%���{�{�f�$��,�,�.�����#�#�%���{�{�h�&��.�.�0�����#�#�%���/�/�%�%�e�k�k�2�C����4�y�����#�#�%��	
�O�O���!��G��!�!�%�+�+�u�|�|�<�����#�#�%���w����#�#�%��s&�+AH�H�H�/H�+AH�$H4�drop_needlec�6�URRS5 URRS5 URU5nURRR97S:XaUR
U5 U(a[UR5 U$)aParse multiple statements into a list until one of the end tokens98is reached.  This is used to parse the body of statements as it also99parses template data if appropriate.  The parser checks first if the100current token is a colon and skips it if there is one.  Then it checks101for the block end and parses until if one of the `end_tokens` is102reached.  Per default the active token in the stream at the end of103the call is the matched end token.  If this is not wanted `drop_needle`104can be set to `True` and the end token is removed.105�colonrc�eof)r0�skip_if�expect�subparserDrer^�next)r9rZr��results    r<�parse_statements�Parser.parse_statements�sr��	
�����G�$�	
�����;�'����z�*���;�;���#�#�u�,��M�M�*�%��������
r?c�T�[UR5RnURSS9nURR	S5(a%UR5n[R"X#US9$URS5nURSSS9n[R"X$XQS9$)zParse an assign statement.T��with_namespace�assignrkN)zname:endset�r�)r�r0rA�parse_assign_targetr��parse_tupler�Assign�parse_filterr��AssignBlock)r9rA�target�expr�filter_node�bodys      r<�	parse_set�Parser.parse_set�s����d�k�k�"�)�)���)�)��)�>���;�;���x�(�(��#�#�%�D��<�<��V�<�<��'�'��-���$�$�%5�4�$�H��� � ��d�J�Jr?c106��URRS5RnURSS9nURRS5 UR	SSS9nSnURRS	5(aUR
5nURRS1075nURS5n[UR5RS:Xa/nOURS
SS9n[R"X#XgXEUS9$)zParse a for loop.zname:for)�name:in)r`r�F)�name:recursive)�
with_condexprr`N�name:ifr�)�name:endfor�	name:else�endfor)r�Tr�rk)r0r�rAr�r�r��parse_expressionr�r�rwr�For)r9rAr��iter�test�	recursiver��else_s        r<�	parse_for�Parser.parse_for�s������#�#�J�/�6�6���)�)�,�)�G�������9�%�����1D� �108�����;�;���y�)�)��(�(�*�D��K�K�'�'�(8�9�	��$�$�%A�B�������"�"�h�.��E��)�)�*:��)�M�E��y�y��t�D�F�S�Sr?c�4�[R"URRS5RS9=pURSS9UlURS5Ul/Ul	/Ul109[UR5nUR
S5(aO[R"URRRS9nURRU5 M�UR
S5(aURS	SS1109Ul111U$)zParse an if construct.r�rkTF�r�)�	name:elifr��112name:endifr�r�)r�r�)r�Ifr0r�rAr�r�r�r��elif_r�r�rDrP)r9�noder�r~s    r<�parse_if�Parser.parse_if�s���������(:�(:�9�(E�(L�(L�M�M����(�(�u�(�=�D�I��-�-�.V�W�D�I��D�J��D�J�����%�E��z�z�+�&�&��x�x�t�{�{�':�':�'A�'A�B�����#�#�D�)�����K�(�(�#�4�4�_�RV�4�W�����
r?c�b�[R"[UR5RS9n/n/nURR113RS:wa�U(aURRS5 UR5nURS5 URU5 URRS5 URUR55 URR114RS:waM�X!lX1l
URSSS9UlU$)	Nrkrc�comma�paramr�)zname:endwithTr�)r�Withr�r0rArDrer�r��set_ctxrPr��targets�valuesr�r�)r9r�r�r�r�s     r<�115parse_with�Parser.parse_withs����z�z��d�k�k�!2�!9�!9�:��&(��%'���k�k�!�!�&�&�+�5�����"�"�7�+��-�-�/�F��N�N�7�#��N�N�6�"��K�K���x�(��M�M�$�/�/�1�2��k�k�!�!�&�&�+�5������)�)�*;��)�N��	��r?c��[R"[UR5RS9n[R116"SUR
55/UlURSSS9Ul	[R"U/5$)Nrkr)zname:endautoescapeTr�)r�ScopedEvalContextModifierr�r0rA�Keywordr��optionsr�r��Scope�r9r�s  r<�parse_autoescape�Parser.parse_autoescape"sh���.�.�d�4�;�;�6G�6N�6N�O���
�
�l�D�4I�4I�4K�L�M����)�)�*A�t�)�T��	��{�{�D�6�"�"r?c��[R"[UR5RS9nURRS5RUlURRS5Ul	URRS5Ul117URRRS:XaURS5 URSSS	9UlUR(afURHVn[!U[R"5(a#[%S118UR55(dMEURS5 MX URRSUR-5 U$)
Nrkr*zname:scopedz
name:requiredrzpBlock names in Jinja have to be valid Python identifiers and may not contain hyphens, use an underscore instead.)z
name:endblockTr�c3�# �UHJn[U[R5(+=(d URR	5(+v� ML g7f�N)�119isinstancer�TemplateData�data�isspace)�.0�output_nodes  r<�	<genexpr>�%Parser.parse_block.<locals>.<genexpr>>sI���B�(7��#�;��0B�0B�C�C�6�&�+�+�3�3�5�5�6�'6�s�AAz7Required blocks can only contain comments or whitespacezname:)r�Blockr�r0rAr�rwr*r��scoped�requiredrDrerEr�r�r��Output�any)r9r��	body_nodes   r<�parse_block�Parser.parse_block(s&���{�{�$�t�{�{�"3�":�":�;���K�K�&�&�v�.�4�4��	��k�k�)�)�-�8������+�+�O�<��
�120�;�;���#�#�u�,��I�I�?�
�121�)�)�*<�$�)�O��	�122�=�=�!�Y�Y�	�!�)�U�\�\�:�:�c�B�(1���B�?�?�123�I�I�W�X�
'�	
�����G�d�i�i�/�0��r?c��[R"[UR5RS9nUR5UlU$�Nrk)r�Extendsr�r0rAr��templater�s  r<�
parse_extends�Parser.parse_extendsHs4���}�}�D����$5�$<�$<�=���-�-�/��
��r?r��defaultc�J�URRRSS5(aqURR5R	S5(aC[UR5RS:HUlURR5 U$X!lU$)Nz	name:withzname:without�name:contextr)	r0rDrf�lookr�r�rw�with_context�skip)r9r�r�s   r<�parse_import_context�Parser.parse_import_contextMs����;�;���'�'���124�125��k�k��� �%�%�n�5�5� $�T�[�[� 1� 7� 7�6� A�D���K�K������!(���r?c��[R"[UR5RS9nUR5UlURRRS5(aQURR5RS5(a#SUl126URRS5 OSUl127URUS5$)Nrkzname:ignorezname:missingT�F)
r�Includer�r0rAr�r�rDr�r��ignore_missingr�r�r�s  r<�
parse_include�Parser.parse_includeYs����}�}�D����$5�$<�$<�=���-�-�/��
��;�;���#�#�M�2�2�t�{�{�7G�7G�7I�7N�7N��8128�8129�#'�D���K�K���Q��"'�D���(�(��t�4�4r?c�$�[R"[UR5RS9nUR5UlURRS5 URSS9RUl130URUS5$)Nrk�name:asT��	name_onlyF)r�Importr�r0rAr�r�r�r�r*r�r�r�s  r<�parse_import�Parser.parse_importeso���|�|�4����#4�#;�#;�<���-�-�/��
������9�%��.�.��.�>�C�C����(�(��u�5�5r?c�0^^�[R"[TR5RS9mTR5TlTRRS5 /TlS[4UU4SjjnTR(aTRRS5 TRRRS:XGaU"5(aGO$TRSS9nURRS	5(aTRS131UR[ S9 TRR#S5(aATRSS9nTRR%URUR45 O%TRR%UR5 U"5(d$TRRRS:waOOTRRS5 GM�['TS
5(dSTlT$)Nrkzname:importr-c�.>�TRRRS;apTRR5R	S5(aB[TR5RS:HTlTRR5 gg)N>r�withoutr�rTF)r0rDrwr�r�r�r�r�)r�r9s��r<�
parse_context�(Parser.parse_from.<locals>.parse_contextrsr����{�{�"�"�(�(�-���+�+�"�"�$�)�)�.�9�9�$(����$5�$;�$;�v�$E��!���� � �"��r?Tr�r*r��_z4names starting with an underline can not be imported)rBr�r�F)r�132FromImportr�r0rAr�r�r��names�boolrDrer�r*�133startswithrErr�rP�hasattrr�)r9r�r��aliasr�s`   @r<�134parse_from�Parser.parse_fromls�������t�D�K�K�'8�'?�'?�@���-�-�/��
������=�)���135�	�t�	�	���z�z����"�"�7�+��{�{�"�"�'�'�6�1� �?�?���1�1�D�1�A���;�;�)�)�#�.�.��I�I�N��
�
�2���136�;�;�&�&�y�1�1� �4�4�t�4�D�E��J�J�%�%�v�{�{�E�J�J�&?�@��J�J�%�%�f�k�k�2� �?�?�d�k�k�&9�&9�&>�&>�'�&I��'J����"�"�6�*�+�,�t�^�,�,� %�D���r?c�z�/=o!l/=o1lURRS5 URRR137S:wa�U(aURRS5 UR
SS9nURS5 URRS5(a URUR55 OU(aURS5 URU5 URRR138S:waM�URRS5 g)	N�lparenrdr�Tr�r�r�z-non-default argument follows default argument)�args�defaultsr0r�rDrer�r�r�rPr�rE)r9r�rr�args     r<�parse_signature�Parser.parse_signature�s������y�#%�%��=������8�$��k�k�!�!�&�&�(�2�����"�"�7�+��*�*�T�*�:�C��K�K�� ��{�{�"�"�8�,�,����� 5� 5� 7�8���	�	�I�J��K�K����k�k�!�!�&�&�(�2�	
�����8�$r?c��[R"[UR5RS9nURR139RS:XaURU5 O/Ul/Ul	UR5n[U[R5(dURSUR5 X!lURSSS9UlU$)Nrkrz
expected call)zname:endcallTr�)r�	CallBlockr�r0rArDrer140rrr�r��CallrErur�r�)r9r��	call_nodes   r<r{�Parser.parse_call_block�s������d�4�;�;�&7�&>�&>�?���;�;���#�#�x�/�� � ��&��D�I��D�M��)�)�+�	��)�U�Z�Z�0�0��I�I�o�t�{�{�3��	��)�)�*;��)�N��	��r?c��[R"[UR5RS9nURSSS9UlURSSS9UlU$)NrkT)�start_inline)zname:endfilterr�)	r�FilterBlockr�r0rAr�rvr�r�r�s  r<r|�Parser.parse_filter_block�sU��� � ��T�[�[�(9�(@�(@�A���'�'��4�'�@����)�)�*=�4�)�P��	��r?c���[R"[UR5RS9nURSS9RUlURU5 URSSS9Ul	U$)NrkTr�)z
name:endmacror�)141r�Macror�r0rAr�r*r142r�r�r�s  r<�parse_macro�Parser.parse_macro�se���{�{�$�t�{�{�"3�":�":�;���,�,�t�,�<�A�A��	����T�"��)�)�*<�$�)�O��	��r?c��[R"[UR5RS9n/UlURR143RS:wa{UR(aURRS5 URRUR55 URR144RS:waM{U$)Nrkrcr�)145rr�r�r0rArDrer�rPr�r�s  r<�parse_print�Parser.parse_print�s����|�|�4����#4�#;�#;�<����146��k�k�!�!�&�&�+�5��z�z����"�"�7�+��J�J���d�3�3�5�6��k�k�!�!�&�&�+�5��r?�147with_tupler�zte.Literal[True]c��gr��)r9rr�s   r<r��Parser.parse_assign_target�s��r?r�c��gr�r)r9rr�r`r�s     r<r�r�s��9<r?c��U(aFURRS5n[R"URSUR148S9nO9U(aUR
SUUS9nOURUS9nURS5 UR5(dAURS[U5RR5<3UR1495 U$)a�Parse an assignment target.  As Jinja allows assignments to150tuples, this function can parse all allowed assignment targets.  Per151default assignments to tuples are parsed, that can be disable however152by setting `with_tuple` to `False`.  If only assignments to names are153wanted `name_only` can be set to `True`.  The `extra_end_rules`154parameter is forwarded to the tuple parsing function.  If155`with_namespace` is enabled, a namespace assignment may be parsed.156r*�storerkT)�157simplifiedr`r�r�zcan't assign to )r0r�r�NamerwrAr��
parse_primaryr��158can_assignrEre�__name__�lower)r9rr�r`r�r~r�s       r<r�r�s���"��K�K�&�&�v�.�E��Z�Z����W�U�\�\�J�F���)�)�#�$3�#1�*����+�+�>�+�J���N�N�7�#�� � �"�"��I�I�"�4��<�#8�#8�#>�#>�#@�"C�D�f�m�m�
��
r?r�c�P�U(aUR5$UR5$)z�Parse an expression.  Per default all expressions are parsed, if159the optional `with_condexpr` parameter is set to `False` conditional160expressions are not parsed.161)�parse_condexpr�parse_or�r9r�s  r<r��Parser.parse_expressions"��162��&�&�(�(��}�}��r?c���URRRnUR5nURR	S5(a�UR5nURR	S5(aUR5nOSn[R"X2XAS9nURRRnURR	S5(aM�U$)Nr�r�rk)r0rDrAr+r�r*r�CondExpr)r9rA�expr1�expr2�expr3s     r<r*�Parser.parse_condexpr	s������$�$�+�+���
�
����k�k�!�!�)�,�,��M�M�O�E��{�{�"�"�;�/�/��+�+�-�����N�N�5��F�E��[�[�(�(�/�/�F��k�k�!�!�)�,�,��r?c�t�URRRnUR5nURR	S5(agUR5n[163R"X#US9nURRRnURR	S5(aMgU$)N�name:orrk)r0rDrA�	parse_andr�r�Or�r9rA�left�rights    r<r+�Parser.parse_ors������$�$�+�+���~�~����k�k�!�!�)�,�,��N�N�$�E��8�8�D��7�D��[�[�(�(�/�/�F��k�k�!�!�)�,�,��r?c�t�URRRnUR5nURR	S5(agUR5n[164R"X#US9nURRRnURR	S5(aMgU$)N�name:andrk)r0rDrA�	parse_notr�r�Andr8s    r<r6�Parser.parse_and!s������$�$�+�+���~�~����k�k�!�!�*�-�-��N�N�$�E��9�9�T��8�D��[�[�(�(�/�/�F��k�k�!�!�*�-�-��r?c���URRRS5(aB[UR5Rn[165R"UR5US9$UR5$)N�name:notrk)	r0rDr�r�rAr�Notr>�
parse_compare)r9rAs  r<r>�Parser.parse_not*sX���;�;���#�#�J�/�/��$�+�+�&�-�-�F��9�9�T�^�^�-�f�=�=��!�!�#�#r?c���URRRnUR5n/nURRRnU[166;aI[
UR5 UR[R"X@R555 O�URRS5(a5UR[R"SUR555 O�URRRS5(a~URR5RS5(aPURRS5 UR[R"SUR555 OO#URRRnGM�U(dU$[R"X#US9$)Nr��inrBr��notinrk)r0rDrA�parse_math1re�_compare_operatorsr�rPr�Operandr�r�r�r��Compare)r9rAr��ops�167token_types     r<rD�Parser.parse_compare0sS�����$�$�+�+�����!��������,�,�1�1�J��/�/��T�[�[�!��168�169�5�=�=��5E�5E�5G�H�I����$�$�Y�/�/��170�171�5�=�=��t�/?�/?�/A�B�C����$�$�)�)�*�5�5�$�+�+�:J�:J�:L�:Q�:Q��;�;���� � ��#��172�173�5�=�=��$�2B�2B�2D�E�F���[�[�(�(�/�/�F����K��}�}�T�v�6�6r?c���URRRnUR5nURRRS;a�[174URRRn[
UR5 UR5nU"X$US9nURRRnURRRS;aM�U$)N)rrrk)r0rDrA�parse_concatrer$r��r9rAr9�clsr:s     r<rI�Parser.parse_math1Gs������$�$�+�+��� � �"���k�k�!�!�&�&�.�8��d�k�k�1�1�6�6�7�C�������%�%�'�E��t�6�2�D��[�[�(�(�/�/�F��k�k�!�!�&�&�.�8��r?c��URRRnUR5/nURRRS:XaZ[UR5 UR
UR55 URRRS:XaMZ[U5S:XaUS$[R"X!S9$)N�tilderrrk)175r0rDrA�parse_math2rer�rP�lenr�Concat)r9rArs   r<rQ�Parser.parse_concatRs������$�$�+�+��� � �"�#���k�k�!�!�&�&�'�1�������K�K��(�(�*�+��k�k�!�!�&�&�'�1��t�9��>���7�N��|�|�D�0�0r?c���URRRnUR5nURRRS;a�[176URRRn[
UR5 UR5nU"X$US9nURRRnURRRS;aM�U$)N)r r!r"r#rk)r0rDrA�	parse_powrer$r�rRs     r<rW�Parser.parse_math2\s������$�$�+�+���~�~����k�k�!�!�&�&�*K�K��d�k�k�1�1�6�6�7�C�������N�N�$�E��t�6�2�D��[�[�(�(�/�/�F��k�k�!�!�&�&�*K�K��r?c��URRRnUR5nURRRS:Xa�[UR5 UR5n[R"X#US9nURRRnURRRS:XaM�U$)N�powrk)r0rDrA�parse_unaryrer�r�Powr8s    r<r\�Parser.parse_powgs������$�$�+�+�����!���k�k�!�!�&�&�%�/�������$�$�&�E��9�9�T��8�D��[�[�(�(�/�/�F�	�k�k�!�!�&�&�%�/�177�r?�with_filterc���URRRnURRRnUS:Xa:[	UR5 [178R"URS5US9nOPUS:Xa:[	UR5 [179R"URS5US9nOUR5nURU5nU(aURU5nU$)NrFrkr)r0rDrerAr�r�Negr`�Posr%�
parse_postfix�parse_filter_expr)r9rcrNrAr�s     r<r`�Parser.parse_unaryqs����[�[�(�(�-�-�180����$�$�+�+�����������9�9�T�-�-�e�4�V�D�D�
�5�
 �������9�9�T�-�-�e�4�V�D�D��%�%�'�D��!�!�$�'����)�)�$�/�D��r?c���URRnURS:XGaB[UR5 URS;a.[181R"URS;URS9nU$URS;a![182R"SURS9nU$U(a�URRRS:Xaf[UR5 URRS5n[183R"URURURS9nU$[184R"URSURS9nU$URS	:Xa�[UR5 UR/nURnURRRS	:XajURURRR5 [UR5 URRRS	:XaMj[185R"S186RU5US9nU$URS;a@[UR5 [187R"URURS9nU$URS:XaA[UR5 URS
S9nURRS5 U$URS:XaUR5nU$URS:XaUR5nU$UR!S[#U5<3UR5 W$)zxParse a name or literal value. If ``with_namespace`` is enabled, also188parse namespace attr refs, for use in assignments.r*)�true�false�True�False)rkrmrk)�none�NoneN�dot�load�string�)�integer�floatrT)�explicit_parenthesesrd�lbracket�lbracezunexpected )r0rDrer�rwr�ConstrAr��NSRefr$rPrNr��189parse_list�190parse_dictrEr)r9r�r~r��attr�bufrAs       r<r%�Parser.parse_primary�s������#�#���:�:���������{�{�@�@��{�{�5�;�;�2B�#B�5�<�<�X��@��?��� 0�0��{�{�4����=��<��; �D�K�K�$7�$7�$<�$<��$E��T�[�[�!��{�{�)�)�&�1���{�{�5�;�;��191�192�5�<�<�P��0��-�z�z�%�+�+�v�e�l�l�K��,��+�Z�Z�8�
#�������;�;�-�C��\�\�F��+�+�%�%�*�*�h�6��193�194�4�;�;�.�.�4�4�5��T�[�[�!��+�+�%�%�*�*�h�6��;�;�r�w�w�s�|�F�;�D����Z�Z�/�
/�������;�;�u�{�{�5�<�<�@�D����Z�Z�8�
#�������#�#��#�>�D��K�K���x�(���
�Z�Z�:�
%��?�?�$�D�195��	�Z�Z�8�
#��?�?�$�D���
�I�I��N�5�$9�#<�=�u�|�|�L��r?r#rwc�^^^�TRRRnU(aS[R4UU4SjjnOS[R4UU4Sjjn/nSn	U(aTRRS5 TR
U5(aO`URU"55 TRRRS:XaSn	OO"TRRRnM�U	(dEU(aUS$U(d2TRS[TRR5<35 [R"US	US1969$)aoWorks like `parse_expression` but if multiple expressions are197delimited by a comma a :class:`~jinja2.nodes.Tuple` node is created.198This method could also return a regular expression instead of a tuple199if no commas where found.200 201The default parsing mode is a full tuple.  If `simplified` is `True`202only names and literals are parsed; ``with_namespace`` allows namespace203attr refs as well. The `no_condexpr` parameter is forwarded to204:meth:`parse_expression`.205 206Because tuples do not require delimiters and may end in a bogus comma207an extra hint is needed that marks the end of a tuple.  For example208for loops support tuples between `for` and `in`.  In that case the209`extra_end_rules` is set to ``['name:in']``.210 211`explicit_parentheses` is true if the parsing was triggered by an212expression in parentheses.  This is used to figure out if an empty213tuple is a valid expression or not.214r-c�">�TRTS9$)Nr�)r%)r9r�s��r<r5�!Parser.parse_tuple.<locals>.parse�s����)�)��)�H�Hr?c�">�TRTS9$)Nr�)r�r,s��r<r5r��s����,�,�=�,�I�Ir?FTr�rzExpected an expression, got rrrk)r0rDrAr�Exprr�rgrPrerEr�Tuple)215r9r#r�r`rwr�rAr5r�is_tuples216` `  `    r<r��Parser.parse_tuple�s$���6���$�$�+�+���
I�5�:�:�
I�
I�217
J�5�:�:�
J�
J�$&���������"�"�7�+�� � ��1�1���K�K��� ��{�{�"�"�'�'�7�2�����[�[�(�(�/�/�F�����A�w��(��	�	��*�4�;�;�+>�+>�?�B�D��218�{�{�4���7�7r?c��URRS5n/nURRRS:wa�U(aURRS5 URRRS:XaOEUR	UR55 URRRS:waM�URRS5 [R"X!RS9$)Nrx�rbracketr�rk)	r0r�rDrerPr�r�ListrA)r9r~�itemss   r<r|�Parser.parse_list�s������"�"�:�.��$&���k�k�!�!�&�&�*�4�����"�"�7�+��{�{�"�"�'�'�:�5���L�L��.�.�0�1��k�k�!�!�&�&�*�4�	
�����:�&��z�z�%���5�5r?c��URRS5n/nURRRS:wa�U(aURRS5 URRRS:XaO�UR	5nURRS5 UR	5nUR[R"X4URS95 URRRS:waM�URRS5 [R"X!RS9$)Nry�rbracer�r�rk)219r0r�rDrer�rPr�PairrA�Dict)r9r~r��keyrws     r<r}�Parser.parse_dict�s������"�"�8�,��$&���k�k�!�!�&�&�(�2�����"�"�7�+��{�{�"�"�'�'�8�3���'�'�)�C��K�K���w�'��)�)�+�E��L�L����C�s�z�z�B�C��k�k�!�!�&�&�(�2�	
�����8�$��z�z�%���5�5r?c��URRRnUS:XdUS:XaURU5nOUS:XaUR	U5nOU$M[)Nrqrxr)r0rDre�parse_subscript�220parse_call�r9r�rNs   r<rg�Parser.parse_postfix
s^������,�,�1�1�J��U�"�j�J�&>��+�+�D�1���x�'����t�,�����r?c�&�URRRnUS:XaURU5nOWUS:Xa6URRRS:XaURU5nOUS:XaUR
U5nOU$M�)N�piper*�isr)r0rDrer�rw�221parse_testr�r�s   r<rh�Parser.parse_filter_exprs�������,�,�1�1�J��V�#��(�(��.���v�%�$�+�+�*=�*=�*C�*C�t�*K����t�,���x�'����t�,�����r?c�T�[UR5nURS:Xa�URRn[UR5 URS:Xa*[R222"XRSURS9$URS:waURSUR5 [R"URURS9n[R"XSURS9$URS:Xa�/nURRRS:wagU(aURRS	5 URUR55 URRRS:waMgURRS5 [U5S223:XaUSnO [R"USURS9n[R"XSURS9$URSUR5 g)
Nrqr*rrrkruzexpected name or numberrxr�r�rrzexpected subscript expression)r�r0rerDr�GetattrrwrArErz�Getitemr�rP�parse_subscribedrXr�)r9r�r~�224attr_tokenr	rs      r<r��Parser.parse_subscript)s����T�[�[�!���:�:������,�,�J���������&�(��}�}��*�*�F�5�<�<������I�-��	�	�3�Z�5F�5F�G��+�+�j�.�.�z�7H�7H�I�C��=�=��F�5�<�<�H�H��:�:��#�')�D��+�+�%�%�*�*�j�8���K�K�&�&�w�/����D�1�1�3�4��+�+�%�%�*�*�j�8�
�K�K���z�*��4�y�A�~��1�g���k�k�$��u�|�|�D���=�=��F�5�<�<�H�H��	�	�1�5�<�<�@r?c���URRRnURRRS:Xa[	UR5 S/nONUR5nURRRS:waU$[	UR5 U/nURRRS:XaUR
S5 OUURRRS;a UR
UR55 OUR
S5 URRRS:Xak[	UR5 URRRS;a UR
UR55 O#UR
S5 OUR
S5 [R"USU06$)Nr�)r�r�rA)	r0rDrArer�r�rPr�Slice)r9rArr�s    r<r��Parser.parse_subscribedHs^�����$�$�+�+���;�;���#�#�w�.�������6�D��(�(�*�D��{�{�"�"�'�'�7�2���������6�D��;�;���#�#�w�.��K�K���
�[�[�
 �
 �
%�
%�-B�
B��K�K��-�-�/�0��K�K����;�;���#�#�w�.�������{�{�"�"�'�'�/D�D����D�1�1�3�4����D�!��K�K����{�{�4�0�&�0�0r?c�j^^	�TRRS5m	/n/nSnSnSnS[SS4UU	4SjjnTRRRS:wGa8U(aATRRS5 TRRRS:XaGO�TRRRS:Xa<U"USL=(a USL5 [TR5 TR
5nGOgTRRRS	:Xa1U"USL5 [TR5 TR
5nGOTRRRS225:Xa�TRR5RS:Xa�U"USL5 TRRRnTRRS5 TR
5nUR[R"XxURS
95 OBU"USL=(a USL=(a U(+5 URTR
55 SnTRRRS:waGM8TRRS5 XX44$)NrFr�r-c�N>�U(dTRSTR5 gg)Nz+invalid syntax for function call expression)rErA)r�r9r~s ��r<�ensure�&Parser.parse_call_args.<locals>.ensurews�����	�	�G����V�r?rdr�r r_r*r�r�rkT)r0r�r�rDrer�r�r�rwr�rPrr�rA)226r9r�kwargs�dyn_args�227dyn_kwargs�
require_commar�r�rwr~s228`        @r<�parse_call_args�Parser.parse_call_argshs+������"�"�8�,���������229��
�	W��	W�$�	W�	W��k�k�!�!�&�&�(�2�����"�"�7�+��;�;�&�&�+�+�x�7���{�{�"�"�'�'�5�0��x�4�'�>�J�$�,>�?��T�[�[�!��0�0�2�����$�$�)�)�U�2��z�T�)�*��T�[�[�!�!�2�2�4�230��K�K�'�'�,�,��6����(�(�*�/�/�8�;��:��-�.��+�+�-�-�3�3�C��K�K�$�$�Q�'� �1�1�3�E��M�M�%�-�-��5�<�<�"P�Q��8�t�+�Q�231�d�0B�Q�6�z�R��K�K�� 5� 5� 7�8� �M�A�k�k�!�!�&�&�(�2�D	
�����8�$��X�1�1r?c	��URRnUR5up4pV[R"XXEXbR232S9$r�)r0rDr�rrrA)r9r�r~rr�r�r�s       r<r��Parser.parse_call�s=�����#�#��-1�-A�-A�-C�*��h��z�z�$�f�233�<�<�X�Xr?rc234��URRRS:XdU(Ga`U(d[UR5 URR	S5nUR235nURRRS:Xaf[UR5 USURR	S5R236--
nURRRS:XaMfURRRS:XaUR
5upVpxO/n/nS=px[R"XXVXxURS9nSnURRRS:XaGMVU(aGM`U$)Nr�r*rqrJrrkF)237r0rDrer�r�rwr�r�FilterrA)	r9r�rr~r*rr�r�r�s	         r<r��Parser.parse_filter�s4���k�k�!�!�&�&�&�0�L���T�[�[�!��K�K�&�&�v�.�E��;�;�D��+�+�%�%�*�*�e�3��T�[�[�!���d�k�k�0�0��8�>�>�>�>���+�+�%�%�*�*�e�3��{�{�"�"�'�'�8�3�59�5I�5I�5K�2��h�238�����(,�,���<�<��D�(�u�|�|��D�!�L�#�k�k�!�!�&�&�&�0�L�L�$�r?c239��[UR5nURRRS5(a[UR5 SnOSnURR	S5R240nURRRS:Xaf[UR5 USURR	S5R241--
nURRRS:XaMfS=pV/nURRRS:XaUR5up�pVO�URRRS;a�URRRS	S242S5(d`URRRS5(aURS
5 UR5n	URU	5n	U	/nO/n[R"XX�XVURS9nU(a[R"XRS9nU$)NrBTFr*rqrJr>r*rvryrrsrurxr�r5r=zname:isz'You cannot chain multiple tests with isrk)r�r0rDr�r�rwrer�rfrEr%rgr�TestrArC)243r9r�r~�negatedr*r�r�r�r�arg_nodes244          r<r��Parser.parse_test�s����T�[�[�!���;�;���#�#�J�/�/�������G��G��{�{�!�!�&�)�/�/���k�k�!�!�&�&�%�/�������C�$�+�+�,�,�V�4�:�:�:�:�D��k�k�!�!�&�&�%�/�!%�$��(*���;�;���#�#�x�/�15�1E�1E�1G�.�D�(�J�
�[�[�
 �
 �
%�
%�*245�246��+�+�%�%�.�.�{�I�z�R�R��{�{�"�"�'�'�	�2�2��	�	�C�D��)�)�+�H��)�)�(�3�H��:�D��D��z�z���h�5�<�<�247����9�9�T�,�,�7�D��r?c��^^�/m/mTRnUbURRU5 SUU4SjjnUR(Ga�URRnURS:XaWUR248(a/U"[R"UR249URS95 [UR5 GO<URS:XaF[UR5 U"URSS95 URRS5 O�URS:Xa�U"5 [UR5 UbHURRR"U6(a TUbURR5 $$UR5n[U[ 5(aTR#U5 OTRU5 URRS	5 O[%S2505eUR(aGM�U"5 UbURR5 T$!UbURR5 ff=f)Nc�>�T(a<TSRnTR[R"TSSUS95 TSS2	gg)Nrrk)rArPrr�)rAr��data_buffers ��r<�251flush_data�#Parser.subparse.<locals>.flush_data�s<����$�Q��.�.�����E�L�L��Q���G�H���N�r?r�rk�variable_beginTr�rb�block_beginrczinternal parsing error)r-N)rPr8r0rDrerwrr�rAr�r�r�rfrzr�r�r\�extend�AssertionError)r9rZ�add_datar�r~rpr�r�s      @@r<r��Parser.subparse�s����$&��*,���%�%���!��!�!�(�(��4�	#�	#�	,��+�+�+����+�+���:�:��'��{�{� ��!3�!3�E�K�K����!U�V�����%��Z�Z�#3�3�����%��T�-�-�D�-�A�B��K�K�&�&�~�6��Z�Z�=�0��L�����%�!�-�$�+�+�2E�2E�2N�2N�#�3� $��%��%�%�)�)�+�&��-�-�/�B�!�"�d�+�+����B�����B���K�K�&�&�{�3�(�)A�B�B�1�+�+�+�4
�L��%��%�%�)�)�+�����%��%�%�)�)�+�&�s�D=I�BI�I� I c��[R"UR5SS9nURUR5 U$)z0Parse the whole template into a `Template` node.rrk)r�Templater��set_environmentr()r9r�s  r<r5�Parser.parses1������
�
���:�����t�/�/�0��
r?)	r8r6r7r1r(r2r+r*r0)NNNr�)NN)F)..)TFNF)T)FTNFF)br'�252__module__�__qualname__�__firstlineno__�__doc__�str�t�Optionalr=r�int�TyperEr�r�rUrXr^r�rgrrnrq�Unionror�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r253r�r�r�r�r�r�rrr254r
r{rr|rrr�r�typing�overloadr$r�r{r�r�r*r+r6r>rDrIrQrWr\r`r%r�r|r�r}rgrhr�r�r�r�r�r�rr�r�r�r�r�r5�__static_attributes__rr?r<r&r&0s����!%�$(�!%�
>�"�>��>��j�j��o�	>�255�*�*�S�/�>��z�z�#��
>�256�>�4#'�+>�	9�
�9��257�258�3��9��V�V�'�
(�	9�259260�9�&-��j�j��o�&-��������S�� 1�2�&-��261�262�3��	&-�263264�&-�R48�?��?�!"���C��?�	�?�59�"&�	/��J�J�q�w�w�s�C�x�0�1�	/��265�266�3��	/�267�		/�@D�� �z�z�!�'�'�#�s�(�*;�<��	
���a�j�j��o���AS�AS��&�������Q�V�V�E�J�J�5G�)G�!H�&�<BG���'�'�#�s�(�+��:>��	268����269�270�	��:	K�1�7�7�5�<�<��1B�1B�#B�C�	K�T�5�9�9�T�&�%�(�(��$�E�J�J��"#�%�+�+�#��U�[�[��@�u�}�}��271 272�"�273�-1�274�	�275�2765�u�}�}�2775�6�e�l�l�6�(�E�,�,�(�T%�J�%�4�%� 
�%�/�/�
��E�$5�$5���U�[�[���U�\�\���_�_�FI����1C��	�������_�_� ��9=�$�<��<��<����A�G�G�C��H�$5�6�	<�278�<�279������e�j�j�%�+�+�5�	6�
<��<� ��9=�$�%��%��%����A�G�G�C��H�$5�6�	%�280�%�281������e�j�j�%�+�+�5�	6�
%�N�d��e�j�j��
��282�283�
��%�*�*���5�:�:��$�5�:�:�$�7�u�z�z�7�.	�U�Z�Z�	�1�e�j�j�1�	�U�Z�Z�	��5�:�:���t��u�z�z��$(�D�(�U�Z�Z�(�X!�"�9=�%*�$�
C8��C8��C8����A�G�G�C��H�$5�6�	C8�284#�C8��
C8�285������e�j�j�(�	)�C8�J2866�E�J�J�2876�
6�E�J�J�
6��%�*�*������
�e�j�j�
�U�Z�Z�
�A��J�J�A�	288�������
�
�-�	.�A�>1�%�*�*�1�@62�	289���	���u�z�z��	���u�}�}��	�290�291�5�:�:��	�292�293�5�:�:��	 �294�62�pY�u�z�z�Y�e�j�j�Y�BG���J�J�u�z�z�*��:>��	295���E�J�J�	��.$�u�z�z�$�e�j�j�$�N;?�/��*�*�Q�W�W�S�#�X�%6�7�/�	296����297�298�	�/�b�u�~�~�r?r&)'r�r�r�rtr�299exceptionsrr�lexerrr�
TYPE_CHECKING�typing_extensions�ter(r	�TypeVarr�r�r300rr
r�	frozensetrxrJ�Add�Sub�Mul�Div�FloorDiv�Modr$r�r�r�r��__annotations__r&rr?r<�<module>r�s���>�
���.�+�!�&��?�?�"�(����+�U�\�\�5�=�=�I��
�Y�Y�|�U�[�[�%�/�/�
B�301��
��� �G�H���9�9��9�9��9�9��9�9�����9�9�
0��Q�V�V�C�����302�303�+�+�
,��i�ir?
codekingpro/portable-devtools · Team Ai