Files
old-parkingkoncept/parkingkonceptvenv/lib/python3.7/site-packages/jinja2/__pycache__/lexer.cpython-37.pyc

167 lines
18 KiB
Plaintext
Raw Normal View History

2019-11-17 12:44:16 +01:00
B
<00>/<2F>]<5D>o<00>@s<>dZddlZddlmZddlmZddlmZmZm Z m
Z
ddl m Z ddl mZed<08>Ze<01>d ej<11>Ze<01>d
ej<13>Ze<01>d <0B>Zyed d d<0E>Wn"ek
r<EFBFBD>e<01>d<0F>ZdZYnBXddlmZe<01>d<12>ej<1C><01>ZdZddlZejd=ddlZe`[e<01>d<15>Ze<01>d<16>Z ed<17>Z!ed<18>Z"ed<19>Z#ed<1A>Z$ed<1B>Z%ed<1C>Z&ed<1D>Z'ed<1E>Z(ed<1F>Z)ed <20>Z*ed!<21>Z+ed"<22>Z,ed#<23>Z-ed$<24>Z.ed%<25>Z/ed&<26>Z0ed'<27>Z1ed(<28>Z2ed)<29>Z3ed*<2A>Z4ed+<2B>Z5ed,<2C>Z6ed-<2D>Z7ed.<2E>Z8ed/<2F>Z9ed0<64>Z:ed1<64>Z;ed2<64>Z<ed3<64>Z=ed4<64>Z>ed5<64>Z?ed6<64>Z@ed7<64>ZAed8<64>ZBed9<64>ZCed:<3A>ZDed;<3B>ZEed<<3C>ZFed=<3D>ZGed><3E>ZHed?<3F>ZIed@<40>ZJedA<64>ZKedB<64>ZLedC<64>ZMedD<64>ZNedE<64>ZOedF<64>ZPedG<64>ZQe!e9e%e(e1e0e4e:e,e6e-e7e+e5e'e2e)e*e.e/e"e&e#e3e$e8dH<64>ZReSdIdJ<64>e eR<65>D<00><01>ZTeUeR<65>eUeT<65>k<02>s<>tVdK<64><01>e<01>dLdM<64>WdNdO<64>eXeRdPdQ<64>dR<64>D<00><01><00>ZYeZeGeIeHe;eLeMeNg<07>Z[eZe;eOeIeNg<04>Z\dSdT<64>Z]dUdV<64>Z^dWdX<64>Z_dYdZ<64>Z`d[d\<5C>ZaGd]d^<5E>d^eb<65>ZcGd_d`<60>d`ed<65>ZeeGdadb<64>dbeb<65><03>ZfeGdcdd<64>ddeb<65><03>Zgdedf<64>ZhGdgdh<64>dheb<65>ZidS)ia<69>
jinja2.lexer
~~~~~~~~~~~~
This module implements a Jinja / Python combination lexer. The
`Lexer` class provided by this module is used to do some preprocessing
for Jinja.
On the one hand it filters out invalid operators like the bitshift
operators we don't allow in templates. On the other hand it separates
template code and python code in expressions.
:copyright: (c) 2017 by the Jinja Team.
:license: BSD, see LICENSE for more details.
<EFBFBD>N)<01>deque)<01>
itemgetter)<04>implements_iterator<6F>intern<72> iteritems<6D> text_type)<01>TemplateSyntaxError)<01>LRUCache<68>2z\s+z7('([^'\\]*(?:\\.[^'\\]*)*)'|"([^"\\]*(?:\\.[^"\\]*)*)")z\d+ufööz <unknown><3E>evalz[a-zA-Z_][a-zA-Z0-9_]*F)<01> _identifierz[\w{0}]+Tzjinja2._identifierz(?<!\.)\d+\.\d+z (\r\n|\r|\n)<29>addZassign<67>colon<6F>comma<6D>div<69>dot<6F>eq<65>floordiv<69>gtZgteqZlbraceZlbracketZlparen<65>ltZlteq<65>mod<6F>mul<75>ne<6E>pipe<70>pow<6F>rbraceZrbracketZrparenZ semicolon<6F>sub<75>tilde<64>
whitespace<EFBFBD>float<61>integer<65>name<6D>string<6E>operator<6F> block_begin<69> block_endZvariable_begin<69> variable_end<6E> raw_begin<69>raw_endZ comment_beginZ comment_end<6E>comment<6E>linestatement_begin<69>linestatement_endZlinecomment_beginZlinecomment_end<6E> linecomment<6E>data<74>initial<61>eof)<1A>+<2B>-<2D>/z//<2F>*<2A>%z**<2A>~<7E>[<5B>]<5D>(<28>)<29>{<7B>}z==z!=<3D>>z>=<3D><z<=<3D>=<3D>.<2E>:<3A>|<7C>,<2C>;cCsg|]\}}||f<02>qS<00>rD)<03>.0<EFBFBD>k<>vrDrD<00>0/tmp/pip-install-c3kgu56x/Jinja2/jinja2/lexer.py<70>
<listcomp><3E>srIzoperators droppedz(%s)rAccs|]}t<00>|<01>VqdS)N)<02>re<72>escape)rE<00>xrDrDrH<00> <genexpr><3E>srMcCs
t|<00> S)N)<01>len)rLrDrDrH<00><lambda><3E><00>rO)<01>keycCsL|tkrt|Stdtdtdtdtdtdtdtdt dt
d t d
t d i <0C> ||<00>S) Nzbegin of commentzend of commentr)zbegin of statement blockzend of statement blockzbegin of print statementzend of print statementzbegin of line statementzend of line statementztemplate data / textzend of template)<0E>reverse_operators<72>TOKEN_COMMENT_BEGIN<49>TOKEN_COMMENT_END<4E> TOKEN_COMMENT<4E>TOKEN_LINECOMMENT<4E>TOKEN_BLOCK_BEGIN<49>TOKEN_BLOCK_END<4E>TOKEN_VARIABLE_BEGIN<49>TOKEN_VARIABLE_END<4E>TOKEN_LINESTATEMENT_BEGIN<49>TOKEN_LINESTATEMENT_END<4E>
TOKEN_DATA<EFBFBD> TOKEN_EOF<4F>get)<01>
token_typerDrDrH<00>_describe_token_type<70>sracCs|jdkr|jSt|j<00>S)z#Returns a description of the token.r!)<03>type<70>valuera)<01>tokenrDrDrH<00>describe_token<65>s
recCs2d|kr&|<00>dd<02>\}}|dkr*|Sn|}t|<01>S)z0Like `describe_token` but for token expressions.r@<00>r!)<02>splitra)<03>exprrbrcrDrDrH<00>describe_token_expr<70>s ricCstt<01>|<00><01>S)zsCount the number of newline characters in the string. This is
useful for extensions that filter a stream.
)rN<00>
newline_re<EFBFBD>findall)rcrDrDrH<00>count_newlines<65>srlcCs<>tj}t|j<03>d||j<03>ft|j<04>d||j<04>ft|j<05>d||j<05>fg}|jdk rp|<02>t|j<06>dd||j<06>f<03>|jdk r<>|<02>t|j<08>dd||j<08>f<03>d d
<EFBFBD>t |d d <0C>D<00>S) zACompiles all the rules from the environment into a list of rules.r)<00>block<63>variableNZ linestatementz ^[ \t\v]*r,z(?:^|(?<=\S))[^\S\r\n]*cSsg|]}|dd<01><00>qS)rfNrD)rErLrDrDrHrI<00>sz!compile_rules.<locals>.<listcomp>T)<01>reverse)
rJrKrN<00>comment_start_string<6E>block_start_string<6E>variable_start_string<6E>line_statement_prefix<69>append<6E>line_comment_prefix<69>sorted)<03> environment<6E>e<>rulesrDrDrH<00> compile_rules<65>s






