Ë
    çôf’5  ã                   ó<  — d Z ddlZddlZddlZddlmZmZmZmZmZ ddl	m
Z
 ddlmZmZ ddlmZ  e
d«      Zej#                  ej%                  «       «      Zg d	¢Z G d
„ dej*                  «      Z G d„ dej,                  «      Z G d„ dej.                  «      ZeZy)a,  GOption command line parser

Extends optparse to use the GOptionGroup, GOptionEntry and GOptionContext
objects. So it is possible to use the gtk, gnome_program and gstreamer command
line groups and contexts.

Use this interface instead of the raw wrappers of GOptionContext and
GOptionGroup in glib.
é    N)ÚOptParseErrorÚOptionErrorÚOptionValueErrorÚBadOptionErrorÚOptionConflictErroré   )Úget_introspection_module)Ú_giÚPyGIDeprecationWarning)ÚGErrorÚGLib)	r   r   r   r   r   ÚOptionÚOptionGroupÚOptionParserÚmake_optionc                   ó¨   — e Zd ZdZej
                  j                  dz   Zej
                  j                  g d¢z   Zdej                  z   Z
d„ Zd„ Zd„ Zy)	r   a¹  Represents a command line option

    To use the extended possibilities of the GOption API Option
    (and make_option) are extended with new types and attributes.

    Types:
        filename   The supplied arguments are read as filename, GOption
                   parses this type in with the GLib filename encoding.

    :ivar optional_arg:
        This does not need a arguement, but it can be supplied.
    :ivar hidden:
        The help list does not show this option
    :ivar in_main:
        This option apears in the main group, this should only
        be used for backwards compatibility.

    Use Option.REMAINING as option name to get all positional arguments.

    .. NOTE::
        Every argument to an option is passed as utf-8 coded string, the only
        exception are options which use the 'filename' type, its arguments
        are passed as strings in the GLib filename encoding.

    For further help, see optparse.Option.
    )Úfilename)ÚhiddenÚin_mainÚoptional_argú--c                 ób  — t        j                  dt        «       t        j                  j
                  | g|¢­i |¤Ž | j                  st        d«      ‚t        | j                  «      t        | j                  «      k  rt        d«      ‚| j                  st        d| j                  d   «      ‚y )NzYgi.repository.GLib.option.Option is depecated, use gi.repository.GLib.OptionEntry insteadz!%s at least one long option name.z;%s at least more long option names than short option names.z%s needs a help message.r   )ÚwarningsÚwarnr   Úoptparser   Ú__init__Ú
_long_optsÚ
ValueErrorÚlenÚ_short_optsÚhelp©ÚselfÚargsÚkwargss      ú,/usr/lib/python3/dist-packages/gi/_option.pyr   zOption.__init___   s˜   € Ü�‰ØgÜ"ô	
ô 	�‰× Ñ  Ð7¨Ò7°Ò7Ø�ŠÜÐ@ÓAÐAäˆt�‰Ó¤# d×&6Ñ&6Ó"7Ò7ÜØMóOð Oð �yŠyÜÐ7¸¿¹ÈÑ9KÓLÐLð ó    c                 ó  — | j                   |v r%| j                  j                  | j                   «       t        j                  j                  | |«       t        | j                  «      t        | j                  «      kD  rt        d«      ‚y )NzCgoption.Option needs more long option names than short option names)	Ú	REMAININGr   Úappendr   r   Ú_set_opt_stringr   r    r   )r#   Úoptss     r&   r+   zOption._set_opt_stringo   sk   € Ø�>‰>˜TÑ!Ø�O‰O×"Ñ" 4§>¡>Ô2Ü�‰×'Ñ'¨¨dÔ3Üˆt×ÑÓ ¤3 t§¡Ó#7Ò7Üð 8ó 9ð 9ð 8r'   c              #   ó$  K  — d}| j                   r|t        j                  j                  z  }| j                  r|t        j                  j
                  z  }| j                  «       r*| j                  r;|t        j                  j                  z  }n|t        j                  j                  z  }| j                  dk(  r|t        j                  j                  z  }t        | j                  | j                  «      D ]K  \  }}|d   }t        |t         «      s|j#                  d«      }|dd  ||| j$                  | j&                  f–— ŒM | j                  t)        | j                  «      d  D ]"  }|dd  d|| j$                  | j&                  f–— Œ$ y ­w)Nr   r   r   zutf-8é   ó    )r   r   ÚOptionFlagsÚHIDDENr   ÚIN_MAINÚtakes_valuer   ÚOPTIONAL_ARGÚNO_ARGÚtypeÚFILENAMEÚzipr   r    Ú
