grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026î ¤ fücã@s–dZdZdZddlmZddlmZmZddl Z ddl m Z ddl m Z ddlZddlZdd lTejd ejƒZejd ejƒZddlZejd d dddddgZ[eZd eed96e?d:6e@d;6eAd<6eBd=6eCd>6eDd?6eEd@6ZFGdAd„de jGddBƒƒZHdCdD„ZIdEdF„ZJdGdH„ZKdIZLdJZMeLeJdKeLƒeKeMƒZNdLZOdMZPdNZQdOZRdPZSeIePeQeReSƒZTdQZUeIdRdSƒeKeUƒZVdTeUZWeIeVeWƒZXeIdUeXdVƒZYeIeYeXeTƒZZdWZ[dXZ\dYZ]dZZ^d[Z_eIe[d\e[d]ƒZ`eIe[d^e[d_ƒZaeId`dadbd+dcddded.ƒZbdfZceIdgdhdiƒZdeIebecedƒZeeIeZeeeaeOƒZfeNefZgeIe[djeIdkdKƒe[dleIdmdKƒƒZheIdneMe`ƒZieLeIeieZeeeheOƒZjdodp„Zki(e\dk6e]dm6e^d\6e_d]6e^dq6e_dr6e^ds6e_dt6e^du6e_dv6e^dw6e_dx6e^dy6e_dz6e^d{6e_d|6e^d}6e_d~6e^d6e_d€6e^d�6e_d‚6e^dƒ6e_d„6e^d…6e_d†6e^d‡6e_dˆ6e^d‰6e_dŠ6e^du6e_dv6e^d‹6e_dŒ6dd�6ddŽ6dd�6dd�6dd‘6dd’6ZliZmxdÄD]ZnenemenzpGvR, ESR, Tim Peters, Thomas Wouters, Fred Drake, Skip Montanaro, Raymond Hettinger, Trent Nelson, Michael Foordé)Úopen)ÚlookupÚBOM_UTF8N)Ú TextIOWrapper)Úchain)Ú*z%^[ \t\f]*#.*coding[:=][ \t]*([-\w.]+)s^[ \t\f]*(?:[#\r\n]|$)ÚCOMMENTÚtokenizeÚdetect_encodingÚNLÚ untokenizeÚENCODINGÚ TokenInfoéééú(ú)ú[ú]ú:ú,ú;ú+ú-rú/ú|ú&ú<ú>ú=Ú.ú%ú{ú}z==z!=z<=z>=ú~ú^z<>z**z+=z-=z*=z/=z%=z&=z|=z^=z<<=z>>=z**=z//z//=ú@c@s.eZdZdd„Zedd„ƒZdS)rcCs.d|jt|jf}d|jd|ƒS)Nz%d (%s)z8TokenInfo(type=%s, string=%r, start=%r, end=%r, line=%r)Útype)r(Útok_nameÚ_replace)ÚselfÚannotated_type©r-ú-/opt/alt/python34/lib64/python3.4/tokenize.pyÚ__repr__bszTokenInfo.__repr__cCs4|jtkr)|jtkr)t|jS|jSdS)N)r(ÚOPÚstringÚEXACT_TOKEN_TYPES)r+r-r-r.Ú exact_typegs zTokenInfo.exact_typeN)Ú__name__Ú __module__Ú __qualname__r/Úpropertyr3r-r-r-r.ras  ztype string start end linecGsddj|ƒdS)Nrrr)Újoin)Úchoicesr-r-r.Úgroupnsr:cGst|ŒdS)Nr)r:)r9r-r-r.Úanyosr;cGst|ŒdS)Nú?)r:)r9r-r-r.Úmaybepsr=z[ \f\t]*z #[^\r\n]*z\\\r?\nz\w+z0[xX][0-9a-fA-F]+z 0[bB][01]+z 0[oO][0-7]+z(?:0+|[1-9][0-9]*)z[eE][-+]?[0-9]+z[0-9]+\.[0-9]*z\.[0-9]+z[0-9]+z [0-9]+[jJ]z[jJ]z(?:[bB][rR]?|[rR][bB]?|[uU])?z[^'\\]*(?:\\.[^'\\]*)*'z[^"\\]*(?:\\.[^"\\]*)*"z%[^'\\]*(?:(?:\\.|'(?!''))[^'\\]*)*'''z%[^"\\]*(?:(?:\\.|"(?!""))[^"\\]*)*"""ú'''ú"""z'[^\n'\\]*(?:\\.[^\n'\\]*)*'z"[^\n"\\]*(?:\\.[^\n"\\]*)*"z\*\*=?z>>=?z<<=?z//=?z->z[+\-*/%&|^=<>]=?z[][(){}]z\r?\nz\.\.\.z[:;.,@]z'[^\n'\\]*(?:\\.[^\n'\\]*)*ú'z"[^\n"\\]*(?:\\.[^\n"\\]*)*ú"z \\\r?\n|\ZcCstj|tjƒS)N)ÚreÚcompileÚUNICODE)Úexprr-r-r.Ú_compile«srFúr'''úr"""úb'''úb"""úR'''úR"""úB'''úB"""úbr'''úbr"""úbR'''úbR"""úBr'''úBr"""úBR'''úBR"""úrb'''úrb"""úRb'''úRb"""úrB'''úrB"""úRB'''úRB"""úu'''úu"""úU'''úU"""ÚrÚRÚbÚBÚuÚUúr'úr"úR'úR"úb'úb"úB'úB"úbr'úbr"úBr'úBr"úbR'úbR"úBR'úBR"úrb'úrb"úrB'úrB"úRb'úRb"úRB'úRB"úu'úu"úU'úU"éc@seZdZdS)Ú TokenErrorN)r4r5r6r-r-r-r.r†Ûs r†c@seZdZdS)ÚStopTokenizingN)r4r5r6r-r-r-r.r‡Ýs r‡c@s@eZdZdd„Zdd„Zdd„Zdd„Zd S) Ú UntokenizercCs(g|_d|_d|_d|_dS)Nrr)ÚtokensÚprev_rowÚprev_colÚencoding)r+r-r-r.Ú__init__âs   zUntokenizer.__init__cCsÁ|\}}||jks9||jkr`||jkr`tdj|||j|jƒƒ‚n||j}|r“|jjd|ƒd|_n||j}|r½|jjd|ƒndS)Nz+start ({},{}) precedes previous end ({},{})z\ rú )rŠr‹Ú ValueErrorÚformatr‰Úappend)r+ÚstartÚrowÚcolÚ row_offsetÚ col_offsetr-r-r.Úadd_whitespaceès -    zUntokenizer.add_whitespacec Csºt|ƒ}g}d}x�|D]‡}t|ƒdkrK|j||ƒPn|\}}}} } |tkr{||_qn|tkr‹Pn|tkrª|j|ƒqn |tkrØ|j ƒ| \|_ |_ qnr|t t fkród}nW|rJ|rJ|d} |dt| ƒkrA|jj| ƒt| ƒ|_ nd}n|j|ƒ|jj|ƒ| \|_ |_ |t t fkr|j d7_ d|_ qqWdj|jƒS)NFrTrrÚéÿÿÿÿ)ÚiterÚlenÚcompatr rŒÚ ENDMARKERÚINDENTr‘ÚDEDENTÚpoprŠr‹ÚNEWLINEr r‰r—r8) r+ÚiterableÚitÚindentsÚ startlineÚtÚtok_typeÚtokenr’ÚendÚlineÚindentr-r-r.r õsF              zUntokenizer.untokenizec CsPg}|jj}|dttfk}d}xt|g|ƒD]}|dd…\}} |tkrx| |_qAn|ttfkr—| d7} n|t kr¿|r¶d| } nd}nd}|t krä|j| ƒqAnZ|t kr|j ƒqAn>|ttfkrd}n#|r>|r>||dƒd}n|| ƒqAWdS)NrFrrŽTrr™) r‰r‘r¡r rr rŒÚNAMEÚNUMBERÚSTRINGržrŸr ) r+r¨r¢r¤Ú toks_appendr¥Ú prevstringÚtokÚtoknumÚtokvalr-r-r.rœs8              zUntokenizer.compatN)r4r5r6r�r—r rœr-r-r-r.rˆàs   %rˆcCs@tƒ}|j|ƒ}|jdk r<|j|jƒ}n|S)aTransform tokens back into Python source code. It returns a bytes object, encoded using the ENCODING token, which is the first token sequence output by tokenize. Each element returned by the iterable must be a token sequence with at least two elements, a token number and token value. If only two tokens are passed, the resulting output is poor. Round-trip invariant for full input: Untokenized source will match input source exactly Round-trip invariant for limited intput: # Output bytes will tokenize the back to the input t1 = [tok[:2] for tok in tokenize(f.readline)] newcode = untokenize(t1) readline = BytesIO(newcode).readline t2 = [tok[:2] for tok in tokenize(readline)] assert t1 == t2 N)rˆr rŒÚencode)r¢ÚutÚoutr-r-r.r ?s  cCsd|dd…jƒjddƒ}|dks=|jdƒrAdS|d ks\|jdƒr`dS|S)z(Imitates get_normal_name in tokenizer.c.Né Ú_rzutf-8zutf-8-úlatin-1ú iso-8859-1ú iso-latin-1úlatin-1-ú iso-8859-1-ú iso-latin-1-)r¹rºr»)r¼r½r¾)ÚlowerÚreplaceÚ startswith)Úorig_encÚencr-r-r.Ú_get_normal_nameZs" rÄc s4yˆjj‰Wntk r*d‰YnXd‰d}d}‡fdd†}‡‡fdd†}|ƒ}|jtƒr›d‰|d d…}d }n|s«|gfS||ƒ}|rÊ||gfStj|ƒsæ||gfS|ƒ}|s||gfS||ƒ}|r$|||gfS|||gfS) a The detect_encoding() function is used to detect the encoding that should be used to decode a Python source file. It requires one argument, readline, in the same way as the tokenize() generator. It will call readline a maximum of twice, and return the encoding used (as a string) and a list of any lines (left as bytes) it has read in. It detects the encoding from the presence of a utf-8 bom or an encoding cookie as specified in pep-0263. If both a bom and a cookie are present, but disagree, a SyntaxError will be raised. If the encoding cookie is an invalid charset, raise a SyntaxError. Note that if a utf-8 bom is found, 'utf-8-sig' is returned. If no encoding is specified, then the default of 'utf-8' will be returned. NFzutf-8c s(y ˆƒSWntk r#dSYnXdS)Nó)Ú StopIterationr-)Úreadliner-r.Ú read_or_stop}s  z%detect_encoding..read_or_stopcs;y|jdƒ}WnEtk rZd}ˆdk rJdj|ˆƒ}nt|ƒ‚YnXtj|ƒ}|stdSt|jdƒƒ}yt|ƒ}WnIt k räˆdkrÂd|}ndjˆ|ƒ}t|ƒ‚YnXˆr7|dkr*ˆdkr d}ndjˆƒ}t|ƒ‚n|d 7}n|S) Nzutf-8z'invalid or missing encoding declarationz {} for {!r}rzunknown encoding: zunknown encoding for {!r}: {}zencoding problem: utf-8z encoding problem for {!r}: utf-8z-sig) ÚdecodeÚUnicodeDecodeErrorr�Ú SyntaxErrorÚ cookie_reÚmatchrÄr:rÚ LookupError)rªÚ line_stringÚmsgrÍrŒÚcodec)Ú bom_foundÚfilenamer-r.Ú find_cookieƒs6           z$detect_encoding..find_cookieTrz utf-8-sig)Ú__self__ÚnameÚAttributeErrorrÁrÚblank_rerÍ)rÇrŒÚdefaultrÈrÔÚfirstÚsecondr-)rÒrÓrÇr.r es8  &         c Csst|dƒ}yHt|jƒ\}}|jdƒt||ddƒ}d|_|SWn|jƒ‚YnXdS)zXOpen a file in read only mode using the encoding detected by detect_encoding(). ÚrbrÚline_bufferingTrcN)Ú _builtin_openr rÇÚseekrÚmodeÚclose)rÓÚbufferrŒÚlinesÚtextr-r-r.rÂs   rcCs_ddlm}m}t|ƒ\}}t|dƒ}|dƒ}t||||ƒj|ƒS)aÚ The tokenize() generator requires one argment, readline, which must be a callable object which provides the same interface as the readline() method of built-in file objects. Each call to the function should return one line of input as bytes. Alternately, readline can be a callable function terminating with StopIteration: readline = open(myfile, 'rb').__next__ # Example of alternate readline The generator produces 5-tuples with these members: the token type; the token string; a 2-tuple (srow, scol) of ints specifying the row and column where the token begins in the source; a 2-tuple (erow, ecol) of ints specifying the row and column where the token ends in the source; and the line on which the token was found. The line passed is the logical line; continuation lines are included. The first token sequence will always be an ENCODING token which tells you which encoding was used to decode the bytes stream. r)rÚrepeatrÅ)Ú itertoolsrrår ršÚ _tokenizeÚ__next__)rÇrrårŒÚconsumedÚrl_genÚemptyr-r-r.r Òs  ccs d}}}d}d\}}d}dg} |dk rj|dkrPd}ntt|dddƒVnxNy |ƒ} Wntk r”d} YnX|dk r³| j|ƒ} n|d7}dt| ƒ} } |rß| sîtd| ƒ‚n|j| ƒ}|rZ|jdƒ} }tt|| d|…| ||f|| ƒVd\}}d}ql|rÅ| d d…d krÅ| d!d…d krÅtt || | |t| ƒf|ƒVd}d}qmql|| }|| }qmn�|dkrH| rH| süPnd}xv| | krz| | d kr.|d7}n?| | dkrS|t dt }n| | dkrld}nP| d7} qW| | kr‹Pn| | dkr„| | dkr7| | d…j dƒ}| t|ƒ}tt ||| f|| t|ƒf| ƒVtt | |d…||f|t| ƒf| ƒVqmtt t f| | dk| | d…|| f|t| ƒf| ƒVqmn|| d"krÑ| j|ƒtt| d| …|df|| f| ƒVnx˜|| d#krD|| krtdd|| | fƒ‚n| dd$…} ttd|| f|| f| ƒVqÔWn$| sftd|dfƒ‚nd}xH| | kr¶ttƒj| | ƒ}|r~|jdƒ\}}||f||f|}}} ||kràqon| ||…| |}}||ks+|dkrE|dkrE|dkrEtt|||| ƒVq³|dkr}t|dkrft nt|||| ƒVq³|dkr£tt |||| ƒVq³|tkr<tt|ƒ}|j| | ƒ}|r|jdƒ} | || …}tt|||| f| ƒVq{||f} | |d…}| }Pq³|tkst|dd …tkst|dd …tkr÷|d%dkrÝ||f} tt|p¶t|dp¶t|d ƒ}| |d…d}}| }Pq{tt|||| ƒVq³|jƒrtt|||| ƒVq³|dkr2d}q³|dkrK|d7}n|dkrd|d8}ntt|||| ƒVqott | | || f|| df| ƒV| d7} qoWqmWx;| dd…D])}ttd|df|dfdƒVqÌWttd|df|dfdƒVdS)&NrÚ 0123456789r˜z utf-8-sigzutf-8rÅrzEOF in multi-line stringrz\ rz\ rŽú ú z# ú#z z3unindent does not match any outer indentation levelz zEOF in multi-line statementr!z...Ú ú\z([{z)]})r˜r)rr)rr)r˜réþÿÿÿéýÿÿÿr™r™r™r™)rr rÆrÉr›r†rÍr©r®Ú ERRORTOKENÚtabsizeÚrstriprr r‘ržÚIndentationErrorrŸrFÚ PseudoTokenÚspanr­r¡Ú triple_quotedÚendpatsÚ single_quotedÚ isidentifierr¬r0r�)rÇrŒÚlnumÚparenlevÚ continuedÚnumcharsÚcontstrÚneedcontÚcontliner¤rªÚposÚmaxÚstrstartÚendprogÚendmatchr©ÚcolumnÚ comment_tokenÚnl_posÚ pseudomatchr’ÚsposÚeposr¨Úinitialr«r-r-r.rçîs            2       $#'  0 *   $                'rçcCs t|dƒS)N)rç)rÇr-r-r.Úgenerate_tokensˆsrc s½ddl}dd„‰dd‡fdd†}|jddƒ}|jdd d d d d ddƒ|jddddddddƒ|jƒ}yÂ|jr×|j}t|dƒ�}tt|jƒƒ}WdQXnd}t t j jdƒ}x^|D]V}|j }|j r|j}nd|j|j} td| t||jfƒqùWWnbtk rµ} z?| jddd…\} } || jd|| | fƒWYdd} ~ Xntk r } z5| jd\} } || jd|| | fƒWYdd} ~ Xn°tk r:} z|| |ƒWYdd} ~ Xntk rh} z|| ƒWYdd} ~ XnQtk rƒtdƒYn6tk r¸} zˆd| ƒ‚WYdd} ~ XnXdS)NrcSst|dtjƒdS)NÚfile)ÚprintÚsysÚstderr)Úmessager-r-r.Úperror�szmain..perrorcsg|r+|f||f}ˆd|ƒn+|rHˆd||fƒnˆd|ƒtjdƒdS)Nz%s:%d:%d: error: %sz %s: error: %sz error: %sr)rÚexit)rrÓÚlocationÚargs)rr-r.Úerror’szmain..errorÚprogzpython -m tokenizeÚdestrÓÚnargsr<Úmetavarz filename.pyÚhelpz'the file to tokenize; defaults to stdinz-ez--exactÚexactÚactionÚ store_truez(display token names using the exact typerÜzz %d,%d-%d,%d:z%-20s%-15s%-15rrrz interrupted zunexpected error: %s)ÚargparseÚArgumentParserÚ add_argumentÚ parse_argsrÓrÞÚlistr rÇrçrÚstdinr(r!r3r’r©rr)r1r÷rr†rËÚOSErrorÚKeyboardInterruptÚ Exception) r$rÚparserrrÓÚfr‰r¨Ú token_typeÚ token_rangeÚerrrªr r-)rr.Úmain‹sN           // r2Ú__main__)r>r?rGrHrKrLrIrJrMrNrOrPrSrTrQrRrUrVrWrXr[r\rYrZr]r^r_r`rarb)r@rArirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzr{r|r}r~rr€r�r‚rƒr„)}Ú__doc__Ú __author__Ú __credits__ÚbuiltinsrrÞÚcodecsrrÚ collectionsÚiorrærrBrr¨rCÚASCIIrÌrØÚ__all__ÚN_TOKENSrr)r r ÚLPARÚRPARÚLSQBÚRSQBÚCOLONÚCOMMAÚSEMIÚPLUSÚMINUSÚSTARÚSLASHÚVBARÚAMPERÚLESSÚGREATERÚEQUALÚDOTÚPERCENTÚLBRACEÚRBRACEÚEQEQUALÚNOTEQUALÚ LESSEQUALÚ GREATEREQUALÚTILDEÚ CIRCUMFLEXÚ LEFTSHIFTÚ RIGHTSHIFTÚ DOUBLESTARÚ PLUSEQUALÚMINEQUALÚ STAREQUALÚ SLASHEQUALÚ PERCENTEQUALÚ AMPEREQUALÚ VBAREQUALÚCIRCUMFLEXEQUALÚLEFTSHIFTEQUALÚRIGHTSHIFTEQUALÚDOUBLESTAREQUALÚ DOUBLESLASHÚDOUBLESLASHEQUALÚATr2Ú namedtuplerr:r;r=Ú WhitespaceÚCommentÚIgnoreÚNameÚ HexnumberÚ BinnumberÚ OctnumberÚ DecnumberÚ IntnumberÚExponentÚ PointfloatÚExpfloatÚ FloatnumberÚ ImagnumberÚNumberÚ StringPrefixÚSingleÚDoubleÚSingle3ÚDouble3ÚTripleÚStringÚOperatorÚBracketÚSpecialÚFunnyÚ PlainTokenÚTokenÚContStrÚ PseudoExtrasrørFrûrúr¦rürõr,r†r‡rˆr rÄr r rçrr2r4r-r-r-r.ÚsF            "             _  ]   š  <