rzc@s$eZdZdZefdd<03>Zdd<05>ZdS)<07>FailurezjClass that raises a `TemplateSyntaxError` if called.
Used by the `Lexer` to specify known errors.
cCs||_||_dS)N)<02>message<67> error_class)<03>selfr|<00>clsrDrDrH<00>__init__<5F>szFailure.__init__cCs|<00>|j||<02><03>dS)N)r}r|)r~<00>lineno<6E>filenamerDrDrH<00>__call__<5F>szFailure.__call__N)<07>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__doc__rr<>r<>rDrDrDrHr{<00>s r{c@sTeZdZdZdZdd<04>ed<05>D<00>\ZZZdd<07>Z dd <09>Z
d
d <0B>Z d d <0A>Z dd<0F>Z dS)<11>Tokenz Token class.rDccs|]}tt|<01><01>VqdS)N)<02>propertyr)rErLrDrDrHrM<00>szToken.<genexpr><3E>cCst<00>||tt|<02><01>|f<03>S)N)<04>tuple<6C>__new__r<00>str)rr<>rbrcrDrDrHr<><00>sz Token.__new__cCs*|jtkrt|jS|jdkr$|jS|jS)Nr!)rbrRrc)r~rDrDrH<00>__str__<5F>s



z Token.__str__cCs2|j|krdSd|kr.|<01>dd<03>|j|jgkSdS)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.
Tr@rfF)rbrgrc)r~rhrDrDrH<00>test<73>s

