grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026a Û1j´3ã@sXddlmZddlmZdd„Zdd„ZGdd„dƒZGd d „d eƒZGd d „d ƒZd S)é)ÚAction)Ú ConfigParsercCst|ƒ}|tup|tuS)z@Return true if val is an instance of a known sequence type. )ÚtypeÚlistÚtuple)ÚvalZval_type©rú//usr/lib/python3.9/site-packages/sos/options.pyÚ_is_seq sr cCs$| ¡}|dvrdS|dvr dSdS)N)ÚtrueZonZyesT)ZfalseZoffÚnoF)Úlower)rZ_valrrr Ú str_to_bools rc@sŠeZdZdd„Zdd„Zd dd „Zd d „Zd d „Zifdd„Ze ifdd„ƒZ e dd„ƒZ dd„Z dd„Z d!dd„Zd"dd„Zdd„ZdS)#Ú SoSOptionscCs˜dd„}t||ƒr”t||ƒ}t||ƒ}||ƒr6||ƒrP|sP||jvrLt|ƒrP|r|t|||ƒ|rn|j |¡q”|j |¡nt|ƒr”t||||ƒdS)NcSs|dkp|duS)NÚr)rrrr Ú_unset sz%SoSOptions._merge_opt.._unset)ÚhasattrÚgetattrÚ _nondefaultr ÚsetattrÚdiscardÚadd)ÚselfÚoptÚsrcÚ is_defaultÚ prefer_newrZnewvalueZoldvaluerrr Ú _merge_opts&   ÿþþý zSoSOptions._merge_optcCs2t|tƒst|ƒ}|jD]}| ||||¡qdS©N)Ú isinstanceÚdictÚvarsÚ arg_namesr)rrrrÚargrrr Ú _merge_opts9s  zSoSOptions._merge_optsFú rc sz|}d}ˆjD]}||||7}q| |¡‡fdd„ˆjDƒ}|sVdd„|Dƒ}ndd„|Dƒ}|t|ƒ |¡|S)aIFormat a SoSOptions object as a human or machine readable string. :param quote: quote option values :param sep: list separator string :param prefix: arbitrary prefix string :param suffix: arbitrary suffix string :param literal: print values as Python literals z=%scsg|]}tˆ|ƒ‘qSr)r)Ú.0r#©rrr Ú Nóz$SoSOptions.__str..cSs"g|]}t|ƒrd |¡n|‘qS)ú,)r Újoin©r&Úvrrr r(Qr)cSs&g|]}t|tƒrd|›d�n|‘qS)ú')rÚstrr,rrr r(Tr))r"Ústripr) rÚquoteÚsepÚprefixÚsuffixÚargsZarg_fmtr#Zvalsrr'r Z__str?s   zSoSOptions.__strcCs| ¡Sr©Ú_SoSOptions__strr'rrr Ú__str__XszSoSOptions.__str__cCs|jddddd�S)NTz, z SoSOptions(ú))r1r2r3r4r6r'rrr Ú__repr__[s ÿzSoSOptions.__repr__cKsh||_t| ¡ƒ|_tƒ|_|jD]}t|||j|ƒq"| ¡D] \}}|j |¡t|||ƒqBdS)aôInitialise a new ``SoSOptions`` object from keyword arguments. Initialises the new object with values taken from keyword arguments matching the names of ``SoSOptions`` attributes. A ``ValueError`` is raised is any of the supplied keyword arguments does not correspond to a known ``SoSOptions` attribute name. :param *kwargs: a list of ``SoSOptions`` keyword args. :returns: the new ``SoSOptions`` object. N) Ú arg_defaultsrÚkeysr"ÚsetrrÚitemsÚappend)rr;Úkwargsr#Úkwargrrr Ú__init___s   zSoSOptions.__init__cCs,tfit|ƒ¤d|i¤Ž}| |dd¡|S)a Initialise a new SoSOptions object from a ``Namespace`` obtained by parsing command line arguments. :param args: parsed command line arguments :returns: an initialised SoSOptions object :returntype: SoSOptions r;TF)rr!r$)Úclsr5r;Zoptsrrr Ú from_argsws zSoSOptions.from_argscsRd}d}ˆ|vrdˆ›�gSˆ|vr@‡fdd„tdt|ƒƒDƒSdˆ›d|›�gS)zçConvert a named option and optional value to command line argument notation, correctly handling options that take no value or that have special representations (e.g. verify and verbose). )Z alloptionszallow-system-changeszall-logsZbatchZbuildÚdebugZ experimentalz list-pluginsz list-presetsz list-profilesz no-reportz no-env-varsÚquietZverify)Úverboseú--csg|]}dˆ›�‘qS)rHr)r&Úd©rrr r(”r)z+SoSOptions._opt_to_args..rú=)ÚrangeÚint)rCrrZno_valueÚcountrrJr Ú _opt_to_args„s zSoSOptions._opt_to_argscCsŒt|j|t|ƒƒr|St|j|tƒr6t| d¡ƒSt|j|tƒrpt|ƒ}|durltd|›d|›d�ƒ‚|St|j|tƒrˆt|ƒS|S)a¦Ensure that the value read from a config file is the proper type for consumption by the component, as defined by arg_defaults. Params: :param key: The key in arg_defaults we need to match the type of :param val: The value to be converted to a particular type :param conf: File values are being loaded from r*Nz Value of 'z' in z# must be True or False or analagous) rr;rrÚsplitÚboolrÚ ExceptionrM)rÚkeyrZconfrrr Ú_convert_to_type—s ÿzSoSOptions._convert_to_typec s‡‡fdd„}tƒ}ztyŽ}z&tdˆ›d|jd›�ƒWYd}~n d}~00|d |ƒ|||ƒ| d ¡rþtˆd ƒrþtˆd ƒrþ| d ¡D]0\}}|  d ¡dˆj vr̈j   |d|¡qÌdS)zúRead the provided config_file and update options from that. Positional arguments: :param config_file: Filepath to the config file :param component: Which component (section) to load csø| |¡rôt| |¡ƒ}d| ¡vr6t| d¡ƒ|d<ddddœ}t|ƒD]<}d|vrl| |¡|| dd¡<||vrJ| |¡|||<qJ| ¡D]b\}}t|t ƒr¶|d kr¶| d d ¡}|ˆj vrØt d |›d |›d�ƒq�ˆ  ||ˆ¡}t ˆ||ƒq�dS)NrGÚ verbosityZlabelÚplugoptsZprofiles)ÚnameZ plugin_optionZprofileú-Ú_Úkeywordsr%rzUnknown option 'z' in section 'r.)Ú has_sectionr r>r<rMÚpoprÚreplacerr/r;ÚprintrTr)ÚsectionÚconfigÚodictZ rename_optsrSr©Ú config_filerrr Ú_update_from_section¹s*  ý   z9SoSOptions.update_from_conf.._update_from_sectionzutf-8)ÚencodingNz+WARNING: Unable to read configuration file z : éÚglobalZplugin_optionsrVÚ skip_pluginsÚ.rrK) rÚopenZ read_fileÚOSErrorr^r5r[rr>rPrhrVr?) rrcZ componentrdr`ÚfÚerSrrrbr Úupdate_from_conf°s& ".ÿÿ  ÿzSoSOptions.update_from_confTcCs@|jD]4}t||ƒsqt||ƒdus(|s|j||d|d�qdS)a˜Merge another set of ``SoSOptions`` into this object. Merge two ``SoSOptions`` objects by setting unset or default values to their value in the ``src`` object. :param src: the ``SoSOptions`` object to copy from :param is_default: ``True`` if new default values are to be set. :param prefer_new: ``False`` if new default is not preferred. NF)r)r"rrr)rrZ skip_defaultrr#rrr Úmergeîs  zSoSOptions.mergecCs6i}|jD]&}t||ƒ}|r(|dvr(d}|||<q |S)z²Return this ``SoSOptions`` option values as a dictionary of argument name to value mappings. :returns: a name:value dictionary of option values. ©Z add_presetZ del_presetZdescZnoteN)r"r)rZ preset_filterrar#Úvaluerrr r þs   zSoSOptions.dictcsL‡fdd„‰‡fdd„‰dd„‰tˆ ¡ ¡dd„d �}‡‡fd d „|DƒS) zñReturn command arguments for this object. Return a list of the non-default options of this ``SoSOptions`` object in ``sos report`` command line argument notation: ``["--all-logs", "-vvv"]`` csLd}|r||vrdS|dkr$|r$dS|ˆjvrHt|ƒtˆj|ƒkrHdSdS)z. Test for non-null option values. )ÚFalseÚNonez[]z""z''Ú0FrVT)r;r/)rWrqZ null_valuesr'rr Ú has_values   z%SoSOptions.to_args..has_valuecs*|dvr dS|dvr |dkr dSˆ||ƒS)z8 Filter out preset and null-valued options. rpF)Zlog_sizeZplugin_timeoutZ cmd_timeoutrTr)rWrq)rurr Ú filter_opt$sÿz&SoSOptions.to_args..filter_optcSs|| d¡rdt|ƒd}|S| dd¡}t|ƒr.argifycSs|dS)Nrr)Úxrrr ÚCr)z$SoSOptions.to_args..)rScs$g|]\}}ˆ||ƒrˆ||ƒ‘qSrr)r&Únr-)ryrvrr r(Dr)z&SoSOptions.to_args..)Úsortedr r>)rZ opt_itemsr)ryrvrurr Úto_argss zSoSOptions.to_argsN)Fr%rr)TF)T)Ú__name__Ú __module__Ú __qualname__rr$r7r8r:rBÚ classmethodrDrOrTrnror r~rrrr rs    >  rc@seZdZdZddd„ZdS)Ú SosListOptionz0Allow to specify comma delimited list of pluginsNcCs<t| d¡ƒ}t||jƒr*|t||jƒ7}t||j|ƒdS)Nr*)rrPrÚdestr)rÚparserÚ namespaceÚvaluesÚ option_stringr>rrr Ú__call__Ks zSosListOption.__call__)N)rr€r�Ú__doc__r‰rrrr rƒGsrƒc@seZdZdZddd„ZdS)Ú ClusterOptionz6Used to store/manipulate options for cluster profiles.NcCs"||_||_||_||_||_dSr)rWrqÚopt_typeÚclusterÚ description)rrWrqrŒr�rŽrrr rBUs zClusterOption.__init__)N)rr€r�rŠrBrrrr r‹Rsr‹N) ÚargparserZ configparserrr rrrƒr‹rrrr Ú s   ,