§
    f¥_T3  ã                   ó<  — d 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 ddlmZ  e	d¦  «        Ze                     e                     ¦   «         ¦  «        Zg d	¢Z G d
„ dej        ¦  «        Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        ZeZdS )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)ÚGErrorÚGLib)	r   r   r   r   r   ÚOptionÚOptionGroupÚOptionParserÚmake_optionc                   óx   — 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dS )	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                 ó  — t          j        j        | g|¢R i |¤Ž | j        st	          d¦  «        ‚t          | j        ¦  «        t          | j        ¦  «        k     rt	          d¦  «        ‚| j        st	          d| j        d         ¦  «        ‚d S )Nz!%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   )Úoptparser   Ú__init__Ú
_long_optsÚ
ValueErrorÚlenÚ_short_optsÚhelp©ÚselfÚargsÚkwargss      ú,/usr/lib/python3/dist-packages/gi/_option.pyr   zOption.__init__^   s¨   € ÝŒÔ  Ð7¨Ð7Ð7Ð7°Ð7Ð7Ð7ØŒð 	BÝÐ@ÑAÔAÐAåˆtŒÑÔ¥# dÔ&6Ñ"7Ô"7Ò7Ð7ÝØMñOô Oð Oð Œyð 	MÝÐ7¸¼ÈÔ9KÑLÔLÐLð	Mð 	Mó    c                 ó  — | j         |v r| j                             | j         ¦  «         t          j                             | |¦  «         t          | j        ¦  «        t          | j        ¦  «        k    rt          d¦  «        ‚d S )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_stringj   s~   € ØŒ>˜TÐ!Ð!ØŒO×"Ò" 4¤>Ñ2Ô2Ð2ÝŒ×'Ò'¨¨dÑ3Ô3Ð3ÝˆtÔÑ Ô ¥3 t¤Ñ#7Ô#7Ò7Ð7Ýð 8ñ 9ô 9ð 9ð 8Ð7r$   c              #   ó˜  K  — d}| j         r|t          j        j        z  }| j        r|t          j        j        z  }|                      ¦   «         r| j        r|t          j        j        z  }n|t          j        j	        z  }| j
        dk    r|t          j        j        z  }t          | j        | j        ¦  «        D ]R\  }}|d         }t          |t           ¦  «        s|                     d¦  «        }|dd …         ||| j        | j        fV — ŒS| j        t)          | j        ¦  «        d …         D ]}|dd …         d|| j        | j        fV — Œd S )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_goptionentriesr   sp  è è € ØˆàŒ;ð 	-Ø•TÔ%Ô,Ñ,ˆEàŒ<ð 	.Ø•TÔ%Ô-Ñ-ˆEà×ÒÑÔð 	-ØÔ ð 7Ø�Ô)Ô6Ñ6�øà•TÔ%Ô,Ñ,ˆEàŒ9˜
Ò"Ð"Ø•TÔ%Ô.Ñ.ˆEå'*¨4¬?¸DÔ<LÑ'MÔ'Mð 	Oð 	OÑ#ˆY˜
Ø$ Qœ-ˆKÝ˜k­5Ñ1Ô1ð :Ø)×0Ò0°Ñ9Ô9�Ø˜Q˜R˜R”= +¨u°d´iÀÄÐNÐNÐNÐNÐNàœ­¨TÔ-=Ñ)>Ô)>Ð)?Ð)?Ô@ð 	Ið 	IˆIØ˜Q˜R˜R”= %¨°´	¸4¼<ÐHÐHÐHÐHÐHð	Ið 	Ir$   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   ÚTYPESÚATTRSr   ÚOPTION_REMAININGr&   r   r(   r>   © r$   r#   r   r   7   s˜   € € € € € ðð ð4 ŒOÔ!ð %ñ €Eð ŒOÔ!ð %ð %ð %ñ €Eð �tÔ,Ñ,€Ið
Mð 
Mð 
Mð9ð 9ð 9ðIð Ið Ið Ið Ir$   r   c                   ó:   — e Zd ZdZ	 	 	 d	d„Zd„ Zd„ Zd
d„Zd„ ZdS )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                             | t          d|¦  «         || _        d | _        || _        |r|| _        d | _        || _	        |r|D ]}|  
                    |¦  «         Œd S d S )NÚerror)r   ÚOptionContainerr   r   ÚnameÚparserÚhelp_descriptionÚdefaultsÚvaluesÚtranslation_domainÚ
