Current File : //usr/lib/python3/dist-packages/sos/__pycache__/options.cpython-312.pyc
�

-�_g�2��f�ddlmZddlmZd�Zd�ZGd�d�ZGd�de�ZGd	�d
�Zy)�)�Action)�ConfigParserc�<�t|�}|tuxs|tuS)z@Return true if val is an instance of a known sequence type.
    )�type�list�tuple)�val�val_types  �-/usr/lib/python3/dist-packages/sos/options.py�_is_seqr
s"���C�y�H��t��0�x�5�0�0�c�8�|j�}|dvry|dvryy)N)�true�on�yesT)�false�off�noF)�lower)r	�_vals  r�str_to_boolrs(���9�9�;�D��$�$���%�%��r
c�|�eZdZd�Zd�Zdd�Zd�Zd�Zifd�Ze	ifd��Z
e	d��Zd	�Zd
�Z
dd�Zdd�Zd
�Zy)�
SoSOptionsc�p�d�}t||�r�t||�}t||�}||�r||�r|s||jvrRt|�sGt	|||�|r|jj|�y|jj
|�yt|�rt	||||z�yyy)Nc��|dk(xs|duS)N��)r	s r�_unsetz%SoSOptions._merge_opt.<locals>._unset s���2�I�,����-r
)�hasattr�getattr�_nondefaultr�setattr�discard�add)�self�opt�src�
is_defaultr�newvalue�oldvalues       r�
_merge_optzSoSOptions._merge_opts���	.��3����s�C�(�H��t�S�)�H�
�x� ���)9���D�,�,�,�w�x�7H���c�8�,���$�$�,�,�S�1��$�$�(�(��-���"���c�8�h�#6�7�#�!r
c��t|t�st|�}|jD]}|j	|||��y�N)�
isinstance�dict�vars�	arg_namesr+)r%r'r(�args    r�_merge_optszSoSOptions._merge_opts7s8���#�t�$��s�)�C��>�>�	2�C��O�O�C��j�1�	2r
c��|}d}|jD]
}|||z|zz
}�|j|�|jD�cgc]}t||���}}|s,|D�	cgc] }	t|	�rdj	|	�n|	��"}}	n%|D�	cgc]}	t|	t�rd|	�d�n|	��}}	|t|�zj|�|zScc}wcc}	wcc}	w)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=%s�,�')r1�stripr r�joinr.�strr)
r%�quote�sep�prefix�suffix�args�arg_fmtr2�vals�vs
          r�__strzSoSOptions.__str=s��������>�>�	(�C��C�'�M�C�'�'�D�	(��
�
�3��.2�n�n�=�s���c�"�=��=��>B�C��7�1�:�C�H�H�Q�K�1�4�C�D�C�DH�H�a�
�1�c� 2�a��s�!�H��9�H�D�H��u�T�{�"�)�)�#�.��7�7��>��D��Is�C�%C
�Cc�"�|j�Sr-��_SoSOptions__str�r%s r�__str__zSoSOptions.__str__Vs���z�z�|�r
c�,�|jdddd��S)NTz, zSoSOptions(�))r:r;r<r=rDrFs r�__repr__zSoSOptions.__repr__Ys!���z�z��$�}�!$��&�	&r
c�B�||_t|j��|_t	�|_|jD]}t
|||j|��|j�D]-\}}|jj|�t
|||��/y)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�keysr1�setr!r"�items�append)r%rL�kwargsr2�kwargs     r�__init__zSoSOptions.__init__]s���)����l�/�/�1�2����5����$�$�	7�C��D�#�t�0�0��5�6�	7�!�,�,�.�	&�J�C���N�N�!�!�#�&��D�#�u�%�	&r
c�Z�tdit|��d|i��}|j|d�|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
        rLTr)rr0r3)�clsr>rL�optss    r�	from_argszSoSOptions.from_argsus/���B�D��J�B�\�B������t�$��r
c��d}d}||vrd|��gS||vr&tdt|��D�cgc]}d|����	c}Sd|�d|��gScc}w)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�--r�=)�range�int)rUr&r	�no_value�count�ds      r�_opt_to_argszSoSOptions._opt_to_args�si��
��
���(�?����J�<���%�<�(-�a��S��(:�;�1�b���J�;�;��S�E��3�%� �!�!��<s�Ac��t|j|t|��r|St|j|t�rt|j	d��St|j|t
�r!t
|�}|�td|�d|�d���|St|j|t�rt|�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
        r5z
Value of 'z' in z# must be True or False or analagous)	r.rLrr�split�boolr�	Exceptionrd)r%�keyr	�confs    r�_convert_to_typezSoSOptions._convert_to_type�s����d�'�'��,�d�3�i�8��J��d�'�'��,�d�3���	�	�#��'�'��d�'�'��,�d�3��c�"�C��{�� ���U�4�&�1 � �!�!��J��d�'�'��,�c�2��s�8�O��
r
c������fd�}t�}	t�d��5}|j|��ddd�|d|�|||�|j
d	�rit�d
�r\|jd	�D]G\}}|jd�d�jvs�'�jj|d
z|z��Iyyy#1swY��xYw#t$r(}t	d��d|j
d���Yd}~��d}~wwxYw)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
        c�r��|j|��r$t|j|��}d|j�vrt	|jd��|d<dddd�}t
