grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026+ º’ÓûɈãó¤€RtRt^RIt^RIt^RIt.ROt^s^sRtRt !RR] 4t Rt !RR 4t R tR tR t]R 8Xd ] !4R#R#)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. Ú6NÚNannyNagcóè€RpVF4p\PPV\V4,4RpK6 \PPR4\P!^4R#)ÚÚ Ú N)ÚsysÚstderrÚwriteÚstrÚexit)ÚargsÚsepÚargs* Ú//opt/alt/python314/lib64/python3.14/tabnanny.pyÚerrprintrsO€Ø €CÛˆÜ � ‰ ×јœs 3›x�Ô(ØŠñô‡J�J×Ñ�TÔ܇H‚HˆQ†Kócóš€^RIpVP\PR,R4wrXF/wrEVR8Xd\ ^,sVR8XgK"\ ^,sK1 X'g#\ R\P^,R4VFp\V4K R# TPdp\ T4Rp?L–Rp?ii;i)éN:éNNÚqvz-qz-vzUsage:z[-v] file_or_directory ...)ÚgetoptrÚargvÚerrorrÚ filename_onlyÚverboseÚcheck)rÚoptsr ÚmsgÚoÚars rÚmainr!&s�€ÛðØ—]‘]¤3§8¡8¨B¥<°Ó6‰ ˆó‰ˆØ �Œ9Ü)¨AÕ-ˆMØ �Ž9Ü •kŠGñ ÷ Ü�œ3Ÿ8™8 A�;Ð(DÔEÛˆÜ ˆcŽ óøð �<‰<ôÜ�� ‰ ûðús†)B$Â$C Â5 CÃC có<a€]tRt^8toRtRtRtRtRtRt Vt R#)rz_ Raised by process_tokens() if detecting an ambiguous indent. Captured and handled in check(). có0€WVuVnVnVnR#©N)ÚlinenorÚline)Úselfr%rr&s&&&&rÚ__init__ÚNannyNag.__init__=s€Ø+1¸Ð(ˆŒ �T”X˜tžyrcó€VP#r$)r%©r's&rÚ get_linenoÚNannyNag.get_lineno?s €Ø�{‰{Ðrcó€VP#r$)rr+s&rÚget_msgÚNannyNag.get_msgAs €Ø�x‰xˆrcó€VP#r$)r&r+s&rÚget_lineÚNannyNag.get_lineCs €Ø�y‰yÐr)r&r%rN) Ú__name__Ú __module__Ú __qualname__Ú__firstlineno__Ú__doc__r(r,r/r2Ú__static_attributes__Ú__classdictcell__©Ú __classdict__s@rrr8s#ø‡€ñò=òò÷ðrcóæ€\PPV4'dÿ\PPV4'gÚ\'d\ V: R24\P !V4pVF p\PPW4p\PPV4'd&\PPV4'd*\PPVRR4R8XgK•\V4K¢ R#\P!V4p\^8”d\ RT,4\\P!TP 44TP%4\'d\ T: R 24R#R# \dp\T: RT: 24Rp?R#Rp?ii;i \P"d.p\T: RT: 24Rp?TP%4R#Rp?i\&d.p\T: RT: 24Rp?TP%4R#Rp?i\(d.p\T: RT: 24Rp?TP%4R#Rp?i\*dÈpTP-4pTP/4p\'d=\ R Y3,4\ R T: 24\ TP144MDR T9dR T,R ,p\2'd \ T4M\ Y\5T44Rp?TP%4R#Rp?ii;i TP%4i;i)afcheck(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: listing directoryNz.pyz : I/O Error: zchecking %r ...z: Token Error: z: Indentation Error: z: Syntax Error: z)%r: *** Line %d: trouble in tab city! ***zoffending line: rÚ"z: Clean bill of health.éýÿÿÿ)ÚosÚpathÚisdirÚislinkrÚprintÚlistdirÚjoinÚnormcaserÚtokenizeÚopenÚOSErrorrÚprocess_tokensÚgenerate_tokensÚreadlineÚ TokenErrorÚcloseÚIndentationErrorÚ SyntaxErrorrr,r2r/rÚrepr) ÚfileÚnamesÚnameÚfullnameÚfrÚnagÚbadliner&s & rrrFsP€ô ‡w�w‡}�}�T×Ò¤2§7¡7§>¡>°$×#7Ò#7ß ‹7Ü «TÐ3Ô 4Ü— ’ ˜4Ó ˆÛˆDÜ—w‘w—|‘| DÓ/ˆHÜ—‘— ‘ ˜h×'Ò'Ü—G‘G—N‘N 8×,Ò,Ü—‘× Ñ   b c Ó+¨uÖ4Ü�h–ñ ñ ðÜ �MŠM˜$Ó ˆô �„{Ü Ð $Õ&Ô'ðÜ”x×/Ò/°· ± Ó;Õ<ð8 �‰Œ çƒwÜ «TÐ3Ö4ñøôM ôÜ«ªcÐ2Ô3Ýûðûô × Ñ ôÜ«$²Ð4Ô5Ûð0 �‰Ž ûô- ôܳ²cÐ:Ô;Ûð( �‰Ž ûô% ôÜ«4²Ð5Ô6Ûð �‰Ž ûô ô Ø—.‘.Ó"ˆØ�|‰|‹~ˆß ‹7Ü Ð=ÀÀÕOÔ PÝ ª$Ð0Ô 1Ü �#—+‘+“-Õ à�dŒ{ 3¨¥:°Õ#3˜Dß‹}œe D�kܘ¤t¨D£zÔ2Ûð �‰Ž ûð ûð �‰� ús‘Ä%F2Å)GÆ2 GÆ=GÇGÇMÇ2HÈMÈ MÈ'MÈ(IÈ:MÉ MÉMÉJÉ0MÊ MÊMÊB MÌ!MÍMÍMÍMÍM0cóTa€]tRt^‡toRwttRtRtRtRt Rt Rt Rt R t VtR #) Ú Whitespacez cóä€Wn\P\Pr2.p^;p;rgVPF‚pW‚8XdV^,pV^,pKWƒ8Xd`V^,pV^,pV\ V48¼d)V^.V\ V4, ^,,,pWE,^,WE&^pK‚M W`nWpn\V4V3Vn\ V4^8*Vn R#©rN) Úrawr[ÚSÚTÚlenÚnÚntÚtupleÚnormÚ is_simple) r'Úwsr_r`ÚcountÚbrbrcÚchs && rr(ÚWhitespace.__init__žsʀ،Ü�|‰|œZŸ\™\ˆ1؈؈ˆˆˆAØ—(”(ˆBØŒwؘ•E�ؘ•E’ؘؔ•E�ؘ!•V�Øœ˜E› ”?Ø! Q C¨1¬s°5«z­>¸AÕ+=Õ$>Õ>�EØ �8 a�<�‘Ø’áñðŒØŒÜ˜%“L !�OˆŒ ܘU› q™ˆŽrcóV€VPwr\\V4^, V4#©r)reÚmaxra)r'rhÚtrailings& rÚlongest_run_of_spacesÚ Whitespace.longest_run_of_spaces·s"€ØŸ)™)‰ˆÜ”3�u“:˜a•< Ó*Ð*rcóЀVPwr#^p\V\V44FpWEV,W%,,,pK! W1W@P,,,#)r)reÚrangerarc)r'ÚtabsizerhroÚilÚis&& rÚ indent_levelÚWhitespace.indent_level»sP€ðŸ)™)‰ˆØ ˆÜ�w¤ E£ Ö+ˆAؘ•j 5¥8Õ+Õ+ŠBñ,à R¯'©'¥\Õ2Õ2Ð2rcó4€VPVP8H#r$)re)r'Úothers&&rÚequalÚWhitespace.equalÒs€Ø�y‰y˜EŸJ™JÑ&Ð&rcóN€\VP4VP44^,p.p\^V^,4F\pVPV4VPV48wgK*VP VVPV4VPV434K^ V#rm©rnrprsrwÚappend©r'rzrbr Útss&& rÚnot_equal_witnessÚWhitespace.not_equal_witnessÙó˜€Ü �×*Ñ*Ó,Ø×+Ñ+Ó-ó /Ø12õ 3ˆà ˆÜ˜˜1˜Q�3–-ˆBØ× Ñ  Ó$¨×(:Ñ(:¸2Ó(>Ö>Ø—‘˜2Ø×,Ñ,¨RÓ0Ø ×-Ñ-¨bÓ1ð3ö5ñ ð ˆrcóœ€VPVP8¼dR#VP'd,VP'dVPVP8*#\VP 4VP 44^,p\ ^V^,4F+pVP V4VP V48¼gK*R# R#)FT)rbrfrcrnrprsrw)r'rzrbr�s&& rÚlessÚWhitespace.lessñsž€Ø �6‰6�U—W‘WÔ ÙØ �>�>ˆ>˜eŸoŸo˜oØ—7‘7˜eŸh™hÑ&Ð &Ü �×*Ñ*Ó,Ø×+Ñ+Ó-ó /Ø12õ 3ˆô˜˜1˜Q�3–-ˆBØ× Ñ  Ó$¨×(:Ñ(:¸2Ó(>Ö>Úñ ñrcóN€\VP4VP44^,p.p\^V^,4F\pVPV4VPV48¼gK*VP VVPV4VPV434K^ V#rmr~r€s&& rÚnot_less_witnessÚWhitespace.not_less_witnessr„r)rfrbrercr^N)r4r5r6r7r_r`r(rprwr{r‚r†r‰r9r:r;s@rr[r[‡s6ø‡€à �D€A€qò*)ò2+ò3ò.'ò ò0 ÷" ð rr[cóˆ€RV4pRp\V4^8”d VR,pVR,RPV4,#)c3óF"€TFp\V^,4x€K R#5ir])r )Ú.0Útups& rÚ Ú#format_witnesses..sé€Ð '¡Q˜cŒc�#�a•&�kˆk£Qùs‚!z at tab sizeÚsrz, )rarF)ÚwÚfirstsÚprefixs& rÚformat_witnessesr• s=€Ù '¡QÓ '€FØ €FÜ ˆ1ƒv�„zؘ#•ˆØ �C�<˜$Ÿ)™) FÓ+Õ +Ð+rcóš€\V4R# \d1p\TPTPTP 4hRp?ii;ir$)Ú_process_tokensÚTabErrorrr%rÚtext)ÚtokensÚes& rrKrKs:€ð0Ü˜ÖøÜ ô0Ü�q—x‘x §¡¨¯©Ó/Ð/ûð0ús‚ � A š+AÁA có€\Pp\Pp\Pp\P\P 3p\ R4.p^pVEFwrxršp Ws8Xd^pKWq8Xd|^p\ V4p VR,PV 4'g>VR,PV 4p R\V 4,p\V ^,Wë4hVPV 4K“Wr8Xd^pVRK V'gKªWt9gK²^p\ V 4p VR,PV 4'dKßVR,PV 4p R\V 4,p\V ^,Wë4h R#)rzindent not greater e.g. zindent not equal e.g. Néÿÿÿÿ)rHÚINDENTÚDEDENTÚNEWLINEÚCOMMENTÚNLr[r†r‰r•rrr{r‚)ršržrŸr ÚJUNKÚindentsÚ check_equalÚtypeÚtokenÚstartÚendr&ÚthisguyÚwitnessrs& rr—r—sD€Ü �_‰_€FÜ �_‰_€FÜ×Ñ€GÜ × Ñ œXŸ[™[Ð (€Dܘ"‹~ЀGØ€Kä+1Ñ'ˆ�e $Ø Œ?ð ŠKà Œ^؈KÜ  Ó'ˆGؘ2•;×#Ñ# G×,Ò,Ø! "�+×6Ñ6°wÓ?�Ø0Ô3CÀGÓ3LÕL�ܘu Q�x¨Ó3Ð3Ø �N‰N˜7Ö #à Œ^ðˆKà˜’ ç ‰[˜TÖ-ðˆKÜ  Ó&ˆGؘ2•;×$Ñ$ W×-Ô-Ø! "�+×7Ñ7¸Ó@�Ø.Ô1AÀ'Ó1JÕJ�ܘu Q�x¨Ó3Ð3óY,2rÚ__main__)rrrK)r8Ú __version__r@rrHÚ__all__rrrr!Ú Exceptionrrr[r•rKr—r4©rrÚr±svðñ ð$€ ã Û Ûâ 1€à €Ø€ òòô$ ˆyô ò?5÷BDñDòL,ò0ò 44ðn ˆzÔÙ†Fñr