add_option)r    rL   ÚdescriptionrN   Úoption_listrO   rQ   Úoptions           r#   r   zOptionGroup.__init__©   s•   € õ 	Ô ×)Ò)¨$µ¸ÀÑMÔMÐMØˆŒ	ØˆŒØ 0ˆÔØð 	%Ø$ˆDŒMàˆŒà"4ˆÔàð 	(Ø%ð (ð (�Ø—’ Ñ'Ô'Ð'Ð'ð	(ð 	(ð(ð (r$   c                 ó<   — g | _         |                      ¦   «          d S ©N)rT   Ú_create_option_mappings)r    s    r#   Ú_create_option_listzOptionGroup._create_option_list»   s"   € ØˆÔØ×$Ò$Ñ&Ô&Ð&Ð&Ð&r$   c                 ó4  ‡ ‡— ˆˆ fd„}t          j        ‰ j        ‰ j        ‰ j        |¦  «        }‰ j        r|                     ‰ j        ¦  «         g }‰ j        D ])}|                     | 	                    ¦   «         ¦  «         Œ*| 
                    |¦  «         |S )Nc                 óš  •— |                       d¦  «        r‰j        |          }n‰j        |          }	 |                     | |‰j        ‰¦  «         d S # t
          $ rn t          j        ¦   «         d         }t          t          |¦  «        ¦  «        }t          |_        t          j        j        |_        t          |¦  «        |_        |‚w xY w)Nr   r   )Ú
startswithÚ	_long_optÚ
_short_optÚprocessrP   r   ÚsysÚexc_infor   ÚstrÚOPTION_CONTEXT_ERROR_QUARKÚdomainr   r   Ú	BAD_VALUEÚcodeÚmessage)Úoption_nameÚoption_valueÚgroupÚoptrJ   ÚgerrorrM   r    s         €€r#   Úcallbackz.OptionGroup._to_goptiongroup.<locals>.callbackÀ   s¼   ø€ Ø×%Ò% dÑ+Ô+ð 3Ø”n [Ô1��à”o kÔ2�ðØ—’˜K¨°t´{ÀFÑKÔKÐKÐKÐKøÝ#ð ð ð Ýœ™œ qÔ)�Ý¥ E¡
¤
Ñ+Ô+�Ý :�”Ý"Ô.Ô8�”Ý!$ U¡¤�”Ø�ðøøøs   ³A ÁA8C
)r
   r   rL   rS   rN   rQ   Úset_translation_domainrT   Úextendr>   Úadd_entries)r    rM   rm   rj   ÚentriesrU   s   ``    r#   Ú_to_goptiongroupzOptionGroup._to_goptiongroup¿   s¼   øø€ ð	ð 	ð 	ð 	ð 	ð 	õ  ” ¤	¨4Ô+;Ø $Ô 5°xñAô AˆàÔ"ð 	BØ×(Ò(¨Ô)@ÑAÔAÐAàˆØÔ&ð 	8ð 	8ˆFØ�NŠN˜6×4Ò4Ñ6Ô6Ñ7Ô7Ð7Ð7à×Ò˜'Ñ"Ô"Ð"àˆr$   c                 óT   — |                       ¦   «          |                      |¦  «        S )z€ Returns the corresponding GOptionGroup object.

        Can be used as parameter for gnome_program_init(), gtk_init().
        )Úset_values_to_defaultsrr   )r    rM   s     r#   Úget_option_groupzOptionGroup.get_option_groupÝ   s*   € ð
 	×#Ò#Ñ%Ô%Ð%Ø×$Ò$ VÑ,Ô,Ð,r$   c                 ó,  — | j         D ]m}| j                             |j        ¦  «        }t	          |t
          ¦  «        r7|                     ¦   «         }|                     ||¦  «        | j        |j        <   Œnt          j	        | j        ¦  «        | _
        d S rW   )rT   rO   ÚgetÚdestr6   rb   Úget_opt_stringÚcheck_valuer   ÚValuesrP   )r    rU   ÚdefaultÚopt_strs       r#   rt   z"OptionGroup.set_values_to_defaultså   s‰   € ØÔ&ð 	&ð 	&ˆFØ”m×'Ò'¨¬Ñ4Ô4ˆGÝ˜'¥3Ñ'Ô'ð &Ø ×/Ò/Ñ1Ô1�Ø-3×-?Ò-?Ø˜Wñ.&ô .&�”˜fœkÑ*øå”o d¤mÑ4Ô4ˆŒˆˆr$   )rH   NNNrW   )	r?   r@   rA   rB   r   rY   rr   ru   rt   rF   r$   r#   r   r   Ž   s~   € € € € € ðð ð4 <>Ø,0Ø$(ð(ð (ð (ð (ð$'ð 'ð 'ðð ð ð<-ð -ð -ð -ð5ð 5ð 5ð 5ð 5r$   r   c                   ó>   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d