isinstanceÚbytesÚencoder!   Úmetavarr   )r#   ÚflagsÚ	long_nameÚ
short_nameÚshort_bytess        r&   Ú_to_goptionentrieszOption._to_goptionentriesw   sZ  è ø€ Øˆà�;Š;Ø”T×%Ñ%×,Ñ,Ñ,ˆEà�<Š<Ø”T×%Ñ%×-Ñ-Ñ-ˆEà×ÑÔØ× Ò Øœ×)Ñ)×6Ñ6Ñ6‘à”T×%Ñ%×,Ñ,Ñ,ˆEà�9‰9˜
Ò"Ø”T×%Ñ%×.Ñ.Ñ.ˆEä'*¨4¯?©?¸D×<LÑ<LÓ'Mò 	OÑ#ˆY˜
Ø$ Q™-ˆKÜ˜k¬5Ô1Ø)×0Ñ0°Ó9�Ø˜Q˜R�= +¨u°d·i±iÀÇÁÐNÓNð		Oð Ÿ™¬¨T×-=Ñ-=Ó)>Ð)?Ð@ò 	IˆIØ˜Q˜R�= %¨°·	±	¸4¿<¹<ÐHÓHñ	Iùs   ‚FFN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   ÚTYPESÚATTRSr   ÚOPTION_REMAININGr)   r   r+   rA   © r'   r&   r   r   8   s`   „ ñð4 �O‰O×!Ñ!ð %ñ €Eð �O‰O×!Ñ!ò %ñ €Eð �t×,Ñ,Ñ,€IòMò 9óIr'   r   c                   ó8   — e Zd ZdZ	 	 	 dd„Zd„ Zd„ Zd	d„Zd„ Zy)
r   a÷  A group of command line options.

    :param str name:
        The groups name, used to create the --help-{name} option
    :param str description:
        Shown as title of the groups help view
    :param str help_description:
        Shown as help to the --help-{name} option
    :param list option_list:
        The options used in this group, must be option.Option()
    :param dict defaults:
        A dicitionary of default values
    :param translation_domain:
           Sets the translation domain for gettext().

    .. NOTE::
        This OptionGroup does not exactly map the optparse.OptionGroup
        interface. There is no parser object to supply, but it is possible
        to set default values and option_lists. Also the default values and
        values are not shared with the OptionParser.

    To pass a OptionGroup into a function which expects a GOptionGroup (e.g.
    gnome_program_init() ). OptionGroup.get_option_group() can be used.

    For further help, see optparse.OptionGroup.
    Nc                 ó  — t        j                  dt        «       t        j                  j                  | t        d|«       || _        d | _        || _	        |r|| _
        d | _        || _        |r|D ]  }| j                  |«       Œ y y )Nz`gi.repository.GLib.option.OptionGroup is depecated, use gi.repository.GLib.OptionContext insteadÚerror)r   r   r   r   ÚOptionContainerr   r   ÚnameÚparserÚhelp_descriptionÚdefaultsÚvaluesÚtranslation_domainÚ
add_option)r#   rN   ÚdescriptionrP   Úoption_listrQ   rS   Úoptions           r&   r   zOptionGroup.__init__®   s„   € ô 	�‰ØnÜ"ô	
ô 	× Ñ ×)Ñ)¨$´¸ÀÔMØˆŒ	ØˆŒØ 0ˆÔÙØ$ˆDŒMàˆŒà"4ˆÔáØ%ò (�Ø—‘ Õ'ñ(ð r'   c                 ó2   — g | _         | j                  «        y ©N)rV   Ú_create_option_mappings)r#   s    r&   Ú_create_option_listzOptionGroup._create_option_listÄ   s   € ØˆÔØ×$Ñ$Õ&r'   c                 óV  ‡ ‡— ˆˆ fd„}t        j                  ‰ j                  ‰ j                  ‰ j                  |«      }‰ j
                  r|j                  ‰ j
                  «       g }‰ j                  D ]!  }|j                  |j                  «       «       Œ# |j                  |«       |S )Nc                 óŒ  •— | j                  d«      r‰j                  |    }n‰j                  |    }	 |j                  | |‰j                  ‰«       y # t
        $ rh t        j                  «       d   }t        t        |«      «      }t        |_        t        j                  j                  |_        t        |«      |_        |‚w xY w)Nr   r   )Ú
startswithÚ	_long_optÚ
_short_optÚprocessrR   r   ÚsysÚexc_infor   ÚstrÚOPTION_CONTEXT_ERROR_QUARKÚdomainr   r   Ú	BAD_VALUEÚcodeÚmessage)Úoption_nameÚoption_valueÚgroupÚoptrL   ÚgerrorrO   r#   s         €€r&   Úcallbackz.OptionGroup._to_goptiongroup.<locals>.callbackÉ   sŸ   ø€ Ø×%Ñ% dÔ+Ø—n‘n [Ñ1‘à—o‘o kÑ2�ðØ—‘˜K¨°t·{±{ÀFÕKøÜ#ò ÜŸ™› qÑ)�Ü¤ E£
Ó+�Ü :�”Ü"×.Ñ.×8Ñ8�”Ü!$ U£�”Ø�ðús   ³A ÁA1C)r
   r   rN   rU   rP   rS   Úset_translation_domainrV   ÚextendrA   Úadd_entries)r#   rO   ro   rl   ÚentriesrW   s   ``    r&   Ú_to_goptiongroupzOptionGroup._to_goptiongroupÈ   s“   ù€ õ	ô  —‘ §	¡	¨4×+;Ñ+;Ø $× 5Ñ 5°xóAˆà×"Ò"Ø×(Ñ(¨×)@Ñ)@ÔAàˆØ×&Ñ&ò 	8ˆFØ�N‰N˜6×4Ñ4Ó6Õ7ð	8ð 	×Ñ˜'Ô"àˆr'   c                 óD   — | j                  «        | j                  |«      S )z€ Returns the corresponding GOptionGroup object.

        Can be used as parameter for gnome_program_init(), gtk_init().
        )Úset_values_to_defaultsrt   )r#   rO   s     r&   Úget_option_groupzOptionGroup.get_option_groupæ   s!   € ð
 	×#Ñ#Ô%Ø×$Ñ$ VÓ,Ð,r'   c                 óL  — | j                   D ]q  }| j                  j                  |j                  «      }t	        |t
        «      sŒ9|j                  «       }|j                  ||«      | j                  |j                  <   Œs t        j                  | j                  «      | _
        y rY   )rV   rQ   ÚgetÚdestr9   rd   Úget_opt_stringÚcheck_valuer   ÚValuesrR   )r#   rW   ÚdefaultÚopt_strs       r&   rv   z"OptionGroup.set_values_to_defaultsî   s   € Ø×&Ñ&ò 	&ˆFØ—m‘m×'Ñ'¨¯©Ó4ˆGÜ˜'¤3Õ'Ø ×/Ñ/Ó1�Ø-3×-?Ñ-?Ø˜Wó.&�—‘˜fŸk™kÒ*ð		&ô —o‘o d§m¡mÓ4ˆ�r'   )Ú NNNrY   )	rB   rC   rD   rE   r   r[   rt   rw   rv   rI   r'   r&   r   r   “   s+   „ ñð4 <>Ø,0Ø$(ó(ò,'òó<-ó5r'   r   c                   ó<   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d
d	„Z
y)r   aH  Command line parser with GOption support.

    :param bool help_enabled:
        The --help, --help-all and --help-{group} options are enabled (default).
    :param bool ignore_unknown_options:
        Do not throw a exception when a option is not knwon, the option
        will be in the result list.

    .. NOTE::
        The OptionParser interface is not the exactly the same as the
        optparse.OptionParser interface. Especially the usage parameter
        is only used to show the metavar of the arguements.

    OptionParser.add_option_group() does not only accept OptionGroup instances
    but also glib.OptionGroup, which is returned by gtk_get_option_group().

    Only glib.option.OptionGroup and glib.option.Option instances should
    be passed as groups and options.

    For further help, see optparse.OptionParser.
    c                 óø   — t        j                  dt        «       d|vr	t        |d<   |j	                  dd«      | _        |j	                  dd«      | _        t        j                  j                  | g|¢­ddi|¤Ž y )Nzagi.repository.GLib.option.OptionParser is depecated, use gi.repository.GLib.OptionContext insteadÚoption_classÚhelp_enabledTÚignore_unknown_optionsFÚadd_help_option)
r   r   r   r   Úpopr„   r…   r   r   r   r"   s      r&   r   zOptionParser.__init__  s   € Ü�‰ØoÜ"ô	
ð  Ñ'Ü%+ˆF�>Ñ"Ø"ŸJ™J ~°tÓ<ˆÔØ&,§j¡jÐ1IØ16ó'8ˆÔ#ä×Ñ×&Ñ& tð 	8Ø(,ò	8¸Uð 	8Ø06ó	8r'   c                 óp   — |€d| _         y |j                  d«      r|t        d«      d  | _         y || _         y )Nr€   z%prog)Úusager^   r   )r#   r‰   s     r&   Ú	set_usagezOptionParser.set_usage  s5   € Øˆ=ØˆD�JØ×Ñ˜gÔ&Øœs 7›|˜}Ð-ˆD�JàˆD�Jr'   c                 óŽ  ‡ ‡— ‰ j                   r‰ j                  dz   ‰ j                   z   }n‰ j                  }t        j                  |«      }|j	                  ‰ j
                  «       |j                  ‰ j                  «       ‰ j                  D ]A  }t        |t        j                  «      r|}n|j                  ‰ «      }|j                  |«       ŒC ˆ ˆfd„}t        j                  d d d |«      }g }‰ j                  D ]!  }	|j                  |	j                  «       «       Œ# |j!                  |«       |j#                  |«       |S )Nz - c                 óŽ   •— | j                  d«      r‰j                  |    }n‰j                  |    }|j                  | |‰‰«       y )Nr   )r^   r_   r`   ra   )rj   rk   rl   rm   r#   rR   s       €€r&   ro   z1OptionParser._to_goptioncontext.<locals>.callback4  s?   ø€ Ø×%Ñ% dÔ+Ø—n‘n [Ñ1‘à—o‘o kÑ2�Ø�K‰K˜ \°6¸4Õ@r'   )rU   r‰   r
   ÚOptionContextÚset_help_enabledr„   Úset_ignore_unknown_optionsr…   Úoption_groupsr9   r   rw   Ú	add_grouprV   rq   rA   rr   Úset_main_group)
