bg*hddlmZddlZddlZddlZddlmZmZddlm Z ddl m Z ddl m Z mZddlmZddlmZdd lmZmZmZdd lmZdd lmZmZmZmZdd lmZdd l m!Z!m"Z"m#Z#m$Z$m%Z%ddl&m'Z'm(Z(e rddl)m*Z*ej+GddeZ,Gdde,Z-Gdde,Z.dS)) annotationsN)IterableSequence)cleandoc) TokenInfo) TYPE_CHECKINGAny)nodes)_ArgumentsProvider) _MSG_ORDERMAIN_CHECKER_NAME WarningScope)InvalidMessageError) Confidence IRawChecker ITokenChecker implements)MessageDefinition)ExtraMessageOptionsMessageDefinitionTuple OptionDictOptionsReportsCallable)get_rst_section get_rst_title)PyLinterceZdZUdZded<dZded<iZded<dZd ed <d Zd ed <d=dZ d>dZ d>dZ d?dZ d@dZ d@dZ dAdBd"Z dCdDd.ZdEd/ZdFd3ZedGd5ZdHd6ZdEd7ZdEd8ZdId9ZdJd<ZdS)K BaseCheckerstrnameroptions!dict[str, MessageDefinitionTuple]msgsz,tuple[tuple[str, str, ReportsCallable], ...]reportsTboolenabledlinterrreturnNonect|ddrtjdtd|j|j|_||_tj||dS)z5Checker instances should have the linter as argument.__implements__NzUsing the __implements__ inheritance pattern for BaseChecker is no longer supported. Child classes should only inherit BaseChecker or any of the other checker types from pylint.checkers. stacklevel) getattrwarningswarnDeprecationWarningr!lowerr)r __init__)selfr)s m/builddir/build/BUILD/cloudlinux-venv-1.0.7/venv/lib/python3.11/site-packages/pylint/checkers/base_checker.pyr6zBaseChecker.__init__0s{ 4)4 0 0  MC#      9  ))DI #D&11111otherr c8t|tsdS|jtkrdS|jtkrdSt |jdr)t |jdsdS|j|jkS)zSorting of checkers.FTzpylint.checkers) isinstancerr!r type __module__ startswithr7r:s r8__gt__zBaseChecker.__gt__@s%-- 5 9) ) )5 :* * *4 :: + +,= > > t H H ZZ 122 5y5:%%r9ctt|tsdS|j|j|j|jkS)z$Permit to assert Checkers are equal.F)r<rr!r%r@s r8__eq__zBaseChecker.__eq__NsB%-- 5)(TY((uz,G5:,G,GGGr9intc<t|j|jS)zMake Checker hashable.)hashr!r%r7s r8__hash__zBaseChecker.__hash__Tsty-$)--...r9c|jrdnd}d|j}|d|jd|dS)NCheckerzDisabled checkerz', 'z 'z' (responsible for 'z'))r(joinr%keysr!)r7statusr%s r8__repr__zBaseChecker.__repr__XsQ"lB0B{{49>>++,,CCDICC4CCCCr9ctj5tjdt||j||jcdddS#1swxYwYdS)zThis might be incomplete because multiple classes inheriting BaseChecker can have the same name. See: MessageHandlerMixIn.get_full_documentation() ignorecategory)r%r#r&N)r2catch_warningsfilterwarningsr4get_full_documentationr%options_and_valuesr&rGs r8__str__zBaseChecker.__str__]s  $ & &    #H7I J J J J..Y(?(?(A(A4</                  sAA00A47A4N%Iterable[tuple[str, OptionDict, Any]]*Sequence[tuple[str, str, ReportsCallable]]doc str | Nonemodule show_optionscDd}|jddd}|r |d|dz }|t|ddz }|r |d |d z }|d |jd z }|r+|t|d dz }|t |dz }t |} | rE|r-|t|ddz }|t d| dz }n|d|jd|jdz }|rw|t|ddz }t|dD]7\} } | | | } || ddz }8|dz }|r0|t|ddz }|D]} |d| ddzz }|dz }|dz }|S)Nr_ z checkerz.. _z: ~ zThis checker is provided by ``z``. z"Verbatim name of the checker is ``z``. z Documentation^z z OptionszSee also :ref:`z# checker's options' documentation ` z MessagescRtj|dd|dfS)Nr)r index)kvs r8z4BaseChecker.get_full_documentation..s"j.>r!uQx.H.H"Q%-Pr9)keyF) checkerrefz Reportsz:%s: %s r.) r!replacetitlerrlistrsorteditems$create_message_definition_from_tuple format_help)r7r%r#r&rZr\r]result checker_title options_listmsgidmsgmsg_defreports r8rUz"BaseChecker.get_full_documentationisk9,,S#66<<>>HHH  + *V*** *F]=#66::::  E DvDDD DFItyIIII  - m}$D$D$DcJJ JF #,,, ,FG}}  t t-=(B(B(BCHHH_T<@@DDDDsDIssZ^Zcssss   m}$?$?$?EE EF$ "P"P G G sCCE3OOW00E0BBFFFF dNF   m}$>$>$>DD DF!  &!*, dNF$ r9ruline int | Nonenodenodes.NodeNG | Noneargs confidenceConfidence | None col_offset end_linenoend_col_offsetc H|j||||||||dSN)r) add_message) r7ruryr{r}r~rrrs r8rzBaseChecker.add_messages9  4tZZ     r9cd}g}|jD]s}|jr |>||jddkr+d}|d|jd|dz }|d|d z }t||jdd}||jtdS) a<Check the consistency of msgid. msg ids for a checker should be a string of len 4, where the two first characters are the checker id and the two last the msg id in this checker. :raises InvalidMessageError: If the checker id in the messages are not always the same. Nrez(Inconsistent checker part in message id 'z' (expected 'xzxx' zbecause we already had z).)messagessharedrurappend)r7 checker_id existing_idsmessage error_msgs r8check_consistencyzBaseChecker.check_consistencys  } / /G~ %* ac8J*J*JF NNNjNNNN G|GGGG ))444 qs+J    . . . . / /r9 msg_tuplerrc\tj5tjdtt |t t fr tj}nOt|ttfr'tj dttj}n tj }dddn #1swxYwYi}t|dkr|\}}}}n+t|dkr|\}}}nd}t||d|t#|||||fi|S)NrPrQzCheckers should subclass BaseTokenChecker or BaseRawFileChecker instead of using the __implements__ mechanism. Use of __implements__ will no longer be supported in pylint 3.0rzMessages should have a msgid, a symbol and a description. Something like this : "W1234": ( "message", "message-symbol", "Message description with detail.", ... ), scope)r2rSrTr4r<BaseTokenCheckerBaseRawFileCheckerrLINErrrr3NODElenr setdefaultr) r7rur default_scoper#rvsymboldescrrs r8rpz0BaseChecker.create_message_definition_from_tuples~ $ & & 2 2  #H7I J J J J$!13E FGG 2 , 1 D; ">?? 2 @'  !- 1 , 1  2 2 2 2 2 2 2 2 2 2 2 2 2 2 2(* y>>Q  ,5 )S&% ^^q #, S&%%I&i00 07M222 uc5&LLGLLLsBB44B8;B8list[MessageDefinition]chfdtjDS)NcBg|]\}}||Sr")rp).0rurr7s r8 z(BaseChecker.messages..s=    y  5 5eY G G   r9)rnr%rorGs`r8rzBaseChecker.messagessB    $*49??+<+<$=$=    r9ctjdtd|jD]}|j|kr|cSd|d}|dd|jDdz }t |) NzB'get_message_definition' is deprecated and will be removed in 3.0.r.r/zMessageDefinition for 'z' does not exists. z Choose from cg|] }|j Sr")ru)rms r8rz6BaseChecker.get_message_definition..s$D$D$DQW$D$D$Dr9.)r2r3r4rrur)r7rumessage_definitionrs r8get_message_definitionz"BaseChecker.get_message_definitions P     #'- * * !'500))))1HeHHH G$D$Ddm$D$D$DGGGG !),,,r9cdS)z5Called before visiting project (i.e. set of modules).Nr"rGs r8openzBaseChecker.openr9cdS)z3Called after visiting project (i.e set of modules).Nr"rGs r8closezBaseChecker.closerr9cdSrr"rGs r8 get_map_datazBaseChecker.get_map_datatr9data list[Any]cdSrr")r7r)rs r8reduce_map_datazBaseChecker.reduce_map_datarr9)r)rr*r+)r:r r*r')r*rD)r*r )NNT)r%r$r#rXr&rYrZr[r\r[r]r'r*r )NNNNNNN)rur ryrzr{r|r}r r~rrrzrrzrrzr*r+)r*r+)rur rrr*r)r*r)rur r*r)r*r )r)rrrr*r+)__name__r> __qualname__r!__annotations__r#r%r&r(r6rArCrHrNrWrUrrrppropertyrrrrrrr"r9r8rr#sDNNNNG.0D0000<>G>>>>G2222 & & & &HHHH ////DDDD    "!!.....f $((,!%!%%)      ////2#M#M#M#MJ   X - - - -DDDDBBBBr9rc4eZdZdZejddZdS) rzEBase class for checkers that want to have access to the token stream.tokenslist[TokenInfo]r*r+ct)z#Should be overridden by subclasses.NotImplementedError)r7rs r8process_tokenszBaseTokenChecker.process_tokens s"###r9N)rrr*r+)rr>r__doc__abcabstractmethodrr"r9r8rr s<OO$$$$$$r9rc4eZdZdZejddZdS) rz9Base class for checkers which need to parse the raw file.r{ nodes.Moduler*r+ct)z]Process a module. The module's content is accessible via ``astroid.stream`` r)r7r{s r8process_modulez!BaseRawFileChecker.process_modules "###r9N)r{rr*r+)rr>rrrrrr"r9r8rrs<CC$$$$$$r9r)/ __future__rr functoolsr2collections.abcrrinspectrtokenizertypingrr astroidr pylint.config.arguments_providerr pylint.constantsr r rpylint.exceptionsrpylint.interfacesrrrr!pylint.message.message_definitionr pylint.typingrrrrr pylint.utilsrr pylint.lintrtotal_orderingrrrr"r9r8rs1 #""""" ........%%%%%%%%??????HHHHHHHHHH111111PPPPPPPPPPPP??????87777777%$$$$$$ bbbbb$bbbJ$$$$${$$$ $ $ $ $ $ $ $ $ $ $r9