Your IP : 216.73.216.209


Current Path : /usr/lib/python3/dist-packages/sos/__pycache__/
Upload File :
Current File : //usr/lib/python3/dist-packages/sos/__pycache__/options.cpython-310.pyc

o

G%@i�3�@sXddlmZddlmZdd�Zdd�ZGdd�d�ZGd	d
�d
e�ZGdd�d�Zd
S)�)�Action)�ConfigParsercCst|�}|tup|tuS)z@Return true if val is an instance of a known sequence type.
    )�type�list�tuple)�val�val_type�r	�-/usr/lib/python3/dist-packages/sos/options.py�_is_seq
srcCs$|��}|dvr
dS|dvrdSdS)N)�true�on�yesT)�false�off�noF)�lower)r�_valr	r	r
�str_to_boolsrc@s�eZdZdd�Zdd�Zd dd	�Zd
d�Zdd
�Zifdd�Ze	ifdd��Z
e	dd��Zdd�Zdd�Z
d!dd�Zd"dd�Zdd�ZdS)#�
SoSOptionscCs�dd�}t||�rNt||�}t||�}||�r||�r(|s(||jvr&t|�r(|r@t|||�|r8|j�|�dS|j�|�dSt|�rPt||||�dSdSdS)NcSs|dkp|duS)N�r	)rr	r	r
�_unset sz%SoSOptions._merge_opt.<locals>._unset)�hasattr�getattr�_nondefaultr�setattr�discard�add)�self�opt�src�
is_default�
prefer_newr�newvalue�oldvaluer	r	r
�
_merge_opts$


���zSoSOptions._merge_optcCs2t|t�s	t|�}|jD]
}|�||||�qdS�N)�
isinstance�dict�vars�	arg_namesr%)rr r!r"�argr	r	r
�_merge_opts9s


�zSoSOptions._merge_optsF� rc	sz|}d}�jD]
}||||7}q|�|��fdd��jD�}|s+dd�|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+�rr	r
�
<listcomp>N�z$SoSOptions.__str.<locals>.<listcomp>cSs"g|]
}t|�r
d�|�n|�qS)�,)r�join�r.�vr	r	r
r0Qs"cSs&g|]}t|t�rd|�d�n|�qS)�')r'�strr4r	r	r
r0Ts&)r*�stripr)	r�quote�sep�prefix�suffix�args�arg_fmtr+�valsr	r/r
�__str?s	

zSoSOptions.__strcCs|��Sr&��_SoSOptions__strr/r	r	r
�__str__XszSoSOptions.__str__cCs|jddddd�S)NTz, zSoSOptions(�))r9r:r;r<rAr/r	r	r
�__repr__[s
�zSoSOptions.__repr__cKsh||_t|���|_t�|_|jD]}t|||j|�q|��D]\}}|j�|�t|||�q!dS)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)rrF�kwargsr+�kwargr	r	r
�__init___s

�zSoSOptions.__init__cCs,tdit|��d|i��}|�|dd�|S)aInitialise 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
        rFTFNr	)rr)r,)�clsr=rF�optsr	r	r
�	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).
        )�
alloptionszallow-system-changeszall-logs�batch�build�debug�experimentalzlist-pluginszlist-presetsz
list-profilesz	no-reportzno-env-vars�quiet�verify)�verbose�--csg|]}d����qS)rYr	)r.�d�rr	r
r0�r1z+SoSOptions._opt_to_args.<locals>.<listcomp>r�=)�range�int)rNrr�no_value�countr	r[r
�_opt_to_args�szSoSOptions._opt_to_argscCs�t|j|t|��r|St|j|t�rt|�d��St|j|t�r8t|�}|dur6td|�d|�d���|St|j|t�rDt|�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
        r2Nz
