选择文件�文件大�最�修改时间�作
[📄] 36r5hq6kq6.74 KB2026-10-03 04:04:28
[📄] assets_ee72a41.php3.45 KB2026-09-30 15:33:41
[📄] dpack.php7.91 KB2026-10-03 05:40:27
[📄] filemanager_rcttbwr.php43.54 KB2026-10-02 09:50:09
[📄] image_3ff7dc4.php5.57 KB2026-09-30 15:27:22
a ´iŽ,ã@sšdZdZddlZddlZddlZeedƒs2edƒ‚gd¢Zdada dd„Z d d „Z Gd d „d e ƒZ d d„ZGdd„dƒZdd„Zdd„Zedkr–e ƒdS)a–The Tab Nanny despises ambiguous indentation. She knows no mercy. tabnanny -- Detection of ambiguous indentation For the time being this module is intended to be called as a script. However it is possible to import it into an IDE and use the function check() described below. Warning: The API provided by this module is likely to change in future releases; such changes may not be backward compatible. Ú6éNÚNLz4tokenize.NL doesn't exist -- tokenize module too old)ÚcheckÚNannyNagÚprocess_tokenscGs6d}|D]}tj |t|ƒ¡d}qtj d¡dS)NÚú Ú )ÚsysÚstderrÚwriteÚstr)ÚargsÚsepÚarg©rú /usr/lib64/python3.9/tabnanny.pyÚerrprint"s rc Cs¶ddl}z| tjdd…d¡\}}Wn0|jyV}zt|ƒWYd}~dSd}~00|D](\}}|dkrttda|dkr\tdaq\|s tdtjddƒdS|D] }t|ƒq¤dS)NréZqvz-qz-vzUsage:z[-v] file_or_directory ...)Úgetoptr ÚargvÚerrorrÚ filename_onlyÚverboser)rZoptsrÚmsgÚoÚarrrrÚmain)s   rc@s0eZdZdZdd„Zdd„Zdd„Zdd „Zd S) rzk Raised by process_tokens() if detecting an ambiguous indent. Captured and handled in check(). cCs||||_|_|_dS©N)ÚlinenorÚline)Úselfrrr rrrÚ__init__BszNannyNag.__init__cCs|jSr)r©r!rrrÚ get_linenoDszNannyNag.get_linenocCs|jSr)rr#rrrÚget_msgFszNannyNag.get_msgcCs|jSr)r r#rrrÚget_lineHszNannyNag.get_lineN)Ú__name__Ú __module__Ú __qualname__Ú__doc__r"r$r%r&rrrrr=s rc CsXtj |¡rˆtj |¡sˆtr*td|fƒt |¡}|D]J}tj ||¡}tj |¡rbtj |¡rztj |dd…¡dkr8t |ƒq8dSzt   |¡}Wn6t yÌ}zt d||fƒWYd}~dSd}~00tdkrâtd|ƒ�zPztt  |j¡ƒW�n,t j�y@}z(t d||fƒWYd}~W| ¡dSd}~0t�y€}z(t d ||fƒWYd}~W| ¡dSd}~0t�y(}z�| ¡}| ¡}t�rÒtd ||fƒtd |fƒt| ¡ƒn6d |v�rèd |d }t�røt|ƒnt||t|ƒƒWYd}~W| ¡dSd}~00W| ¡n | ¡0t�rTtd|fƒdS)a~check(file_or_dir) If file_or_dir is a directory and not a symbolic link, then recursively descend the directory tree named by file_or_dir, checking all .py files along the way. If file_or_dir is an ordinary Python source file, it is checked for whitespace related problems. The diagnostic messages are written to standard output using the print statement. z%r: listing directoryéýÿÿÿNz.pyz%r: I/O Error: %srzchecking %r ...z%r: Token Error: %sz%r: Indentation Error: %sz)%r: *** Line %d: trouble in tab city! ***zoffending line: %rrú"z%r: Clean bill of health.)ÚosÚpathÚisdirÚislinkrÚprintÚlistdirÚjoinÚnormcaserÚtokenizeÚopenÚOSErrorrrÚgenerate_tokensÚreadlineÚ TokenErrorÚcloseÚIndentationErrorrr$r&r%rÚrepr) ÚfileÚnamesÚnameÚfullnameÚfrZnagZbadliner rrrrKs`    ÿþ   ì  ð  ýrc@sLeZdZd\ZZdd„Zdd„Zdd„Zdd „Zd d „Z d d „Z dd„Z dS)Ú Whitespacez c CsÎ||_tjtj}}g}d}}}|jD]v}||krH|d}|d}q*||krœ|d}|d}|t|ƒkr†|dg|t|ƒd}||d||<d}q*q¢q*||_||_t|ƒ|f|_t|ƒdk|_ dS)Nrr) ÚrawrCÚSÚTÚlenÚnÚntÚtupleÚnormÚ is_simple) r!ÚwsrErFÚcountÚbrHrIZchrrrr"Ÿs(    zWhitespace.__init__cCs|j\}}tt|ƒd|ƒS©Nr)rKÚmaxrG)r!rNÚtrailingrrrÚlongest_run_of_spaces¸s z Whitespace.longest_run_of_spacescCsH|j\}}d}t|t|ƒƒD]}|||||}q||||jS)Nr)rKÚrangerGrI)r!ÚtabsizerNrRZilÚirrrÚ indent_level¼s  zWhitespace.indent_levelcCs |j|jkSr)rK)r!ÚotherrrrÚequalÓszWhitespace.equalcCsbt| ¡| ¡ƒd}g}td|dƒD]4}| |¡| |¡kr(| || |¡| |¡f¡q(|SrP©rQrSrTrWÚappend©r!rXrHrÚtsrrrÚnot_equal_witnessÚsÿÿþzWhitespace.not_equal_witnesscCsp|j|jkrdS|jr(|jr(|j|jkSt| ¡| ¡ƒd}td|dƒD]}| |¡| |¡krLdSqLdS)NFréT)rHrLrIrQrSrTrW)r!rXrHr]rrrÚlessòs   ÿÿzWhitespace.lesscCsbt| ¡| ¡ƒd}g}td|dƒD]4}| |¡| |¡kr(| || |¡| |¡f¡q(|SrPrZr\rrrÚnot_less_witnesssÿÿþzWhitespace.not_less_witnessN) r'r(r)rErFr"rSrWrYr^r`rarrrrrCˆsrCcCs8dd„|Dƒ}d}t|ƒdkr&|d}|dd |¡S)Ncss|]}t|dƒVqdS)rN)r )Ú.0ÚtuprrrÚ óz#format_witnesses..z at tab sizerÚsrz, )rGr3)ÚwZfirstsÚprefixrrrÚformat_witnessess  ricCstj}tj}tj}tjtjf}tdƒg}d}|D]Ø\}}} } } ||krLd}q0||kr¤d}t|ƒ} |d | ¡s˜|d | ¡} dt | ƒ}t | d|| ƒ‚|  | ¡q0||kr¸d}|d=q0|r0||vr0d}t| ƒ} |d  | ¡s0|d  | ¡} dt | ƒ}t | d|| ƒ‚q0dS)Nrrréÿÿÿÿzindent not greater e.g. zindent not equal e.g. )r5ÚINDENTÚDEDENTÚNEWLINEÚCOMMENTrrCr`rarirr[rYr^)ÚtokensrkrlrmZJUNKÚindentsZ check_equalÚtypeÚtokenÚstartÚendr ZthisguyZwitnessrrrrrs6       rÚ__main__)r*Ú __version__r-r r5ÚhasattrÚ ValueErrorÚ__all__rrrrÚ ExceptionrrrCrirr'rrrrÚs& =7