z
Token.testcGs x|D]}|<00>|<02>rdSqWdS)z(Test against multiple token expressions.TF)r<>)r~<00>iterablerhrDrDrH<00>test_anys

zToken.test_anycCsd|j|j|jfS)NzToken(%r, %r, %r))r<>rbrc)r~rDrDrH<00>__repr__ szToken.__repr__N)r<>r<>r<>r<><00> __slots__<5F>ranger<65>rbrcr<>r<>r<>r<>r<>rDrDrDrHr<><00>s r<>c@s(eZdZdZdd<03>Zdd<05>Zdd<07>ZdS) <09>TokenStreamIteratorz`The iterator for tokenstreams. Iterate over the stream
until the eof token is reached.
cCs
||_dS)N)<01>stream)r~r<>rDrDrHr<>szTokenStreamIterator.__init__cCs|S)NrD)r~rDrDrH<00>__iter__szTokenStreamIterator.__iter__cCs0|jj}|jtkr"|j<00><04>t<05><00>t|j<00>|S)N)r<><00>currentrbr^<00>close<73> StopIteration<6F>next)r~rdrDrDrH<00>__next__s 


zTokenStreamIterator.__next__N)r<>r<>r<>r<>r<>r<>r<>rDrDrDrHr<>sr<>c@s~eZdZdZdd<03>Zdd<05>Zdd<07>ZeZedd <09>d
d <0B>Z d d <0A>Z
dd<0F>Z ddd<12>Z dd<14>Z dd<16>Zdd<18>Zdd<1A>Zdd<1C>ZdS)<1F> TokenStreamz<6D>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`.
cCs>t|<01>|_t<02>|_||_||_d|_tdtd<03>|_ t
|<00>dS)NFrf<00>) <0B>iter<65>_iterr<00>_pushedr!r<><00>closedr<64><00> TOKEN_INITIALr<4C>r<>)r~<00> generatorr!r<>rDrDrHr<>/s
zTokenStream.__init__cCst|<00>S)N)r<>)r~rDrDrHr<>8szTokenStream.__iter__cCst|j<01>p|jjtk S)N)<05>boolr<6C>r<>rbr^)r~rDrDrH<00>__bool__;szTokenStream.__bool__cCs| S)NrD)rLrDrDrHrO?rPzTokenStream.<lambda>z Are we at the end of the stream?)<01>doccCs|j<00>|<01>dS)z Push a token back to the stream.N)r<>rt)r~rdrDrDrH<00>pushAszTokenStream.pushcCs"t|<00>}|j}|<00>|<02>||_|S)zLook at the next token.)r<>r<>r<>)r~Z old_token<65>resultrDrDrH<00>lookEs