d	„Z
dS )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                 óÆ   — d|vr
t           |d<   |                     dd¦  «        | _        |                     dd¦  «        | _        t	          j        j        | g|¢R ddi|¤Ž d S )NÚoption_classÚhelp_enabledTÚignore_unknown_optionsFÚadd_help_option)r   Úpopr�   r‚   r   r   r   r   s      r#   r   zOptionParser.__init__  sŽ   € Ø Ð'Ð'Ý%+ˆF�>Ñ"Ø"ŸJšJ ~°tÑ<Ô<ˆÔØ&,§j¢jÐ1IØ16ñ'8ô '8ˆÔ#åÔÔ& tð 	8Ø(,ð	8ð 	8ð 	8¸Uð 	8Ø06ð	8ð 	8ð 	8ð 	8ð 	8r$   c                 ó�   — |€	d| _         d S |                     d¦  «        r|t          d¦  «        d …         | _         d S || _         d S )NrH   z%prog)Úusager\   r   )r    r†   s     r#   Ú	set_usagezOptionParser.set_usage  sM   € Øˆ=ØˆDŒJˆJˆJØ×Ò˜gÑ&Ô&ð 	Ø�s 7™|œ|˜}˜}Ô-ˆDŒJˆJˆJàˆDŒJˆJˆJr$   c                 ór  ‡ ‡— ‰ j         r‰ j        dz   ‰ j         z   }n‰ j        }t          j        |¦  «        }|                     ‰ j        ¦  «         |                     ‰ j        ¦  «         ‰ j        D ]I}t          |t          j
        ¦  «        r|}n|                     ‰ ¦  «        }|                     |¦  «         ŒJˆ ˆfd„}t          j
        d d d |¦  «        }g }‰ j        D ])}	|                     |	                     ¦   «         ¦  «         Œ*|                     |¦  «         |                     |¦  «         |S )Nz - c                 ó˜   •— |                       d¦  «        r‰j        |          }n‰j        |          }|                     | |‰‰¦  «         d S )Nr   )r\   r]   r^   r_   )rh   ri   rj   rk   r    rP   s       €€r#   rm   z1OptionParser._to_goptioncontext.<locals>.callback'  sQ   ø€ Ø×%Ò% dÑ+Ô+ð 3Ø”n [Ô1��à”o kÔ2�Ø�KŠK˜ \°6¸4Ñ@Ô@Ð@Ð@Ð@r$   )rS   r†   r
   ÚOptionContextÚset_help_enabledr�   Úset_ignore_unknown_optionsr‚   Úoption_groupsr6   r   ru   Ú	add_grouprT   ro   r>   rp   Úset_main_group)
r    rP   Úparameter_stringÚcontextÚoption_groupÚg_grouprm   Ú
main_groupÚmain_entriesrU   s
   ``        r#   Ú_to_goptioncontextzOptionParser._to_goptioncontext  sg  øø€ ØÔð 	*Ø#œz¨EÑ1°DÔ4DÑDÐÐà#œzÐÝÔ#Ð$4Ñ5Ô5ˆØ× Ò  Ô!2Ñ3Ô3Ð3Ø×*Ò*¨4Ô+FÑGÔGÐGà Ô.ð 	'ð 	'ˆLÝ˜,­¬Ñ8Ô8ð >Ø&��à&×7Ò7¸Ñ=Ô=�Ø×Ò˜gÑ&Ô&Ð&Ð&ð	Að 	Að 	Að 	Að 	Að 	Aõ ”_ T¨4°°xÑ@Ô@ˆ