|�D]F}d|vr$|j|�||jdd�<||vs�0|j|�|||<�H|j�D]m\}}t|t�r|d	k7r|jd
d�}|�jvrtd|�d
|�d���N�j||��}t�||��oyy)Nr`�	verbosity�label�plugopts�profiles)�name�
plugin_option�profile�-�_�keywords� rzUnknown option 'z' in section 'r6)�has_sectionr/rOrMrd�popr�replacer.r9rL�printror")�section�config�odict�rename_optsrmr	�config_filer%s      ��r�_update_from_sectionz9SoSOptions.update_from_conf.<locals>._update_from_section�sD����!�!�'�*��V�\�\�'�2�3����
�
��,�),�U�Y�Y�y�-A�)B�E�+�&�
$�%/�)���
 ��;�A�C��c�z�7<�y�y��~��c�k�k�#�s�3�4��k�)�27�)�)�C�.��k�#�.�/�	A�!&���
�,�H�C��"�#�s�+��z�0A�!�k�k�#�r�2���$�"3�"3�3�� 0���^�G�9�A�N�O� ��/�/��S�+�F�C��D�#�s�+�,�'+r
zutf-8)�encodingNz+WARNING: Unable to read configuration file z : ��global�plugin_optionsrt�.rrb)
r�open�	read_file�OSErrorr�r>r}rrOrj�skip_pluginsrtrP)	r%r��	componentr�r��f�ermr	s	``       r�update_from_confzSoSOptions.update_from_conf�s��� 	,�D���	��k�G�4�
1��� � ��K�0�
1�	�X�v�.��Y��/����.�/�G�D�*�4M�"�L�L�)9�:�
:���S��y�y��~�a�(�D�,=�,=�=��M�M�(�(��s��S��9�
:�5N�/�
1�
1���	��=�k�]�#��6�6�!�9�+��
�
��	�s-�
C�C	�C�	C�C�	D�D�Dc��|jD]1}t||�s�t||��|r�|j||d��3y)aNMerge 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.
        NF)r1rr r+)r%r'�skip_defaultr2s    r�mergezSoSOptions.merge�sC���>�>�	1�C��3��$���s�C� �,�L�����S�%�0�		1r
c�^�i}|jD]}t||�}|r|dvrd}|||<�|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)r1r )r%�
preset_filterr�r2�values     rr/zSoSOptions.dict�sI�����>�>�	�C��D�#�&�E���F�F� �E��E�#�J�
	��r
c������fd���fd�}d�}t�j�j�d���}|D��cgc]\}}|||�s�|||���c}}Scc}}w)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"]``

        c���d}|r||vry|dk(r|ry|�jvr%t|�t�j|�k(ryy)z. Test for non-null option values.
            )�False�Nonez[]z""z''�0FrtT)rLr9)rvr��null_valuesr%s   �r�	has_valuez%SoSOptions.to_args.<locals>.has_valuesU���C�K��E�[�0���z�!�e���t�(�(�(��u�:��T�%6�%6�t�%<�!=�=� �r
c�4��|dvry|dvr|dk(ry�||�S)z8 Filter out preset and null-valued options.
            r�F)�log_size�plugin_timeout�cmd_timeoutrTr)rvr�r�s  �r�
filter_optz&SoSOptions.to_args.<locals>.filter_opt s1����C�C���D�D��A�:���T�5�)�)r
c��|jd�rdt|�dzz}|S|jdd�}t|�rdj	|�n|}|dur|�d|��}n|}t|�dkDrd	|z}|Sd|z}|S)
zD Convert sos option notation to command line arguments.
            rrryrArzr5Tr|r�ra)�
startswithrdrrr8�len)rvr�r2r&s    r�argifyz"SoSOptions.to_args.<locals>.argify+s������{�+��C��J��,�,���
��<�<��S�)�D�'.�u�~�C�H�H�U�O�5�E��D� ���a��w�'���� #�C��1��$��*�C��J�36��)�C��Jr
c��|dS)Nrr)�xs r�<lambda>z$SoSOptions.to_args.<locals>.<lambda>?s
��a��d�r
)rm)�sortedr/rO)r%r�r��	opt_items�nrAr�s`     @r�to_argszSoSOptions.to_args
sV���	�		*�	�(�4�9�9�;�,�,�.�N�C�	�+4�I��!�Q�
�1�a�8H��q�!��I�I��Is�A �A N)Fr|rr)T)�__name__�
__module__�__qualname__r+r3rErGrJrS�classmethodrWrhror�r�r/r�rr
rrrsk��8�02�8�2�&�%'�&�0�*,�
��
��"��"�$�2;:�z
1�� 6Jr
rc��eZdZdZdd�Zy)�
SosListOptionz0Allow to specify comma delimited list of pluginsNc���t|jd��}t||j�r|t||j�z
}t	||j|�y)Nr5)rrjr �destr")r%�parser�	namespace�values�
option_stringrOs      r�__call__zSosListOption.__call__GsH���V�\�\�#�&�'���9�d�i�i�(��W�Y��	�	�2�2�E��	�4�9�9�e�,r
r-)r�r�r��__doc__r�rr
rr�r�Cs
��:�-r
r�c��eZdZdZdd�Zy)�
ClusterOptionz6Used to store/manipulate options for cluster profiles.Nc�J�||_||_||_||_||_yr-)rvr��opt_type�cluster�description)r%rvr�r�r�r�s      rrSzClusterOption.__init__Qs&����	���
� ��
����&��r
r-)r�r�r�r�rSrr
rr�r�Ns
��@�'r
r�N)	�argparser�configparserrrrrr�r�rr
r�<module>r�s<���%�1��cJ�cJ�L	-�F�-�'�'r