zTokenStream.lookrfcCsxt|<01>D] }t|<00>q
WdS)zGot n tokens ahead.N)r<>r<>)r~<00>nrLrDrDrH<00>skipMszTokenStream.skipcCs|j<00>|<01>rt|<00>SdS)zqPerform the token test and return the token if it matched.
Otherwise the return value is `None`.
N)r<>r<>r<>)r~rhrDrDrH<00>next_ifRs zTokenStream.next_ifcCs|<00>|<01>dk S)z8Like :meth:`next_if` but only returns `True` or `False`.N)r<>)r~rhrDrDrH<00>skip_ifYszTokenStream.skip_ifcCsX|j}|jr|j<01><02>|_n:|jjtk rTyt|j<06>|_Wntk
rR|<00><08>YnX|S)z|Go one token ahead and return the old one.
Use the built-in :func:`next` instead of calling this directly.
) r<>r<><00>popleftrbr^r<>r<>r<>r<>)r~<00>rvrDrDrHr<>]s zTokenStream.__next__cCs"t|jjtd<01>|_d|_d|_dS)zClose the stream.r<>NT)r<>r<>r<>r^r<>r<>)r~rDrDrHr<>lszTokenStream.closecCst|j<00>|<01>s^t|<01>}|jjtkr:td||jj|j|j<08><04>td|t |j<00>f|jj|j|j<08><04>z|jSt
|<00>XdS)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 %r.zexpected token %r, got %rN) r<>r<>rirbr^rr<>r!r<>rer<>)r~rhrDrDrH<00>expectrs    zTokenStream.expectN)rf)r<>r<>r<>r<>r<>r<>r<><00> __nonzero__r<5F>Zeosr<73>r<>r<>r<>r<>r<>r<>r<>rDrDrDrHr<>(s 
r<>c CsZ|j|j|j|j|j|j|j|j|j|j |j
|j f }t <0C> |<01>}|dkrVt|<00>}|t |<|S)z(Return a lexer which is probably cached.N)rq<00>block_end_stringrr<00>variable_end_stringrp<00>comment_end_stringrsru<00> trim_blocks<6B> lstrip_blocks<6B>newline_sequence<63>keep_trailing_newline<6E> _lexer_cacher_<00>Lexer)rwrQ<00>lexerrDrDrH<00> get_lexer<65>s"
r<>c@s>eZdZdZdd<03>Zdd<05>Zd dd<08>Zdd d
<EFBFBD>Zdd d <0C>ZdS)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.
cs<>dd<02>}tj}ttdfttdfttdftt dft
t dft t dfg}t|<01>}|jrTdpVd}i<00>|j<10>r\|d<05>}|d||j<11><00>}|<08>|j<13>} || r<>d|| <09>d<08><01>p<>d7}|<08>|j<15>} || r<>d|| <09>d<08><01>p<>d7}|d||j<13><00>}
|
<EFBFBD>|j<15>} | <09>r
d || <09>d<08><01><00>p d} d
} d | ||j<11>|||j<11>f} d | ||j<13>| ||j<13>f}| <0A>d <|<0E>d<nd||j<11>} |j|_|j|_d|dd<12>d||j<11>| ||j<19>||j<19>fg<01>fdd<15>|D<00><00><00>tdfdf|d<17>tdfgt|d||j<1C>||j<1C>|f<00>ttfdf|d<1A>td<1B>fdfgt |d||j<19>||j<19>|f<00>t!dfg|t"|d||j#<23>||j#<23>f<00>t$dfg|t%|d||j<11>| ||j<19>||j<19>|f<00>tt&fdf|d<1A>td<1F>fdfgt'|d <20>t(dfg|t)|d!<21>t*t+fdfgi|_,dS)"NcSst<00>|tjtjB<00>S)N)rJ<00>compile<6C>M<>S)rLrDrDrHrO<00>rPz Lexer.__init__.<locals>.<lambda>z\n?r<>r0z^%s(.*)z|%srfz(?!%s)z^[ \t]*z%s%s(?!%s)|%s\+?z %s%s%s|%s\+?rmr)z%s<>rootz (.*?)(?:%s)rAz4(?P<raw_begin>(?:\s*%s\-|%s)\s*raw\s*(?:\-%s\s*|%s))c s&g|]\}}d||<02><00>||<02>f<00>qS)z(?P<%s_begin>\s*%s\-|%s))r_)rEr<><00>r)<01> prefix_rerDrHrI<00>sz"Lexer.__init__.<locals>.<listcomp>z#bygroupz.+z(.*?)((?:\-%s\s*|%s)%s)z#popz(.)zMissing end of comment tagz(?:\-%s\s*|%s)%sz
\-%s\s*|%sz1(.*?)((?:\s*%s\-|%s)\s*endraw\s*(?:\-%s\s*|%s%s))zMissing end of raw directivez \s*(\n|$)z(.*?)()(?=\n|$))-rJrK<00> whitespace_re<72>TOKEN_WHITESPACE<43>float_re<72> TOKEN_FLOAT<41>
integer_re<EFBFBD> TOKEN_INTEGER<45>name_re<72>
TOKEN_NAME<EFBFBD> string_re<72> TOKEN_STRING<4E> operator_re<72>TOKEN_OPERATORrzr<>r<>rq<00>matchrp<00>grouprrr<>r<><00>joinr<6E>r]rSr<>rUrTr{rWrXrYr<>rZ<00>TOKEN_RAW_BEGIN<49> TOKEN_RAW_ENDr[r\<00>TOKEN_LINECOMMENT_BEGINrV<00>TOKEN_LINECOMMENT_ENDry)r~rw<00>crxZ tag_rulesZroot_tag_rulesZblock_suffix_reZ no_lstrip_reZ
block_diff<EFBFBD>mZ comment_diffZno_variable_reZ lstrip_reZblock_prefix_reZcomment_prefix_rerD)r<>rHr<><00>s<>    




