Ë
    V.jÁ?  ã                   óT   — d Z ddlZddlZddlmZ ddlmZ ddlmZ i Z G d„ d«      Z	y)zGprovides the Lexer class for parsing template strings into parse trees.é    N)Ú
exceptions)Ú	parsetree)Úadjust_whitespacec                   ó¦   — e Zd Z	 dd„Zed„ «       Zdd„Zd„ Zd„ Zd„ Z	 e
j                  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)ÚLexerNc                 ó$  — || _         || _        t        j                  | j                  «      | _        d| _        d| _        d| _        d| _        g | _	        g | _
        g | _        || _        |€g | _        y t        |d«      s	|g| _        y || _        y )Né   r   Ú__iter__)ÚtextÚfilenamer   ÚTemplateNodeÚtemplateÚmatched_linenoÚmatched_charposÚlinenoÚmatch_positionÚtagÚcontrol_lineÚternary_stackÚencodingÚpreprocessorÚhasattr)Úselfr   r   Úinput_encodingr   s        úLC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\mako/lexer.pyÚ__init__zLexer.__init__   s�   € ð ˆŒ	Ø ˆŒÜ!×.Ñ.¨t¯}©}Ó=ˆŒØˆÔØ ˆÔØˆŒØˆÔØˆŒØˆÔØˆÔØ&ˆŒàÐØ "ˆDÕÜ˜ zÔ2Ø!- ˆDÕà ,ˆDÕó    c                 ó`   — | j                   | j                  | j                  | j                  dœS )N)Úsourcer   Úposr   )r   r   r   r   )r   s    r   Úexception_kwargszLexer.exception_kwargs*   s.   € ð —i‘iØ×)Ñ)Ø×'Ñ'ØŸ™ñ	
ð 	
r   c                 óÊ   — 	 t         ||f   }| j	                  |«      S # t        $ r; |rt        j                  ||«      nt        j                  |«      }|t         ||f<   Y ŒTw xY w)z>compile the given regexp, cache the reg, and call match_reg().)Ú_regexp_cacheÚKeyErrorÚreÚcompileÚ	match_reg)r   ÚregexpÚflagsÚregs       r   ÚmatchzLexer.match3   sb   € ð	1Ü ¨ Ñ0ˆCð
 �~‰~˜cÓ"Ð"øô	 ò 	1Ù/4”"—*‘*˜V UÔ+¼"¿*¹*ÀVÓ:LˆCØ-0ŒM˜6 5˜/Ó*ð	1ús   ‚ žAA"Á!A"c                 óÖ  — | j                   }|j                  | j                  | j                   «      }|r´|j                  «       \  }}||k(  r|dz   n|| _         | j                  | _        |dz
  }|dk\  r0|| j                  k  r!| j                  d|dz    j                  d«      }||z
  | _        | xj                  | j                  || j                    j                  d«      z  c_        |S )z match the given regular expression object to the current text
        position.

        if a match occurs, update the current text and line position.

        r	   r   NÚ
)
r   r+   r   Úspanr   r   Ú
textlengthÚrfindr   Úcount)r   r*   Úmpr+   ÚstartÚendÚcps          r   r'   zLexer.match_reg>   sÐ   € ð × Ñ ˆà—	‘	˜$Ÿ)™) T×%8Ñ%8Ó9ˆÙØ Ÿ:™:›<‰LˆU�CØ-0°Eª\ #¨¢'¸sˆDÔØ"&§+¡+ˆDÔØ�a‘ˆBØ�QŠw˜2 §¡Ò/Ø—Y‘Y˜x  a¡Ð(×.Ñ.¨tÓ4�Ø#%¨¡7ˆDÔ Ø�KŠK˜4Ÿ9™9 R¨$×*=Ñ*=Ð>×DÑDÀTÓJÑJ�KØˆr   c                 óê  — | j                   }dj                  |«      }d}d}d}	 | j                  d«      }|rŒ| j                  dt        j                  «      }|rŒ8| j                  d|z  «      }|rV|r|dkD  sO|dkD  sJ|dkD  sE| j
                  || j                   t        |j                  d«      «      z
   |j                  d«      fS |s#| j                  d|z  t        j                  «      }|rÔ||j                  d«      j                  d«      z  }||j                  d«      j                  d	«      z  }||j                  d«      j                  d
