ó
    ~ þg¼2  ã                   óf   • S SK Jr  S SKJr  S rS r " S S5      r " S S\5      r " S	 S
5      rg)é    )ÚAction)ÚConfigParserc                 óF   • [        U 5      nU[        L =(       d    U[        L $ )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                 ó@   • U R                  5       nUS;   a  gUS;   a  gg )N)ÚtrueÚonÚyesT)ÚfalseÚoffÚnoF)Úlower)r	   Ú_vals     r   Ústr_to_boolr      s(   € Ø�9‰9‹;€DØÐ$Ó$ØØÐ%Ó%ØØr   c                   óŽ   • \ rS rSrS rS rSS jrS rS r0 4S jr	\
0 4S j5       r\
S	 5       rS
 rS rSS jrSS jrS rSrg)Ú
SoSOptionsé   c                 ó¬  • S n[        X!5      (       aÁ  [        X!5      n[        X5      nU" U5      (       a  U" U5      (       a&  U(       d  XR                  ;  a[  [        U5      (       dK  [	        XU5        U(       a  U R                  R                  U5        g U R                  R                  U5        g [        U5      (       a  [	        XXV-   5        g g g )Nc                 ó"   • U S:H  =(       d    U S L $ )NÚ © )r	   s    r   Ú_unsetÚ%SoSOptions._merge_opt.<locals>._unset    s   € Ø˜2‘I×, ¨ Ð-r   )ÚhasattrÚgetattrÚ_nondefaultr   ÚsetattrÚdiscardÚadd)ÚselfÚoptÚsrcÚ
is_defaultr   ÚnewvalueÚoldvalues          r   Ú
_merge_optÚSoSOptions._merge_opt   s¯   € ò	.ô �3×ÑÜ˜sÓ(ˆHÜ˜tÓ)ˆHñ
 �x× Ñ ©°×)9Ñ)9ÞØ×,Ñ,Ó,´w¸x×7HÑ7Hä˜ 8Ô,ÞØ×$Ñ$×,Ñ,¨SÕ1à×$Ñ$×(Ñ(¨Õ-Ü˜×"Ñ"ä˜ 8Ñ#6Õ7ð #ð! r   c                 óŽ   • [        U[        5      (       d  [        U5      nU R                   H  nU R	                  X1U5        M     g ©N)Ú
isinstanceÚdictÚvarsÚ	arg_namesr-   )r'   r)   r*   Úargs       r   Ú_merge_optsÚSoSOptions._merge_opts7   s4   € Ü˜#œt×$Ñ$Ü�s“)ˆCØ—>”>ˆCØ�O‰O˜C jÖ1ò "r   c                 óÞ  • UnSnU R                    H  nXWU-   U-   -  nM     UR                  U5        U R                    Vs/ s H  n[        X5      PM     nnU(       d4  U V	s/ s H&  n	[        U	5      (       a  SR	                  U	5      OU	PM(     nn	O-U V	s/ s H   n	[        U	[        5      (       a  SU	 S3OU	PM"     nn	U[        U5      -  R                  U5      U-   $ s  snf s  sn	f s  sn	f )a  Format 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Ú,Ú')r4   Ústripr"   r   Újoinr1   Ústrr   )
r'   ÚquoteÚsepÚprefixÚsuffixÚargsÚarg_fmtr5   ÚvalsÚvs
             r   Ú__strÚSoSOptions.__str=   sä   € ð ˆØˆØ—>”>ˆCØ˜'‘M CÑ'Ñ'ŠDñ "à�
‰
�3Œà.2¯nªnÓ=ªn s”˜Ö"©nˆÐ=Þá>BÓCºd¸¤7¨1§:¡:�C—H‘H˜Q”K°1Ò4¹dˆDÐCˆDñ DHÓHÂ4¸a¤
¨1¬c× 2Ñ 2�a˜�s˜!‘H¸Ò9Á4ˆDÐHà”u˜T“{Ñ"×)Ñ)¨#Ó.°Ñ7Ð7ùò >ùò Dùò Is   ÁC Á#-C%Â'C*c                 ó"   • U R                  5       $ r0   ©Ú_SoSOptions__str©r'   s    r   Ú__str__ÚSoSOptions.__str__V   s   € Ø�z‰z‹|Ðr   c                 ó&   • U R                  SSSSS9$ )NTz, zSoSOptions(Ú))r>   r?   r@   rA   rI   rK   s    r   Ú__repr__ÚSoSOptions.__repr__Y   s!   € Ø�z‰z ¨$°}Ø!$ð ð &ð 	&r   c                 óB  • Xl         [        UR                  5       5      U l        [	        5       U l        U R                    H  n[        XU R                   U   5        M     UR                  5        H,  u  p4U R                  R                  U5        [        XU5        M.     g)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   Úkeysr4   Úsetr#   r$   ÚitemsÚappend)r'   rS   Úkwargsr5   Úkwargs        r   Ú__init__ÚSoSOptions.__init__]   s~   € ð )ÔÜ˜l×/Ñ/Ó1Ó2ˆŒÜ›5ˆÔà×$Ô$ˆCÜ�D˜t×0Ñ0°Ñ5Ö6ñ %ð !Ÿ,™,ž.‰JˆCØ�N‰N×!Ñ! #Ô&Ü�D˜uÖ%ò )r   c                 óZ   • [        S0 [        U5      DSU0D6nUR                  US5        U$ )zÓ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
rS   Tr   )r   r3   r6   )ÚclsrB   rS   Úoptss       r   Ú	from_argsÚSoSOptions.from_argsu   s/   € ô ÑBœD ›JÑB°\ÒBˆØ×Ñ˜˜tÔ$Øˆr   c                 ó˜   • SnSnX;   a  SU 3/$ X;   a)  [        S[        U5      5       Vs/ s H  nSU 3PM
     sn$ SU SU 3/$ s  snf )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).
)Ú
alloptionszallow-system-changeszall-logsÚbatchÚbuildÚdebugÚexperimentalzlist-pluginszlist-presetszlist-profilesz	no-reportzno-env-varsÚquietÚverify)Úverboseú--r   Ú=)ÚrangeÚint)r]   r(   r	   Úno_valueÚcountÚds         r   Ú_opt_to_argsÚSoSOptions._opt_to_args‚   sk   € ð
ˆð
 ˆØ‹?Ø˜˜�J�<ÐØ‹<Ü(-¨a´°S³Ô(:Ó;Ò(: 1�b˜˜“JÑ(:Ñ;Ð;Ø�S�E˜˜3˜%Ð Ð!Ð!ùò <s   ¬Ac                 ó²  • [        U R                  U   [        U5      5      (       a  U$ [        U R                  U   [        5      (       a  [        UR	                  S5      5      $ [        U R                  U   [
        5      (       a"  [        U5      nUc  [        SU SU S35      eU$ [        U R                  U   [        5      (       a  [        U5      $ U$ )an  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
r9   z
Value of 'z' in z# must be True or False or analagous)	r1   rS   r   r   ÚsplitÚboolr   Ú	Exceptionrm   )r'   Úkeyr	   Úconfs       r   Ú_convert_to_typeÚSoSOptions._convert_to_type•   sÈ   € ô �d×'Ñ'¨Ñ,¬d°3«i×8Ñ8ØˆJÜ�d×'Ñ'¨Ñ,¬d×3Ñ3Ü˜Ÿ	™	 #›Ó'Ð'Ü�d×'Ñ'¨Ñ,¬d×3Ñ3Ü˜cÓ"ˆCØ‰{ÜØ    U¨4¨&ð 1 ð  ó!ð !ð ˆJÜ�d×'Ñ'¨Ñ,¬c×2Ñ2Ü�s“8ˆOØˆ
r   c                 óX  ^ ^• UU 4S jn[        5       n [        TSS9 nUR                  UT5        SSS5        U" SU5        U" X$5        UR                  S	5      (       a„  [        T S
5      (       ar  [        T S5      (       a`  UR                  S	5       HJ  u  pxUR                  S5      S   T R                  ;  d  M)  T R                  R                  US-   U-   5        ML     gggg! , (       d  f       Nº= f! [         a(  n[	        ST SUR
                  S    35         SnANêSnAff = f)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                 ó˜  >• UR                  U 5      (       Ga2  [        UR                  U 5      5      nSUR                  5       ;   a  [	        UR                  S5      5      US'   SSSS.n[        U5       HI  nSU;   a#  UR                  U5      X$R                  SS5      '   XC;   d  M3  UR                  U5      X#U   '   MK     UR                  5        Ht  u  pE[        U[        5      (       a  US	:w  a  UR                  S
S5      nUTR                  ;  a  [        SU SU  S35        MV  TR                  XET5      n[        TXE5        Mv     g g )Nri   Ú	verbosityÚlabelÚplugoptsÚprofiles)ÚnameÚplugin_optionÚprofileÚ-Ú_ÚkeywordsÚ r   zUnknown option 'z' in section 'r:   )Úhas_sectionr2   rV   rT   rm   Úpopr   Úreplacer1   r=   rS   Úprintry   r$   )ÚsectionÚconfigÚodictÚrename_optsrw   r	   Úconfig_filer'   s         €€r   Ú_update_from_sectionÚ9SoSOptions.update_from_conf.<locals>._update_from_section·   s2  ø€ Ø×!Ñ! '×*Ò*Ü˜VŸ\™\¨'Ó2Ó3�à §
¡
£Ó,Ü),¨U¯Y©Y°yÓ-AÓ)B�E˜+Ñ&ð
 $Ø%/Ø)ñ�ô
   ž;�CØ˜c“zØ7<·y±yÀ³~˜Ÿk™k¨#¨sÓ3Ñ4ØÕ)Ø27·)±)¸C³.˜¨#Ñ.Ó/ñ	 'ð !&§¡¦‘H�Cô " #¤s×+Ñ+°°zÓ0AØ!Ÿk™k¨#¨rÓ2˜Ø $×"3Ñ"3Ó3ô Ð 0°°°^ÀGÀ9ÈAÐNÔOÙ Ø×/Ñ/°¸+ÓF�CÜ˜D #Ö+ò !.ð' +r   zutf-8)ÚencodingNz+WARNING: Unable to read configuration file z : é   ÚglobalÚplugin_optionsr   Úskip_pluginsÚ.r   rk   )r   ÚopenÚ	read_fileÚOSErrorr‹   rB   rˆ   r!   rV   rt   r—   r   rW   )	r'   r�   Ú	componentr‘   r�   ÚfÚerw   r	   s	   ``       r   Úupdate_from_confÚSoSOptions.update_from_conf®   s  ù€ ö 	,ôD “ˆð	Ü�k¨GÒ4¸Ø× Ñ   KÔ0÷ 5ñ 	˜X vÔ.Ù˜YÔ/Ø×ÑÐ.×/Ñ/´G¸DÀ*×4MÑ4MÜ˜D .×1Ñ1à"ŸL™LÐ)9Ö:‘�Ø—y‘y “~ aÑ(¨D×,=Ñ,=Õ=Ø—M‘M×(Ñ(¨¨s©°S©Ö9ò ;ð 2ð 5NÐ/÷ 5Õ4ûäó 	ÜØ=¸k¸]È#Ø—6‘6˜!‘9�+ð÷ñ ûð	ús3   •
C7 ŸC&²C7 Ã&
C4Ã0C7 Ã4C7 Ã7
D)ÄD$Ä$D)c                 óœ   • U R                    H<  n[        X5      (       d  M  [        X5      c	  U(       a  M*  U R                  X1S5        M>     g)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.
NF)r4   r!   r"   r-   )r'   r)   Úskip_defaultr5   s       r   ÚmergeÚSoSOptions.mergeì   s=   € ð —>”>ˆCÜ˜3×$Ñ$ÙÜ�sÓ Ñ,·L°LØ—‘ ¨%Ö0ò	 "r   c                 ól   • 0 nU R                    H!  n[        X5      nU(       a  US;   a  SnXBU'   M#     U$ )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)r4   r"   )r'   Úpreset_filterrŽ   r5   Úvalues        r   r2   ÚSoSOptions.dictû   s@   € ð ˆØ—>”>ˆCÜ˜DÓ&ˆEæØÐFÓFØ �EØ�#‹Jñ "ð ˆr   c                 óÖ   ^ ^• U 4S jmU4S jnS n[        T R                  5       R                  5       S S9nU VVs/ s H  u  pEU" XE5      (       d  M  U" XE5      PM     snn$ s  snnf )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                 ó¬   >• SnU(       a  X;   a  gU S:X  a  U(       a  gU TR                   ;   a&  [        U5      [        TR                   U    5      :X  a  gg)z-Test for non-null option values.
            )ÚFalseÚNonez[]z""z''Ú0Fr   T)rS   r=   )r�   r¬   Únull_valuesr'   s      €r   Ú	has_valueÚ%SoSOptions.to_args.<locals>.has_value  sS   ø€ ð CˆKÞ˜EÓ0ØØ�zÓ!¦eØØ�t×(Ñ(Ó(Ü�u“:¤ T×%6Ñ%6°tÑ%<Ó!=Ó=Ø Ør   c                 ó<   >• U S;   a  gU S;   a  US:X  a  gT" X5      $ )z7Filter out preset and null-valued options.
            r¦   F)Úlog_sizeÚplugin_timeoutÚcmd_timeoutr   Tr   )r�   r¬   r´   s     €r   Ú
filter_optÚ&SoSOptions.to_args.<locals>.filter_opt!  s/   ø€ ð ÐCÓCØàÐDÓDØ˜A“:ØÙ˜TÓ)Ð)r   c                 ó  • U R                  S5      (       a  S[        U5      S-  -   nU$ U R                  SS5      n [        U5      (       a  SR	                  U5      OUnUSLa  U  SU 3nOU n[        U5      S:”  a  S	U-   nU$ SU-   nU$ )
zCConvert sos option notation to command line arguments.
            r}   r„   rE   r…   r9   Tr‡   r”   rj   )Ú
startswithrm   rŠ   r   r<   Úlen)r�   r¬   r5   r(   s       r   ÚargifyÚ"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                 ó   • U S   $ )Nr   r   )Úxs    r   Ú<lambda>Ú$SoSOptions.to_args.<locals>.<lambda>@  s   € ¸aÀºdr   )rw   )Úsortedr2   rV   )r'   rº   r¿   Ú	opt_itemsÚnrE   r´   s   `     @r   Úto_argsÚSoSOptions.to_args  sV   ù€ õ	õ		*ò	ô( ˜4Ÿ9™9›;×,Ñ,Ó.±NÑCˆ	Ù+4ÔIª9¡ !¹
À1×8H“‘�q–©9ÒIÐIùÓIs   ¾A%ÁA%)r#   rS   r4   N)Fr‡   r   r   )T)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r-   r6   rJ   rL   rP   rZ   Úclassmethodr_   rq   ry   rŸ   r£   r2   rÈ   Ú__static_attributes__r   r   r   r   r      sk   † ò8ò02ô8ò2ò&ð %'ô &ð0 Ø*,ó 
ó ð
ð ñ"ó ð"ò$ò2<:ô|1ôõ 6Jr   r   c                   ó"   • \ rS rSrSrSS jrSrg)ÚSosListOptioniD  z0Allow to specify comma delimited list of pluginsNc                 óÈ   • [        UR                  S5      5      n[        X R                  5      (       a  U[        X R                  5      -  n[	        X R                  U5        g )Nr9   )r   rt   r"   Údestr$   )r'   ÚparserÚ	namespaceÚvaluesÚoption_stringrV   s         r   Ú__call__ÚSosListOption.__call__H  sE   € Ü�V—\‘\ #Ó&Ó'ˆÜ�9Ÿi™i×(Ñ(Ø”W˜Y¯	©	Ó2Ñ2ˆEÜ�	Ÿ9™9 eÕ,r   r   r0   )rÊ   rË   rÌ   rÍ   Ú__doc__rØ   rÏ   r   r   r   rÑ   rÑ   D  s
   † á:÷-r   rÑ   c                   ó"   • \ rS rSrSrSS jrSrg)ÚClusterOptioniO  z6Used to store/manipulate options for cluster profiles.Nc                 ó@   • Xl         X l        X0l        X@l        XPl        g r0   )r�   r¬   Úopt_typeÚclusterÚdescription)r'   r�   r¬   rÞ   rß   rà   s         r   rZ   ÚClusterOption.__init__R  s   € ØŒ	ØŒ
Ø ŒØŒØ&Õr   )rß   rà   r�   rÞ   r¬   r0   )rÊ   rË   rÌ   rÍ   rÚ   rZ   rÏ   r   r   r   rÜ   rÜ   O  s
   † Ù@÷'r   rÜ   N)	Úargparser   Úconfigparserr   r   r   r   rÑ   rÜ   r   r   r   Ú<module>rä      s<   ðõ Ý %ò1ò÷dJñ dJôN	-�Fô -÷'ò 'r   