c~nNddlmZddlZddlZddlmZddlmZddlm Z m Z ddl m Z m Z mZmZmZddlmZddlmZdd lmZdd lmZmZmZmZejd krdd lmZndd lmZerdd lm Z GddZ!dS)) annotationsN) defaultdict) TYPE_CHECKING) exceptions interfaces)MSG_STATE_CONFIDENCEMSG_STATE_SCOPE_CONFIGMSG_STATE_SCOPE_MODULE MSG_TYPESMSG_TYPES_LONG)HIGH)MessageDefinition)ManagedMessage) OPTION_POInvalidPragmaErrorUnRecognizedOptionError parse_pragma))Literal)PyLinterceZdZdZd,dZd-dZ d.d/dZ d0d1dZ d2d3dZ d0d4dZ d0d5dZ d0d4dZ d6d Z d6d!Z d7d8d%Zd9d&Z d7d:d(Zd;d+ZdS)<_MessageStateHandlerz[Class that handles message disabling & enabling and processing of inline pragma's. linterrreturnNonec||_i|_|j|j|jd|_|jd|jdd|_i|_tt|_ dS)N)enabledisable disable-nextrr)z disable-msgz enable-msg) r _msgs_staterr disable_next_options_methods_bw_options_methods_pragma_linenorlist_stashed_messages)selfrs s/builddir/build/BUILD/cloudlinux-venv-1.0.10/venv/lib/python3.11/site-packages/pylint/lint/message_state_handler.py__init__z_MessageStateHandler.__init__-s ,.k| -! !   0;/9$ $  /1      scopestrmsgrline int | Nonerboolc|dvrut|tsJ|jj|||||s6|jdkr-|jd||j|jfdSdSdS|j}|||j<dS)z(Set the status of an individual message.>r/modulezlocally-disabledr/argsN) isinstanceintr file_stateset_msg_statussymbol add_messagemsgidr!)r(r,r.r/rmsgss r)_set_one_msg_statusz(_MessageStateHandler._set_one_msg_statusEs & & &dC(( ( (( K " 1 1#tVU K K K cj,>>> ''&TSY8O(  >> #D$DOOOr+Fr<ignore_unknownlist[MessageDefinition]c g}|dkr6tD],}|||||-|S|}|tvrt j|}n|}|F|jjj|D],}|||||-|S| |jj vr]|jj | D]6}|j D],}|||||-7|S| dr9|r|j |n|j||S |jj|}n#t j$r|sYnwxYw|S)zMDo some tests and find the actual messages of which the status should be set.allNrp)r extend_get_messages_to_setupperr getr msgs_store_msgs_by_categorylower _checkersr= startswith enable_reportdisable_reportget_message_definitionsrUnknownMessageError) r(r<rr?message_definitions_msgid category_idcategory_id_formattedcheckers r)rEz)_MessageStateHandler._get_messages_to_setUs68: E>>#  #**--ffnMM' &kkmm i ' '$2$6{$C$C ! !$/ ! ,+0B%  $**--ffnMM' & ;;==DK1 1 1;0?  %lF'..11&&.QQ' & ;;== # #D ) ) ' 2 ))%0000 **5111& & "&+"8"P"PQV"W"W  -   !    #"sF99G GpackageNc|dvsJ||||}|D]}|||||g|jj_g|jj_|jD]e\}} d|jj |D} | r|jjxj| z c_K|jjxj| z c_fdS)zEDo some tests and then iterate over message definitions to set state.>r/r3rVcg|] }|j S)r:).0ms r) z8_MessageStateHandler._set_msg_status..s*r+N) rEr>rconfigrrr!itemsrHrO) r(r<rr,r/r?rQmessage_definitionmsgid_or_symbol is_enabledsymbolss r)_set_msg_statusz$_MessageStateHandler._set_msg_statuss55555"77v~VV"5 N N   $ $U,>f M M M M%' !%' "+/+;+A+A+C+C 6 6 'OZ/GGXXG 6 "))W4))) "**g5*** 6 6r+Tr` is_disabledc4|ddr{ |jjj|}n#t j$rYdSwxYwt|jj||||}|jj |dSdS)z~If the msgid is a numeric one, then register it to inform the user it could furnish instead a symbolic msgid. N)r<) isdigitrrHmessage_id_store get_symbolrrPr current_name_by_id_managed_msgsappend)r(r`r/rdr:manageds r)_register_by_id_managed_msgz0_MessageStateHandler._register_by_id_managed_msgs 122  & & ( ( < /@KK)L1    $ (/64G K + 2 27 ; ; ; ; ; < EFN)rrHrIr)r(msgcats r)disable_noerror_messagesz-_MessageStateHandler.disable_noerror_messagessFk,> ! !F## LL  ! !r+c:|jj\}}g}g}|D]i}||jr'|d|jd|jdC|d|jd|jdjtd|D]}t|td|D]}t|td|D]"}td|jd|jd#tddS)Nz z ()zEnabled messages:z Disabled messages:z1 Non-emittable messages with current interpreter:)rrHfind_emittable_messagesis_message_enabledr<rlr:print)r( emittable non_emittableenableddisabledmessager.msg_defs r)list_messages_enabledz*_MessageStateHandler.list_messages_enabledsW#';#9#Q#Q#S#S =   I IG&&w}55 IFGNFFgmFFFGGGG GW^ G Gw} G G GHHHH !"""  C #JJJJ $%%%  C #JJJJ BCCC$ ; ;G 9w~99999 : : : : b r+ confidenceinterfaces.Confidence | NoneLiteral[0, 1, 2] | Nonec| tj}|j|jjjvrt S ||jjj|vrtSn#ttf$r tcYSwxYwdS)z:Returns the scope at which a message was enabled/disabled.N) r UNDEFINEDnamerr]rrr8_module_msgs_stater KeyError TypeErrorr )r(r<r/rs r)_get_message_state_scopez-_MessageStateHandler._get_message_state_scopes  #-J ?$+"4"? ? ?' ' *t{-@GGG--H)$ * * *) ) ) ) *tsAA+*A+c,|j|dS |jjj|S#t $r|jj}|r|krd}|jjj|i}tfd| D}t|d\}}||}|j||cYS|j|dcYSwxYw)zChecks state of a single message for the current file. This function can't be cached as it depends on self.file_state which can change. NTc*g|]\}}|k ||fSrYrY)rZ message_linerr/s r)r\z@_MessageStateHandler._is_one_message_enabled..)s70L&'4//&v.///r+NN) r!rGrr8rrget_effective_max_line_number_raw_module_msgs_statereversedr^next) r(r<r/max_line_numberfallbacklines closest_linesrs fallback_iters ` r)_is_one_message_enabledz,_MessageStateHandler._is_one_message_enabledsF <#''t44 4 5;)z:_MessageStateHandler.is_message_enabled..Rs3QQ4//t<<QQQQQQr+) rrr]rrHrhget_active_msgidsrrPany)r(rr/rmsgidss` ` r)rz'_MessageStateHandler.is_message_enabled6s"  */1C1NNN5 ![+<NNFF- ! ! ! [FFF  ! QQQQQ&QQQQQQs$AAAtokenslist[tokenize.TokenInfo]c `hd}d}d}d}|D]\}}}} } |r||dkr|}d}|d}|tjtjfvrd}|tjkrPt j|} | g t | dD]} | jdvr[| jdkr#|j d |dd |j d |d d|_ dS |j | j} ne#t$rX|j| j} |j d |d| j| jddf YnwxYw| jD]/} | j|vr|d|j| <| j| fdkrQ|j d |dd |j d |d d|_ dS|d}|s|dz} | | d|#t$jt$jf$r:}|j d| j|f|dt*Yd}~d}~wt$j$r4|j d| j| f|dt*Y-wxYw#t.$r3}|j d|j|dYd}~d}~wt2$r3}|j d|j|dYd}~d}~wwxYwdS)zProcess tokens from the current module to search for module/block level options. See func_block_disable_msg.py test case for expected behaviour. >rrr NTrF> skip-file disable-allrzdeprecated-pragma)rrr4z file-ignored)r/z-msgr~)rrB)z disable=allrrfr3zuseless-option-value)r5r/rzunknown-option-valuezunrecognized-inline-option)r5r/zbad-inline-option)tokenizeNLNEWLINECOMMENTrsearchrgroupactionrr; _ignore_filer#rr$replacemessagesr%rDeletedMessageErrorMessageBecameExtensionErrorr rPrtokenr)r(rcontrol_pragmas prev_line saw_newline seen_newlinetok_typecontentstartrsmatch pragma_reprmethr<l_starteerrs r)process_tokensz#_MessageStateHandler.process_tokensTsV @??   .4W W  *Hgua %Y%(22* $ aIHK)9:::# 8+++$W--E}I #/ A#?#?==K")-III&->> K33 3%*1X%A4  //U1X/NNN,0) #4[5GH#   #7 8JK ///!&q + 2 + 2 : :62 F F"0 "-!5%%&-@@9>qD/6'.6:LLL K33 3%*1X%A4 !K33Nq3RRR04D-"FFFF#((*)#qLG D'::::&:&B    !K33 6&1&8!%<%*1X+/ 4 *= K33 6&1&8%%@%*1X+/ 4?%1=~+    ''0syuQx(%    '''cieAh(  gW W s5BJ3?DJ3AE41J33E44BJ38J3 HJ3J, 10I& !J3&AJ, (J3+J, ,J33 L+=(K++ L+8(L&&L+)rrrr) r,r-r.rr/r0rr1rr)F)r<r-rr1r?r1rr@)rVNF) r<r-rr1r,r-r/r0r?r1rr)T)r`r-r/r0rdr1rr) r<r-r,r-r/r0r?r1rr) r<r-rsr-r/r0r?r1rr)rrr)r<r-r/r0rrrr)r<r-r/r0rr1)rr-r/r0rrrr1)rrrr)__name__ __module__ __qualname____doc__r*r>rErcrnrr"rr{rrrrrrYr+r)rr(s    0%%%%"@E2#2#2#2#2#p$ 66666<KO<<<<<*$ 6 6 6 6 6 $ :::::,$ I I I I I!!!!. 37 $"5"5"5"5N 37 RRRRRrs #""""" ###### ))))))))#""""",,,,,,((((((v)))))).------MMMMMMMMMMr+