r#   rR   Úparameter_stringÚcontextÚoption_groupÚg_groupro   Ú
main_groupÚmain_entriesrW   s
   ``        r&   Ú_to_goptioncontextzOptionParser._to_goptioncontext$  s  ù€ Ø×ÒØ#Ÿz™z¨EÑ1°D×4DÑ4DÑDÑà#Ÿz™zÐÜ×#Ñ#Ð$4Ó5ˆØ× Ñ  ×!2Ñ!2Ô3Ø×*Ñ*¨4×+FÑ+FÔGà ×.Ñ.ò 	'ˆLÜ˜,¬¯©Ô8Ø&‘à&×7Ñ7¸Ó=�Ø×Ñ˜gÕ&ð	'õ	Aô —_‘_ T¨4°°xÓ@ˆ
ØˆØ×&Ñ&ò 	=ˆFØ×Ñ × 9Ñ 9Ó ;Õ<ð	=à×Ñ˜|Ô,Ø×Ñ˜zÔ*àˆr'   c                 óô  — t        |d   t        «      r.t        j                  j	                  | t        | g|¢­i |¤Ž«       y t        |«      dk(  r†|s„t        |d   t
        «      r5|d   j                  s
| |d   _        |d   j                  | urt        d«      ‚t        |d   t        j
                  «      r| j                  j                  |d   «       y t        j                  j                  | g|¢­i |¤Ž y )Nr   r   z"invalid OptionGroup (wrong parser))r9   rd   r   r   Úadd_option_groupr   r   rO   r   r
   r�   r*   r"   s      r&   r›   zOptionParser.add_option_groupD  sÔ   € Ü�d˜1‘gœsÔ#Ü×!Ñ!×2Ñ2°4Ü3>¸tÐ3UÀdÒ3UÈfÑ3UôWàÜ�‹Y˜!Š^¡FÜ˜$˜q™'¤;Ô/Ø˜A‘w—~’~Ø%)�D˜‘G”NØ˜‘7—>‘>¨Ñ-Ü$Ð%IÓJÐJÜ˜$˜q™'¤3§?¡?Ô3Ø×"Ñ"×)Ñ)¨$¨q©'Ô2ØÜ×Ñ×.Ñ.¨tÐE°dÒE¸fÓEr'   c                 ó²   — | j                   d d  }| j                  D ]8  }t        |t        j                  «      sŒ|j                  |j                   «       Œ: |S rY   )rV   r�   r9   r   r   rq   )r#   Úoptionsrl   s      r&   Ú_get_all_optionszOptionParser._get_all_optionsT  sP   € Ø×"Ñ"¡1Ð%ˆØ×'Ñ'ò 	2ˆEÜ˜%¤×!5Ñ!5Õ6Ø—‘˜u×0Ñ0Õ1ð	2ð ˆr'   c                 ó~   — | j                  |«      }|j                  t        j                  d   g|z   «      dd  |d d  y )Nr   r   )r™   Úparserb   Úargv)r#   ÚlargsÚrargsrR   r”   s        r&   Ú_process_argszOptionParser._process_args[  s<   € Ø×)Ñ)¨&Ó1ˆð
 —=‘=¤#§(¡(¨1¡+ °Ñ!6Ó7¸¸Ð;ˆ‰a‰r'   Nc                 óÌ  — 	 t         j                  j                  | ||«      \  }}| j$                  D ]@  }|j&                  j(                  j+                  «       D ]  \  }}|j-                  ||«       Œ ŒB ||fS # t        $ rá t	        j
                  «       d   }|j                  t        k7  r‚ |j                  t        j                  j                  k(  rt        |j                  «      ‚|j                  t        j                  j                  k(  rt        |j                  «      ‚|j                  t        j                  j                   k(  rt#        |j                  «      ‚‚ w xY w)Nr   )r   r   Ú
parse_argsr   rb   rc   rf   re   rh   r   r   rg   r   ri   ÚUNKNOWN_OPTIONr   ÚFAILEDr   r�   rR   Ú__dict__ÚitemsÚensure_value)r#   r$   rR   r�   rL   rl   ÚkeyÚvalues           r&   r¦   zOptionParser.parse_argsc  s*  € ð	Ü$×1Ñ1×<Ñ<Ø�d˜Fó$‰MˆG�Tð ×'Ñ'ò 	1ˆEØ#Ÿl™l×3Ñ3×9Ñ9Ó;ò 1‘
��UØ×$Ñ$ S¨%Õ0ñ1ð	1ð ˜ˆ}Ðøô# ò 	Ü—L‘L“N 1Ñ%ˆEØ�|‰|Ô9Ò9ØØ�z‰zœT×-Ñ-×7Ñ7Ò7Ü& u§}¡}Ó5Ð5Ø—‘œt×/Ñ/×>Ñ>Ò>Ü$ U§]¡]Ó3Ð3Ø—‘œt×/Ñ/×6Ñ6Ò6Ü# E§M¡MÓ2Ð2àð	ús   ‚$A9 Á9C*E#)NN)rB   rC   rD   rE   r   rŠ   r™   r›   rž   r¤   r¦   rI   r'   r&   r   r   ø   s,   „ ñò,8òòò@Fò ò<ôr'   r   )rE   rb   r   r   r   r   r   r   r   Úmoduler	   Úgir
   r   Ú	gi._errorr   r   Úquark_to_stringÚoption_error_quarkre   Ú__all__r   r   r   r   rI   r'   r&   ú<module>r´      s™   ðñ(ó Û Û ÷(õ (å ,ç *Ý Ù Ó'€à!×1Ñ1°$×2IÑ2IÓ2KÓLÐ ò
€ôXIˆX�_‰_ô XIôvb5�(×&Ñ&ô b5ôJ@�8×(Ñ(ô @ðF �r'   