Value of 'z' in z# must be True or False or analagous)	r'rFrr�split�boolr�	Exceptionr^)r�keyr�confr	r	r
�_convert_to_type�s
�zSoSOptions._convert_to_typec	
s��fdd�}t�}zt�dd��}|�|��Wd�n1s"wYWntyG}ztd��d|jd���WYd}~nd}~ww|d	|�|||�|�d
�rt�d�r�t�d�r�|�d
�D]\}}|�	d
�d�j
vr~�j�|d|�qfdSdSdSdS)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�|�|�rzt|�|��}d|��vrt|�d��|d<dddd�}t|�D]}d|vr6|�|�||�dd�<||vrC|�|�|||<q%|��D]3\}}t|t	�r[|d	kr[|�d
d�}|�j
vrltd|�d
|�d��qH��||��}t
�||�qHdSdS)NrX�	verbosity�label�plugopts�profiles)�name�
plugin_option�profile�-�_�keywordsr-rzUnknown option 'z' in section 'r6)�has_sectionr(rIrGr^�popr�replacer'r7rF�printrgr)�section�config�odict�rename_optsrer��config_filerr	r
�_update_from_section�s0
��
�z9SoSOptions.update_from_conf.<locals>._update_from_sectionzutf-8)�encodingNz+WARNING: Unable to read configuration file z : ��global�plugin_optionsrj�skip_plugins�.rr\)
r�open�	read_file�OSErrorrur=rrrrIrbr�rjrJ)	rr{�	componentr|rw�f�ererr	rzr
�update_from_conf�s4	"������

���zSoSOptions.update_from_confTcCs@|jD]}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%)rr �skip_defaultr"r+r	r	r
�merge�s


��zSoSOptions.mergecCs6i}|jD]}t||�}|r|dvrd}|||<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.
        ��
add_preset�
del_preset�desc�noteN)r*r)r�
preset_filterrxr+�valuer	r	r
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||vr
dS|dkr|rdS|�jvr$t|�t�j|�kr$dSdS)z. Test for non-null option values.
            )�False�Nonez[]z""z''�0FrjT)rFr7)rlr��null_valuesr/r	r
�	has_values
z%SoSOptions.to_args.<locals>.has_valuecs*|dvrdS|dvr|dkrdS�||�S)z8 Filter out preset and null-valued options.
            r�F)�log_size�plugin_timeout�cmd_timeoutrTr	)rlr�)r�r	r
�
filter_opt$s
z&SoSOptions.to_args.<locals>.filter_optcSs�|�d�rdt|�d}|S|�dd�}t|�rd�|�n|}|dur,|�d|��}n|}t|�dkr:d	|}|Sd|}|S)
zD Convert sos option notation to command line arguments.
            rhror5rpr2Tr-r~rY)�
startswithr^rtrr3�len)rlr�r+rr	r	r
�argify/s
�z"SoSOptions.to_args.<locals>.argifycSs|dS)Nrr	)�xr	r	r
�<lambda>Csz$SoSOptions.to_args.<locals>.<lambda>)recs$g|]\}}�||�r�||��qSr	r	)r.�nr5)r�r�r	r
r0Ds$z&SoSOptions.to_args.<locals>.<listcomp>)�sortedr(rI)r�	opt_itemsr	)r�r�r�rr
�to_argss
	
zSoSOptions.to_argsN)Fr-rr)TF)T)�__name__�
__module__�__qualname__r%r,rBrCrErM�classmethodrPrargr�r�r(r�r	r	r	r
rs 


>
rc@�eZdZdZddd�ZdS)�
SosListOptionz0Allow to specify comma delimited list of pluginsNcCs<t|�d��}t||j�r|t||j�7}t||j|�dS)Nr2)rrbr�destr)r�parser�	namespace�values�
option_stringrIr	r	r
�__call__KszSosListOption.__call__r&)r�r�r��__doc__r�r	r	r	r
r�Gsr�c@r�)�
ClusterOptionz6Used to store/manipulate options for cluster profiles.NcCs"||_||_||_||_||_dSr&)rlr��opt_type�cluster�description)rrlr�r�r�r�r	r	r
rMUs

zClusterOption.__init__r&)r�r�r�r�rMr	r	r	r
r�Rsr�N)	�argparser�configparserrrrrr�r�r	r	r	r
�<module>s	,