«      z  }||j                  d«      j                  d«      z  }||j                  d«      j                  d«      z  }||j                  d«      j                  d«      z  }�ŒŸt        j                  ddj                  |«      z  fi | j                  ¤Ž‚)NÚ|r   z#.*\nz+(\"\"\"|\'\'\'|\"|\')[^\\]*?(\\.[^\\]*?)*\1z(%s)r	   z(.*?)(?=\"|\'|#|%s)Ú{Ú}Ú(Ú)Ú[Ú]zExpected: %sÚ,)r   Újoinr+   r%   ÚSr   ÚlenÚgroupr1   r   ÚSyntaxExceptionr!   )	r   Úwatch_nestingr   ÚstartposÚtext_reÚbrace_levelÚparen_levelÚbracket_levelr+   s	            r   Úparse_until_textzLexer.parse_until_textT   sÒ  € Ø×&Ñ&ˆØ—)‘)˜D“/ˆØˆØˆØˆØØ—J‘J˜xÓ(ˆEÙØØ—J‘JØ>ÄÇÁóˆEñ ØØ—J‘J˜w¨Ñ0Ó1ˆEÙÙØ  1’_¨°aª¸=È1Ò;Lð —I‘IØ  4×#6Ñ#6¼¸U¿[¹[È»^Ó9LÑ#Lðð —K‘K “Nð	ð ñ ØŸ
™
Ð#9¸GÑ#CÄRÇTÁTÓJ�ÙØ˜uŸ{™{¨1›~×3Ñ3°CÓ8Ñ8�Ø˜uŸ{™{¨1›~×3Ñ3°CÓ8Ñ8�Ø˜uŸ{™{¨1›~×3Ñ3°CÓ8Ñ8�Ø˜uŸ{™{¨1›~×3Ñ3°CÓ8Ñ8�Ø §¡¨Q£×!5Ñ!5°cÓ!:Ñ:�Ø §¡¨Q£×!5Ñ!5°cÓ!:Ñ:�ÙÜ×,Ñ,Ø §¡¨$£Ñ/ñØ37×3HÑ3Hñð r   c                 ó   — |j                  d| j                  «       |j                  d| j                  «       |j                  d| j                  «       | j                  |d<    ||i |¤Ž}t        | j                  «      r)| j                  d   j                  j                  |«       n%| j                  j                  j                  |«       | j                  r¥| j                  d   }|j                  j                  |«       t        |t        j                  «      r|j                  |j                  «      sF| j                   r:| j                   d   r+| j                   d   d   j                  j                  |«       t        |t        j"                  «      rEt        | j                  «      r| j                  d   |_        | j                  j                  |«       y t        |t        j                  «      �rU|j&                  r5| j                  j)                  «        | j                   j)                  «        y |j*                  r7| j                  j                  |«       | j                   j                  g «       y | j                  rG| j                  d   j                  |j                  «      r| j                   d   j                  |«       y | j                  rq| j                  d   j                  |j                  «      sHt-        j.                  d|j                  ›d| j                  d   j                  ›d�fi | j0                  ¤Ž‚y y y )	Nr   r   r    r   éÿÿÿÿú	Keyword 'z#' not a legal ternary for keyword 'Ú')Ú
setdefaultr   r   r   r   rA   r   ÚnodesÚappendr   r   Ú
isinstancer   ÚControlLineÚ
is_ternaryÚkeywordr   ÚTagÚparentÚisendÚpopÚ
is_primaryr   rC   r!   )r   ÚnodeclsÚargsÚkwargsÚnodeÚcontrol_frames         r   Úappend_nodezLexer.append_node|   s‹  € Ø×Ñ˜( D§I¡IÔ.Ø×Ñ˜( D×$7Ñ$7Ô8Ø×Ñ˜% ×!5Ñ!5Ô6Ø!Ÿ]™]ˆˆzÑÙ˜Ð' Ñ'ˆÜˆt�x‰xŒ=Ø�H‰H�R‰L×Ñ×%Ñ% dÕ+à�M‰M×Ñ×&Ñ& tÔ,ð
 ×ÒØ ×-Ñ-¨bÑ1ˆMØ×Ñ×&Ñ& tÔ,ô ˜t¤Y×%:Ñ%:Ô;Ø%×0Ñ0°·±Ô>à×&Ò&Ø×&Ñ& rÒ*à×"Ñ" 2Ñ& rÑ*×0Ñ0×7Ñ7¸Ô=Ü�dœIŸM™MÔ*Ü�4—8‘8Œ}Ø"Ÿh™h r™l�”Ø�H‰H�O‰O˜DÕ!Ü˜œi×3Ñ3Õ4Ø�zŠzØ×!Ñ!×%Ñ%Ô'Ø×"Ñ"×&Ñ&Õ(Ø—’Ø×!Ñ!×(Ñ(¨Ô.Ø×"Ñ"×)Ñ)¨"Õ-Ø×"Ò" t×'8Ñ'8¸Ñ'<×'GÑ'GØ—‘ô(ð ×"Ñ" 2Ñ&×-Ñ-¨dÕ3Ø×"Ò"¨4×+<Ñ+<¸RÑ+@×+KÑ+KØ—‘ô,ô !×0Ò0à—|“| T×%6Ñ%6°rÑ%:×%BÓ%BðDñð ×+Ñ+ñð ð,Ð"ð 5r   z #.*coding[:=]\s*([-\w.]+).*\r?\nc                 ó>  — t        |t        «      r<| j                  j                  |«      }|xr |j	                  d«      xs |xs d}||fS |j                  t        j                  «      rš|t        t        j                  «      d }d}| j                  j                  |j                  dd«      «      }|�“|j	                  d«      dk7  rt        j                  d|j	                  d«      z  |j                  dd«      dd|«      ‚| j                  j                  |j                  dd«      «      }|r|j	                  d«      n|xs d}|r	 |j                  |«      }||fS ||fS # t        $ r- t        j                  d|z  |j                  dd«      dd|«      ‚w xY w)z¡given string/unicode or bytes/string, determine encoding
        from magic encoding comment, return body as unicode
        or raw if decode_raw=False

        r	   zutf-8NÚignorezHFound utf-8 BOM in file, with conflicting magic encoding comment of '%s'r   z0Unicode decode operation of encoding '%s' failed)rR   ÚstrÚ
