bg9*ddlmZddlZddlZddlZddlZddlZddlZddlZddl Z ddl m Z ddl m Z ddlmZmZmZddlmZddlmZddlmZdd lmZerdd lmZejd krddlZnddlZddZej ddZ!GddZ"dS)) annotationsN)Iterator)Path) TYPE_CHECKINGAnyTextIO)utils)Option) OptionParser) OptionDict)OptionsProviderMixin) selfoptparse.HelpFormatteroptionr returnstrc|j|jst|jS|jddd} |jjj|}||}|||}t|j ||}tj ||}n#t$rd}YnwxYw|tjus|s|j}|j|jt|S)zPatch OptionParser.expand_default with custom behaviour. This will handle defaults to avoid overriding values in the configuration file. Nr)parser default_tagrhelp _long_optsoptions_manager _all_optionsget_option_defoption_attrnamegetattrconfigr _format_option_valueKeyErroroptparse NO_DEFAULTNO_DEFAULT_VALUEreplace)rroptnameprovideroptdictvalues s/builddir/build/BUILD/cloudlinux-venv-1.0.7/venv/lib/python3.11/site-packages/pylint/config/option_manager_mixin.py_expand_defaultr,&s  {$"26;"122&G;;.;GD))'22**7G<<'::*7E::  ###5#% ;  t/U < <Zd!S)TOptionsManagerMixInzMHandle configuration from both a configuration file and command line options.usagerrNonectjdtd||g|_t j|_i|_i|_ i|_ d|_ dS)NzIOptionsManagerMixIn has been deprecated and will be removed in pylint 3.0r) stacklevelr) warningswarnDeprecationWarning reset_parsersoptions_providers collections OrderedDictr_short_options_nocallback_options _mygroups _maxlevelrr6s r+__init__zOptionsManagerMixIn.__init__Ksu W     5!!!=??J?V?X?X.035 )+ctjd|_tt||_||j_t|jjj |_ dS)N)#;)inline_comment_prefixes)r6) configparser ConfigParsercfgfile_parserr r cmdline_parserrset option_classATTRS_optik_option_attrsrEs r+r=z!OptionsManagerMixIn.reset_parsers]s`*7$.   +6???.2+#&t':'G'M#N#N   rGTr(r own_groupboolc |j|d|jD}t|dd}|r7|r5||j|j||n%|D]"\}}|||j ||#|D]D\ }  fd|jD}| |||EdS)zRegister an options provider.c&g|]}d|dv |S)group).0rs r+ zAOptionsManagerMixIn.register_options_provider..ls-" " " WF1I5M5MF5M5M5MrG option_groupsr[cxg|]6}|dddk4|7S)rZrYrH)getupper)r\rgnames r+r]zAOptionsManagerMixIn.register_options_provider..|sL!9=="--3355>>>>>rGN) r>appendoptionsradd_option_groupnamera__doc__add_optik_optionrP) rr(rUnon_group_spec_optionsgroupsoptr)gdocgoptionsrbs @r+register_options_providerz-OptionsManagerMixIn.register_options_providergsL %%h///" " !)!1" " " ?B77  S/ S  ! ! ##%% &     !7 S S W%%h0CS'RRRR! C CKE4KKMME&.H  ! !%x B B B B C CrG group_name_rrdc||jvr|j|}ntj|j|}|j|||j|<|dkr(||jjvr|j||D]K\}}t| ddtsd|d<| ||||LdS)N)titleDEFAULTactionstorecallback) rCr# OptionGrouprP capitalizererO _sections add_section isinstancer`rrh)rrorprdr(rYrkr)s r+rez$OptionsManagerMixIn.add_option_groups   ' 'N:.EE(#:+@+@+B+BE   0 0 7 7 7).DN: &i''d&9&CCC#// ;;;# A ALCgkk(G<Q??rGtuple[list[str], OptionDict]ctj|}d|vr ||j|<nd|d<|j|d<d|vr6d|vr/|d|ddvr|dxxdz cc<|d=dt |zg}d |vr1||j|d <|d |d z|d =t|D] }||j vr| |!||fS) zkGet our personal option definition and return a suitable form for use with optik/optparse. rtrvdefaultrN) store_true store_falsez [current: %default]--short-) copyrBcb_set_provider_optionr`rrArclistkeysrTpop)rr(rkr)rkeys r+r~z OptionsManagerMixIn.optik_options< )G$$ w  14D $X . . *GH "&"=GJ    '!!KK **6H%-JJJ#99 "s3xx  g  47D  0 1 KKgg.. / / /  '' ! !C$222 C   W}rGrr r*rc|dr |dd}n|j|dd}|d}|||dS)z"Optik callback for option setting.rrNrZ) startswithrAglobal_set_option)rrrkr*rs r+rz*OptionsManagerMixIn.cb_set_provider_optionsd >>$   /abb'CC%c!""g.C =E sE*****rGcH|j|||dS)z*Set option on the correct option provider.N)r set_option)rrkr*s r+rz%OptionsManagerMixIn.global_set_options& #))#u55555rGNr[stream TextIO | None skipsectionstuple[str, ...]c i}g}|jD]m}|D]V\}}||j}||vrd|D}|s"||vr||||g}||z }Wn|p t j}d} |D]R}| rtd|tj || t||d} SdS)zsWrite a configuration file according to the current configuration into the given stream or stdout. Nctg|]5\}}}|d|d0|||f6S)typeN deprecated)r`)r\ndvs r+r]z7OptionsManagerMixIn.generate_config..sO!AquuV}}0|9L9L01I000rGF fileT) r>options_by_sectionrfrc setdefaultsysstdoutprintr format_sectionrasorted) rrrrsectionsr(sectionrd all_optionsprinteds r+generate_configz#OptionsManagerMixIn.generate_configsM LN. ' 'H$,$?$?$A$A ' ' ?&mGl**%, (**OOG,,,0;;GRHH w&  ' %3:  G )d((((   0B70K)L)L   GG   rGcB|jD]}|dS)z.Initialize configuration using default values.N)r> load_defaults)rr(s r+load_provider_defaultsz*OptionsManagerMixIn.load_provider_defaultss3. % %H  " " $ $ $ $ % %rGF config_file Path | Noneverbosecz|ryttj|}|s t dt|d|j}|j dkr- | ||n#tj $rYnwxYwt|d5}||dddn #1swxYwYt|jD]c\}}|dr|t'dd}|s|r||j|<d|sdS|r|rd|d }nd }t-|t.j dS) ztRead the configuration file but do not load it (i.e. dispatching values to each option's provider). zThe config file z doesn't exist!z.toml utf_8_sig)encodingNzpylint.zUsing config file ''z1No config file found, using default configurationr)rospath expandvars expanduserexistsOSErrorrrOsuffix _parse_tomltomllibTOMLDecodeErroropen read_filerryitemsrlenisupperrarrstderr)rrrrfpsectvaluesmsgs r+read_config_filez$OptionsManagerMixIn.read_config_files"  @rw11+>>??JJLLK%%'' TR[1A1ARRRSSS(F!W,,$$[&9999.D+ <<<)$$R((()))))))))))))))%))9)?)?)A)A$B$B@@LD&y116#C NN$4$45<<>>@f@9?(6  F  F;--// F6 666CCEC c ######s$ B B21B2C((C,/C,rconfigparser.ConfigParserc^t|d5}tj|}dddn #1swxYwY |dd}n#t$rYdSwxYw|D]8\}}|}t |ts|dd||fJ|D]d\} } t | tr | rd nd || <$t | trd | || <Rt| || <e|D]`\} } | || | #tj$r0||| || | Y]wxYw:dS) z5Parse and handle errors of a toml configuration file.rb)modeNtoolpylintzbad-configuration-sectionr)lineryesno,)r*)rrloadr"rrar{dict add_messagerVrjoinrrQrMNoSectionErrorrz) rrrrcontentsections_valuesrr section_namerr*s r+rzOptionsManagerMixIn._parse_toml's: +D ) ) ) 'Rl2&&G ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' %foh7OO    FF .4466 B BOGV"==??Lfd++   /aw>O!!' 0 0 eT**0.3%=UUF6NNt,,0%(XXe__F6NN%(ZZF6NN!' B B BJJ|V5JAAAA#2BBB&&|444JJ|V5JAAAAAB B# B Bs/377A AAE))\}}|dd}|j|}|||?dS)Nrpr)rr&rr)rr rk opt_valuer(s r+rz2OptionsManagerMixIn.load_configuration_from_configWs`$llnn 0 0NC++c3''C(-H   Y / / / / 0 0rGrlist[str] | None list[str]ct5|tjddnt|}|j|\}}|jD]J}|j}|j D]'}t||d}|t|||(K|cdddS#1swxYwYdS)zjOverride configuration according to command line parameters. return additional arguments NrZ)r) r3rargvrrP parse_argsrBr __dict__rrsetattr)rrrdr(r attrr*s r+load_command_line_configurationz3OptionsManagerMixIn.load_command_line_configuration]s    #'<38ABB<rs#"""""  $$$$$$----------''''''444444$$$$$$wNNNN====. ====l:l:l:l:l:l:l:l:l:l:rG