/usr/local/lib/python3.6/site-packages/jinja2/__pycache__
NameSizeModeActions
async_utils.cpython-36.pyc24350644editdlrm
bccache.cpython-36.pyc130970644editdlrm
compiler.cpython-36.pyc543690644editdlrm
constants.cpython-36.pyc14960644editdlrm
debug.cpython-36.pyc53440644editdlrm
defaults.cpython-36.pyc12410644editdlrm
environment.cpython-36.pyc523970644editdlrm
exceptions.cpython-36.pyc54980644editdlrm
ext.cpython-36.pyc262740644editdlrm
filters.cpython-36.pyc497540644editdlrm
idtracking.cpython-36.pyc111250644editdlrm
lexer.cpython-36.pyc199830644editdlrm
loaders.cpython-36.pyc202170644editdlrm
meta.cpython-36.pyc37460644editdlrm
nativetypes.cpython-36.pyc48050644editdlrm
nodes.cpython-36.pyc411930644editdlrm
optimizer.cpython-36.pyc18610644editdlrm
parser.cpython-36.pyc276350644editdlrm
runtime.cpython-36.pyc328630644editdlrm
sandbox.cpython-36.pyc116960644editdlrm
tests.cpython-36.pyc64820644editdlrm
utils.cpython-36.pyc272170644editdlrm
visitor.cpython-36.pyc38390644editdlrm
_identifier.cpython-36.pyc18500644editdlrm
__init__.cpython-36.pyc18650644editdlrm
Edit: /usr/local/lib/python3.6/site-packages/jinja2/__pycache__/lexer.cpython-36.pyc (19983B)
3 ^TBgt@sUdZddlZddlZddlmZddlmZddlm Z ddl m Z ddl mZdd lmZejrxddlZdd lmZed Zejejd fejd ZejdZejdejZejdejejBZ ejdejejBZ!e dZ"e dZ#e dZ$e dZ%e dZ&e dZ'e dZ(e dZ)e dZ*e dZ+e dZ,e dZ-e dZ.e dZ/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,Ze d/Z?e d0Z@e d1ZAe d2ZBe d3ZCe d4ZDe d5ZEe d6ZFe d7ZGe d8ZHe d9ZIe d:ZJe d;ZKe d<ZLe d=ZMe d>ZNe d?ZOe d@ZPe dAZQe dBZRe"e:e&e)e2e1e5e;e-e7e.e8e,e6e(e3e*e+e/e0e#e'e$e4e%e9dCZSdDdEeSjTDZUeVeSeVeUkstWdFejdGdHjXdIdJeYeSdKdLdMDdNZZe[eHeJeIez>=sr>zoperators droppedr-r6ccs|]}tj|VqdS)N)reescape)r:xr9r9r= srBcCs t| S)N)len)rAr9r9r=srD)keyr.) token_typereturncCsL|tkrt|Stdtdtdtdtdtdtdtdt dt d t d t d i j ||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)reverse_operatorsTOKEN_COMMENT_BEGINTOKEN_COMMENT_END TOKEN_COMMENTTOKEN_LINECOMMENTTOKEN_BLOCK_BEGINTOKEN_BLOCK_ENDTOKEN_VARIABLE_BEGINTOKEN_VARIABLE_ENDTOKEN_LINESTATEMENT_BEGINTOKEN_LINESTATEMENT_END TOKEN_DATA TOKEN_EOFget)rFr9r9r=_describe_token_typesrVToken)tokenrGcCs|jtkr|jSt|jS)z#Returns a description of the token.)type TOKEN_NAMEvaluerV)rXr9r9r=describe_tokens r\)exprrGcCs2d|kr&|jdd\}}|tkr*|Sn|}t|S)z0Like `describe_token` but for token expressions.r5r)splitrZrV)r]rYr[r9r9r=describe_token_exprs r_)r[rGcCsttj|S)zsCount the number of newline characters in the string. This is useful for extensions that filter a stream. )rC newline_refindall)r[r9r9r=count_newlinessrbr ) environmentrGcCstj}t|jt||jft|jt||jft|jt||jfg}|j dk rp|j t|j t d||j f|j dk r|j t|j t d||j fddt|ddDS)zACompiles all the rules from the environment into a list of rules.Nz ^[ \t\v]*z(?:^|(?<=\S))[^\S\r\n]*cSsg|]}|ddqS)rNr9)r:rAr9r9r= sz!compile_rules..T)reverse)r?r@rCcomment_start_stringrIblock_start_stringrMvariable_start_stringrOline_statement_prefixappendrQline_comment_prefixTOKEN_LINECOMMENT_BEGINsorted)rcerulesr9r9r= compile_ruless*    rpc@s>eZdZdZefeejeddddZe edddd Z dS) FailurezjClass that raises a `TemplateSyntaxError` if called. Used by the `Lexer` to specify known errors. N)messageclsrGcCs||_||_dS)N)rr error_class)selfrrrsr9r9r=__init__szFailure.__init__z te.NoReturn)linenofilenamerGcCs|j|j||dS)N)rtrr)rurwrxr9r9r=__call__szFailure.__call__) __name__ __module__ __qualname____doc__rstrtTypervintryr9r9r9r=rqsrqc@sHeZdZUeeeedddZee dddZ ee ddd Z d S) rW)rGcCst|S)N)r\)rur9r9r=__str__sz Token.__str__)r]rGcCs2|j|krdSd|kr.|jdd|j|jgkSdS)zTest 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. Tr5rF)rYr^r[)rur]r9r9r=tests  z Token.test)iterablerGcstfdd|DS)z(Test against multiple token expressions.c3s|]}j|VqdS)N)r)r:r])rur9r=rB$sz!Token.test_any..)any)rurr9)rur=test_any"szToken.test_anyN) rzr{r|rrwr~rYr[rboolrrr9r9r9r=rW s c@s<eZdZdZdddddZdddd Zedd d ZdS) TokenStreamIteratorz`The iterator for tokenstreams. Iterate over the stream until the eof token is reached. TokenStreamN)streamrGcCs ||_dS)N)r)rurr9r9r=rv,szTokenStreamIterator.__init__)rGcCs|S)Nr9)rur9r9r=__iter__/szTokenStreamIterator.__iter__cCs.|jj}|jtkr |jjtt|j|S)N)rcurrentrYrTclose StopIterationnext)rurXr9r9r=__next__2s    zTokenStreamIterator.__next__)rzr{r|r}rvrrWrr9r9r9r=r'src@seZdZdZejeejeejedddZ e dddZ e ddd Z ee dd d Zed d ddZedddZd!ed dddZeejedddZee dddZedddZd dddZeeddd Zd S)"rzA 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`. ) generatorrrxcCs>t||_t|_||_||_d|_tdtd|_ t |dS)NFr) iter_iterr_pushedrrxclosedrW TOKEN_INITIALrr)rurrrxr9r9r=rvCs zTokenStream.__init__)rGcCst|S)N)r)rur9r9r=rQszTokenStream.__iter__cCst|jp|jjtk S)N)rrrrYrT)rur9r9r=__bool__TszTokenStream.__bool__cCs| S)z Are we at the end of the stream?r9)rur9r9r=eosWszTokenStream.eosN)rXrGcCs|jj|dS)z Push a token back to the stream.N)rrj)rurXr9r9r=push\szTokenStream.pushcCs"t|}|j}|j|||_|S)zLook at the next token.)rrr)ruZ old_tokenresultr9r9r=look`s  zTokenStream.lookr)nrGcCsxt|D] }t|q WdS)zGot n tokens ahead.N)ranger)rur_r9r9r=skiphszTokenStream.skip)r]rGcCs|jj|rt|SdS)zqPerform the token test and return the token if it matched. Otherwise the return value is `None`. N)rrr)rur]r9r9r=next_ifms zTokenStream.next_ifcCs|j|dk S)z8Like :meth:`next_if` but only returns `True` or `False`.N)r)rur]r9r9r=skip_ifvszTokenStream.skip_ifc CsX|j}|jr|jj|_n:|jjtk rTyt|j|_Wntk rR|jYnX|S)z|Go one token ahead and return the old one. Use the built-in :func:`next` instead of calling this directly. ) rrpopleftrYrTrrrr)rurvr9r9r=rzs zTokenStream.__next__cCs&t|jjtd|_tf|_d|_dS)zClose the stream.rTN)rWrrwrTrrr)rur9r9r=rs zTokenStream.closecCsn|jj|sft|}|jjtkr>td|d|jj|j|jtd|dt |j|jj|j|jt |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 r4zexpected token z, got ) rrr_rYrTrrwrrxr\r)rur]r9r9r=expects   zTokenStream.expect)r)rzr{r|r}rIterablerWOptionalr~rvrrrrpropertyrrrrrrrrrrr9r9r9r=r=s   rc CsZ|j|j|j|j|j|j|j|j|j|j |j |j f }t j |}|dkrVt|t |<}|S)z(Return a lexer which is probably cached.N)rgblock_end_stringrhvariable_end_stringrfcomment_end_stringrirk trim_blocks lstrip_blocksnewline_sequencekeep_trailing_newline _lexer_cacherUr )rcrElexerr9r9r= get_lexers  rcs$eZdZdZfZfddZZS)OptionalLStripzWA special tuple for marking a point in the state that can have lstrip applied. cstj||S)N)super__new__)rsmemberskwargs) __class__r9r=rszOptionalLStrip.__new__)rzr{r|r} __slots__r __classcell__r9r9)rr=rsrc@sBeZdZUejeejeejedfeje f ej e dS)_Rule.N) rzr{r|rPatternr~rUnionTuplerqtokensrcommandr9r9r9r=rs   rc @seZdZdZdddddZeeddd Zdeejeejeejee d d d Z dej ej e eefejeejeejed ddZdeejeejeejeejej e eefd ddZdS)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. r N)rcrGc Cs0tj}ttjtddd}tttdttt dtt t dtt t dtttdtttdg}t|}||j}||j}||j}||j} |jrdnd} |jr|dnd|_|j|_|j|_d|d|d |d } d j| gd d |D} dt|d| dttddt|dtdgtt|d|d|d || d t t!fdt|dt"dfdgt#t|d|d|d || dt$dg|t%t|d| d | t&dg|t't|d|d|d|d || d ttt(dt|dt"dfdgt)t|dt*dg|t+t|dt,t-fdgi|_.dS)N)rArGcSstj|tjtjBS)N)r?compileMS)rAr9r9r=cszLexer.__init__..cz\n?rz[^ \t]z(?Pz(\-|\+|)\s*raw\s*(?:\-z\s*|z))r6cSs"g|]\}}d|d|dqS)z(?P.rootz(.*?)(?:r.z#bygroupz.+z (.*?)((?:\+z|\-z#popz(.)zMissing end of comment tagz(?:\+z\-z (.*?)((?:z(\-|\+|))\s*endraw\s*(?:\+zMissing end of raw directivez \s*(\n|$)z(.*?)()(?=\n|$))/r?r@r~rrr whitespace_reTOKEN_WHITESPACEfloat_re TOKEN_FLOAT integer_re TOKEN_INTEGERname_rerZ string_re TOKEN_STRING operator_reTOKEN_OPERATORrprgrrrrrlstrip_unless_rerrjoinrrSrIrKrJrqrMrNrOrPTOKEN_RAW_BEGIN TOKEN_RAW_ENDrQrRrlrLTOKEN_LINECOMMENT_ENDro) rurcrnrZ tag_rulesZroot_tag_rulesZblock_start_reZ block_end_reZcomment_end_reZvariable_end_reZblock_suffix_reZ root_raw_reZ root_parts_rer9r9r=rvsz          "zLexer.__init__)r[rGcCstj|j|S)z`Replace all newlines with the configured sequence in strings and template data. )r`rr)rur[r9r9r=_normalize_newlinesVszLexer._normalize_newlines)sourcerrxstaterGcCs&|j||||}t|j|||||S)z:Calls tokeniter + tokenize and wraps it in a token stream.) tokeniterrwrap)rurrrxrrr9r9r=tokenize\szLexer.tokenize)rrrxrGc cszxr|D]h\}}}|tkrq|}|tkr2t}n2|tkrBt}n"|ttfkrTqn|tkrj|j|}n|dkrx|}n|t kr|}|j st d|||n|t kry$|j|dd j ddjd}WnJtk r}z,t|jdd j} t | ||||WYdd}~XnXnL|tkr6t|jd d d }n.|tkrRt|jd d }n|tkrdt|}t|||VqWdS)zThis is called with the stream as returned by `tokenize` and wraps every token in a :class:`Token` and converts the value. keywordzInvalid character in identifierrasciibackslashreplacezunicode-escaper5Nrrrr)ignored_tokensrQrMrRrNrrrSrrZ isidentifierrrencodedecode Exceptionr~r^striprrreplacerrr operatorsrW) rurrrxrwrXZ value_strr[rnmsgr9r9r=rgsD    $   z Lexer.wrapccsZtj|ddd}|j r.|d!dkr.|d"=dj|}d}d}dg}|dk rt|dkrt|d#ksftd |j|d |j|d$} t|} g} |j} d} d }xx| D]x\}}}|j ||}|dkrq| r|t t t fkrqt |tr|j}t |tr|d}td d|dddD}|dkr^|j}|t|djd} |f|dd}nl|dkr| dk r|jjt r|jdd}|dks|r| j||s|d|f|dd}xt|D]\}}|jtkr|||n|dkrPx|jjD]0\}}|dk r |||fV||jd7}Pq Wt|dn:||}|sh|tkrt|||fV||jd| 7}d} qWn|j}|t kr:|dkr| jdn|dkr| jdnj|dkr| jdnT|d%kr:| s t!d|d|||| j"}||kr:t!d|d|d||||sJ|tkrV|||fV||jd7}|jd&ddk}|j#}|dk r|dkr|j"nV|dkrxJ|jjD] \}}|dk r|j|PqWt|dn |j||j|d'} n||krt|d|}PqW|| kr4dSt!d||d ||||qWdS)(aThis method tokenizes the text and returns the tokens in a generator. Use this method if you just want to tokenize a template. .. versionchanged:: 3.0 Only ``\n``, ``\r\n`` and ``\r`` are treated as line breaks. Nrr rrvariableblockz invalid stateZ_beginTcss|]}|dk r|VqdS)Nr9)r:gr9r9r=rBsz"Lexer.tokeniter..r&r%z#bygroupz= wanted to resolve the token dynamically but no group matchedr/r0r-r.r+r,z unexpected ''z ', expected 'z#popzA wanted to resolve the new state dynamically but no group matchedz* yielded empty string without stack changezunexpected char z at rr)rrr)r0r.r,rr)$r`r^rrAssertionErrorrjrorCrmatchrPrNrR isinstancetuplegroupsrrrstripcount groupdictrUrOrfindsearch enumeraterrqitems RuntimeErrorignore_if_emptygrouprrpopend)rurrrxrlinesposrwstackZ statetokensZ source_lengthZbalancing_stackrZnewlines_strippedZ line_startingregexrZ new_statemrtextZ strip_signstrippedZl_posidxrXrEr[r"Z expected_oppos2r9r9r=rs                                  zLexer.tokeniter)NNN)NN)NN)rzr{r|r}rvr~rrrrrrrrIteratorrWrrr9r9r9r=r sy &5)pr}r?ZtypingrZastr collectionsrsysrZ _identifierrr exceptionsrutilsrZ TYPE_CHECKINGZtyping_extensionstercr rMutableMappingrrrr`rr IGNORECASEVERBOSErrZ 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_TILDErrrrZrrrMrNrOrPrrrIrJrKrQrRrlrrLrSrrTrrrHrCrrrmr frozensetrrr~rVr\r_rrbZListrprqZ NamedTuplerWrrrrrrr r9r9r9r=s            *  )m