_coding_rer+   rB   Ú
startswithÚcodecsÚBOM_UTF8rA   Údecoder   ÚCompileExceptionÚUnicodeDecodeError)r   r   Ú
decode_rawÚknown_encodingr   Úmr   Úparsed_encodings           r   Údecode_raw_streamzLexer.decode_raw_stream°   s�  € ô �dœCÔ Ø—‘×%Ñ% dÓ+ˆAØÒ'˜QŸW™W Q›ZÒD¨>ÒD¸WˆHØ˜T�>Ð!à�?‰?œ6Ÿ?™?Ô+ØœœFŸO™OÓ,Ð.Ð/ˆDØ%ˆOØ—‘×%Ñ% d§k¡k°'¸8Ó&DÓEˆAØˆ} §¡¨£¨wÒ!6Ü ×1Ñ1ð5Ø78·w±w¸q³zñBà—K‘K ¨Ó2ØØØóð ð —‘×%Ñ% d§k¡k°'¸8Ó&DÓEˆAÙ,-˜aŸg™g aœj°>Ò3LÀWˆOÙð
Ø—{‘{ ?Ó3�ð  Ð$Ð$ˆ Ð$Ð$øô &ò Ü ×1Ñ1ØFØ%ñ&à—K‘K ¨Ó2ØØØóð ðús   ÅE& Å&6Fc                 óÊ  — | j                  | j                  d| j                  | j                  «      \  | _        | _        | j                  D ]  } || j                  «      | _        Œ | j                  | j                  «       t        | j                  «      | _        	 | j                  | j                  kD  rnÈ| j                  «       rn·| j                  «       rŒ=| j                  «       rŒN| j                  «       rŒ_| j                  «       rŒp| j                  «       rŒ�| j!                  «       rŒ’| j#                  «       rŒ£| j%                  «       rŒ´| j                  | j                  kD  rnt'        j(                  d«      ‚t        | j*                  «      r:t'        j,                  d| j*                  d   j.                  z  fi | j0                  ¤Ž‚t        | j2                  «      rut'        j,                  d| j2                  d   j.                  z  | j                  | j2                  d   j4                  | j2                  d   j6                  | j                  «      ‚| j8                  S )NTzassertion failedúUnclosed tag: <%%%s>rL   z"Unterminated control keyword: '%s')ro   r   r   r   r   r'   rd   rA   r/   r   Ú	match_endÚmatch_expressionÚmatch_control_lineÚmatch_commentÚmatch_tag_startÚmatch_tag_endÚmatch_python_blockÚmatch_percentÚ
match_textr   ÚMakoExceptionr   rC   rU   r!   r   r   r    r   )r   Úpreprocs     r   ÚparsezLexer.parseÚ   sø  € Ø#'×#9Ñ#9Ø�I‰I�t˜TŸ]™]¨D¯M©Mó$
Ñ ˆŒ�t”yð ×(Ô(ˆGÙ §	¡	Ó*ˆD�Ið )ð
 	�‰�t—‘Ô'ä˜dŸi™i›.ˆŒàØ×"Ñ" T§_¡_Ò4Øà�~‰~ÔØØ×$Ñ$Ô&ØØ×&Ñ&Ô(ØØ×!Ñ!Ô#ØØ×#Ñ#Ô%ØØ×!Ñ!Ô#ØØ×&Ñ&Ô(ØØ×!Ñ!Ô#ØØ�‰Ô Øà×"Ñ" T§_¡_Ò4Øä×*Ñ*Ð+=Ó>Ð>äˆt�x‰xŒ=Ü×,Ñ,Ø&¨¯©°"©×)=Ñ)=Ñ=ñà×'Ñ'ñð ô ˆt× Ñ Ô!Ü×,Ñ,Ø4Ø×#Ñ# BÑ'×/Ñ/ñ0à—	‘	Ø×!Ñ! "Ñ%×,Ñ,Ø×!Ñ! "Ñ%×)Ñ)Ø—‘óð ð �}‰}Ðr   c                 ó  — d}| j                  |t        j                  t        j                  z  t        j                  z  «      }|sy|j                  «       \  }}}|| _        i }|r>t        j                  d|«      D ]%  }|\  }}	}