zLexer.__init__cCst<00>|j|<01>S)z@Called for strings and template data to normalize it to unicode.)rjrr<>)r~rcrDrDrH<00>_normalize_newlines$szLexer._normalize_newlinesNcCs&|<00>||||<04>}t|<00>|||<03>||<03>S)zCCalls tokeniter + tokenize and wraps it in a token stream.
)<03> tokeniterr<72><00>wrap)r~<00>sourcer!r<><00>stater<65>rDrDrH<00>tokenize(szLexer.tokenizec csh<00>x`|D<00>]V\}}}|tkr"q<08>n0|dkr2d}<05>n |dkrBd}<05>n|dkrPq<08>n|dkrd|<00>|<06>}n<>|dkrr|}n<>|dkr<>t|<06>}tr<>|<06><04>s<>td |||<03><04>n<>|d
k<02>ry$|<00>|d d <0C><00><01>d d<0E><02>d<0F>}WnHtk
<EFBFBD>r}z(t|<07><01> d<10>d <00>
<EFBFBD>}t||||<03><04>Wdd}~XYnXn:|dk<02>r,t |<06>}n&|dk<02>r@t |<06>}n|dk<02>rRt |}t|||<06>VqWdS)z<>This is called with the stream as returned by `tokenize` and wraps
every token in a :class:`Token` and converts the value.
r*r$r+r%)r'r(r-<00>keywordr!zInvalid character in identifierr"rf<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ascii<69>backslashreplacezunicode-escaper@Nr rr#)<0F>ignored_tokensr<73>r<><00> check_ident<6E> isidentifierr<00>encode<64>decode<64> Exceptionrg<00>strip<69>intr<00> operatorsr<73>) r~r<>r!r<>r<>rdrcrx<00>msgrDrDrHr<>.sD   

"




z
Lexer.wrapccsPt|<01>}|<01><01>}|jr>|r>x"dD]}|<01>|<06>r |<05>d<02>Pq Wd<03>|<05>}d}d}dg} |dk r<>|dkr<>|dksvtd <09><01>| <09>|d
<00>nd}|j| d }
t|<01>} g} <0C>x<><78>x<>|
D<00>]j\} }}| <0A> ||<07>}|dkr<>q<EFBFBD>| r<>|d kr<>q<EFBFBD>t
|t <0B><02>r<>x<EFBFBD>t |<0E>D]<5D>\}}|j tk<08>r|||<03><02>q<>|d k<02>rpx<70>t|<10><10><00>D]0\}}|dk <09>r.|||fV||<14>d<03>7}P<00>q.Wtd| <00><01>q<>|<10>|d<00>}|<15>s<>|tk<07>r<>|||fV||<15>d<03>7}q<>Wn<>|<10><13>}|dk<02>rL|dk<02>r<>| <0C>d<11>nv|dk<02>r<>| <0C>d<13>n`|dk<02>r| <0C>d<15>nJ|dk<06>rL| <0C>s$td||||<03><04>| <0C><16>}||k<03>rLtd||f|||<03><04>|<15>s\|tk<07>rh|||fV||<15>d<03>7}|<10><17>}|dk <09>r|dk<02>r<>| <09><16>nT|d k<02>r<>xHt|<10><10><00>D] \}}|dk <09>r<>| <09>|<13>P<00>q<>Wtd| <00><01>n
| <09>|<0F>|j| d }
n||k<02>rtd| <00><01>|}Pq<>W|| k<05>r.dStd|||f|||<03><04>q<>WdS)z<>This method tokenizes the text and returns the tokens in a
generator. Use this method if you just want to tokenize a template.
)z
<EFBFBD> <0A>
r<EFBFBD>r<>rrfr<>N)rnrmz invalid stateZ_beginr<6E>)r&r%r+z#bygroupz?%r wanted to resolve the token dynamically but no group matchedr#r:r;r8r9r6r7)r;r9r7zunexpected '%s'zunexpected '%s', expected '%s'z#popzC%r wanted to resolve the new state dynamically but no group matchedz,%r yielded empty string without stack changezunexpected char %r at %d)r<00>
splitlinesr<EFBFBD><00>endswithrtr<><00>AssertionErrorryrNr<><00>
isinstancer<EFBFBD><00> enumerate<74> __class__r{r<00> groupdict<63>count<6E> RuntimeErrorr<72><00>ignore_if_emptyr<00>pop<6F>end)r~r<>r!r<>r<><00>lines<65>newline<6E>posr<73><00>stackZ statetokensZ source_lengthZbalancing_stack<63>regex<65>tokensZ new_stater<65><00>idxrdrQrcr-Z expected_op<6F>pos2rDrDrHr<>Ws<>




    

 
 

 
 
 

 









