B ExXÀUò~çã@sxdZdZdZddlZddlZddlZiZded<ed<ded<ed <d ed <d ed <ded<ed<ed<ed<ed<ded<dZGdd„dƒZej ej eeefdd„Z ej ej eeefdd„Z ej ej eeefdd„Z eeefdd„Zeeefd d!„Zeeefd"d#„Zd$d%„Zeeefd&d'„Zeeefd(d)„Zeeefd*d+„Zd,eƒZd-d.„Zd/d0„Zed1krteƒdS)2éFéN)ÚelifÚelseÚendÚifr)rrÚwhileÚfor)ÚexceptÚfinallyÚtry)r rr rr rrr ÚwithÚdefÚclass©)rrrr r r rc@sdeZdZejejeeefdd„Z dd„Z dd„Z dd„Z d d „Z d d „Zd d„Zdd„Zdd„ZdS)ÚPythonIndentercCsT||_||_||_||_d|_||_|j|_t  d¡|_ t  d¡|_ t  d¡|_ dS)NrzC^(?:\s|\\\n)*(?P[a-z]+)((?:\s|\\\n)+(?P[a-zA-Z_]\w*))?[^\w]zE^(?:\s|\\\n)*#?\s*end\s+(?P[a-z]+)(\s+(?P[a-zA-Z_]\w*))?[^\w]z^[ \t]*) ÚfpiÚfpoÚ indentsizeÚtabsizeÚlinenoÚ expandtabsÚwriteÚ_writeÚreÚcompileÚkwprogÚendprogÚwsprog)Úselfrrrrrrrú:/opt/alt/python37/lib64/python3.7/Tools/scripts/pindent.pyÚ__init__dszPythonIndenter.__init__cCs(|jr| | |j¡¡n | |¡dS)N)rrr)rÚlinerrrrxszPythonIndenter.writecCs |j ¡}|r|jd7_|S)Né)rÚreadliner)rr!rrrr#€s zPythonIndenter.readlinecGs4|r ||}tj d|j|f¡| d|¡dS)NzError at line %d: %s z ### %s ### )ÚsysÚstderrrr)rZfmtÚargsrrrÚerror‡szPythonIndenter.errorcCs8| ¡}x*|dd…dkr2| ¡}|s(P||7}q W|S)Néþÿÿÿz\ )r#)rr!Zline2rrrÚgetlineŽs zPythonIndenter.getlinecCsdt||j|jƒ\}}|j |¡ ¡}||d…}|dd…dkrVd|d||}| |¡dS)Nr")Ú ú Úú ú )ÚdivmodrrrÚmatchrr)rr!ÚindentZtabsZspacesÚirrrÚputline™s  zPythonIndenter.putlinecCs4g}xø| ¡}|sP|j |¡}|rnd}| d¡}|sB| d¡n| ¡d|kr\| d¡| |t|ƒ¡q|j |¡}|rê| d¡}|t kr°| |t|ƒ¡|  ||f¡q|t krê|rê| |t|ƒd¡|d\}}||f|d<q| |t|ƒ¡qW|r0| d¡x |D]\}}|  d |¡qWdS) NrÚkwzunexpected endrz unmatched endr"éÿÿÿÿzunterminated keywordsz %s ) r)rr0Úgroupr'Úpopr3ÚlenrÚstartÚappendÚnextr)rÚstackr!Úmr4Zkw2ZkwaZkwbrrrÚreformat£s@          zPythonIndenter.reformatcCs d}d}x`| ¡}|sP|j |¡}|r2|d7}q |j |¡}|r\| d¡}|tkr\|d7}| |¡q W||dkr„tj d¡n||dkrœtj d¡dS)Nrr"r4z5Warning: input contained more end tags than expected z5Warning: input contained less end tags than expected ) r)rr0rr6r9rr$r%)rZ begin_counterZ end_counterr!r=r4rrrÚdeleteÎs(     zPythonIndenter.deletecCsxg}g}d}}}}}xT| ¡}|j |¡ ¡} |j |¡} | rbd} |  d¡} |  d¡}nf|j |¡} | r¢|  d¡} | tkrˆd} | dkrœ|  d¡}qÈd}n&|| | d…dkrÄ| |¡q nd} |d| …} t |   |j ¡ƒ}t |  |j ¡ƒ}xf||krZ|r8|rd||f}nd |}|  ||¡d}}|  ¡\}}}}t |  |j ¡ƒ}qöW||krÚ|rÚ| dkr”| |krŠ| d ¡d}}nF| r¤| tkrÚ|r¸d||f}nd |}|  ||¡d}}}||kr| ||||f¡| r | tkr d} | | | |f\}}}}| r@| tkr<| }}|}n| }x|D]}|  |¡qFWg}|sfP|  |¡q WdS) Nr,rr4Úid)r rr")r*ú#z # end %s %s z # end %s zmismatched end)r)rr0rrr6rr;r:r8rrrr7r'r9)rr<ZtodoZ currentwsZthisidZfirstkwZlastkwZtopidr!r2r=ZthiskwZendkwZindentwsr1ZcurrentÚsÚlrrrÚcompleteês€                   zPythonIndenter.completeN)Ú__name__Ú __module__Ú __qualname__r$ÚstdinÚstdoutÚSTEPSIZEÚTABSIZEÚ EXPANDTABSr rr#r'r)r3r>r?rDrrrrrbs  +rcCst|||||ƒ}| ¡dS)N)rrD)ÚinputÚoutputÚstepsizerrÚpirrrÚcomplete_filterKsrQcCst|||||ƒ}| ¡dS)N)rr?)rMrNrOrrrPrrrÚ delete_filterQsrRcCst|||||ƒ}| ¡dS)N)rr>)rMrNrOrrrPrrrÚreformat_filterWsrScCs2t |¡}t ¡}t|||||ƒ}| ¡| ¡S)N)ÚioÚStringIOrrDÚgetvalue)ÚsourcerOrrrMrNrPrrrÚcomplete_string]s  rXcCs2t |¡}t ¡}t|||||ƒ}| ¡| ¡S)N)rTrUrr?rV)rWrOrrrMrNrPrrrÚ delete_stringes  rYcCs2t |¡}t ¡}t|||||ƒ}| ¡| ¡S)N)rTrUrr>rV)rWrOrrrMrNrPrrrÚreformat_stringms  rZcCsœddl}ddl}|d}|j |¡r\y| |¡Wn(tk rZtd|ftjdYnXy|  ||¡Wn*tk r–td||ftjdYnXdS)Nrú~zCan't remove backup %r)ÚfilezCan't rename %r to %r) ÚosZos.pathÚpathÚlexistsÚremoveÚOSErrorÚprintr$r%Úrename)Úfilenamer]ZbackuprrrÚ make_backupus rec Csdt|dƒ}| ¡}WdQRXt||||ƒ}||kr8dSt|ƒt|dƒ}| |¡WdQRXdS)NÚrrÚwr")ÚopenÚreadrXrer)rdrOrrÚfrWÚresultrrrÚ complete_file†s  rlc Csdt|dƒ}| ¡}WdQRXt||||ƒ}||kr8dSt|ƒt|dƒ}| |¡WdQRXdS)Nrfrrgr")rhrirYrer)rdrOrrrjrWrkrrrÚ delete_file”s  rmc Csdt|dƒ}| ¡}WdQRXt||||ƒ}||kr8dSt|ƒt|dƒ}| |¡WdQRXdS)Nrfrrgr")rhrirZrer)rdrOrrrjrWrkrrrÚ reformat_file¢s  rnaG usage: pindent (-c|-d|-r) [-s stepsize] [-t tabsize] [-e] [file] ... -c : complete a correctly indented program (add #end directives) -d : delete #end directives -r : reformat a completed program (use #end directives) -s stepsize: indentation step (default %(STEPSIZE)d) -t tabsize : the worth in spaces of a tab (default %(TABSIZE)d) -e : expand TABs into spaces (default OFF) [file] ... : files are changed in place, with backups in file~ If no files are specified or a single - is given, the program acts as a filter (reads stdin, writes stdout). cCs:tj d|d|dd¡tj t¡t d¡dS)Nz Error: You can not specify both z and -rz at the same time é)r$r%rÚusageÚexit)Zop1Zop2rrrÚ error_both¿s  rrc Cs¤ddl}y| tjdd…d¡\}}WnJ|jk rp}z*tj d|¡tj t¡t d¡Wdd}~XYnXd}t}t }t }x–|D]Ž\}} |dkr¬|r¦t ||ƒd}qˆ|dkrÈ|rÂt ||ƒd }qˆ|d krä|rÞt ||ƒd }qˆ|d kröt | ƒ}qˆ|d kr t | ƒ}qˆ|dkrˆd}qˆW|sBtj d¡tj t¡t d¡|rT|dgkrvt |dƒ}|tjtj|||ƒn*t |dƒ}x|D]} || |||ƒqˆWdS)Nrr"zcdrs:t:ez Error: %s roz-crDz-dr?z-rr>z-sz-tz-eTz7You must specify -c(omplete), -d(elete) or -r(eformat) ú-Z_filterZ_file)Úgetoptr$Úargvr'r%rrprqrJrKrLrrÚintÚevalrHrI) rtZoptsr&ÚmsgÚactionrOrrÚoÚardrrrÚtestÅsR            r|Ú__main__)rJrKrLrTrr$r;r9rrHrIrQrRrSrXrYrZrerlrmrnÚvarsrprrr|rErrrrÚPsB(j 3