|	xs |
}|j                  dd«      }|||<   Œ' | j                  t        j                  ||«       |r| j                  j                  «        y|dk(  r›| j                  dt        j                  «      }|s:t        j                  d| j                  d	   j                  z  fi | j                   ¤Ž‚| j                  t        j"                  |j%                  d
«      «       | j'                  «       S y)NaÈ  
            \<%     # opening tag

            ([\w\.\:]+)   # keyword

            ((?:\s+\w+|\s*=\s*|"[^"]*?"|'[^']*?'|\s*,\s*)*)  # attrname, = \
                                               #        sign, string expression
                                               # comma is for backwards compat
                                               # identified in #366

            \s*     # more whitespace

            (/)?>   # closing

        Fz)\s*(\w+)\s*=\s*(?:'([^']*)'|\"([^\"]*)\")ú
r-   r   z(.*?)(?=\</%text>)rq   rL   r	   T)r+   r%   ÚIr@   ÚXÚgroupsrU   ÚfindallÚreplacer`   r   rV   r   rY   r   rC   r!   ÚTextrB   rw   )r   r*   r+   rU   ÚattrrX   Ú
attributesÚattÚkeyÚval1Úval2r   s               r   rv   zLexer.match_tag_start  sZ  € ðˆð  —
‘
ØÜ�D‰D”2—4‘4‰Kœ"Ÿ$™$Ñó
ˆñ
 Øà$Ÿ|™|›~Ñˆ��uØˆŒØˆ
ÙÜ—z‘zØ<¸dö�ð #&‘��T˜4Ø’|˜t�Ø—|‘| F¨DÓ1�Ø"&�
˜3’ðð 	×ÑœŸ™¨°Ô<ÙØ�H‰H�L‰LŒNð ð ˜ÒØ—J‘JÐ4´b·d±dÓ;ˆEÙÜ ×0Ñ0Ø*¨T¯X©X°b©\×-AÑ-AÑAñà×+Ñ+ñð ð ×ÑœYŸ^™^¨U¯[©[¸«^Ô<Ø×%Ñ%Ó'Ð'Ør   c                 óÞ  — | j                  d«      }|rÚt        | j                  «      s2t        j                  d|j                  d«      z  fi | j                  ¤Ž‚| j                  d   j                  |j                  d«      k7  rMt        j                  d|j                  d«      ›d| j                  d   j                  ›d�fi | j                  ¤Ž‚| j                  j                  «        yy	)
Nz\</%[\t ]*([^\t ]+?)[\t ]*>z(Closing tag without opening tag: </%%%s>r	   rL   zClosing tag </%z> does not match tag: <%Ú>TF)	r+   rA   r   r   rC   rB   r!   rU   rY   ©r   r+   s     r   rw   zLexer.match_tag_endF  sÍ   € Ø—
‘
Ð9Ó:ˆÙÜ�t—x‘x”=Ü ×0Ñ0Ø>Ø—k‘k !“nñ%ñð ×+Ñ+ñð ð
 —‘˜"‘×%Ñ%¨¯©°Q«Ò7Ü ×0Ò0à—{‘{ 1•~ t§x¡x°¡|×';Ó';ð=ñð ×+Ñ+ñð ð
 �H‰H�L‰LŒNØàr   c                 ór   — | j                  dt        j                  «      }|sy|j                  «       }|r|S y)Nz\ZFT)r+   r%   r@   rB   )r   r+   Ústrings      r   rr   zLexer.match_endZ  s2   € Ø—
‘
˜5¤"§$¡$Ó'ˆÙØà—‘“ˆÙØˆMàr   c                 óÒ   — | j                  dt        j                  «      }|rE| j                  t        j
                  |j                  d«      dz   |j                  d«      z   «       yy)Nz(?<=^)(\s*)%%(%*)r	   Ú%é   TF)r+   r%   ÚMr`   r   r…   rB   rŽ   s     r   ry   zLexer.match_percente  sS   € Ø—
