/opt/cloudlinux/venv/lib/python3.11/site-packages/__pycache__
NameSizeModeActions
clcontrollib.cpython-311.opt-1.pyc732640644editdlrm
clcontrollib.cpython-311.pyc732640644editdlrm
cldetectlib.cpython-311.opt-1.pyc245840644editdlrm
cldetectlib.cpython-311.pyc245840644editdlrm
cldiaglib.cpython-311.opt-1.pyc676420644editdlrm
cldiaglib.cpython-311.pyc676420644editdlrm
cli_utils.cpython-311.opt-1.pyc21610644editdlrm
cli_utils.cpython-311.pyc21610644editdlrm
cllicenselib.cpython-311.opt-1.pyc161930644editdlrm
cllicenselib.cpython-311.pyc161930644editdlrm
clsetuplib.cpython-311.opt-1.pyc69740644editdlrm
clsetuplib.cpython-311.pyc69740644editdlrm
clsudo.cpython-311.opt-1.pyc270110644editdlrm
clsudo.cpython-311.pyc270110644editdlrm
cl_proc_hidepid.cpython-311.opt-1.pyc61170644editdlrm
cl_proc_hidepid.cpython-311.pyc61170644editdlrm
configparser.cpython-311.pyc16510644editdlrm
ddt.cpython-311.pyc153380644editdlrm
docopt.cpython-311.pyc379350644editdlrm
getcontrolpanel.cpython-311.opt-1.pyc10220644editdlrm
getcontrolpanel.cpython-311.pyc10220644editdlrm
lveapi.cpython-311.opt-1.pyc269850644editdlrm
lveapi.cpython-311.pyc269850644editdlrm
lvectllib.cpython-311.opt-1.pyc1620120644editdlrm
lvectllib.cpython-311.pyc1620120644editdlrm
lvestat.cpython-311.opt-1.pyc71390644editdlrm
lvestat.cpython-311.pyc71390644editdlrm
mccabe.cpython-311.pyc205640644editdlrm
migration_ve1_to_v2.cpython-311.opt-1.pyc32310644editdlrm
migration_ve1_to_v2.cpython-311.pyc32310644editdlrm
pam.cpython-311.pyc101330644editdlrm
pep8ext_naming.cpython-311.pyc288400644editdlrm
py.cpython-311.pyc4520644editdlrm
pycodestyle.cpython-311.pyc1213910644editdlrm
remount_proc.cpython-311.opt-1.pyc7730644editdlrm
remount_proc.cpython-311.pyc7730644editdlrm
remove_ubc.cpython-311.opt-1.pyc103620644editdlrm
remove_ubc.cpython-311.pyc103620644editdlrm
schema.cpython-311.pyc442030644editdlrm
secureio.cpython-311.opt-1.pyc280750644editdlrm
secureio.cpython-311.pyc280750644editdlrm
six.cpython-311.pyc464220644editdlrm
typing_extensions.cpython-311.pyc1315440644editdlrm
_pyrsistent_version.cpython-311.pyc2310644editdlrm
Edit: /opt/cloudlinux/venv/lib/python3.11/site-packages/__pycache__/pycodestyle.cpython-311.pyc (121391B)
§ �‡¨¹õ޾ãóh —dZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl m Z ddl m Z ddl mZ ddlmZddlmZn#e$r ddlmZYnwxYwejdkr3eeed d¦«¦«re ¦«ej¦«e_d Zd Zd Z ejd krej d¦«ZnCej  ej!d¦«pej d¦«d¦«Zn #e$rdZYnwxYwdZ"ej  ej #e$¦«d¦«Z%dZ&dddœZ'dZ(dZ)dddœZ*dZ+e,gd¢¦«Z-e,ej.dd gz¦«e-z Z/e,gd!¢¦«Z0e,gd"¢¦«Z1e1 2gd#¢¦«Z3ejd$krd%gngZ4e,gd&¢e4z¦«Z5e,d'¦«Z6e,ej7ej8g¦«Z8e8 2ej9ej:g¦«Z;e; 2ej<ej=g¦«Z>gd(¢Z?ej@d)¦«ZAej@d*¦«ZBej@d+¦«ZCej@d,¦«ZDej@d-¦«ZEej@d.¦«ZFej@d/¦«ZGej@d0¦«ZHej@d1¦«ZIej@d2¦«ZJej@d3d4  e/¦«z¦«ZKej@d5¦«ZLej@d6¦«ZMej@d7¦«ZNej@d8¦«ZOej@d9¦«ZPej@d: Qd4  d;„d¦«ZTiiid?œZUd@„ZVdŒdA„ZWeWdB„¦«ZXeWdC„¦«ZYeWdD„¦«ZZeWdE„¦«Z[eWdF„¦«Z\dG„Z]eWdH„¦«Z^eWdI„¦«Z_eWdJ„¦«Z`eWdK„¦«ZaeWdL„¦«ZbeWdM„¦«ZceWdN„¦«ZdeWdO„¦«ZeeWdP„¦«ZfeWdQ„¦«ZgeWdR„¦«ZheWdS„¦«ZieWdT„¦«ZjeWdU„¦«ZkeWdV„¦«ZleWdW„¦«ZmeWdX„¦«Zne,dY¦«e,dZ¦«zZod[„Zpd\„ZqeWd]„¦«ZreWd^„¦«ZseWd_„¦«ZteWd`„¦«ZueWda„¦«ZveWdb„¦«ZweWdc„¦«ZxeWdd„¦«ZyeWde„¦«ZzeWdf„¦«Z{eWdg„¦«Z|eWdh„¦«Z}eWdi„¦«Z~eWdj„¦«Zdk„Z€dl„Z�e dm¦«ej@dnej‚¦«jƒ¦«Z„do„Z…dp„Z†d�dr„Z‡ejˆfds„Z‰dŽdu„ZŠdv„Z‹dw„ZŒGdx„dy¦«Z�Gdz„d{¦«ZŽGd|„d}eަ«Z�Gd~„deަ«Z�Gd€„d�e�¦«Z‘Gd‚„dƒ¦«Z’defd„„Z“d…„Z” d�d‡„Z•d�d‰„Z–dŠ„Z—e˜d‹kr e—¦«dSdS)‘aŒ Check Python source code formatting, according to PEP 8. For usage and a list of options, try this: $ python pycodestyle.py -h This program and its regression test suite live here: https://github.com/pycqa/pycodestyle Groups of errors and warnings: E errors W warnings 100 indentation 200 whitespace 300 blank lines 400 imports 500 line length 600 deprecation 700 statements 900 syntax error éN©Úfnmatch)Ú lru_cache)Ú OptionParser)ÚRawConfigParser)Ú TextIOWrapper)éé Ú_compilez2.9.1z'.svn,CVS,.bzr,.hg,.git,__pycache__,.toxz&E121,E123,E126,E226,E24,E704,W503,W504Úwin32z~\.pycodestyleÚXDG_CONFIG_HOMEz ~/.configÚ pycodestyle)z setup.cfgztox.iniÚ testsuiteéOéé)Ú top_levelÚmethodéHéz+%(path)s:%(row)d:%(col)d: %(code)s %(text)sz%%(path)s:%(row)d: [%(code)s] %(text)s)ÚdefaultÚpylinti)ÚFalseÚNoneÚTrueÚprintÚasync)ú>>ú**Ú*ú+ú-)rr ú/z//r!r"ú@)ú^ú&ú|z<ú<ú>z%=z^=z&=z|=ú==z<=z>=z<<=z>>=ú=ÚandÚinÚisÚorz->u  )Ú directoriesÚfilesú logical linesúphysical linesz([ \t]*)zraise\s+\w+\s*,zraise\s+\w+\s*,.*,\s*\w+\s*$z\b[A-Z]\d{3}\bz u?r?["\']z[\[({][ \t]|[ \t][\]}),;:](?!=)z[,;:]\s*(?: |\t)z?(\bNone|\bFalse|\bTrue)?\s*([=!]=)\s*(?(1)|(None|False|True))\bz*\b(?%&^]+|:=)(\s*)z \blambda\bz*^@@ -\d+(?:,\d+)? \+(\d+)(?:,(\d+))? @@.*$z^(async\s+def|def)\bz#^(async\s+def\s+|def\s+|class\s+|@)z ^\s*({})\bc#óBK—|]}| dd¦«V—ŒdS)ú z\s+N)Úreplace)Ú.0Úss ú]/builddir/build/BUILD/cloudlinux-venv-1.0.12/venv/lib/python3.11/site-packages/pycodestyle.pyú r>’s@èè€ð"ð"¸Q !§)¢)¨C°Ñ"8Ô"8ð"ð"ð"ð"ð"ð"ó)Údefz async defÚforz async forÚifÚelifÚelseÚtryÚexceptÚfinallyÚwithz async withÚclassÚwhilez-^__([^\s]+)__(?::\s*[a-zA-Z.0-9_\[\]\"]+)? = z except\s*:)Ú physical_lineÚ logical_lineÚtreecól—d„tj|¦«j ¦«D¦«S)Ncó<—g|]}|j|jk¯|j‘ŒS©)ÚkindÚPOSITIONAL_OR_KEYWORDÚname)r;Ú parameters r=ú z#_get_parameters..£s:€ð Bð Bð BØàŒ~ Ô!@Ò@Ð@ð ŒNðAÐ@Ð@r?)ÚinspectÚ signatureÚ parametersÚvalues)Úfunctions r=Ú_get_parametersr[¢sC€ð Bð BåÔ  Ñ*Ô*Ô5×<Ò<Ñ>Ô>ð Bñ Bô BðBr?cób—d„}tj|¦«rSt|¦«}|rA|ddvr7|€!t |jpd¦«}|||d||¦«nDtj|¦«r0t|j¦«dd…ddgkr||d|d¦«|S) zRegister a new check object.có®—|t|vr0t||d |pg¦«dS|pdg|ft||<dS)NrÚ)Ú_checksÚextend)ÚcheckrQÚcodesÚargss r=Ú _add_checkz"register_check.._add_check«s\€Ø •G˜D”MÐ !Ð !Ý �DŒM˜%Ô  Ô #× *Ò *¨5¨;°BÑ 7Ô 7Ð 7Ð 7Ð 7à$) M¨b¨T°4Ð#8�G�DŒM˜%Ñ Ð Ð r?r)rKrLNr^rÚselfrM)rVÚ isfunctionr[ÚERRORCODE_REGEXÚfindallÚ__doc__ÚisclassÚ__init__)rarbrdrcs r=Úregister_checkrl©sÔ€ð9ð9ð9õ Ô˜%Ñ Ô ð3ݘuÑ%Ô%ˆØ ð 4�D˜”GÐ@Ð@Ð@؈}Ý'×/Ò/°´ Ð0CÀÑDÔD�Ø ˆJ�u˜d 1œg u¨dÑ 3Ô 3Ð 3øÝ Œ˜Ñ Ô ð3Ý ˜5œ>Ñ *Ô *¨2¨A¨2Ô .°6¸6Ð2BÒ BÐ BØ ˆJ�u˜f e¨TÑ 2Ô 2Ð 2Ø €Lr?có¢—t |¦« d¦«}t|¦«D]\}}||kr|dfcSŒdS)aDNever mix tabs and spaces. The most popular way of indenting Python is with spaces only. The second-most popular way is with tabs only. Code indented with a mixture of tabs and spaces should be converted to using spaces exclusively. When invoking the Python command line interpreter with the -t option, it issues warnings about code that illegally mixes tabs and spaces. When using -tt these warnings become errors. These options are highly recommended! Okay: if a == 0:\n a = 1\n b = 1 E101: if a == 0:\n a = 1\n\tb = 1 rz/E101 indentation contains mixed spaces and tabsN)Ú INDENT_REGEXÚmatchÚgroupÚ enumerate)rKÚ indent_charÚindentÚoffsetÚchars r=Útabs_or_spacesrvÀsp€õ× Ò   Ñ .Ô .× 4Ò 4°QÑ 7Ô 7€FÝ! &Ñ)Ô)ðMðM‰ ˆ�Ø �;Ò Ð ØÐLÐLÐ LÐ LÐ Lð ðMðMr?có–—t |¦« d¦«}d|vr| d¦«dfSdS)z‚On new projects, spaces-only are strongly recommended over tabs. Okay: if True:\n return W191: if True:\n\treturn rú zW191 indentation contains tabsN)rnrorpÚindex)rKrss r=Ú tabs_obsoleterzÕsM€õ× Ò   Ñ .Ô .× 4Ò 4°QÑ 7Ô 7€FØ ˆv€~€~Ø�|Š|˜DÑ!Ô!Ð#CÐCÐCð€~r?cóä—| d¦«}| d¦«}| d¦«}| d¦«}||kr|rt|¦«dfSdSdS)aTrailing whitespace is superfluous. The warning returned varies on whether the line itself is blank, for easier filtering for those who want to indent their blank lines. Okay: spam(1)\n# W291: spam(1) \n# W293: class Foo(object):\n \n bang = 12 ú ú ú z zW291 trailing whitespace)rz#W293 blank line contains whitespaceN©ÚrstripÚlen)rKÚstrippeds r=Útrailing_whitespacerƒásƒ€ð"×(Ò(¨Ñ.Ô.€MØ!×(Ò(¨Ñ.Ô.€MØ!×(Ò(¨Ñ0Ô0€MØ×#Ò# GÑ,Ô,€HØ˜Ò Ð Ø ð <Ý�x‘=”=Ð"<Ð<Ð <à;Ð;ð !Ð r?có†—||kr8| d¦«}|r|sdS||krt|d¦«dfSdSdS)z—Trailing blank lines are superfluous. Okay: spam(1) W391: spam(1)\n However the last line should end with a new line (warning W292). ú )rzW391 blank line at end of fileéÿÿÿÿzW292 no newline at end of fileNr)rKÚlinesÚ line_numberÚ total_linesÚstripped_last_lines r=Útrailing_blank_linesr‹÷sj€ð�kÒ!Ð!Ø*×1Ò1°&Ñ9Ô9ÐØ ð 7Ð!3ð 7Ø6Ð6Ø  Ò .Ð .Ý�u˜R”y‘>”>Ð#CÐCÐ Cð "Ð!ð /Ð .r?có¨—| ¦«}t|¦«}||kr¤|s¤|dkr| d¦«rdS| ¦«}t|¦«dkr|st|¦«dkr:|ddkr.t|¦«t|d¦«z |dz krdS||kr |d ||fzfSdSdSdS) aôLimit all lines to a maximum of 79 characters. There are still many devices around that are limited to 80 character lines; plus, limiting windows to 80 characters makes it possible to have several windows side-by-side. The default wrapping on such devices looks ugly. Therefore, please limit all lines to a maximum of 79 characters. For flowing long blocks of text (docstrings or comments), limiting the length to 72 characters is recommended. Reports error E501. rú#!Nrrú#r†éz'E501 line too long (%d > %d characters))r€r�Ú startswithÚsplit)rKÚmax_line_lengthÚ multilinerˆÚnoqaÚlineÚlengthÚchunkss r=Úmaximum_line_lengthr˜s€ð × Ò Ñ !Ô !€DÝ �‰YŒY€FØ �ÒШÐà ˜!Ò Ð  §¢°Ñ 5Ô 5Ð Ø ˆFð—’‘”ˆÝ �‰[Œ[˜AÒ Ð  )Ð Ý �‰[Œ[˜AÒ Ð  &¨¤)¨sÒ"2Ð"2Ý�D‘ ” �C  r¤ ™OœOÑ+¨oÀÑ.AÒAÐAØ ˆFØ �OÒ #Ð #Ø#ð&+Ø.4°oÐ-Fñ&GðHð Hð ÐÐÐð $Ð #r?cóP—t |¦«sdS|dz }|dkrd}nt||dz ¦«}||krdS|t|¦«krb|| ¦«}| d¦«st |¦«rn|dz }|t|¦«k°bdS|dz}|t|¦«kr3|| ¦«rn|dz }|t|¦«k°3dSt||¦«|kS)NFrrr$T)ÚSTARTSWITH_TOP_LEVEL_REGEXroÚ expand_indentr�Ústripr�)rLÚ indent_levelr‡rˆÚline_idxÚ prev_indentr•Únext_idxs r=Ú _is_one_linerr¡.sA€Ý %× +Ò +¨LÑ 9Ô 9ð؈uà˜Q‰€Hà�!‚|€|؈ ˆ å# E¨(°Q©,Ô$7Ñ8Ô8ˆ à�\Ò!Ð!؈uà •S˜‘Z”ZÒ Ð Ø�XŒ×$Ò$Ñ&Ô&ˆØ�Š˜sÑ#Ô#ð Õ(B×(HÒ(HÈÑ(NÔ(Nð Ø à ˜‰MˆHð •S˜‘Z”ZÒ Ð ðˆuà˜!‰|€HØ •S˜‘Z”ZÒ Ð Ø �Œ?× Ò Ñ "Ô "ð Ø à ˜‰MˆHð •S˜‘Z”ZÒ Ð ð ˆtå ˜˜xœÑ )Ô )¨\Ò 9Ð9r?c #ópK—td} td} |s|| krdS| d¦«r |rdV—dSdS|| ks |r|| dzkr dd|zfV—dSt |¦«�rt ||||¦«r|dkrdS|rÖ|| ksÊ||ksÆt  |¦«s®|} d } ||| z dd …D]n} |  ¦«rXt| ¦«| krEt| ¦«} t |   ¦«¦«} | s| dkrnŒo| r dd | ›d �fV—dSdd   | ¦«fV—dSdSdSdS|| kr dd| |fzfV—dSdS|r*|s*|| kr&| d¦«rdd| |fzfV—dSdSdSdSdS)aOSeparate top-level function and class definitions with two blank lines. Method definitions inside a class are separated by a single blank line. Extra blank lines may be used (sparingly) to separate groups of related functions. Blank lines may be omitted between a bunch of related one-liners (e.g. a set of dummy implementations). Use blank lines in functions, sparingly, to indicate logical sections. Okay: def a():\n pass\n\n\ndef b():\n pass Okay: def a():\n pass\n\n\nasync def b():\n pass Okay: def a():\n pass\n\n\n# Foo\n# Bar\n\ndef b():\n pass Okay: default = 1\nfoo = 1 Okay: classify = 1\nfoo = 1 E301: class Foo:\n b = 0\n def bar():\n pass E302: def a():\n pass\n\ndef b(n):\n pass E302: def a():\n pass\n\nasync def b(n):\n pass E303: def a():\n pass\n\n\n\ndef b(n):\n pass E303: def a():\n\n\n\n pass E304: @decorator\n\ndef a():\n pass E305: def a():\n pass\na() E306: def a():\n def b():\n pass\n def c():\n pass rrNr$)rz/E304 blank lines found after function decoratorrrzE303 too many blank lines (%d)Fr†zE306 expected z/ blank line before a nested definition, found 0z$E301 expected {} blank line, found 0z&E302 expected %s blank lines, found %d)zdef zclass zIE305 expected %s blank lines after class or function definition, found %d) ÚBLANK_LINES_CONFIGr�ršror¡ÚDOCSTRING_REGEXrœr›ÚSTARTSWITH_DEF_REGEXÚlstripÚformat)rLÚ blank_linesr�rˆÚ blank_beforeÚprevious_logicalÚ previous_unindented_logical_lineÚprevious_indent_levelr‡Útop_level_linesÚ method_linesÚancestor_levelÚnestedr•s r=r¨r¨Qsèè€õB)¨Ô5€OÝ% hÔ/€Là ð  ¨Ò >Ð >؈Ø×"Ò" 3Ñ'Ô'ð-/Ø ð GØFÐ FÐ FÐ FÐ FÐ Fð Gð Gà ˜Ò 'Ð 'Ø ð (Ø)¨\¸AÑ-=Ò=Ð=àÐ1°KÑ?Ð?Ð?Ð?Ð?Ð?Ð?Ý #× )Ò )¨,Ñ 7Ô 7ñ&/õ ˜,¨ °e¸[Ñ IÔ Ið à ˜AÒ Ð à ˆFØ ð /Ø  LÒ0Ð0Ø)¨LÒ8Ð8Ý#×)Ò)Ð*:Ñ;Ô;ð9ð".�Ø�ð" +°Ñ"?Ð"CÀÐ"CÔDð"ð"�DØ—z’z‘|”|ð"­ °dÑ(;Ô(;¸nÒ(LÐ(LÝ)6°tÑ)<Ô)<˜Ý!5×!;Ò!;¸D¿KºK¹M¼MÑ!JÔ!J˜Ø!ð" ^°qÒ%8Ð%8Ø!˜EøØð&ؘ!Ø8D¸ ¸ ðGðGðGðGðGðGðGðÐC×JÒJØ$ñ&ô&ð&ð&ð&ð&ð&ð&ð%1Ð0Ø8Ð8Ð8Ð8ð&˜_Ò ,Ð ,ØÐ=Ø ðA/ñ/ð/ð /ð /ð /ð /ð /ð-Ð ,ð ð/Øð/à ˜OÒ +Ð +Ø ,× 7Ò 7Ð8JÑ KÔ Kð ,ðð5à ð8/ñ/ð/ð /ð /ð /ð /ð /ð /ð/ð/ð/à +Ð +Ð +Ð +r?c#óTK—|}t |¦«D]ˆ}| ¦«}| ¦«}| ¦«}|d ¦«r |dzd|zfV—Œe||dz dkr|dvrdnd}||›d|›d �fV—Œ‰d S) aHAvoid extraneous whitespace. Avoid extraneous whitespace in these situations: - Immediately inside parentheses, brackets or braces. - Immediately before a comma, semicolon, or colon. Okay: spam(ham[1], {eggs: 2}) E201: spam( ham[1], {eggs: 2}) E201: spam(ham[ 1], {eggs: 2}) E201: spam(ham[1], { eggs: 2}) E202: spam(ham[1], {eggs: 2} ) E202: spam(ham[1 ], {eggs: 2}) E202: spam(ham[1], {eggs: 2 }) E203: if x == 4: print x, y; x, y = y , x E203: if x == 4: print x, y ; x, y = y, x E203: if x == 4 : print x, y; x, y = y, x r†rzE201 whitespace after '%s'ú,ú}])ÚE202ÚE203z whitespace before 'ú'N)ÚEXTRANEOUS_WHITESPACE_REGEXÚfinditerrprœÚstartÚisspace)rLr•roÚtextruÚfoundÚcodes r=Úextraneous_whitespacer¾§sØèè€ð( €DÝ,×5Ò5°dÑ;Ô;ð >ð >ˆØ�{Š{‰}Œ}ˆØ�zŠz‰|Œ|ˆØ— ’ ‘ ” ˆØ �Œ8× Ò Ñ Ô ð >à˜!‘)Ð9¸DÑ@Ð@Ð @Ð @Ð @Ð @Ø �%˜!‘)Œ_ Ò #Ð #Ø" e˜m˜m�F�F°ˆDؘDÐ=Ð=°dÐ=Ð=Ð=Ð=Ð =Ð =Ð =øð >ð >r?c#óšK—t |¦«D]­}| ¦«\}}d|vr| d¦«dfV—n,t |¦«dkr| d¦«dfV—d|vr| d¦«dfV—Œ�t |¦«dkr| d¦«dfV—Œ®dS) z³Avoid extraneous whitespace around keywords. Okay: True and False E271: True and False E272: True and False E273: True and\tFalse E274: True\tand False rxrzE274 tab before keywordz#E272 multiple spaces before keywordrzE273 tab after keywordz"E271 multiple spaces after keywordN)Ú KEYWORD_REGEXr¸Úgroupsr¹r�©rLroÚbeforeÚafters r=Úwhitespace_around_keywordsrÅÈsëèè€õ×'Ò'¨ Ñ5Ô5ð Gð GˆØŸ š ™œ‰ ˆ�à �6ˆ>ˆ>Ø—+’+˜a‘.”.Ð";Ð;Ð ;Ð ;Ð ;Ð ;Ý �‰[Œ[˜1Š_ˆ_Ø—+’+˜a‘.”.Ð"GÐGÐ GÐ GÐ Gà �5ˆ=ˆ=Ø—+’+˜a‘.”.Ð":Ð:Ð :Ð :Ð :Ð :Ý �‰ZŒZ˜!Š^ˆ^Ø—+’+˜a‘.”.Ð"FÐFÐ FÐ FÐ Føð Gð Gr?c#óFK—t||dd…¦«D]…\}}|j|jkrptj|j¦«rW|jt vrI|jdvr@|jdkr |jdks*|jdkr |jdks|jdvr |jd fV—Œ†dS) zÂKeywords should be followed by whitespace. Okay: from foo import (bar, baz) E275: from foo import(bar, baz) E275: from importable.module import(bar, baz) E275: if(foo): bar rN©rÚawaitrFr Úyieldú)z: z%E275 missing whitespace after keyword)ÚzipÚendr¹ÚkeywordÚ iskeywordÚstringÚ SINGLETONS)rLÚtokensÚtok0Útok1s r=Ú missing_whitespace_after_keywordrÔàsÐèè€õ˜& &¨¨¨¤*Ñ-Ô-ð Dð D‰ ˆˆdð ŒH˜œ Ò "Ð "ÝÔ! $¤+Ñ.Ô.ð #à” ¥:Ð-Ð-Ø” Ð#5Ð5Ð5Ø”[ HÒ,Ð,°´ÀÒ1CÐ1CØ”[ GÒ+Ð+°´ ¸sÒ0BÐ0BØ”  5Ð(Ð(Ø”(ÐCÐCÐ CÐ CÐ Cøð Dð Dr?c#óÊK—|}tt|¦«dz ¦«D]¾}||}||dz}|dvr¥|tvrœ|d|…}|dkrY| d¦«| d¦«kr-| d¦«| d¦«krŒ‹|dkr|d krŒ˜|dkr|d krt jd krŒµ|d |zfV—Œ¿dS) zëEach comma, semicolon or colon should be followed by whitespace. Okay: [a, b] Okay: (3,) Okay: a[1:4] Okay: a[:4] Okay: a[1:] Okay: a[1:4:2] E231: ['a','b'] E231: foo(bar,baz) E231: [{'a':'b'}] rz,;:Nú:ú[ú]Ú{r²rÊr/r)z"E231 missing whitespace after '%s')Úranger�Ú WHITESPACEÚcountÚrfindÚsysÚ version_info)rLr•ryruÚ next_charrÃs r=Úmissing_whitespacerá÷sèè€ð €DÝ•s˜4‘y”y 1‘}Ñ%Ô%ð Eð EˆØ�EŒ{ˆØ˜ ™”Oˆ Ø �5ˆ=ˆ=˜Y­jÐ8Ð8ؘ&˜5˜&”\ˆFØ�sŠ{ˆ{˜vŸ|š|¨CÑ0Ô0°6·<²<ÀÑ3DÔ3DÒDÐDØ—L’L Ñ%Ô%¨¯ ª °SÑ(9Ô(9Ò9Ð9ØØ�sŠ{ˆ{˜y¨CÒ/Ð/ØØ�sŠ{ˆ{˜y¨CÒ/Ð/µCÔ4DÈÒ4NÐ4NØØÐ=ÀÑDÐDÐ DÐ DÐ Døð Eð Er?c#ó4K—|rdnd}|rdnd}||zrd|d|zdt|¦«zfzfV—| d¦«}|r||krd|d|zd fzfV—n|s||krd|d|zd fzfV—|r |d krd nd } || z} || kr d|dzfV—dSdSdS)aÂUse indent_size (PEP8 says 4) spaces per indentation level. For really old code that you don't want to mess up, you can continue to use 8-space tabs. Okay: a = 1 Okay: if a == 0:\n a = 1 E111: a = 1 E114: # a = 1 Okay: for item in items:\n pass E112: for item in items:\npass E115: for item in items:\n# Hi\n pass Okay: a = 1\nb = 2 E113: a = 1\n b = 2 E116: a = 1\n # b = 2 rr zE11%d %szE11%d %s (comment)rz!indentation is not a multiple of rÖrzexpected an indented blockzunexpected indentationrxr*r)r�z over-indentedN)ÚstrÚendswith) rLrªrrr�r¬Ú indent_sizeÚcÚtmplÚ indent_expectÚexpected_indent_amountÚexpected_indent_levels r=Ú indentationrësMèè€ð,Ð ˆˆ˜q€AØ%Ð ?ˆ:ˆ:Ð+?€DØ�kÑ!ð Ø�Ø �‰EØ /µ#°kÑ2BÔ2BÑ Bð ñ ð ð ð ð ð%×-Ò-¨cÑ2Ô2€MØð:˜Ð)>Ò>Ð>Ø�˜˜Q™Ð <Ð=Ñ=Ð=Ð=Ð=Ð=Ð=Ø ð:˜|Ð.CÒCÐCØ�˜˜Q™Ð 8Ð9Ñ9Ð9Ð9Ð9Ð9àð1Ø&1°TÒ&9Ð&9  ¸qÐØ 5Ð8NÑ NÐØ Ð/Ò /Ð /Ø�TÐ0Ñ0Ð0Ð 0Ð 0Ð 0Ð 0Ð 0ð 1ð1ð 0Ð /r?c #óX K—|ddd}d|dddz|z } |s| dkrdS| d¦«} dx} } |dkr|fn||dzf} dg| z}dg| z}dgg}dg}i}|dd}d}d}|dg}|d kr0td |dd  ¦«z¦«|D�]�\}}}}}| |d|z k}|r|d|z } | o|tv}|�rŒ|}|d kr$td | ¦«z¦«t |¦«|z || <|t jko|d v}t|| ¦«D]}|| ||z }|| v} | rnŒ|| r ||| k} | o |dko| |d¦«}|r!|| r|d|| kr|dfV—n«|r |s |r|dfV—nž|| r|d|| kr |dur|dfV—ny| s| r|| d|zkr|r|s|dfV—||| <nV|dur |d|| <nF||tfvrn:|dkrd}!n(|| rd}!n|s || rd}!n||| <||krd}!nd}!|d|!zfV—|| rZ|t j t j fvr@|| s8|d|| <d||d<|d krtd| ›d|d›�¦«n¤|t j t j fvs|dvrt||d<nu| s| s|dvrd||ddz<n^|s| s| s|dkrd||ddz<nC|dkr=||dd…  ¦«r||  | ¦«|t jk�rž|dvr­| dz } | d¦«| d¦«t|¦«| kr| g¦«||  | ¦«|| xxdz cc<|d kr$td| ›d|d›d || ›�¦«nÀ|d!vr¼| dkr¶| ¦«p|d}"| ¦«t#| ¦«D]}#||#|"krd||#<Œt%|¦«D] }$|$|"kr||$=Œ || dzd…=| dz} | r d||| <t#| dd¦«D]}%||%r||%xxdzcc<nŒt|¦«| dzksJ‚|d|vr |||d<|d|dk}|r|| ||d|z <�ŒŸ| r;t |¦«||zkr'|d|d|zf}&|rd"}'nd#}'|&d$|'zfV—dSdSdS)%a2Continuation lines indentation. Continuation lines should align wrapped elements either vertically using Python's implicit line joining inside parentheses, brackets and braces, or using a hanging indent. When using a hanging indent these considerations should be applied: - there should be no arguments on the first line, and - further indentation should be used to clearly distinguish itself as a continuation line. Okay: a = (\n) E123: a = (\n ) Okay: a = (\n 42) E121: a = (\n 42) E122: a = (\n42) E123: a = (\n 42\n ) E124: a = (24,\n 42\n) E125: if (\n b):\n pass E126: a = (\n 42) E127: a = (24,\n 42) E128: a = (24,\n 42) E129: if (a or\n b):\n pass E131: a = (\n 42\n 24) rrrr†NrÖrxFr z>>> rz... z]})z6E124 closing bracket does not match visual indentationz+E133 closing bracket is missing indentationTz7E128 continuation line under-indented for visual indentzIE123 closing bracket does not match indentation of opening bracket's line)ÚE122z missing indentation or outdented)ÚE127zover-indented for visual indent)ÚE131zunaligned for hanging indent)ÚE126z over-indented for hanging indent)ÚE121z!under-indented for hanging indentz%s continuation line %szbracket depth z indent to )ÚuÚurÚbÚbr)ÚassertÚraiserHrBú([{z seen, col z, visual min = ú)]}zE129 visually indented linezE125 continuation linez(%s with same indent as next logical line)rärr€ÚNEWLINEr›ÚtokenizeÚOPÚreversedÚgetrãÚNLÚCOMMENTÚSTRINGrºÚappendr�ÚpoprÚÚlist)(rLrÑr�Ú hang_closingrrrår”ÚverboseÚ first_rowÚnrowsÚ indent_nextÚrowÚdepthÚ valid_hangsÚparensÚ rel_indentÚ open_rowsÚhangsÚindent_chancesÚ last_indentÚ visual_indentÚlast_token_multilinersÚ token_typer»r¹rÌr•ÚnewlineÚ close_bracketÚopen_rowÚhangÚhanging_indentÚerrorrŸÚdÚindÚidxÚposr½s( r=Úcontinued_indentationr ?s"èè€ð:�q” ˜!” ˜Q”€IØ ��r” ˜1” ˜aÔ Ñ  9Ñ ,€EØ ðˆu˜Šzˆz؈ð ×'Ò'¨Ñ,Ô,€Kà€O€Cˆ%Ø$/°4Ò$7Ð$7�;�.�.ؘ;¨™?Ð +ððˆS�5‰[€Fà��u‘€Jà��€Ià ˆF€Eà€Nؘ”)˜A”,€KØ€MØ Ðà˜!ŒnÐ €FØ�!‚|€|Ý ˆf�v˜a”y ”|×*Ò*Ñ,Ô,Ñ,Ñ-Ô-Ð-à.4ðG=ñG=Ñ*ˆ �D˜%  dà˜˜aœ 9Ñ,Ò,ˆØ ð Mؘ”(˜YÑ&ˆCØ.Ð.ÐL°:ÅWÐ3LˆGà ñC ?àˆKؘ!Š|ˆ|Ý�f˜tŸ{š{™}œ}Ñ,Ñ-Ô-Ð-õ,¨DÑ1Ô1°LÑ@ˆJ�s‰Oð(­8¬;Ò6ÐH¸4À5¸=ˆMõ% Y¨uÔ%5Ñ6Ô6ð ð �Ø! #”¨°HÔ)=Ñ=�Ø!%¨Ð!4�Ø!ðØ�Eðà�UŒ|ð 8Ø"&¨%°¬,Ò"6�à!.Ð.ð:°4¸!²8ð:Ø+×/Ò/°°a´Ñ9Ô9ð ðð+ ? ¨¤ð+ ?à˜”8˜v eœ}Ò,Ð,Ø ð#0ð1ð1ð1ð1øàð& ? tð& ?ð ðOØÐ!NÐNÐNÐNÐNøØ˜”ð! ? 5¨¤8¨f°U¬mÒ#;Ð#;Ø ¨Ð,Ð,à ð#>ð?ð?ð?ð?øàð ? Kð ?Ø$.¨s¤O°q¸;±Ò$FÐ$Fà ðD¨ðDØ ð#CðDðDðDðDà#��e‘ � Ø $Ð&Ð&à % a¤��u‘ � Ø 4­ +Ð-Ð-ðð˜1’9�9ØF�E�EؘE”]ð LØE�E�EØ&ðL¨5°¬<ðLØB�E�Eà#'�E˜%‘LؘkÒ)Ð)Ø J˜˜à K˜ØÐ6¸Ñ>Ð>Ð>Ð>Ð>ð �3ŒKð )Ø¥8¤;µÔ0@Ð"AÐAÐAؘ5”MðBà! !œHˆF�5‰MØ'+ˆN˜5 œ8Ñ $ؘ!Š|ˆ|ÝÐC uÐCÐC¸¸q¼ÐCÐCÑDÔDÐDøà�Xœ_­hÔ.>Ð?Ð?Ð?ØÐ,Ð,Ð,Ý'*ˆN˜5 œ8Ñ $Ð $àð )˜Uð ) tÐ/JÐ'JÐ'JØ)-ˆN˜3˜qœ6 A™:Ñ &Ð &àð )¨ð )°Eð )¸dÀdºl¸lØ)-ˆN˜3˜qœ6 A™:Ñ &Ð &Ø �SŠ[ˆ[˜T # a¤& ' 'œ]×2Ò2Ñ4Ô4ˆ[Ø �eÔ × #Ò # CÑ (Ô (Ð (ð �œÒ $Ñ $Ø�uˆ}ˆ}ؘ‘ �Ø— ’ ˜aÑ Ô Ð Ø— ’ ˜TÑ"Ô"Ð"Ý�y‘>”> UÒ*Ð*Ø×$Ò$ RÑ(Ô(Ð(ؘ%Ô ×'Ò'¨Ñ,Ô,Ð,Ø�s� � ” ˜qÑ � � ‘ ؘa’<�<Ý�EØ ˜5˜5 %¨¤( ( (¨F°5¬M¨Mð;ñ<ô<ð<øà˜�� 5¨1¢9 9à$Ÿjšj™lœlÐ<¨k¸!¬n� Ø— ’ ‘ ” � ݘu™œð&ð&�Aؘa”y ;Ò.Ð.Ø$%˜˜q™ øÝ Ñ/Ô/ð0ð0�CؘkÒ)Ð)Ø*¨3Ð/øØ˜e a™i˜j˜jÐ)ؘ‘ �Øð9Ø48�N 6¨%¤=Ñ1Ý   b¨"Ñ-Ô-ðð�Cؘc”{ðؘs˜ ˜ œ  qÑ(˜ ˜ ™ ؘðõ�v‘;”; %¨!¡)Ò+Ð+Ð+Ð+Ø�QŒx˜~Ð-Ð-à+/�˜u QœxÑ(à % a¤¨C°¬FÒ 2ÐØ ð =Ø-7¸¬_ˆJ�s˜1”v  Ñ)Ñ *ùàðE•} TÑ*Ô*¨l¸[Ñ.HÒHÐHØ�QŒx˜ œ [Ñ0Ð1ˆØ ð ,Ø0ˆDˆDà+ˆDØÐ=ÀÑDÐDÐDÐDÐDÐDÐDð EðEÐHÐHr?c#ó¢K—|d\}}}}}tdt|¦«¦«D] }||\}}} } }|tjkrz|dvrv| |krp|tjks|dvr\|dks||dz ddkrAt j|¦«s-tjdkst j |¦«s |d|zfV—|}|}| }Œ¡d S) a”Avoid extraneous whitespace. Avoid extraneous whitespace in the following situations: - before the open parenthesis that starts the argument list of a function call. - before the open parenthesis that starts an indexing or slicing. Okay: spam(1) E211: spam (1) Okay: dict['key'] = list[index] E211: dict ['key'] = list[index] E211: dict['key'] = list [index] rrú([r³rrI©r é zE211 whitespace before '%s'N) rÚr�rûrüÚNAMErÍrÎrÞrßÚ issoftkeyword) rLrÑÚ prev_typeÚ prev_textÚ__Úprev_endryrr»r¹rÌs r=Úwhitespace_before_parametersr+sèè€ð .4°A¬YÑ*€Iˆy˜"˜h¨Ý�q�#˜f™+œ+Ñ&Ô&ððˆØ+1°%¬=Ñ(ˆ �D˜%  bà �(œ+Ò %Ð %Ø �DˆLˆLØ �XÒ Ð Ø �(œ-Ò 'Ð '¨9¸Ð+=Ð+=à �QŠYˆY˜& ¨¡Ô+¨AÔ.°'Ò9Ð9åÔ! )Ñ,Ô,ð:õ Ô  6Ò)Ð)ÝÔ)¨)Ñ4Ô4ð*ðÐ9¸DÑ@Ð@Ð @Ð @Ð @؈ ؈ ؈ˆð)ðr?c#óšK—t |¦«D]­}| ¦«\}}d|vr| d¦«dfV—n,t |¦«dkr| d¦«dfV—d|vr| d¦«dfV—Œ�t |¦«dkr| d¦«dfV—Œ®dS) zžAvoid extraneous whitespace around an operator. Okay: a = 12 + 3 E221: a = 4 + 5 E222: a = 4 + 5 E223: a = 4\t+ 5 E224: a = 4 +\t5 rxrzE223 tab before operatorz$E221 multiple spaces before operatorrzE224 tab after operatorz#E222 multiple spaces after operatorN)ÚOPERATOR_REGEXr¸rÁr¹r�rÂs r=Úwhitespace_around_operatorr.6sëèè€õ ×(Ò(¨Ñ6Ô6ð Hð HˆØŸ š ™œ‰ ˆ�à �6ˆ>ˆ>Ø—+’+˜a‘.”.Ð"<Ð<Ð <Ð <Ð <Ð <Ý �‰[Œ[˜1Š_ˆ_Ø—+’+˜a‘.”.Ð"HÐHÐ HÐ HÐ Hà �5ˆ=ˆ=Ø—+’+˜a‘.”.Ð";Ð;Ð ;Ð ;Ð ;Ð ;Ý �‰ZŒZ˜!Š^ˆ^Ø—+’+˜a‘.”.Ð"GÐGÐ GÐ GÐ Gøð Hð Hr?c#ó*K—d}d}tj}dx}}tjtjf}|D�]`\}} } } } |tvrŒ| dvr|dz }n | dkr|dz}|r’| |kr|dur|ds |ddfV—d}�n| d kr|d vr�n|d kr| d vs |dkr| d krnë|dus|dr|dfV—n7|dkr1d\} }|dkrd\} }n|tvrd\} }|d| ›d|›d�fV—d}nž||vrš|�˜| dkr|rnt| t vrd}nh| t vrT|tjkr|dvs=|tjkr/|tvr&tj dkstj |¦«sd}n | tvrd}|€ || |kf}n|r| |kr|dfV—d}|}| }| }�ŒbdS)aVSurround operators with a single space on either side. - Always surround these binary operators with a single space on either side: assignment (=), augmented assignment (+=, -= etc.), comparisons (==, <, >, !=, <=, >=, in, not in, is, is not), Booleans (and, or, not). - If operators with different priorities are used, consider adding whitespace around the operators with the lowest priorities. Okay: i = i + 1 Okay: submitted += 1 Okay: x = x * 2 - 1 Okay: hypot2 = x * x + y * y Okay: c = (a + b) * (a - b) Okay: foo(bar, key='word', *args, **kwargs) Okay: alpha[:-i] E225: i=i+1 E225: submitted +=1 E225: x = x /2 - 1 E225: z = x **y E225: z = 1and 1 E226: c = (a+b) * (a-b) E226: hypot2 = x*x + y*y E227: c = a|b E228: msg = fmt%(errno, errmsg) rFN)ú(ÚlambdarrÊTz'E225 missing whitespace around operatorr-)r,r"r#>rÊr²rÖrÖr)ÚE226Ú arithmeticr()ÚE228Úmodulo)ÚE227zbitwise or shiftz missing whitespace around z operatorr/r³r#) rûrür%Ú SKIP_COMMENTSÚ ARITHMETIC_OPÚWS_NEEDED_OPERATORSÚUNARY_OPERATORSÚKEYWORDSrÞrßrÍr&ÚWS_OPTIONAL_OPERATORS)rLrÑr Ú need_spacer'r(r*Úoperator_typesrr»r¹rÌr•r½Úoptypes r=Ú"missing_whitespace_around_operatorr@NsÆèè€ð<€FØ€JÝ” €IØÐ€I�Ý”k¥8¤=Ð1€NØ.4ðMñMÑ*ˆ �D˜%  dØ �Ð &Ð &Ø Ø �?Ð "Ð "Ø �a‰KˆFˆFØ �SŠ[ˆ[Ø �a‰KˆFØ ðC #Ø˜Ò Ð à TÐ)Ð)°*¸Q´-Ð)Ø% aœ=ØDðFðFðFðFà"� ‘ ؘ’� ¨jÐ!8Ð!8ñð Ò$Ð$¨°Ð)@Ð)@ð Ò$Ð$¨°ª¨ðà Ð%Ð%¨°A¬Ð%à"Ð$MÐMÐMÐMÐMÐMØ $Ò&Ð&Ø#7‘L�D˜&Ø  CÒ'Ð'Ø'7™ ˜˜f˜fØ"­-Ð7Ð7Ø'A™ ˜˜fØ% aœ=Ø37°4°4¸¸¸ð+AðBðBðBðBà"� � Ø ˜>Ð )Ð )¨hÐ.BØ�sŠ{ˆ{˜vˆ{àØÕ,Ð,Ð,Ø!� � Ø�Ð(Ð(𥤠Ò+Ð+° ¸UÐ0BÐ0BØ¥¤Ò,Ð,Ø¥XÐ-Ð-ÝÔ(¨6Ò1Ð1Ý#Ô1°)Ñ<Ô<ð2ð"&�JøØÕ.Ð.Ð.Ø!� àÐ!ð'¨°Ò(9Ð:� � Øð # ¨Ò 1Ð 1àÐ IÐIÐIÐIÐIØ"� ؈ ؈ ؈‰ð[MðMr?c#ó(K—|}t |¦«D]r}| ¦«dz}d| ¦«vr"|d| ¦«dzfV—ŒQ|d| ¦«dzfV—ŒsdS)z¬Avoid extraneous whitespace after a comma or a colon. Note: these checks are disabled by default Okay: a = (1, 2) E241: a = (1, 2) E242: a = (1,\t2) rrxzE242 tab after '%s'rzE241 multiple spaces after '%s'N)ÚWHITESPACE_AFTER_COMMA_REGEXr¸r¹rp)rLr•Úmr¼s r=Úwhitespace_around_commarDÁs¨èè€ð €DÝ )× 2Ò 2°4Ñ 8Ô 8ðJðJˆØ—’‘ ” ˜A‘ ˆØ �1—7’7‘9”9Ð Ð ØÐ.°·²±´¸1´Ñ=Ð=Ð =Ð =Ð =Ð =àÐ:¸Q¿WºW¹Y¼YÀq¼\ÑIÐIÐ IÐ IÐ IÐ Ið JðJr?c#óÚK—d}d}d}d}d}tt |¦«¦«}d}d} |D]°\} } } } }| tjkrŒ|rd}| |kr||fV—|rd}| |kr|| fV—| tjkre| dvr|dz }nW| dvr|dz}nM|r| d kr |dkrd }n<|dkr | d krd}n-|r+| d kr%|r|dkrd }| |kr|| fV—nd }| |kr||fV—|sd}| }Œ±dS) acDon't use spaces around the '=' sign in function arguments. Don't use spaces around the '=' sign when used to indicate a keyword argument or a default parameter value, except when using a type annotation. Okay: def complex(real, imag=0.0): Okay: return magic(r=real, i=imag) Okay: boolean(a == b) Okay: boolean(a != b) Okay: boolean(a <= b) Okay: boolean(a >= b) Okay: def foo(arg: int = 42): Okay: async def foo(arg: int = 42): E251: def complex(real, imag = 0.0): E251: return magic(r = real, i = imag) E252: def complex(real, image: float=0.0): rFNz8E251 unexpected spaces around keyword / parameter equalsz/E252 missing whitespace around parameter equalsr"rz)]rÖTr²r/)Úboolr¥rorûrÿrü)rLrÑr Úno_spaceÚ require_spacer*Úannotated_func_argÚin_defÚmessageÚmissing_messagerr»r¹rÌr•s r=Ú(whitespace_around_named_parameter_equalsrMÔs·èè€ð*€FØ€HØ€MØ€HØÐÝ Õ&×,Ò,¨\Ñ:Ô:Ñ ;Ô ;€FàH€GØG€Oà.4ð ð Ñ*ˆ �D˜%  dØ �œÒ $Ð $Ø Ø ð *؈HØ˜Ò Ð Ø Ð)Ð)Ð)Ð)Ø ð 2Ø!ˆMØ˜Ò Ð Ø Ð1Ð1Ð1Ð1Ø �œÒ $Ð $Ø�tˆ|ˆ|ؘ!‘ ��ؘ��ؘ!‘ ��Øð 2˜D CšK˜K¨F°aªK¨KØ%)Ð"Ð"ؘ1’� ¨¢ Ø%*Ð"Ð"Øð 2˜D CšK˜KØ%ð2¨&°Aª+¨+Ø$(�MØ Ò(Ð(Ø'¨Ð9Ð9Ð9Ð9øà#�HØ Ò(Ð(Ø'¨Ð1Ð1Ð1Ð1Øð +Ø%*Ð"àˆˆðA ð r?c#óK—d}|D]ý\}}}}}|tjkrÓ|d|d… ¦«}|r-|d|dkr|d|ddzkr|dfV—| d¦«\} } } | dvo|  d ¦«dd…pd } |r| s| dd…t vr|d fV—ŒÁ| r'| d ks |ddkr| d kr|d fV—Œâ| r|d fV—Œë|tjkr|}ŒþdS)uïSeparate inline comments by at least two spaces. An inline comment is a comment on the same line as a statement. Inline comments should be separated by at least two spaces from the statement. They should start with a # and a single space. Each line of a block comment starts with a # and one or multiple spaces as there can be indented text inside the comment. Okay: x = x + 1 # Increment x Okay: x = x + 1 # Increment x Okay: # Block comments: Okay: # - Block comment list Okay: #  - Block comment list E261: x = x + 1 # Increment x E262: x = x + 1 #Increment x E262: x = x + 1 # Increment x E262: x = x + 1 #  Increment x E265: #Block comment E266: ### Block comment )rrNrrrz.E261 at least two spaces before inline commentr9z#:rŽz*E262 inline comment should start with '# 'ú!z)E265 block comment should start with '# 'z+E266 too many leading '#' for block comment)rûrrœÚ partitionr¦rÛrÿ) rLrÑr*rr»r¹rÌr•Úinline_commentÚsymbolÚspÚcommentÚ bad_prefixs r=Úwhitespace_before_commentrVs’èè€ð.€HØ.4ððÑ*ˆ �D˜%  dØ �Ô)Ò )Ð )Ø! ) 5¨¤8 )œ_×2Ò2Ñ4Ô4ˆNØð MؘA”; %¨¤(Ò*Ð*¨u°Q¬x¸(À1¼+ȹ/Ò/IÐ/IØ#ØKðMðMðMðMà"&§.¢.°Ñ"5Ô"5Ñ ˆF�B˜Ø tÐ+ÐO°·²¸sÑ1CÔ1CÀBÀQÀBÔ1GÐ1NÈ3ˆJØð OØðN ¨¨!¨¤µ Ð!:Ð!:ØÐ!MÐMÐMÐMÐMøØð O ¨sÒ!2Ð!2°e¸A´hÀ²l°lØ Ò$Ð$ØÐ!LÐLÐLÐLÐLÐLØðOØÐ!NÐNÐNÐNÐNøØ �8œ;Ò &Ð &؈Høð%ðr?c#óžK—|}| d¦«r/| d¦«}d|krd|d|…vr |dfV—dSdSdSdS)a Place imports on separate lines. Okay: import os\nimport sys E401: import sys, os Okay: from subprocess import Popen, PIPE Okay: from myclas import MyClass Okay: from foo.bar.yourclass import YourClass Okay: import myclass Okay: import foo.bar.yourclass úimport r²r†ú;Nz!E401 multiple imports on one line)r�Úfind)rLr•r¼s r=Úimports_on_separate_linesr[Csxèè€ð €DØ ‡‚�yÑ!Ô!ð=Ø— ’ ˜#‘”ˆØ �Š:ˆ:˜# T¨&¨5¨&¤\Ð1Ð1ØÐ<Ð<Ð <Ð <Ð <Ð <Ð <ð=ð=à ˆ:Ð1Ð1r?c#óœ‡K—d„}d}|rdS|sdS|rdS|Љ d¦«s‰ d¦«r| dd¦«rdV—dSdStjt‰¦«rdSt ˆfd „|D¦«¦«rdS|‰¦«r$| d d¦«rd |d<dSd |d <dSd |d<dS) a˜Place imports at the top of the file. Always put imports at the top of the file, just after any module comments and docstrings, and before module globals and constants. Okay: import os Okay: # this is a comment\nimport os Okay: '''this is a module docstring'''\nimport os Okay: r'''this is a module docstring'''\nimport os Okay: try:\n\timport x\nexcept ImportError:\n\tpass\nelse:\n\tpass\nimport y Okay: try:\n\timport x\nexcept ImportError:\n\tpass\nfinally:\n\tpass\nimport y E402: a=1\nimport os E402: 'One string'\n"Two string"\nimport os E402: a=1\nfrom sys import x Okay: if x:\n import os cóŠ—|ddvr |dd…}|r|ddvr |dd…}|o|ddkp |ddkS)NrÚuUbBrÚrRú"r¶rP)r•s r=Úis_string_literalz8module_imports_on_top_of_file..is_string_literalms_€Ø �Œ7�fРРؘ˜˜”8ˆDØ ð �D˜”G˜t�O�Oؘ˜˜”8ˆDØÐ:˜˜aœ CšÐ9¨4°¬7°cª>Ð:r?)rErFrDrGrHrBrCNrXzfrom Úseen_non_importsF)rz+E402 module level import not at top of filec3óB•K—|]}‰ |¦«V—ŒdS©N©r�)r;Úkwr•s €r=r>z0module_imports_on_top_of_file..ƒs/øèè€Ð <Ð < RˆT�_Š_˜RÑ Ô Ð <Ð <Ð <Ð <Ð <Ð z'compound_statements..´s€Ð +Ð +Ð +˜$ˆd�AÐ +Ð +Ð +r?z{}[]()r†rÙÚ}r×rØr0rÊr)r/N)rz1E731 do not assign a lambda expression, use a def)rz*E704 multiple statements on one line (def)z,E701 multiple statements on one line (colon)rYz0E702 multiple statements on one line (semicolon)z$E703 statement ends with a semicolon)r�rZÚ update_countsrÞrßÚ LAMBDA_REGEXÚsearchr¹r€rœÚ isidentifierr¥roÚ!STARTSWITH_INDENT_STATEMENT_REGEX)rLr•Ú last_charr¼Ú prev_foundÚcountsÚ lambda_kwrÃs r=Úcompound_statementsr{’soèè€ð< €DÝ�D‘ ” ˜A‘ €IØ �IŠI�c‰NŒN€EØ€JØ +Ð + (Ð +Ñ +Ô +€FØ ˆuÐ Ð Ò Ð �yÒ Ñ Ð Ð Ñ Ý�d˜: eÐ+Ô,¨fÑ5Ô5Ð5Ø �CŒ[˜F 3œKÒ 'Ñ 'Ø �CŒ[˜F 3œKÒ 'Ð 'Ø �CŒ[˜F 3œKÒ 'Ð 'ÝÔ! VÒ+Ð+Ø�e˜a‘i” CÒ'Ð'Ý$×+Ò+¨D°!°UÑ;Ô;ˆIØð ØÐ0˜yŸšÑ0Ô0Ð0Ô1×8Ò8Ñ:Ô:�ؘ"˜#˜#”; #Ò%Ð%¨&°°"°¬+×*;Ò*;Ñ*=Ô*=×*JÒ*JÑ*LÔ*LÐ%ð%ð%ð%ð%àÝ#×)Ò)¨$Ñ/Ô/ð LØEÐEÐEÐEÐEÝ2×8Ò8¸Ñ>Ô>ð LØÐKÐKÐKÐKÐK؈ Ø— ’ ˜#˜u q™yÑ)Ô)ˆð' ˆuÐ Ð Ò Ð �yÒ Ñ Ð Ð ð( �IŠI�c‰NŒN€EØ ˆuŠ*ˆ*Ø �9Ò Ð ØÐKÐKÐ KÐ KÐ KÐ KàÐ?Ð?Ð ?Ð ?Ð ?Ø— ’ ˜#˜u q™yÑ)Ô)ˆð ˆuŠ*ˆ*ˆ*ˆ*ˆ*ˆ*r?c#óÆK—dx}x}}d}d}|D]Ñ\}}} } } |tjkrd}| d|kr |r |r|s|dfV—| d|krh|  d¦« d¦«r3| dt |  ¦«d¦«d z f}nd}| dx}}n| d}|tjkr|d vr|d z }ŒÈ|d vr|d z}ŒÒdS) aBAvoid explicit line join between brackets. The preferred way of wrapping long lines is by using Python's implied line continuation inside parentheses, brackets and braces. Long lines can be broken over multiple lines by wrapping expressions in parentheses. These should be used in preference to using a backslash for line continuation. E502: aaa = [123, \\n 123] E502: aaa = ("bbb " \\n "ccc") Okay: aaa = [123,\n 123] Okay: aaa = ("bbb "\n "ccc") Okay: aaa = "bbb " \\n "ccc" Okay: aaa = 123 # \\ rFNTz0E502 the backslash is redundant between bracketsr…ú\r†rrørù)rûrr€rär�Ú splitlinesrü) rLrÑÚ prev_startr*r rTÚ backslashrr»r¹rÌr•s r=Úexplicit_line_joinr�Òs7èè€ð$&'Ð&€JÐ&�˜FØ€GØ€IØ.4ððÑ*ˆ �D˜%  dØ �Ô)Ò )Ð )؈GØ �Œ8�zÒ !Ð ! fÐ !°Ð !À7Ð !ØÐOÐOÐ OÐ OÐ OØ ˆqŒ6�XÒ Ð Ø�{Š{˜6Ñ"Ô"×+Ò+¨DÑ1Ô1ð !Ø  œV¥S¨¯ªÑ):Ô):¸2Ô)>Ñ%?Ô%?À!Ñ%CÐD� � à � Ø$'¨¤FÐ *ˆJ˜˜à˜qœˆJØ �œÒ $Ð $Ø�uˆ}ˆ}ؘ!‘ ��ؘ��ؘ!‘ �øð#ðr?z()[]{},:.;@=%~)z...có<—|tjkp|dvo|tvS)N>r3r0)rûrüÚ _SYMBOLIC_OPS)rr»s r=Ú_is_binary_operatorr„s-€à•h”kÒ!ð Ø � Ðð ð •MÐ!ð r?c#ó²K—d}d}d}d}|D]I\}}}}} |tjkrŒd|vsd|vr|tjkrd}Œ4|||||||fV—|dv}d}|}|}ŒJdS)z³Private function to reduce duplication. This factors out the shared details between :func:`break_before_binary_operator` and :func:`break_after_binary_operator`. FTNr|r}z([{,;)rûrr) rÑÚ line_breakÚ unary_contextÚprevious_token_typeÚ previous_textrr»r¹rÌr•s r=Ú_break_around_binary_operatorsrŠ s¶èè€ð€JØ€MàÐØ€MØ.4ð !ð !Ñ*ˆ �D˜%  dØ �Ô)Ò )Ð )Ø Ø �DˆLˆL˜D D˜L˜L¨j½H¼OÒ.KÐ.K؈JˆJà˜tÐ%8¸-ؘ}¨eð5ð 5ð 5ð 5à  G˜OˆM؈JØ",Ð Ø ˆMˆMð !ð !r?c#ó–K—t|¦«D]6}|\}}}}}}} t||¦«r|r|st||¦«s| dfV—Œ7dS)aâ Avoid breaks before binary operators. The preferred place to break around a binary operator is after the operator, not before it. W503: (width == 0\n + height == 0) W503: (width == 0\n and height == 0) W503: var = (1\n & ~2) W503: var = (1\n / -2) W503: var = (1\n + -1\n + -2) Okay: foo(\n -x) Okay: foo(x\n []) Okay: x = '''\n''' + '' Okay: foo(x,\n -y) Okay: foo(x, # comment\n -y) z&W503 line break before binary operatorN©rŠr„) rLrÑÚcontextrr»rˆr‰r†r‡r¹s r=Úbreak_before_binary_operatorrŽ$s—èè€õ(2°&Ñ9Ô9ðBðBˆà-4ñ +ˆ�TÐ.° Ø �] EÝ   ¨DÑ 1Ô 1ð B°jð BØ!ð Bå'Ð(;Ø(5ñ7ô7ð BðÐAÐAÐ AÐ AÐ AøðBðBr?c#óžK—d}t|¦«D]8}|\}}}}}} } t||¦«r|r| st||¦«s|dfV—| }Œ9dS)aF Avoid breaks after binary operators. The preferred place to break around a binary operator is before the operator, not after it. W504: (width == 0 +\n height == 0) W504: (width == 0 and\n height == 0) W504: var = (1 &\n ~2) Okay: foo(\n -x) Okay: foo(x\n []) Okay: x = '''\n''' + '' Okay: x = '' + '''\n''' Okay: foo(x,\n -y) Okay: foo(x, # comment\n -y) The following should be W504 but unary_context is tricky with these Okay: var = (1 /\n -2) Okay: var = (1 +\n -1 +\n -2) Nz%W504 line break after binary operatorrŒ) rLrÑrr�rr»rˆr‰r†r‡r¹s r=Úbreak_after_binary_operatorr�Bsœèè€ð.€JÝ1°&Ñ9Ô9ððˆà-4ñ +ˆ�TÐ.° Ø �] EÝ Ð 3°]Ñ CÔ Cð FØð Fà!ð Fõ(¨ °DÑ9Ô9ð FðÐEÐEÐ EÐ EÐ E؈ ˆ ððr?c#óxK—|rdSt |¦«D]˜}| d¦«p| d¦«}| d¦«dk}d|rdnd|zz}|d vrd }nd }|d kr|p|d ko| }|d|rdndzz }| d¦«|›d|›d|›�fV—Œ™dS)aXComparison to singletons should use "is" or "is not". Comparisons to singletons like None should always be done with "is" or "is not", never the equality operators. Okay: if arg is not None: E711: if arg != None: E711: if None == arg: E712: if arg == True: E712: if False == arg: Also, beware of writing if x when you really mean if x is not None -- e.g. when testing whether a variable or argument that defaults to None was set to some other value. The other value might have a type (such as a container) that could be false in a boolean context! Nrr rr.z'if cond is %s:'r^znot )rÚE711ÚE712rrz or 'if %scond:'z comparison to z should be )ÚCOMPARE_SINGLETON_REGEXr¸rpr¹)rLr”roÚ singletonÚsameÚmsgr½Únonzeros r=Úcomparison_to_singletonr™esèè€ð$ ð؈å(×1Ò1°,Ñ?Ô?ð 7ð 7ˆØ—K’K ‘N”NÐ4 e§k¢k°!¡n¤nˆ Ø— ’ ˜A‘” $Ò&ˆà ¨4Ð%; R R°V¸yÑ$HÑIˆØ ˜ Ð !Ð !؈DˆDàˆDØ! VÒ+Ð4°ð;Ø! WÒ,Ð9°T°ð à Ð%¨wÐ)B¨¨¸FÑCÑ CˆCØ�kŠk˜!‰nŒnØ $   i i i°°ð 6ð7ð 7ð 7ð 7ð 7ð 7ð 7r?c#ó¾K—t |¦«}|r>| d¦«}| d¦«dkr|dfV—dS|dfV—dSdS)aGNegative comparison should be done using "not in" and "is not". Okay: if x not in y:\n pass Okay: assert (X in Y or X is Z) Okay: if not (X in Y):\n pass Okay: zz = x is not y E713: Z = not X in Y E713: if not X.B in Y:\n pass E714: if not X is Y:\n pass E714: Z = not X.B is Y rrr1z+E713 test for membership should be 'not in'z0E714 test for object identity should be 'is not'N)ÚCOMPARE_NEGATIVE_REGEXrtr¹rp)rLrors r=Úcomparison_negativerœŠs„èè€õ #× )Ò )¨,Ñ 7Ô 7€EØ ðJØ�kŠk˜!‰nŒnˆØ �;Š;�q‰>Œ>˜TÒ !Ð !ØÐDÐDÐ DÐ DÐ DÐ DÐ DàÐIÐIÐ IÐ IÐ IÐ IÐ Ið JðJr?c#óêK—t |¦«}|rR|sR| d¦«}|r| ¦«r |tvrdS| ¦«dfV—dSdSdS)a²Object type comparisons should always use isinstance(). Do not compare types directly. Okay: if isinstance(obj, int): E721: if type(obj) is type(1): When checking if an object is a string, keep in mind that it might be a unicode string too! In Python 2.3, str and unicode have a common base class, basestring, so you can do: Okay: if isinstance(obj, basestring): Okay: if type(a1) is type(b1): rNz-E721 do not compare types, use 'isinstance()')ÚCOMPARE_TYPE_REGEXrtrprurÐr¹)rLr”roÚinsts r=Úcomparison_typer  s�èè€õ × %Ò % lÑ 3Ô 3€EØ ðM�TðMØ�{Š{˜1‰~Œ~ˆØ ð �D×%Ò%Ñ'Ô'ð ¨D½ Ð,BÐ,BØ ˆFØ�kŠk‰mŒmÐLÐLÐLÐLÐLÐLÐLð MðMðMðMr?c#ó~K—|rdSt |¦«}|r| ¦«dfV—dSdS)zœWhen catching exceptions, mention specific exceptions when possible. Okay: except Exception: Okay: except BaseException: E722: except: NzE722 do not use bare 'except')ÚBLANK_EXCEPT_REGEXror¹)rLr”ros r=Ú bare_exceptr£¸sZèè€ð ð؈å × $Ò $ \Ñ 2Ô 2€EØ ð=Ø�kŠk‰mŒmÐ<Ð<Ð<Ð<Ð<Ð<Ð<ð=ð=r?c#óK—d}d}d}|d\}}}}} |dd…D]ß\} } } } }dx}}|dkrd}|dkr)|tjkr| tjkr | dkrd}n-|dkr'| tjkr| dkr|dz }n | d kr|dz}| tjkrd | vr|dkr||vr|}|}|d vr| |vr| }| }|r| |vr| }| }|d kr | |vr | d | zfV—|dkr | |vr | d| zfV—|r |d|zfV—| }| }| }ŒàdS)a§Never use the characters 'l', 'O', or 'I' as variable names. In some fonts, these characters are indistinguishable from the numerals one and zero. When tempted to use 'l', use 'L' instead. Okay: L = 0 Okay: o = 123 Okay: i = 42 E741: l = 0 E741: O = 123 E741: I = 42 Variables can be bound in several other contexts, including class and function definitions, 'global' and 'nonlocal' statements, exception handlers, and 'with' and 'for' statements. In addition, we have a special handling for function parameters. Okay: except AttributeError as o: Okay: with lock as L: Okay: foo(l=12) Okay: for a in foo(l=12): E741: except AttributeError as O: E741: with lock as l: E741: global I E741: nonlocal l E741: def foo(l): E741: def foo(l=12): E741: l = foo(l=12) E741: for l in range(10): E742: class I(object): E743: def l(x): Fr)ÚlÚOÚIrNr@Tr0rÊr/)ÚasrAÚglobalÚnonlocalrIz$E742 ambiguous class definition '%s'z'E743 ambiguous function definition '%s'z!E741 ambiguous variable name '%s')rûr%rü)rLrÑÚ is_func_defÚparameter_parentheses_levelÚidents_to_avoidr'r(rr*r)rr»r¹rÌr•Úidentrs r=Úambiguous_identifierr¯Ésíèè€ðD€KØ"#ÐØ%€OØ5;¸A´YÑ2€Iˆy˜* h°Ø.4°Q°R°R¬jð+ð+Ñ*ˆ �D˜%  dØÐˆ�à ˜Ò Ð ØˆKà &¨!Ò +Ð +Ø�Xœ]Ò*Ð*Ø�hœkÒ)Ð)¨d°cªk¨kØ*+Ð 'Ð 'Ø (¨1Ò ,Ð ,Ø�hœkÒ)Ð)Ø�sŠ{ˆ{Ø+¨qÑ0Ð+Ð+ؘ’�Ø+¨qÑ0Ð+à �œÒ $Ð $¨°¨¨Ø+¨qÒ0Ð0ؘOÐ+Ð+Ø!�Ø �ð Ð;Ð ;Ð ;Ø�Ð&Ð&Ø�Ø�à ð Ø�Ð&Ð&Ø�Ø�Ø ˜Ò Ð Ø�Ð&Ð&ØÐCÀdÑJÐJÐJÐJÐJØ ˜Ò Ð Ø�Ð&Ð&ØÐFÈÑMÐMÐMÐMÐMØ ð CØÐ:¸UÑBÐBÐ BÐ BÐ B؈ ؈ ؈ ˆ ðW+ð+r?c#óXK—| d¦«}|dkr |s |dfV—dSdSdS)z¢The {}.has_key() method is removed in Python 3: use the 'in' operator. Okay: if "alph" in d:\n print d["alph"] W601: assert d.has_key('alph') z .has_key(r†z'W601 .has_key() is deprecated, use 'in'N©rZ)rLr”rs r=Úpython_3000_has_keyr²sKèè€ð × Ò ˜KÑ (Ô (€CØ ˆR‚x€x˜€xØÐ<Ð<Ð<Ð<Ð<Ð<Ð<ð€x€x€xr?c#ó´K—t |¦«}|r7t |¦«s| ¦«dz dfV—dSdSdS)z»When raising an exception, use "raise ValueError('message')". The older form is removed in Python 3. Okay: raise DummyError("Message") W602: raise DummyError, "Message" rz)W602 deprecated form of raising exceptionN)ÚRAISE_COMMA_REGEXroÚRERAISE_COMMA_REGEXrÌ)rLros r=Úpython_3000_raise_commar¶*swèè€õ × #Ò # LÑ 1Ô 1€EØ ðKÕ(×.Ò.¨|Ñ<Ô<ðKØ�iŠi‰kŒk˜A‰oÐJÐJÐJÐJÐJÐJÐJðKðKðKðKr?c#óPK—| d¦«}|dkr|dfV—dSdS)z�New code should always use != instead of <>. The older syntax is removed in Python 3. Okay: if a != 'no': W603: if a <> 'no': r+r†z!W603 '<>' is deprecated, use '!='Nr±©rLrs r=Úpython_3000_not_equalr¹8sCèè€ð × Ò ˜DÑ !Ô !€CØ ˆR‚x€xØÐ6Ð6Ð6Ð6Ð6Ð6Ð6ð€xr?c#óPK—| d¦«}|dkr|dfV—dSdS)zfUse repr() instead of backticks in Python 3. Okay: val = repr(1 + 2) W604: val = `1 + 2` ú`r†z+W604 backticks are deprecated, use 'repr()'Nr±r¸s r=Úpython_3000_backticksr¼FsCèè€ð × Ò ˜CÑ Ô €CØ ˆR‚x€xØÐ@Ð@Ð@Ð@Ð@Ð@Ð@ð€xr?c#óÚK—|rdSgd¢}|D�]\\}}}}}|tjk�rB|\} } |dd…dvr |dd…n|d} | | ¦«} |d| … ¦«} | t | ¦«z}||t | ¦« …}d| vrÀ| d¦«}|dkr¥|d z }|||vrw| | d d|¦«z}|| kr&| t | ¦«zt | ¦«z|z}n|| d d|¦«z d z }||d z fd ||zfV—| d|d z¦«}|dk°¥�Œ^dS) zsInvalid escape sequences are deprecated in Python 3.6. Okay: regex = r'\.png$' W605: regex = '\.png$' N)r|r}r¶r`ÚarôÚfÚnÚrÚtÚvÚ0Ú1Ú2Ú3Ú4Ú5Ú6Ú7ÚxÚNròÚUéýÿÿÿ©z"""z'''r†rÁr}rrr|z"W605 invalid escape sequence '\%s')rûrryÚlowerr�rZrÜrÝ)rLrÑr”Úvalidrr»r¹rÌr•Ú start_lineÚ start_colÚquoteÚ quote_posÚprefixrÏrÚcols r=Ú#python_3000_invalid_escape_sequencerÙRsÒèè€ð ð؈ð ð ð €Eð*/5ð5ñ5Ñ*ˆ �D˜%  dØ �œÒ (Ñ (Ø$)Ñ !ˆJ˜ Ø!% b c c¤¨nÐ!<Ð!<�D˜˜˜”I�IÀ$ÀrÄ(ˆEàŸ š  5Ñ)Ô)ˆIؘ*˜9˜*Ô%×+Ò+Ñ-Ô-ˆFØ¥ E¡ ¤ Ñ*ˆEؘ%¥ U¡¤  Ð+Ô,ˆFà˜&Ð Ð Ø—k’k $Ñ'Ô'�ؘQ’h�hؘ1‘H�Cؘc”{¨%Ð/Ð/Ø)¨F¯LªL¸¸qÀ#Ñ,FÔ,FÑF˜Ø :Ò-Ð-Ø"+­c°&©k¬kÑ"9½CÀ¹J¼JÑ"FÈÑ"L˜C˜Cà"%¨¯ ª °T¸1¸cÑ(BÔ(BÑ"BÀQÑ"F˜Cà! 3¨¡7˜OØAØ" 3œKñ(ððððð !Ÿ+š+ d¨C°!©GÑ4Ô4�Cð˜Q’h�hùð5ð5r?c#óK—d}|D]ò\}}}}}d}|tjkrŒ|€?|tjkr.|dkrd|f}nª|dkrd|f}nŸ|tjkr|dvrd|f}n†|ddkr|tjkr|d vrd}ncd }n`|ddkr/|tjkrd}nA|tjkr |d krd}n(d }n%|ddkr|tjkr|d vrd }nd}|r|d dfV—d}Œó|�|d dfV—dSdS)z·'async' and 'await' are reserved keywords starting at Python 3.7. W606: async = 42 W606: await = 42 Okay: async def read(db): data = await db.fetch('SELECT ...') NFrÚ async_stmtrÈ)r@rAÚdefiner)r@rHrATr0rÇrzGW606 'async' and 'await' are reserved keywords starting with Python 3.7)rûrÿr%rü) rLrÑÚstaterr»r¹rÌr•rs r=Ú python_3000_async_await_keywordsrÞŽs·èè€ð €EØ.4ð,ð,Ñ*ˆ �D˜%  d؈à �œÒ $Ð $Ø à ˆ=Ø�Xœ]Ò*Ð*ؘ7’?�?Ø)¨5Ð1�E�EؘW’_�_Ø$ eÐ,�E�EØ ¥H¤MÒ1Ð1ؘnÐ,Ð,Ø% uÐ-�Eøà �1ŒX˜Ò %Ð %Ø�Xœ]Ò*Ð*¨tÐ7MÐ/MÐ/Mð��à��Ø �1ŒX˜Ò Ð Ø�Xœ]Ò*Ð*ð��Ø�xœ{Ò*Ð*¨t°sª{¨{Ø��à��Ø �1ŒX˜Ò !Ð !Ø�Xœ]Ò*Ð*¨tÐ7IÐ/IÐ/IØ��à�à ð à�a”ððð ð ð ð ˆEøð Ðà �!ŒHð ð ð ð ð ð ð ðÐr?c#óÄK—|�|rdSd}t¦«}|D]D\}}}} } |t tjg¦«vr| | ¦«ŒE|D�]|\}}}} } |tjkr|rŒ|tjtjfv�rC|� |tv�r7|  ¦«} t| ¦«D�]\} } |d| zdkr|   d¦«rdSt| ¦«}|   ¦«}|tjkr5t|¦«dkr"|t|d¦«z tkrŒ–t|¦«dkrK| dzt| ¦«kr5t|¦«dkr"|t|d¦«z tkrŒô||kr|d| z|f}|d||fzfV—�Œ|}�Œ~dS)zÉLimit all doc lines to a maximum of 72 characters. For flowing long blocks of text (docstrings or comments), limiting the length to 72 characters is recommended. Reports warning W505 Nrrr�rr†z+W505 doc line too long (%d > %d characters))Úsetr7ÚunionrûrÚaddrÚ SKIP_TOKENSr~rqr�r�r‘ÚMAX_DOC_LENGTH)rLÚmax_doc_lengthr”rÑÚ prev_tokenÚ skip_linesrr»r¹rÌr•r‡Úline_numrKr–r—Ú doc_errors r=Úmaximum_doc_lengthrêÕs'èè€ðÐ ÐØˆà€JÝ‘”€Jà.4ð!ð!Ñ*ˆ �D˜%  dØ �]×0Ò0µ(´/Ð1BÑCÔCÐ CÐ CØ �NŠN˜4Ñ Ô Ð øà.4ð ñ Ñ*ˆ �D˜%  dà �œÒ (Ð (¨ZÐ (Ø Ø �(œ/­8Ô+;Ð<Ð <Ñ <àÐ! Zµ;Ð%>Ñ%>ØŸšÑ)Ô)�Ý/8¸Ñ/?Ô/?ð;ñ;Ñ+�H˜mؘQ”x (Ñ*¨aÒ/Ð/°D·O²OÀDÑ4IÔ4IÐ/ؘ˜˜Ý  Ñ/Ô/�FØ*×0Ò0Ñ2Ô2�FØ!¥XÔ%5Ò5Ð5Ý ™KœK¨1Ò,Ð,Ø &­¨V°B¬Z©¬Ñ 8½>Ò IÐ IØ$ݘ6‘{”{ aÒ'Ð'¨H°q©L½3¸u¹:¼:Ò,EÐ,EÝ ™KœK¨1Ò,Ð,Ø &­¨V°B¬Z©¬Ñ 8½>Ò IÐ IØ$Ø Ò.Ð.Ø%*¨1¤X°Ñ%8¸.Ð$I˜ Ø(ð+Aà"(¨.Ð!9ñ+:ð;ð;ð;ð;ùð ˆ ‰ ð5 ð r?cóB— tj|¦«5}| ¦«cddd¦«S#1swxYwYdS#ttt f$rCt|d¬¦«5}| ¦«cddd¦«cYS#1swxYwYYdSwxYw)zRead the source code.Nzlatin-1)Úencoding)rûÚopenÚ readlinesÚ LookupErrorÚ SyntaxErrorÚ UnicodeError)Úfilenamer¿s r=rîrî s3€ð!Ý Œ]˜8Ñ $Ô $ð !¨Ø—;’;‘=”=ð !ð !ð !ð !ñ !ô !ð !ð !ð !ð !ð !ð !øøøð !ð !ð !ð !ð !ð !øå �¥lÐ 3ð!ð!ð!å �( YÐ /Ñ /Ô /ð !°1Ø—;’;‘=”=ð !ð !ð !ð !ñ !ô !ð !ð !ð !ð !ð !ð !ð !ð !øøøð !ð !ð !ð !ð !ð !ð !ð!øøøsP‚A–7ª A·;»A¾;¿AÁ(BÁ,B BÂB ÂBÂB ÂBÂBcóf—ttjjd¬¦« ¦«S)zRead the value from stdin.Úignore)Úerrors)rrÞÚstdinÚbufferÚreadrPr?r=Ústdin_get_valuerùs&€å �œÔ)°(Ð ;Ñ ;Ô ;× @Ò @Ñ BÔ BÐBr?iz# no(?:qa|pep8)\bcóä—| d¦«}d|vr1t|¦«t| ¦«¦«z Sd}|D] }|dkr |dzdzdz}Œ|dkr|dz }Œ |S)zóReturn the amount of indentation. Tabs are expanded to the next multiple of 8. >>> expand_indent(' ') 4 >>> expand_indent('\t') 8 >>> expand_indent(' \t') 8 >>> expand_indent(' \t') 16 z rxrr*r9r)r€r�r¦)r•Úresultrus r=r›r›sŽ€ð �;Š;�vÑ Ô €DØ �4ÐÐÝ�4‰yŒy�3˜tŸ{š{™}œ}Ñ-Ô-Ñ-Ð-Ø €FØððˆØ �4Š<ˆ<ؘq‘[ 1‘_ qÑ(ˆFˆFØ �SŠ[ˆ[Ø �a‰KˆFˆFà Ø €Mr?cóÊ—| |d¦«dz}t|¦«dz }|dd…dvr |dz }|dz}|d|…d||z zz||d…zS)zÂReplace contents with 'xxx' to prevent syntax matching. >>> mute_string('"abc"') '"xxx"' >>> mute_string("'''abc'''") "'''xxx'''" >>> mute_string("r'abc'") "r'xxx'" r†rrÏNrÐrrÌ)ryr�)r»r¹rÌs r=Ú mute_stringrý9s{€ð �JŠJ�t˜B”xÑ Ô  1Ñ $€EÝ ˆd‰)Œ)�a‰-€Cà ˆBˆCˆC„y�NÐ"Ð"Ø �‰ ˆØ ˆq‰ˆØ ���Œ<˜#  u¡Ñ-Ñ -°°S°T°T´ Ñ :Ð:r?ú.cóL‡‡—i}dx}}| ¦«D]ç}|r|dd…dkr|dz}Œ|dd…dkrht |¦«}d„| ¦«D¦«\}}|| t |||z¦«¦«ŒŽ|dd…dkrK|dd… d d¦«d }|dd …d vr |d d…}t¦«||<Œèˆˆfd „| ¦«D¦«S)z&Return a dictionary of matching lines.Nrr"r z@@ c3ó8K—|]}t|pd¦«V—ŒdS)rÅN)Úint)r;Úgs r=r>zparse_udiff..Zs,èè€ÐGÐG¨a�C   S™MœMÐGÐGÐGÐGÐGÐGr?z+++rrxrr)zb/zw/zi/có|•—i|]8\}}|¯t|‰¦«¯tj ‰|¦«|“Œ9SrP)Úfilename_matchÚosÚpathÚjoin)r;ÚfilepathÚrowsÚparentÚpatternss €€r=rpzparse_udiff..csYø€ð ð ð á ˆX�tØ ð õ# 8¨XÑ6Ô6ð Ý Œ� Š �V˜XÑ&Ô&¨ð ð ð r?) r~Ú HUNK_REGEXrorÁÚupdaterÚr‘ràÚitems) Údiffr r Úrvrrr•Ú hunk_matchr s `` r=Ú parse_udiffrMs_øø€ð €BØÐ€Dˆ5Ø—’Ñ!Ô!ððˆØ ð Ø�B�Q�BŒx˜3ŠˆØ˜‘ �Ø Ø ���Œ8�uÒ Ð Ý#×)Ò)¨$Ñ/Ô/ˆJØGÐG°:×3DÒ3DÑ3FÔ3FÐGÑGÔG‰LˆS�%Ø ˆtŒH�OŠO�E # s¨U¡{Ñ3Ô3Ñ 4Ô 4Ð 4Ð 4Ø �"�1�"ŒX˜Ò Рؘ˜˜”8—>’> $¨Ñ*Ô*¨1Ô-ˆDð�B�Q�BŒxÐ-Ð-Ð-ؘA˜B˜B”x�Ý‘u”uˆBˆt‰Høð ð ð ð ð à "§¢¡ ¤ ð ñ ô ðr?cój—|sgSt|t¦«r|Sg}| d¦«D]}| ¦«}d|vr=tj tj ||¦«¦«}| |  d¦«¦«Œ€|S)zQParse a comma-separated list of paths. Return a list of absolute paths. r²r#) Ú isinstancerr‘rœrrÚabspathrrr€)Úvaluer Úpathsrs r=Únormalize_pathsrjs§€ð ðØˆ Ý�%�ÑÔðØˆ Ø €EØ— ’ ˜CÑ Ô ð'ð'ˆØ�zŠz‰|Œ|ˆØ �$ˆ;ˆ;Ý”7—?’?¥2¤7§<¢<°¸Ñ#=Ô#=Ñ>Ô>ˆDØ � Š �T—[’[ Ñ%Ô%Ñ&Ô&Ð&Ð&Ø €Lr?TcóB‡—|s|Stˆfd„|D¦«¦«S)z{Check if patterns contains a pattern that matches filename. If patterns is unspecified, this always returns True. c3ó8•K—|]}t‰|¦«V—ŒdSrdr)r;Úpatternròs €r=r>z!filename_match..ƒs-øèè€ÐBÐB¨g�w�x Ñ)Ô)ÐBÐBÐBÐBÐBÐBr?)rj)ròr rs` r=rr|s5ø€ð ðØˆÝ ÐBÐBÐBÐB¸ÐBÑBÔBÑ BÔ BÐBr?có8—|D]}||vr||xxdz cc<ŒdS)z^Adds one to the counts of each appearance of characters in s, for characters in countsrNrP)r<ryrus r=rrrr†s=€ðððˆØ �6ˆ>ˆ>Ø �4ˆLˆLŒL˜AÑ ˆLˆL‰Løððr?có„—|dtvp1|d|ddd… ¦«dkS)Nrrr rz\ )rúr¦)Útokens r=Ú _is_eol_tokenrŽs<€Ø �Œ8•wÐ Ð K %¨¤(¨5°¬8°A¬;¨<¨<Ô"8×"?Ò"?Ñ"AÔ"AÀVÒ"KÐKr?cób—eZdZdZ dd„Zd„Zd„Zd„Zd„Zd„Z d „Z d „Z d „Z d „Z d „Zdd„ZdS)ÚCheckerz;Load a Python source file, tokenize it, check coding style.Nc óú—|€t|¦«j}n|rJ‚d|_|j|_|j|_|j|_|j |_ |j |_ |j |_ d|_ |j |_ |j |_ |j|_||_i|_|€d|_|pg|_n™|dkr.d|_t%¦« d¦«|_ne|€\ t)|¦«|_nM#t*$r9t-j¦«dd…\}}|j›d|›�|_g|_Yn wxYw||_|jr~t3|jdd¦«}|dvrZ|d kr|jdd d…|jd<n6|jddd …d kr|jdd d…|jd<|p|j|_|jj|_d|_dS) NFrör"Trú: r)éïéÿþr%rr u)Ú StyleGuideÚoptionsÚ _io_errorÚphysical_checksÚ_physical_checksÚlogical_checksÚ_logical_checksÚ ast_checksÚ _ast_checksr’rårår“rrròÚ_checker_statesr‡rùr~rîÚOSErrorrÞÚexc_infoÚ__name__ÚordÚreportrÚ report_errorr”) reròr‡r'r4ÚkwargsÚexc_typeÚexcÚord0s r=rkzChecker.__init__šs€à ˆ?Ý  Ñ(Ô(Ô0ˆGˆGàÐ Ð �:؈ŒØ 'Ô 7ˆÔØ&Ô5ˆÔØ"Ô-ˆÔØ&Ô6ˆÔØ%Ô4ˆÔØ"Ô.ˆÔ؈ŒØ#Ô0ˆÔØ"Ô.ˆÔØ”ˆŒ Ø ˆŒ à!ˆÔØ Ð Ø#ˆDŒMؘ "ˆDŒJˆJØ ˜Š_ˆ_Ø#ˆDŒMÝ(Ñ*Ô*×5Ò5°dÑ;Ô;ˆDŒJˆJØ ˆ]ð Ý& xÑ0Ô0�” � øÝð ð ð Ý"%¤,¡.¤.°°!°Ô"4‘�˜3Ø$,Ô$5Ð!>Ð!>¸Ð!>Ð!>�”Ø�” � � ð øøøð ˆDŒJØ Œ:ð 6Ý�t”z !”} QÔ'Ñ(Ô(ˆDØ�~Ð%Ð%ؘ6’>�>Ø$(¤J¨q¤M°!°"°"Ô$5�D”J˜q‘M�MØ”Z ”] 2 A 2Ô&¨.Ò8Ð8Ø$(¤J¨q¤M°!°"°"Ô$5�D”J˜q‘MØÐ. ¤ˆŒ Ø œKÔ-ˆÔ؈Œ ˆ ˆ sÃ.DÄAEÅEc óN—tj¦«dd…\}}t|j¦«dkr+|jd}t|¦«dkr |dd…}nd}| |d|dpdd|j›d|jd›�|j¦«dS) zCheck if the syntax is valid.Nrrr )rrrzE901 r#)rÞr1r�rcr5r2Úreport_invalid_syntax)rer7r8rts r=r;zChecker.report_invalid_syntaxÈs®€åœ,™.œ.¨¨!¨Ô,‰ˆ�3Ý ˆsŒx‰=Œ=˜1Ò Ð Ø”X˜a”[ˆFÝ�6‰{Œ{˜QŠˆØ  ! œ�øàˆFØ ×Ò˜& œ) V¨A¤Y ^°!ØD (Ô"3ÐDÐD°s´xÀ´{ÐDÐDØÔ4ñ 6ô 6ð 6ð 6ð 6r?có¸—|j|jkrdS|j|j}|xjdz c_|j€|dd…tvr |d|_|S)z(Get the next line from the input buffer.r^rNr)rˆr‰r‡rrrÛ)rer•s r=ÚreadlinezChecker.readlineÕsg€à Ô ˜tÔ/Ò /Ð /Ø�2ØŒz˜$Ô*Ô+ˆØ ÐÔ˜AÑÐÔØ Ô Ð #¨¨R¨a¨R¬µJÐ(>Ð(>Ø# AœwˆDÔ Øˆ r?có`—g}|D]%}| t||¦«¦«Œ&||ŽS)zRun a check plugin.)rÚgetattr)reraÚargument_namesÚ argumentsrSs r=Ú run_checkzChecker.run_checkßsD€àˆ Ø"ð 2ð 2ˆDØ × Ò �W T¨4Ñ0Ô0Ñ 1Ô 1Ð 1Ð 1؈u�iÐ Ð r?cóR—d|vr"|j |i¦«|_dSdS)z5Prepare custom state for the specific checker plugin.rkN)r/Ú setdefaultrk)rerSr@s r=Úinit_checker_statezChecker.init_checker_stateæs6€à ˜nÐ ,Ð ,Ø!%Ô!5×!@Ò!@ÀÀrÑ!JÔ!JˆDÔ Ð Ð ð -Ð ,r?có—||_|jD]q\}}}| ||¦«| ||¦«}|�=|\}}| |j|||¦«|dd…dkr |d|_ŒrdS)z,Run all physical checks on a raw input line.NrÚE101r)rKr*rErBr5rˆrr)rer•rSrar@rûrtr»s r=Úcheck_physicalzChecker.check_physicalës¢€à!ˆÔØ+/Ô+@ð /ð /Ñ 'ˆD�%˜Ø × #Ò # D¨.Ñ 9Ô 9Ð 9Ø—^’^ E¨>Ñ:Ô:ˆFØÐ!Ø!'‘�˜Ø×!Ò! $Ô"2°F¸DÀ%ÑHÔHÐHؘ˜˜”8˜vÒ%Ð%Ø'+¨A¤w�DÔ$øð /ð /r?có�—g}g}d}dx}x}}|jD]î\}}} } } |tvrŒ|sd| fg}|tjkr| |¦«Œ?|tjkrt |¦«}|rK| \} } || kr-|j|dz |dz }|dks|dvr |dvrd|z}n|| kr | || …|z}| |¦«|t|¦«z }| || f¦«| \}}Œïd  |¦«|_ |o!td  |¦«¦«|_ |S) z!Build a logical line from tokens.rNrr²z{[(r³r9r^) rÑrãrûrrrrýr‡r�rrLr”)reÚlogicalÚcommentsr–Úprev_rowÚprev_colÚmappingrr»r¹rÌr•Ú start_rowrÔr(s r=Úbuild_tokens_linezChecker.build_tokens_line÷s–€àˆØˆØˆØ(,Ð,ˆÐ,�8˜gØ26´+ð 'ð 'Ñ .ˆJ˜˜e S¨$Ø�[Ð(Ð(ØØð 'ؘu˜:˜,�Ø�XÔ-Ò-Ð-Ø—’ Ñ%Ô%Ð%ØØ�Xœ_Ò,Ð,Ý" 4Ñ(Ô(�Øð ;Ø).Ñ&�˜IؘyÒ(Ð(Ø $¤ ¨8°a©<Ô 8¸ÀA¹Ô F�IØ  CÒ'Ð'¨I¸UÐ,BÐ,BØ,0¸Ð,=Ð,=Ø" T™z˜øØ Ò*Ð*Ø ¨Ð 2Ô3°dÑ:�DØ �NŠN˜4Ñ Ô Ð Ø •c˜$‘i”iÑ ˆFØ �NŠN˜F C˜=Ñ )Ô )Ð )Ø#&Ñ ˆX�x�xØŸGšG GÑ,Ô,ˆÔØÐ8¥ b§g¢g¨hÑ&7Ô&7Ñ!8Ô!8ˆŒ ؈r?có¼—|j ¦«| ¦«}|sdSd„|D¦«}|dd\}}|j|dz }t |d|…¦«|_|j|jkr |j|_|jdkr.t|j dd…  ¦«¦«|j D]Ä\}}}|jdkrtd|z¦«|  ||¦«| ||¦«pd D]r\} } t| t ¦«s4|t#j|| ¦«\} } | d| d| z| z f} | | d| d| |¦«ŒsŒÅ|j r+|j|_|j |_|js |j |_d|_g|_dS) z:Build a line from tokens and run all logical checks on it.Ncó—g|]\}}|‘ŒSrPrP)r;rtÚ_s r=rUz)Checker.check_logical..s€Ð;Ð;Ð;¡i f¨a˜6Ð;Ð;Ð;r?rrréPrz rP)r4Úincrement_logical_linerPr‡r›r�r©r¨rrrLr€r,rErBrÚtupleÚbisectÚ bisect_leftr5r¬rªr«rÑ) rerNÚmapping_offsetsrOrÔrÓrSrar@rtr»Ú token_offsetrs r=Ú check_logicalzChecker.check_logicals€à Œ ×*Ò*Ñ,Ô,Ð,Ø×(Ò(Ñ*Ô*ˆØð Ø ˆFà;Ð;°7Ð;Ñ;Ô;ˆØ!(¨¤¨A¤Ñˆ�IØ”Z  ¨A¡ Ô.ˆ Ý)¨*°Z°i°ZÔ*@ÑAÔAˆÔØ Ô ˜tÔ/Ò /Ð /Ø $Ô 0ˆDÔ Ø Œ<˜1Ò Ð Ý �$Ô# C R CÔ(×/Ò/Ñ1Ô1Ñ 2Ô 2Ð 2Ø+/Ô+?ð Eð EÑ 'ˆD�%˜ØŒ|˜qÒ Ð Ý�e˜d‘lÑ#Ô#Ð#Ø × #Ò # D¨.Ñ 9Ô 9Ð 9Ø $§¢¨u°nÑ EÔ EÐ KÈð Eð E‘ �˜Ý! &­%Ñ0Ô0ðFð)0µÔ0BØ'¨ñ11ô11ô)2Ñ%�L #à! !œf c¨!¤f¨v¡o¸ Ñ&DÐE�FØ×!Ò! &¨¤)¨V°A¬Y¸¸eÑDÔDÐDÐDð Eð Ô ð JØ)-Ô):ˆDÔ &Ø$(Ô$5ˆDÔ !ØÔ$ð JØ8<Ô8I�Ô5ØˆÔØˆŒ ˆ ˆ r?có¸— td |j¦«ddt¦«}n1#tt t f$r| ¦«cYSwxYw|jD]o\}}}|||j ¦«}|  ¦«D]C\}}}} |jrt|j|dz ¦«s|  |||| ¦«ŒDŒpdS)z,Build the file's AST and run all AST checks.r^ÚexecrN) Úcompilerr‡Ú PyCF_ONLY_ASTÚ ValueErrorrðÚ TypeErrorr;r.ròÚrunr”r5) rerMrSÚclsr)ÚcheckerÚlinenortr»ras r=Ú check_astzChecker.check_ast;s€ð 0ݘ2Ÿ7š7 4¤:Ñ.Ô.°°F½MÑJÔJˆDˆDøÝ�K­Ð3ð 0ð 0ð 0Ø×-Ò-Ñ/Ô/Ð /Ð /Ð /ð 0øøøà!Ô-ð Cð C‰MˆD�#�rØ�c˜$ ¤ Ñ.Ô.ˆGØ/6¯{ª{©}¬}ð Cð CÑ+�˜  eØ”zðC­¨d¬j¸À!¹Ô.DÑ)EÔ)EðCØ×%Ò% f¨f°d¸EÑBÔBÐBøð Cð Cð Cs‚/2²+A ÁA c#óÂK—|jr%| ddd|jzt¦«tj|j¦«} d}|D]`}|dd|jkrdS|dot|d¦«|_| ||¦«|V—|d}ŒadS#ttj f$r|  ¦«YdSwxYw)z9Tokenize file, run physical line checks and yield tokens.rrzE902 %sr^rNr) r(r5rîrûÚgenerate_tokensr=r‰r”Úmaybe_check_physicalrðÚ TokenErrorr;)reÚtokengenÚ prev_physicalrs r=rhzChecker.generate_tokensGsèè€à Œ>ð KØ × Ò ˜a  I°´Ñ$>Å Ñ JÔ JÐ JÝÔ+¨D¬MÑ:Ô:ˆð )؈MØ!ð )ð )�ؘ”8˜A”; Ô!1Ò1Ð1Ø�F�FØ! !œHÐ7­¨e°A¬h©¬�” Ø×)Ò)¨%°Ñ?Ô?Ð?Ø� � � Ø % a¤� � ð  )ð )øõ�XÔ0Ð1ð )ð )ð )Ø × &Ò &Ñ (Ô (Ð (Ð (Ð (Ð (ð )øøøsÁ B0Á)AB0Â0*CÃCcóB—t|¦«r@|ddkr| |¦«dS| |d¦«dS|dtjkr·d|dvr¯t |d¦«rdSd|_|dd|_|\}}\}}}}|j|jdz d|…|z}| d¦«dd …D]*}| |dz¦«|xjdz c_Œ+d |_dSdSdS) z9If appropriate for token, check current physical line(s).rr^rr|rNTrr†F) rrHrûrr”r“rˆr‡r‘)rerrlrSÚsrcrtr•s r=rizChecker.maybe_check_physicalXsJ€õ ˜Ñ Ô ð! #ð�QŒx˜2Š~ˆ~Ø×#Ò# MÑ2Ô2Ð2Ð2Ð2à×#Ò# E¨!¤HÑ-Ô-Ð-Ð-Ð-Ø �1ŒX�œÒ (Ð (¨T°U¸1´XÐ-=Ð-=õ �E˜!”H‰~Œ~ð Ø�Ø!ˆDŒNØ$ Qœx¨œ{ˆDÔ Ø(-Ñ %ˆAˆs‘K�Q˜  AØ”*˜TÔ-°Ñ1Ô2°7°F°7Ô;¸cÑAˆCØŸ š  $™œ¨¨¨Ô,ð &ð &�Ø×#Ò# D¨4¡KÑ0Ô0Ð0ØÐ Ô  AÑ%Ð Ô Ð Ø"ˆDŒNˆNˆNð3)Ð (Ð-=Ð-=r?rc óö—|j |j|j||¦«t |j¦«|_|jr| ¦«d|_d|_ dx|_ |_ d|_ d|_ g|_dx|_|_d}| ¦«D�]t}|j |¦«|dd…\}}|jdkr�|dd|ddkr1d |ddpd|dd¦«}nd|ddz}t+d |dd›d |›d t,j|d›d |›�¦«|t,jkr|d vr|dz }Œì|d vr|dz}Œö|s||t2vrs|t,jkr| ¦«d|_�Œ.t |j¦«dkr|xjdz c_|jd=�Œ`| ¦«�Œv|jr4| |jd ¦«| ¦«|j ¦«S)z!Run all checks on the input file.rNr^rr z[{}:{}]rzl.%szl.rxrør³r†)r4Ú init_fileròr‡r�r‰r.rfrˆrrr�r¬rªr«rÑr¨r©rhrrr§rrûÚtok_namerürúr[rHÚget_file_results)reÚexpectedÚ line_offsetr rrr»rs r=Ú check_allzChecker.check_all€s�€à Œ ×Ò˜dœm¨T¬Z¸À;ÑOÔOÐOݘtœz™?œ?ˆÔØ Ô ð Ø �NŠNÑ Ô Ð ØˆÔØˆÔØ9:Ð:ˆÔ˜DÔ6Ø "ˆÔØ02ˆÔ-؈Œ Ø/0Ð0ˆÔ˜4Ô,؈Ø×)Ò)Ñ+Ô+ð -ñ -ˆEØ ŒK× Ò ˜uÑ %Ô %Ð %Ø$ Q q SœzÑ ˆJ˜ØŒ|˜qÒ Ð Ø˜”8˜A”; %¨¤(¨1¤+Ò-Ð-Ø#×*Ò*¨5°¬8°A¬;Ð+<¸"¸eÀA¼hÀq¼kÑJÔJ�C�Cà  5¨¤8¨A¤;Ñ.�CÝ�ؘQ”x ”{�{�{ C C C­Ô):¸5À¼8Ô)DÐ)DÐ)DÀdÀdðLñMôMðMà�Xœ[Ò(Ð(ؘ5�=�=ؘa‘K�F�FؘU�]�]ؘa‘K�FøØð -Ø¥Ð(Ð(Ø!¥XÔ%5Ò5Ð5Ø×*Ò*Ñ,Ô,Ð,Ø,-˜Ô)Ñ)ݘTœ[Ñ)Ô)¨QÒ.Ð.àÐ(Ô(¨AÑ-Ð(Ô(Ø œK¨˜N™Nà×*Ò*Ñ,Ô,Ð,ùØ Œ;ð !Ø × Ò  ¤ ¨2¤Ñ /Ô /Ð /Ø × Ò Ñ Ô Ð ØŒ{×+Ò+Ñ-Ô-Ð-r?)NNNN©Nr)r2Ú __module__Ú __qualname__rirkr;r=rBrErHrPr[rfrhrirurPr?r=r!r!—s耀€€€ØEÐEà,0Ø&*ð,ð,ð,ð,ð\ 6ð 6ð 6ðððð!ð!ð!ðKðKðKð /ð /ð /ððððB!ð!ð!ðF Cð Cð Cð)ð)ð)ð"&#ð&#ð&#ðP+.ð+.ð+.ð+.ð+.ð+.r?r!có^—eZdZdZdZd„Zd„Zd„Zd„Zd„Z d„Z d „Z dd „Z dd „Z dd „Zd„ZdS)Ú BaseReportz"Collect the results of the checks.Fcóª—|j|_|j|_d|_d|_t  |jd¦«|_i|_ dSrv) Úbenchmark_keysÚ_benchmark_keysÚ ignore_codeÚ _ignore_codeÚelapsedÚ total_errorsÚdictÚfromkeysÚcountersÚmessages)rer's r=rkzBaseReport.__init__³sJ€Ø&Ô5ˆÔØ#Ô/ˆÔàˆŒ ؈ÔÝŸ š  dÔ&:¸AÑ>Ô>ˆŒ ؈Œ ˆ ˆ r?có6—tj¦«|_dS)zStart the timer.N)ÚtimeÚ _start_time©res r=r¹zBaseReport.start¼s€åœ9™;œ;ˆÔÐÐr?cóF—tj¦«|jz |_dS)zStop the timer.N)r‡rˆr€r‰s r=ÚstopzBaseReport.stopÀs€å”y‘{”{ TÔ%5Ñ5ˆŒ ˆ ˆ r?có¾—||_||_|pd|_||_d|_|jdxxdz cc<|jdxxt |¦«z cc<dS)úSignal a new file.rPrr5rr7N)ròr‡rsrtÚ file_errorsr„r�)reròr‡rsrts r=rpzBaseReport.init_fileÄst€à ˆŒ ؈Œ Ø ˜ BˆŒ Ø&ˆÔØˆÔØ Œ �gÐÐÔ !Ñ#ÐÐÑØ Œ Ð&Ð'Ð'Ô'­3¨u©:¬:Ñ5Ð'Ð'Ñ'Ð'Ð'r?có0—|jdxxdz cc<dS)zSignal a new logical line.r6rN)r„r‰s r=rUz!BaseReport.increment_logical_lineÎs&€à Œ �oÐ&Ð&Ô&¨!Ñ+Ð&Ð&Ñ&Ð&Ð&r?cóX—|dd…}| |¦«rdS||jvr|j|xxdz cc<nd|j|<|dd…|j|<||jvrdS|jr|jst |j¦«|xjdz c_|xjdz c_|S)ú&Report an error, according to options.Nrré) rr„r…rsÚprint_filenamerŽrròr�)rerˆrtr»rar½s r=rzBaseReport.errorÒsÜ€à�B�Q�BŒxˆØ × Ò ˜TÑ "Ô "ð Ø ˆFØ �4”=Ð Ð Ø ŒM˜$Ð Ð Ô  1Ñ $Ð Ð Ñ Ð à"#ˆDŒM˜$Ñ Ø"& q r r¤(ˆDŒM˜$Ñ à �4”=Ð Ð Ø ˆFØ Ô ð ! tÔ'7ð !Ý �$”-Ñ Ô Ð Ø ÐÔ˜AÑÐÔØ ÐÔ˜QÑÐÔØˆ r?có—|jS)z6Return the count of errors and warnings for this file.)rŽr‰s r=rrzBaseReport.get_file_resultsås €àÔÐr?r^cóH‡‡—tˆˆfd„‰jD¦«¦«S)z.Return the total count of errors and warnings.c3ó\•K—|]&}| ‰¦«¯‰j|V—Œ'dSrd)r�r„©r;Úkeyr×res €€r=r>z'BaseReport.get_count..ësWøèè€ðGðGبs¯~ª~¸fÑ/EÔ/EðG�4”= Ô%ðGðGðGðGðGðGr?)Úsumr…©rer×s``r=Ú get_countzBaseReport.get_countésNøø€åðGðGðGðGðGØ"œmðGñGôGñGôGð Gr?cóH‡‡—ˆˆfd„t‰j¦«D¦«S)a Get statistics for message codes that start with the prefix. prefix='' matches all errors and warnings prefix='E' matches all errors prefix='W' matches all warnings prefix='E4' matches all errors that have to do with imports có|•—g|]8}| ‰¦«¯‰j|d›d|›d‰j|›�‘Œ9S)rËr9)r�r„r…r—s €€r=rUz-BaseReport.get_statistics..öseø€ðLðLðLذC·N²NÀ6Ñ4JÔ4JðL ¤ ¨cÔ 2Ð 2Ð 2Ð 2°C°C°C¸¼ÀsÔ9KÐ9KÐLðLðLðLr?)Úsortedr…ršs``r=Úget_statisticszBaseReport.get_statisticsîsGøø€ðLðLðLðLðLÝ! $¤-Ñ0Ô0ðLñLôLð Lr?cóT—| |¦«D]}t|¦«ŒdS)z9Print overall statistics (number of errors and warnings).N)rŸr)rer×r•s r=Úprint_statisticszBaseReport.print_statisticsùs6€à×'Ò'¨Ñ/Ô/ð ð ˆDÝ �$‰KŒKˆKˆKð ð r?cóâ—td |jd¦«¦«|jr=|jD]7}td|j||jz ||j|fz¦«Œ6dSdS)zPrint benchmark numbers.z {:<7.2f} {}zseconds elapsedz%-7d %s per second (%d total)N)rr§r€r}r„)rer˜s r=Úprint_benchmarkzBaseReport.print_benchmarkþs”€å ˆm×"Ò" 4¤<Ð1BÑCÔCÑDÔDÐDØ Œ<ð ,ØÔ+ð ,ð ,�ÝÐ5Ø”} SÔ)¨D¬LÑ8¸#Ø”} SÔ)ð+ñ+ñ,ô,ð,ð,ð ,ð ,ð ,ð ,r?N©r^)r2rwrxrir“rkr¹r‹rprUrrrr›rŸr¡r£rPr?r=rzrz®sÛ€€€€€Ø,Ð,à€Nðððð'ð'ð'ð6ð6ð6ð6ð6ð6ð,ð,ð,ðððð& ð ð ðGðGðGðGð Lð Lð Lð Lððððð ,ð,ð,ð,ð,r?rzcó—eZdZdZdZdS)Ú FileReportz:Collect the results of the checks and print the filenames.TN)r2rwrxrir“rPr?r=r¦r¦ s€€€€€ØDÐDà€N€N€Nr?r¦có<‡—eZdZdZˆfd„Zˆfd„Zˆfd„Zd„ZˆxZS)ÚStandardReportz,Collect and print the results of the checks.có •—t¦« |¦«t |j ¦«|j¦«|_|j|_|j |_ |j |_ dSrd) ÚsuperrkÚ REPORT_FORMATrþr§rÑÚ_fmtÚrepeatÚ_repeatÚ show_sourceÚ _show_sourceÚ show_pep8Ú _show_pep8©rer'Ú __class__s €r=rkzStandardReport.__init__ siø€Ý ‰Œ×Ò˜Ñ!Ô!Ð!Ý!×%Ò% g¤n×&:Ò&:Ñ&<Ô&<Ø&-¤nñ6ô6ˆŒ à”~ˆŒ Ø#Ô/ˆÔØ!Ô+ˆŒˆˆr?cóZ•—g|_t¦« ||||¦«S)r�)Ú_deferred_printrªrp)reròr‡rsrtr´s €r=rpzStandardReport.init_file s0ø€à!ˆÔ݉wŒw× Ò Ø �e˜X {ñ4ô4ð 4r?cóÜ•—t¦« ||||¦«}|rD|j|dks|jr,|j ||||dd…|jf¦«|S)r‘rr’N)rªrr„r®r¶rri)rerˆrtr»rar½r´s €r=rzStandardReport.error szø€å‰wŒw�}Š}˜[¨&°$¸Ñ>Ô>ˆØ ð F�T”] 4Ô(¨AÒ-Ð-°´Ð-Ø Ô × 'Ò 'ؘf d¨D°°°¬H°e´mÐDñ Fô Fð Fàˆ r?c óX—|j ¦«|jD�]\}}}}}t|j|j|j|z|dz||dœz¦«|jrz|t|j¦«krd}n|j|dz }t|  ¦«¦«ttj dd|d|…¦«dz¦«|j r&|r$td|  ¦«z¦«tj ¦«�Œ|jS) z9Print results and return the overall count for this file.r)rr rØr½r»r^z\Sr9Nr%z )r¶Úsortrr¬ròrtr°r�r‡r€rhÚsubr²rœrÞÚstdoutÚflushrŽ)rerˆrtr½r»Údocr•s r=rrzStandardReport.get_file_results' s8€à Ô×!Ò!Ñ#Ô#Ð#Ø48Ô4Hð ñ Ñ 0ˆK˜  t¨SÝ �$”)Øœ ØÔ'¨+Ñ5¸fÀq¹jØ dððññ ô ð ð Ô ð ?Ø¥ T¤Z¡¤Ò0Ð0Ø�D�Dàœ: k°A¡oÔ6�DÝ�d—k’k‘m”mÑ$Ô$Ð$Ý•b”f˜U C¨¨g¨v¨g¬Ñ7Ô7¸#Ñ=Ñ>Ô>Ð>ØŒð , 3ð ,Ý�f˜sŸyšy™{œ{Ñ*Ñ+Ô+Ð+õ ŒJ× Ò Ñ Ô Ð Ñ ØÔÐr?) r2rwrxrirkrprrrÚ __classcell__©r´s@r=r¨r¨ sø€€€€€Ø6Ð6ð,ð,ð,ð,ð,ð4ð4ð4ð4ð4ð ððððð ð ð ð ð ð ð r?r¨có,‡—eZdZdZˆfd„Zˆfd„ZˆxZS)Ú DiffReportz9Collect and print the results for the changed lines only.cób•—t¦« |¦«|j|_dSrd)rªrkÚselected_linesÚ _selectedr³s €r=rkzDiffReport.__init__G s)ø€Ý ‰Œ×Ò˜Ñ!Ô!Ð!Ø Ô/ˆŒˆˆr?cóx•—||j|jvrdSt¦« ||||¦«Srd)rÄròrªr)rerˆrtr»rar´s €r=rzDiffReport.errorK s8ø€Ø ˜dœn¨T¬]Ô;Ð ;Ð ;Ø ˆF݉wŒw�}Š}˜[¨&°$¸Ñ>Ô>Ð>r?)r2rwrxrirkrr¾r¿s@r=rÁrÁD sWø€€€€€ØCÐCð0ð0ð0ð0ð0ð?ð?ð?ð?ð?ð?ð?ð?ð?r?rÁcóJ—eZdZdZd„Zd d„Zd d„Zd d„Zd„Zd d „Z d „Z d „Z dS)r&z-Initialize a PEP-8 instance with few options.cóX—| dt¦«|_| dd¦«}| dd¦«}| dd¦«}t|i|¤Ž}|rdn| dd¦«}| dd¦«}t |||||¦«\} |_|r+| j |¦«d|vr |d|_|j |_ | |_ | j s| j rtnt| _ t!| jpd¦«| _| jsI| jsB| js;| js4t*r-t!t* d ¦«¦«| _n"| jrd nt!| j¦«| _t.dd…| _|j| _| d ¦«| _| d ¦«| _| d ¦«| _| ¦«dS)NÚ checker_classÚ parse_argvFÚ config_fileÚparserrrrPr²r¤rKrLrM)rr!rÈr‚rþÚprocess_optionsrÚ__dict__r Ú input_fileÚrunnerr'ÚreporterÚquietrzr¨rVÚselectrôrÚdoctestÚDEFAULT_IGNOREr‘ÚBENCHMARK_KEYSr|r~Ú get_checksr)r+r-Ú init_report) rercr6rÉrÊrËÚ options_dictÚarglistrr's r=rkzStyleGuide.__init__T s€à#ŸZšZ¨½ÑAÔAˆÔØ—Z’Z  ¨eÑ4Ô4ˆ Ø—j’j °Ñ6Ô6ˆ Ø—’˜H dÑ+Ô+ˆå˜TÐ, VÐ,Ð,ˆ Ø$ÐI�$�$¨,×*:Ò*:¸7ÀDÑ*IÔ*IˆØ×"Ò" 9¨dÑ3Ô3ˆÝ-Ø �Z ¨f°gñ?ô?ш�”à ð 3Ø Ô × #Ò # LÑ 1Ô 1Ð 1ؘ,Ð&Ð&Ø)¨'Ô2�” à”oˆŒ ؈Œ àÔð OØ-4¬]ÐN�z˜zňGÔ å˜wœ~Ð3°Ñ4Ô4ˆŒØ”ð P '¤.ð PØÔ!ð PØ%,¤_ð PÝ:Hð Põ#¥>×#7Ò#7¸Ñ#<Ô#<Ñ=Ô=ˆGŒNˆNð'.¤nÐO˜U˜U½%ÀÄÑ:OÔ:OˆGŒNÝ!/°°°Ô!2ˆÔØ"Ô.ˆÔØ"&§/¢/°/Ñ"BÔ"BˆÔØ!%§¢°Ñ!@Ô!@ˆÔØ!Ÿ_š_¨VÑ4Ô4ˆÔØ ×ÒÑÔÐÐÐr?Ncóf—|p |jj|j¦«|j_|jjS)zInitialize the report instance.)r'rÐr4)rerÐs r=r×zStyleGuide.init_reportz s-€à@˜xÐ@¨4¬<Ô+@À$Ä,ÑOÔOˆŒ ÔØŒ|Ô"Ð"r?có„—|€|j}|jj}|j}| ¦« |D]W}t j |¦«r| |¦«Œ7|  |¦«s ||¦«ŒXn#t$rtd¦«YnwxYw|  ¦«|S)zRun all checks on the paths.Nz ... stopped) rr'r4rÏr¹rrÚisdirÚ input_dirÚexcludedÚKeyboardInterruptrr‹)rerr4rÏrs r=Ú check_fileszStyleGuide.check_files sÕ€à ˆ=Ø”JˆEØ”Ô$ˆØ”ˆØ� Š ‰Œˆð !Øð !ð !�Ý”7—=’= Ñ&Ô&ð!Ø—N’N 4Ñ(Ô(Ð(Ð(ØŸš tÑ,Ô,ð!Ø�F˜4‘L”L�Løð  !øõ !ð !ð !ð !Ý �-Ñ Ô Ð Ð Ð ð !øøøà� Š ‰ Œ ˆ ؈ s²AB  B)Â(B)rcó¦—|jjrtd|z¦«| |||j¬¦«}| ||¬¦«S)z'Run all checks on a Python source file.z checking %s)r‡r')rsrt)r'rrrÈru)reròr‡rsrtÚfcheckers r=rÎzStyleGuide.input_file‘ s^€à Œ<Ô ð ,Ý �- (Ñ*Ñ +Ô +Ð +Ø×%Ò%Ø ˜E¨4¬<ð&ñ9ô9ˆà×!Ò!¨8ÀÐ!ÑMÔMÐMr?cóx—| d¦«}| |¦«rdS|jjj}|jj}|jj}|j}tj |¦«D]È\}}}|rtd|z¦«|dxxdz cc<t|¦«D]-} | | |¦«r|  | ¦«Œ.t|¦«D]Q} t| |¦«r?| | |¦«s)|tj || ¦«¦«ŒRŒÉdS)z9Check all files in this directory and all subdirectories.r#rz directory r4rN)r€rÞr'r4r„rròrÏrÚwalkrržÚremoverrr) reÚdirnamer„rÚ filepatternsrÏÚrootÚdirsr5Úsubdirròs r=rÝzStyleGuide.input_dir™ sZ€à—.’. Ñ%Ô%ˆØ �=Š=˜Ñ !Ô !ð Ø�1Ø”<Ô&Ô/ˆØ”,Ô&ˆØ”|Ô,ˆ Ø”ˆÝ!#¤¨Ñ!1Ô!1ð 9ð 9Ñ ˆD�$˜Øð +Ý�l TÑ)Ñ*Ô*Ð*Ø �]Ð #Ð #Ô # qÑ (Ð #Ð #Ñ #Ý  ™,œ,ð (ð (�Ø—=’= ¨Ñ.Ô.ð(Ø—K’K Ñ'Ô'Ð'øÝ" 5™MœMð 9ð 9�õ# 8¨\Ñ:Ô:ð9àŸ š  h°Ñ5Ô5ð9ð�F�2œ7Ÿ<š<¨¨hÑ7Ô7Ñ8Ô8Ð8øð  9ð 9ð 9r?cóJ—|jjsdStj |¦«}t ||jj¦«rdS|r tj ||¦«}tj |¦«}t ||jj¦«S)zxCheck if the file should be excluded. Check if 'options.exclude' contains a pattern matching filename. FT)r'ÚexcluderrÚbasenamerrr)reròr rís r=rÞzStyleGuide.excluded± sŒ€ð Œ|Ô#ð Ø�5Ý”7×#Ò# HÑ-Ô-ˆÝ ˜( D¤LÔ$8Ñ 9Ô 9ð Ø�4Ø ð 6Ý”w—|’| F¨HÑ5Ô5ˆHÝ”7—?’? 8Ñ,Ô,ˆÝ˜h¨¬ Ô(<Ñ=Ô=Ð=r?cóö‡—t‰¦«dkr'tˆfd„|jjD¦«¦«rdS‰ |jj¦«o‰ |jj¦« S)zàCheck if the error code should be ignored. If 'options.select' contains a prefix of the error code, return False. Else, if 'options.ignore' contains a prefix of the error code, return True. rc3óB•K—|]}| ‰¦«V—ŒdSrdre)r;r<r½s €r=r>z)StyleGuide.ignore_code..Ç sCøèè€ð!?ð!?Ø%&ð"#§¢¨dÑ!3Ô!3ð!?ð!?ð!?ð!?ð!?ð!?r?F)r�rjr'rÒr�rô)rer½s `r=r~zStyleGuide.ignore_codeÀ s‡ø€õ ˆt‰9Œ9�qŠ=ˆ=�Sð!?ð!?ð!?ð!?Ø*.¬,Ô*=ð!?ñ!?ô!?ñ?ô?ˆ=à�5Ø—’ ¤ Ô 3Ñ4Ô4ð9Ø—O’O D¤LÔ$7Ñ8Ô8Ð8ð :r?cóꇗg}t| ¦«D]B\}}|\}}tˆfd„|D¦«¦«r| |j||f¦«ŒCt |¦«S)z½Get all the checks for this category. Find all globally visible functions where the first argument name starts with argument_name and which contain selected tests. c3óH•K—|]}|o‰ |¦« V—ŒdSrd)r~)r;r½res €r=r>z(StyleGuide.get_checks..Ö s9øèè€ÐKÐK¸T˜Ð7 ×!1Ò!1°$Ñ!7Ô!7Ð8ÐKÐKÐKÐKÐKÐKr?)r_rrjrr2rž)reÚ argument_nameÚchecksraÚattrsrbrcs` r=rÖzStyleGuide.get_checksÍ s„ø€ð ˆÝ# MÔ2×8Ò8Ñ:Ô:ð =ð =‰LˆE�5Ø!‰MˆU�DÝÐKÐKÐKÐKÀUÐKÑKÔKÑKÔKð =Ø— ’ ˜uœ~¨u°dÐ;Ñ<Ô<Ð<øÝ�f‰~Œ~Ðr?rd)NNr) r2rwrxrirkr×ràrÎrÝrÞr~rÖrPr?r=r&r&Q s«€€€€€Ø7Ð7ð$ð$ð$ðL#ð#ð#ð#ð ðððð$NðNðNðNð9ð9ð9ð0 >ð >ð >ð >ð :ð :ð :ð ð ð ð ð r?r&cóð—t||d¬¦«}gd¢|_| ddddd¬ ¦«| d d ddd ¬ ¦«| d dddd¬ ¦«| dddd¬¦«| ddtd¬¦«| dddd¬¦«| ddd d!¬¦«| d"dd d#tz¬¦«| d$dd%¬&¦«| d'dd(¬&¦«| d)dd*¬&¦«| d+dd,¬&¦«| d-d.d/t d0¬1¦«| d2d.d/d3d4¬1¦«| d5d.d/t d6¬1¦«| d7dd8¬&¦«| d9d:d;d<¬¦«| d=dd>¬&¦«| d?¦«}tj   t¦«r0| d@dAdB¬C¦«| dDddE¬&¦«| dFddG¬&¦«|S)Hz"Create the parser for the program.z%prog [options] input ...)ÚprogÚversionÚusage)rìròrÒrôzmax-line-lengthzmax-doc-lengthz indent-sizez hang-closingrÜr§rÑz show-pep8z show-sourceÚ statisticsrz-vz --verboserrÜz(print status messages, or debug with -vv)rÚactionÚhelpz-qz--quietz+report only file names, or nothing with -qqz-rz--repeatTÚ store_truez1(obsolete) show all occurrences of the same errorz--firstÚ store_falser­z#show first occurrence of each error)rúÚdestrûz --excluder z[exclude files or directories which match these comma separated patterns (default: %default)©Úmetavarrrûz --filenamez*.pyzjwhen parsing directories, only check filenames matching these comma separated patterns (default: %default)z--selectrõr^z&select errors and warnings (e.g. E,W6)z--ignorez2skip errors and warnings (e.g. E4,W) (default: %s)z --show-sourcezshow source code for each error)rúrûz --show-pep8z3show text of PEP 8 for each error (implies --first)z --statisticszcount errors and warningsz--countzgprint total number of errors and warnings to standard error and set exit code to 1 if total is not nullz--max-line-lengthrrÀz3set maximum allowed line length (default: %default))Útyperrrûz--max-doc-lengthNzSset maximum allowed doc line length and perform these checks (unchecked if not set)z --indent-sizez9set how many spaces make up an indent (default: %default)z--hang-closingzNhang closing bracket instead of matching indentation of opening bracket's linez--formatr§rz.set the error format [default|pylint|]z--diffzSreport changes only within line number ranges in the unified diff received on STDINzTesting Optionsz --testsuiteÚdirzrun regression tests from dir)rrûz --doctestzrun doctest on myselfz --benchmarkzmeasure processing speed) rÚconfig_optionsÚ add_optionÚDEFAULT_EXCLUDErÔÚMAX_LINE_LENGTHÚ INDENT_SIZEÚadd_option_grouprrÚexistsÚTESTSUITE_PATH)rör÷rËrps r=Ú get_parserr Û sÕ€å ˜t¨WØ ;ð=ñ=ô=€FðFðFðF€FÔð ×Ò�d˜K°¸7ØEðñGôGðGà ×Ò�d˜I¨q¸ØHðñJôJðJà ×Ò�d˜J°¸\ØNðñPôPðPà ×Ò�i¨ ¸HØ@ðñBôBðBà ×Ò�k¨:½ðJðñKôKðKð ×Ò�l¨JÀð1ðñ2ô2ð2ð ×Ò�j¨(¸BØCðñEôEðEà ×Ò�j¨(¸Bð+Ý-;ñ<ðñ=ô=ð=ð ×Ò�o¨lØ<ðñ>ô>ð>à ×Ò�m¨Lð/ðñ0ô0ð0ð ×Ò�n¨\Ø6ðñ8ô8ð8à ×Ò�i¨ ð/ðñ0ô0ð0ð ×ÒÐ)°¸sÝ-ð1ðñ2ô2ð2ð ×ÒÐ(¨u¸cØ"ðAðñBôBðBð ×Ò�o¨E¸3Ý)ð1ðñ2ô2ð2ð ×ÒÐ&¨|ðCðñDôDðDð ×Ò�j¨(¸IØKðñMôMðMà ×Ò�h |ð@ðñAôAðAð × #Ò #Ð$5Ñ 6Ô 6€EÝ „w‡~‚~•nÑ%Ô%ð7Ø ×Ò˜°Ø=ð ñ ?ô ?ð ?à ×Ò˜¨\Ø5ð ñ 7ô 7ð 7à ×Ò�]¨<Ø4ðñ6ô6ð6à €Mr?c ó~‡—t¦«}|j}tj}tr\tj t¦«r8|jrtdtz¦«|  t¦«|o;tj  tj  |¦«¦«xŠ}|rf|  ˆfd„tD¦«¦«r‰}|jrtd‰z¦«n$tj  ‰¦«\Š}|°f|rMtj |¦«r.|jrtd|z¦«|  |¦«d}| |j¦«r|j}n+| d¦«rd}t!jd¦«|�r`d„|jD¦«} | g¦«\} } | |¦«D�]} |  d d ¦«|jvrtd | z¦«Œ3|jd kr7td  | | || ¦«¦«¦«|  d d ¦«} | | }|dvr| || ¦«}nG|dvr| || ¦«}n,| || ¦«}| dkrt7||¦«}t9| | |¦«�Œ| || ¬¦«\}} dx|_|_|S)a{Read and parse configurations. If a config file is specified on the command line with the "--config" option, then only it is used for configuration. Otherwise, the user configuration (~/.config/pycodestyle) and any local configurations in the current directory or above will be merged together (in that order) using the read method of ConfigParser. zuser configuration: %sc3óX•K—|]$}tj ‰|¦«V—Œ%dSrd)rrr)r;Úfnr s €r=r>zread_config..9 s3øèè€ÐIÐI°B•r”w—|’| F¨BÑ/Ô/ÐIÐIÐIÐIÐIÐIr?zlocal configuration: in %szcli configuration: %sNÚpep8z0[pep8] section is deprecated. Use [pycodestyle].có6—i|]}|j|jp|j“ŒSrP)rþrrú©r;Úos r=rpzread_config..M s%€ÐNÐNÐN°a�q”v˜qœvÐ1¨¬ÐNÐNÐNr?rSr"z unknown option '%s' ignoredrz {} = {})rrÜ)rürýrì)rYF)rÚconfigrÚcurdirÚ USER_CONFIGrÚisfilerrrørÚ commonprefixÚPROJECT_CONFIGr‘Ú has_sectionröÚwarningsÚwarnÚ option_listÚ parse_argsr'r:rr§rþÚgetintÚ getbooleanrÚsetattrrÓr)r'rcrÙrËrÚcli_confÚ local_dirÚtailÚpycodestyle_sectionrÚ new_optionsr)ÚoptÚnormalized_optÚopt_typerr s @r=Ú read_configr)! scø€õÑ Ô €FàŒ~€Hå” €Iåð!•r”w—~’~¥kÑ2Ô2ð!Ø Œ?ð :Ý Ð*­[Ñ8Ñ 9Ô 9Ð 9Ø� Š •KÑ Ô Ð àÐH�RœWŸ_š_­R¬W×-AÒ-AÀ$Ñ-GÔ-GÑHÔHÐH€FˆTØ ð/Ø �;Š;ÐIÐIÐIÐI½.ÐIÑIÔIÑ IÔ Ið ØˆIØŒð =ÝÐ2°VÑ;Ñ<Ô<Ð<Ø ÝœŸš vÑ.Ô.‰ˆ�ð ð/ðð•B”G—N’N 8Ñ,Ô,ðØ Œ?ð 6Ý Ð)¨HÑ4Ñ 5Ô 5Ð 5Ø� Š �HÑÔÐàÐØ ×Ò˜&œ+Ñ&Ô&ðJØ$œkÐÐØ × Ò ˜FÑ #Ô #ðJØ$ÐÝŒ ÐHÑIÔIÐIàñGØNÐN¸6Ô;MÐNÑNÔNˆ ð#×-Ò-¨bÑ1Ô1ш�bð—>’>Ð"5Ñ6Ô6ð 8ñ 8ˆCØ�{Š{˜3 Ñ$Ô$¨FÔ,AÐAÐAÝÐ5¸Ñ;Ñ<Ô<Ð<ØØŒ Ò"Ð"Ý�k×(Ò(¨Ø)/¯ªÐ4GÈÑ)MÔ)MñOôOñPôPðPà Ÿ[š[¨¨cÑ2Ô2ˆNØ" >Ô2ˆHØÐ+Ð+Ð+ØŸ š Ð&9¸3Ñ?Ô?��ØÐ:Ð:Ð:Ø×)Ò)Ð*=¸sÑCÔC��àŸ š Ð#6¸Ñ<Ô<�Ø! YÒ.Ð.Ý+¨E°9Ñ=Ô=�EÝ �K °Ñ 7Ô 7Ð 7Ñ 7ð×)Ò)¨'¸+Ð)ÑFÔF‰ ˆ�"Ø*/Ð/€G„O�gÔ'Ø €Nr?Fc ó4—|st¦«}| d¦«sT| dd|j›dd |j¦«›d�¬¦«}| dd|d ¬ ¦«|s|sg}| |¦«\}}d |_|�||_ |  d d ¦«r|  |j ¦«nƒ|  dd ¦«sm|r@|s>|j std„tD¦«¦«rdg}n| d¦«t#||||¦«}|o|jdkot&|_t)|j¦«|_t-|j¦«|_t)|j¦«|_t)|j¦«|_|j rOt4|_t7¦«}t9||j|d¦«|_t=|j¦«}||fS)zÖProcess options passed either via arglist or command line args. Passing in the ``config_file`` parameter allows other tools, such as flake8 to specify their own options to be processed in pycodestyle. z--configÚ Configurationz'The project options are read from the [z‡] section of the tox.ini file or the setup.cfg file located in any parent folder of the path(s) being processed. Allowed options are: z, rþ)Ú descriptionrzuser config file locationrÿNrFrÓc3óTK—|]#}tj |¦«V—Œ$dSrd)rrr )r;rSs r=r>z"process_options..� sDèè€ð#?ð#?Ø'+õ$&¤7§>¢>°$Ñ#7Ô#7ð#?ð#?ð#?ð#?ð#?ð#?r?zinput not specifiedrr)r Ú has_optionrrörrrrrÐrÚ ensure_valuerrrrjrrr)rÑr¦Ú_parse_multi_optionsròrrìrÒrôrÁrùrrÃrž) rÙrÉrÊrËrrpr'rcrös r=rÌrÌl sN€ð ðÝ‘”ˆØ × Ò ˜ZÑ (Ô (ð;Ø×'Ò'¨¨ðŒ[ˆ[ˆ[˜$Ÿ)š) FÔ$9Ñ:Ô:Ð:Ð:ð <ð(ñ>ô>ˆð ×Ò˜¨V¸[Ø9ð ñ ;ô ;ð ;ð ð˜:ð؈ð×'Ò'¨Ñ0Ô0�O€WˆdØ€GÔðÐØ!ˆŒà×Ò˜K¨Ñ/Ô/ð LØ � Š �GÔ%Ñ&Ô&Ð&Ð&Ø × !Ò ! )¨UÑ 3Ô 3ðLØ ð 4˜dð 4ØŒ|ð 4�sð#?ð#?Ý/=ð#?ñ#?ô#?ñ ?ô ?ð 4à�u��à— ’ Ð2Ñ3Ô3Ð3ݘg t¨W°fÑ=Ô=ˆØ%ÐK¨'¬-¸1Ò*<ÐKňÔå+¨GÔ,<Ñ=Ô=€GÔÝ% g¤oÑ6Ô6€G„OÝ)¨'¬.Ñ9Ô9€G„NÝ)¨'¬.Ñ9Ô9€G„Nà„|ð.Ý%ˆÔÝÑ!Ô!ˆÝ!,¨U°GÔ4DÀdÈ1ÄgÑ!NÔ!NˆÔÝ�gÔ,Ñ-Ô-ˆà �Dˆ=Ðr?r²cóH—|rd„| |¦«D¦«S|S)zgSplit and strip and discard empties. Turns the following: A, B, into ["A", "B"] có^—g|]*}| ¦«¯| ¦«‘Œ+SrP)rœrs r=rUz(_parse_multi_options..® s-€ÐKÐKÐK˜aÀÇÂÁÄÐK�—’‘ ” ÐKÐKÐKr?)r‘)r'Ú split_tokens r=r0r0£ s1€ððØKÐK 7§=¢=°Ñ#=Ô#=ÐKÑKÔKÐKàˆr?có`—ddl} | |jd„¦«n#t$rYnwxYwtd¬¦«}|j}|js|jrddlm}||¦«}n|  ¦«}|j r|  ¦«|j r|  ¦«|jr|js| ¦«|jrQ|jr4t$j t+|j¦«dz¦«t%jd¦«dSdS) z.Parse options and run checks on Python source.rNcó*—tjd¦«S)Nr)rÞÚexit)ÚsignumÚframes r=úz_main..¹ s€½C¼HÀQ¹K¼K€r?T)rÉ)Ú run_testsr|r)ÚsignalÚSIGPIPEÚAttributeErrorr&r'rÓrÚtestsuite.supportr:ràrùr¡Ú benchmarkr£rÑÚ print_resultsr�rÜrÞÚstderrÚwriterãr6)r;Ú style_guider'r:r4s r=Ú_mainrD³ se€à€M€M€Mð Ø� Š �f”nÐ&GÐ&GÑHÔHÐHÐHøÝ ð ð ð Ø ˆð øøøõ¨Ð-Ñ-Ô-€KØÔ!€Gà„ð+˜'Ô+ð+Ø/Ð/Ð/Ð/Ð/Ð/Ø�˜;Ñ'Ô'ˆˆà×(Ò(Ñ*Ô*ˆàÔð"Ø×ÒÑ!Ô!Ð!àÔð!Ø×ÒÑ Ô Ð àÔð ¤ðØ×ÒÑÔÐà ÔðØ Œ=ð >Ý ŒJ× Ò �S Ô!4Ñ5Ô5¸Ñ<Ñ =Ô =Ð =Ý Œ�‰ Œ ˆ ˆ ˆ ððs †#£ 0¯0Ú__main__rd)Nrþ)T)NFNNN)r²)™rirWrVrÍrrhrÞr‡rûrrÚ functoolsrÚoptparserÚ configparserrÚiorÚ ImportErrorÚ ConfigParserrßÚcallabler?r Ú __version__rrÔÚplatformrÚ expanduserrrÚgetenvrræÚ__file__r rr£rärr«r_Ú frozensetrÐÚkwlistr;r:r8rár<ÚASSIGNMENT_EXPRESSION_OPr9rÛrÿrúÚINDENTÚDEDENTrãrÚ ERRORTOKENr7rÕr^rnr´rµrgr¤r·rBr”r›ržrÀr-rsr r¥ršr§rvrir¢r_r[rlrvrzrƒr‹r˜r¡r¨r¾rÅrÔrárër r+r.r@rDrMrVr[rmr{r�rƒr„rŠrŽr�r™rœr r£r¯r²r¶r¹r¼rÙrÞrêrîrùr§rtr”r›rýrrrrrrrr!rzr¦r¨rÁr&r r)rÌr0rDr2rPr?r=úrXs` ðð8ðð*€ € € Ø€€€Ø€€€Ø € € € Ø € € € Ø € € € Ø € € € Ø€€€Ø€€€ØÐÐÐÐÐØÐÐÐÐÐØ!Ð!Ð!Ð!Ð!Ð!ð-Ø,Ð,Ð,Ð,Ð,Ð,Ø Ð Ð Ð Ð Ð Ð øØð-ð-ð-Ø,Ð,Ð,Ð,Ð,Ð,Ð,Ð,ð-øøøð Ô˜7Ò"Ð"؈��˜ :¨tÑ4Ô4Ñ5Ô5ð #ð$˜ ˜ ™ œ  HÔ$5Ñ6Ô6€HÔà€ à;€Ø9€ð Ø „|�wÒÐØ”g×(Ò(Ð):Ñ;Ô;ˆ ˆ à”g—l’lØ ˆBŒIÐ'Ñ (Ô (Ð K¨B¬G×,>Ò,>¸{Ñ,KÔ,KØ ñ ô ˆ øøððððØ€K€K€Kðøøøð*€Ø”—’˜bœgŸošo¨hÑ7Ô7¸ÑEÔE€Ø€ðàð ðÐð €Ø€ à<Ø5ðð€ ð € Ø ˆYÐ0Ð0Ð0Ñ 1Ô 1€ Ø ˆ9�W”^ w°Ð&8Ñ8Ñ 9Ô 9¸JÑ F€Ø�)Ð7Ð7Ð7Ñ8Ô8€Ø� Ð?Ð?Ð?Ñ@Ô@€ Ø%×+Ò+Ð,LÐ,LÐ,LÑMÔMÐØ%(Ô%5¸Ò%?Ð%?˜D˜6˜6ÀRÐØ�ið!#ð!#ð!#ðñ !ñôÐð ˆY�yÑ !Ô !€ Ø ˆ)�X”[ (Ô"2Ð3Ñ 4Ô 4€Ø�mŠm˜Xœ_¨h¬oÐ>Ñ?Ô?€ à×!Ò! 8Ô#3°XÔ5HÐ"IÑJÔJ€ ØLÐLÐL€àˆrŒz˜+Ñ&Ô&€ Ø�B”JÐ1Ñ2Ô2ÐØ �b”jÐ!@ÑAÔAÐØ�"”*Ð.Ñ/Ô/€Ø�"”*˜\Ñ*Ô*€Ø(˜bœjÐ)KÑLÔLÐØ)˜rœzÐ*>Ñ?Ô?ÐØ$˜"œ*ð&FñGôGÐà#˜œð%1ñ2ô2Ðà�R”Zð!?ñ@ô@Ðà�” Ð2°T·Y²Y¸xÑ5HÔ5HÑHÑIÔI€ Ø�”ÐIÑJÔJ€ØˆrŒz˜-Ñ(Ô(€ Ø ˆRŒZÐEÑ FÔ F€ Ø!�r”zÐ"9Ñ:Ô:ÐØ'˜RœZÐ(NÑOÔOÐØ$. B¤JØ×Ò˜Ÿšð"ð"ðCð"ñ"ô"ñôñôñ %ô %Ð!ðˆrŒzÐJÑKÔK€ Ø�R”Z  Ñ.Ô.Ðà°¸BÐ ?Ð ?€ðBðBðBððððð.ðMðMñ„ðMð(ðDðDñ„ðDðð<ð<ñ„ð<ð*ð Dð Dñ„ð Dð ðHðHñ„ðHðJ :ð :ð :ðFðR/ðR/ñ„ðR/ðjð>ð>ñ„ð>ð@ðGðGñ„ðGð.ðDðDñ„ðDð,ðEðEñ„ðEð:ð&1ð&1ñ„ð&1ðRðKEðKEñ„ðKEð\ð$ð$ñ„ð$ðNðHðHñ„ðHð.ðoðoñ„ðoðdðJðJñ„ðJð$ð>ð>ñ„ð>ðBð)ð)ñ„ð)ðXð=ð=ñ„ð=ð&ð71ð71ñ„ð71ðtð<*ð<*ñ„ð<*ð~ð%ð%ñ„ð%ðV� Ð*Ñ+Ô+¨i¨i¸Ñ.AÔ.AÑA€ ðððð!ð!ð!ð4ðBðBñ„ðBð:ððñ„ððDð!7ð!7ñ„ð!7ðHðJðJñ„ðJð*ðMðMñ„ðMð.ð =ð =ñ„ð =ð ðPðPñ„ðPðfð =ð =ñ„ð =ðð Kð Kñ„ð Kðð 7ð 7ñ„ð 7ððAðAñ„ðAðð85ð85ñ„ð85ðvðB ðB ñ„ðB ðLð, ð, ñ„ð, ðh!ð!ð!ðCðCðCð €y€y��~„~�j�b”jÐ!5°r´tÑ<Ô<ÔCÑDÔD€ðððð8;ð;ð;ð(ðððð:#%¤)ððððð$CðCðCðCððððLðLðLðT.ðT.ðT.ðT.ðT.ñT.ôT.ðT.ðnW,ðW,ðW,ðW,ðW,ñW,ôW,ðW,ðtðððð�ñôðð 3 ð3 ð3 ð3 ð3 �Zñ3 ô3 ð3 ðl ?ð ?ð ?ð ?ð ?�ñ ?ô ?ð ?ðGðGðGðGðGñGôGðGðT"¨;ðCðCðCðCðLHðHðHðVAEØ)-ð4ð4ð4ð4ðn ð ð ð ð ðððD ˆzÒÐØ €E�G„G€G€G€GðÐs$º AÁ AÁAÂA)DÄDÄD