ØˆØÔ&ð 	=ð 	=ˆFØ×Ò × 9Ò 9Ñ ;Ô ;Ñ<Ô<Ð<Ð<Ø×Ò˜|Ñ,Ô,Ð,Ø×Ò˜zÑ*Ô*Ð*àˆr$   c                 ó$  — t          |d         t          ¦  «        r0t          j                             | t          | g|¢R i |¤Ž¦  «         d S t          |¦  «        dk    r—|s•t          |d         t
          ¦  «        r8|d         j        s| |d         _        |d         j        | urt          d¦  «        ‚t          |d         t          j        ¦  «        r"| j
                             |d         ¦  «         d S t          j        j        | g|¢R i |¤Ž d S )Nr   r   z"invalid OptionGroup (wrong parser))r6   rb   r   r   Úadd_option_groupr   r   rM   r   r
   r�   r'   r   s      r#   r˜   zOptionParser.add_option_group7  s  € Ý�d˜1”g�sÑ#Ô#ð 	ÝÔ!×2Ò2°4Ý3>¸tÐ3UÀdÐ3UÐ3UÐ3UÈfÐ3UÐ3UñWô Wð WàˆFÝ�‰YŒY˜!Š^ˆ^ Fˆ^Ý˜$˜qœ'¥;Ñ/Ô/ð KØ˜A”w”~ð *Ø%)�D˜”G”NØ˜”7”>¨Ð-Ð-Ý$Ð%IÑJÔJÐJÝ˜$˜qœ'¥3¤?Ñ3Ô3ð ØÔ"×)Ò)¨$¨q¬'Ñ2Ô2Ð2Ø�ÝÔÔ.¨tÐE°dÐEÐEÐE¸fÐEÐEÐEÐEÐEr$   c                 ó    — | j         d d …         }| j        D ]6}t          |t          j        ¦  «        r|                     |j         ¦  «         Œ7|S rW   )rT   r�   r6   r   r   ro   )r    Úoptionsrj   s      r#   Ú_get_all_optionszOptionParser._get_all_optionsG  sU   € ØÔ" 1 1 1Ô%ˆØÔ'ð 	2ð 	2ˆEÝ˜%¥Ô!5Ñ6Ô6ð 2Ø—’˜uÔ0Ñ1Ô1Ð1øØˆr$   c                 óœ   — |                       |¦  «        }|                     t          j        d         g|z   ¦  «        dd …         |d d …<   d S )Nr   r   )r–   Úparser`   Úargv)r    ÚlargsÚrargsrP   r‘   s        r#   Ú_process_argszOptionParser._process_argsN  sJ   € Ø×)Ò)¨&Ñ1Ô1ˆð
 —=’=¥#¤(¨1¤+ °Ñ!6Ñ7Ô7¸¸¸Ô;ˆˆaˆaˆa‰ˆˆr$   Nc                 ód  — 	 t           j                             | ||¦  «        \  }}nÃ# t          $ r¶ t	          j        ¦   «         d         }|j        t          k    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| j        D ]<}|j        j                             ¦   «         D ]\  }}|                     ||¦  «         ŒŒ=||fS )Nr   )r   r   Ú
parse_argsr   r`   ra   rd   rc   rf   r   r   re   r   rg   ÚUNKNOWN_OPTIONr   ÚFAILEDr   r�   rP   Ú__dict__ÚitemsÚensure_value)r    r!   rP   rš   rJ   rj   ÚkeyÚvalues           r#   r£   zOptionParser.parse_argsV  s6  € ð	Ý$Ô1×<Ò<Ø�d˜Fñ$ô $‰MˆG�T�Tøåð 	ð 	ð 	Ý”L‘N”N 1Ô%ˆEØŒ|Õ9Ò9Ð9ØØŒz�TÔ-Ô7Ò7Ð7Ý& u¤}Ñ5Ô5Ð5Ø”�tÔ/Ô>Ò>Ð>Ý$ U¤]Ñ3Ô3Ð3Ø”�tÔ/Ô6Ò6Ð6Ý# E¤MÑ2Ô2Ð2àð	øøøð Ô'ð 	1ð 	1ˆEØ#œlÔ3×9Ò9Ñ;Ô;ð 1ð 1‘
��UØ×$Ò$ S¨%Ñ0Ô0Ð0Ð0ð1ð ˜ˆ}Ðs
   ‚$' §C C')NN)r?   r@   rA   rB   r   r‡   r–   r˜   r›   r¡   r£   rF   r$   r#   r   r   ï   s�   € € € € € ðð ð,8ð 8ð 8ðð ð ðð ð ð@Fð Fð Fð ð ð ð<ð <ð <ðð ð ð ð ð r$   r   )rB   r`   r   r   r   r   r   r   Úmoduler	   Úgir
   Ú	gi._errorr   r   Úquark_to_stringÚoption_error_quarkrc   Ú__all__r   r   r   r   rF   r$   r#   ú<module>r±      s”  ðð(ð ð €
€
€
Ø €€€ð(ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (à ,Ð ,Ð ,Ð ,Ð ,Ð ,à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ØÐ Ñ'Ô'€à!×1Ò1°$×2IÒ2IÑ2KÔ2KÑLÔLÐ ð
ð 
ð 
€ðTIð TIð TIð TIð TIˆXŒ_ñ TIô TIð TIðn^5ð ^5ð ^5ð ^5ð ^5�(Ô&ñ ^5ô ^5ð ^5ðB|ð |ð |ð |ð |�8Ô(ñ |ô |ð |ð~ €€€r$   