‘
Ð/´·±Ó6ˆÙØ×ÑÜ—‘ §¡¨A£°Ñ 4°u·{±{À1³~Ñ Eôð àr   c                 óÒ   — | j                  dt        j                  t        j                  z  «      }|r4|j	                  d«      }|r | j                  t        j                  |«       yy)Na—  
                (.*?)         # anything, followed by:
                (
                 (?<=\n)(?=[ \t]*(?=%|\#\#))  # an eval or line-based
                                            # comment, preceded by a
                                            # consumed newline and whitespace
                 |
                 (?=\${)      # an expression
                 |
                 (?=</?%)  # a substitution or block or call start or end
                              # - don't consume
                 |
                 (\\\r?\n)    # an escaped newline  - throw away
                 |
                 \Z           # end of string
                )r	   TF)r+   r%   r�   r@   rB   r`   r   r…   )r   r+   r   s      r   rz   zLexer.match_texto  sU   € Ø—
‘
ðô  �D‰D”2—4‘4‰Kó#
ˆñ( Ø—;‘;˜q“>ˆDÙØ× Ñ ¤§¡°Ô6Øàr   c                 ó  — | j                  d«      }|rr| j                  | j                  }}| j                  dd«      \  }}t	        |«      dz   }| j                  t        j                  ||j                  d«      dk(  ||¬«       yy)	Nz<%(!)?Fz%>r-   r	   Ú!©r   r    T)	r+   r   r   rJ   r   r`   r   ÚCoderB   )r   r+   Úliner    r   r4   s         r   rx   zLexer.match_python_blockŒ  sŠ   € Ø—
‘
˜9Ó%ˆÙØ×+Ñ+¨T×-AÑ-A�#ˆDØ×-Ñ-¨e°UÓ;‰IˆD�#ô % TÓ*¨TÑ1ˆDØ×ÑÜ—‘ØØ—‘˜A“ #Ñ%ØØð ô ð àr   c                 óJ  — | j                  d«      }|sy| j                  | j                  }}| j                  ddd«      \  }}|dk(  r| j                  dd«      \  }}nd}|j	                  dd	«      }| j                  t        j                  ||j                  «       ||¬
«       y)Nz\${FTz\|r9   r7   Ú r   r-   r˜   )	r+   r   r   rJ   r„   r`   r   Ú
ExpressionÚstrip)r   r+   rš   r    r   r4   Úescapess          r   rs   zLexer.match_expressionŸ  s¨   € Ø—
‘
˜6Ó"ˆÙØà×'Ñ'¨×)=Ñ)=ˆcˆØ×)Ñ)¨$°°tÓ<‰	ˆˆcØ�#Š:Ø×0Ñ0°°tÓ<‰LˆG‘SàˆGØ�|‰|˜F DÓ)ˆØ×ÑÜ× Ñ ØØ�M‰M‹OØØð 	ô 	
ð r   c                 óø  — | j                  dt        j                  «      }|sy|j                  d«      }|j                  d«      }|dk(  �rt        j                   d|«      }|s#t	        j
                  d|z  fi | j                  ¤Ž‚|j                  dd«      \  }}|d u}|r–t        | j                  «      s't	        j
                  d|›d	|›d
�fi | j                  ¤Ž‚| j                  d   j                  |k7  r>t	        j
                  d|›d| j                  d   j                  ›d
�fi | j                  ¤Ž‚| j                  t        j                  |||«       y| j                  t        j                  |«       y)NzC(?<=^)[\t ]*(%(?!%)|##)[\t ]*((?:(?:\\\r?\n)|[^\r\n])*)(?:\r?\n|\Z)Fr	   r“   r’   z(end)?(\w+)\s*(.*)zInvalid control line: '%s'zNo starting keyword 'z' for 'rN   rL   rM   z' doesn't match keyword 'T)r+   r%   r”   rB   r   rC   r!   rA   r   rU   r`   r   rS   ÚComment)r   r+   Úoperatorr   Úm2rX   rU   s          r   rt   zLexer.match_control_line´  sq  € Ø—
‘
ðä�D‰Dó
ˆñ
 Øà—;‘;˜q“>ˆØ�{‰{˜1‹~ˆØ�s‹?Ü—‘Ð/°Ó6ˆBÙÜ ×0Ñ0Ø0°4Ñ7ñà×+Ñ+ñð ð  ŸX™X a¨›^‰NˆE�7Ø Ð%ˆEáÜ˜4×,Ñ,Ô-Ü$×4Ò4Ú?FÊÐMñà×/Ñ/ñð ð ×&Ñ& rÑ*×2Ñ2°gÒ=Ü$×4Ò4â ×!2Ñ!2°2Ñ!6×!>Ó!>ð@ñð ×/Ñ/ñð ð
 ×ÑœY×2Ñ2°G¸UÀDÔIð ð ×ÑœY×.Ñ.°Ô5Ør   c                 ó¨   — | j                  dt        j                  «      }|r0| j                  t        j
                  |j                  d«      «       yy)z*matches the multiline version of a commentz<%doc>(.*?)</%doc>r	   TF)r+   r%   r@   r`   r   r¡   rB   rŽ   s     r   ru   zLexer.match_commentÚ  s>   € à—
‘
Ð0´"·$±$Ó7ˆÙØ×ÑœY×.Ñ.°·±¸A³Ô?Øàr   )NNN)N)Ú__name__Ú
__module__Ú__qualname__r   Úpropertyr!   r+   r'   rJ   r`   r%   r&   rd   ro   r}   rv   rw   rr   ry   rz   rx   rs   rt   ru   © r   r   r   r      s‚   „ àEIó-ð, ñ
ó ð
ó	#òò,&òP0ðd �—‘Ð?Ó@€Jò(%òT8òt0òdò(	òòò:ò&ò*$óLr   r   )
Ú__doc__rf   r%   Úmakor   r   Ú
mako.pygenr   r#   r   r©   r   r   Ú<module>r­      s+   ðñ Nã Û 	å Ý Ý (à€÷Nò Nr   