zLexer.tokeniter)NNN)NN)NN) r<>r<>r<>r<>r<>r<>r<>r<>r<>rDrDrDrHr<><00>s

)r<>)jr<6A>rJ<00> collectionsrr#rZjinja2._compatrrrrZjinja2.exceptionsrZ jinja2.utilsr r<>r<><00>Ur<55>r<>r<>r<><00> SyntaxErrorr<72>r<>Zjinja2r <00>format<61>pattern<72>sys<79>modulesr<73>rjZ TOKEN_ADDZ TOKEN_ASSIGNZ TOKEN_COLONZ TOKEN_COMMAZ TOKEN_DIVZ TOKEN_DOTZTOKEN_EQZTOKEN_FLOORDIVZTOKEN_GTZ
TOKEN_GTEQZ TOKEN_LBRACEZTOKEN_LBRACKETZ TOKEN_LPARENZTOKEN_LTZ
TOKEN_LTEQZ TOKEN_MODZ TOKEN_MULZTOKEN_NEZ
TOKEN_PIPEZ TOKEN_POWZ TOKEN_RBRACEZTOKEN_RBRACKETZ TOKEN_RPARENZTOKEN_SEMICOLONZ TOKEN_SUBZ TOKEN_TILDEr<45>r<>r<>r<>r<>r<>rWrXrYrZr<>r<>rSrTrUr[r\r<>r<>rVr]r<>r^r<><00>dictrRrNr<>r<>rvr<><00> frozensetr<74>r<>rarerirlrz<00>objectr{r<>r<>r<>r<>r<>r<>rDrDrDrH<00><module>s<>    


 


  +  ^