ó
§Zc        	   @   s:  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	 e j
 d k rw e Z d „  Z n e Z e Z d d	 l m Z d d
 l m Z e	 d ƒ Z e j e j ƒ  ƒ Z d d d d d d d d d g	 Z d e j f d „  ƒ  YZ d e j f d „  ƒ  YZ d e j f d „  ƒ  YZ e Z d S(   s,  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.
iÿÿÿÿN(   t   OptParseErrort   OptionErrort   OptionValueErrort   BadOptionErrort   OptionConflictErrori   (   t   get_introspection_modulei   i    c         C   s
   |  j  ƒ  S(   N(   t   encode(   t   s(    (    s0   /usr/lib64/python2.7/site-packages/gi/_option.pyt   <lambda>&   s    (   t   _glib(   t   GErrort   GLibR    R   R   R   R   t   Optiont   OptionGroupt   OptionParsert   make_optionc           B   s_   e  Z d  Z e j j d	 Z e j j d d d g Z d e j Z	 d „  Z
 d „  Z d „  Z RS(
   s¹  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.
    t   filenamet   hiddent   in_maint   optional_args   --c         O   s   t  j j |  | | Ž |  j s. t d ƒ ‚ n  t |  j ƒ t |  j ƒ k  r[ t d ƒ ‚ n  |  j s} t d |  j d ƒ ‚ n  d  S(   Ns!   %s at least one long option name.s;   %s at least more long option names than short option names.s   %s needs a help message.i    (   t   optparseR   t   __init__t
   _long_optst
   ValueErrort   lent   _short_optst   help(   t   selft   argst   kwargs(    (    s0   /usr/lib64/python2.7/site-packages/gi/_option.pyR   e   s    		c         C   si   |  j  | k r% |  j j |  j  ƒ n  t j j |  | ƒ t |  j ƒ t |  j ƒ k re t d ƒ ‚ n  d  S(   NsC   goption.Option needs more long option names than short option names(	   t	   REMAININGR   t   appendR   R   t   _set_opt_stringR   R   R   (   R   t   opts(    (    s0   /usr/lib64/python2.7/site-packages/gi/_option.pyR    q   s
    c         c   s2  d } |  j  r" | t j j O} n  |  j r> | t j j O} n  |  j ƒ  ri |  j ry | t j j O} qy n | t j j	 O} |  j
 d k r› | t j j O} n  xK t |  j |  j ƒ D]4 \ } } | d t | d ƒ | |  j |  j f Vq± WxB |  j t |  j ƒ D]* } | d t d ƒ | |  j |  j f Vq Wd  S(   Ni    R   i   i   t    (   R   R   t   OptionFlagst   HIDDENR   t   IN_MAINt   takes_valueR   t   OPTIONAL_ARGt   NO_ARGt   typet   FILENAMEt   zipR   R   t   _bytesR   t   metavarR   (   R   t   flagst	   long_namet
   short_name(    (    s0   /usr/lib64/python2.7/site-packages/gi/_option.pyt   _to_goptionentriesy   s    			",(   s   filename(   t   __name__t
   __module__t   __doc__R   R   t   TYPESt   ATTRSR   t   OPTION_REMAININGR   R   R    R1   (    (    (    s0   /usr/lib64/python2.7/site-packages/gi/_option.pyR   >   s   		
		c           B   sJ   e  Z d  Z d d d d d „ Z d „  Z d „  Z d d „ Z d „  Z RS(   s÷  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.
    t    c         C   sƒ   t  j j |  t d | ƒ | |  _ d  |  _ | |  _ | rF | |  _ n  d  |  _	 | |  _
 | r x | D] } |  j | ƒ qe Wn  d  S(   Nt   error(   R   t   OptionContainerR   R   t   namet   Nonet   parsert   help_descriptiont   defaultst   valuest   translation_domaint
   add_option(   R   R;   t   descriptionR>   t   option_listR?   RA   t   option(    (    s0   /usr/lib64/python2.7/site-packages/gi/_option.pyR   ­   s    					c         C   s   g  |  _  |  j ƒ  d  S(   N(   RD   t   _create_option_mappings(   R   (    (    s0   /usr/lib64/python2.7/site-packages/gi/_option.pyt   _create_option_list¿   s    	c            s   ‡  ‡ f d †  } t  j ˆ j ˆ j ˆ j | ƒ } ˆ j rO | j ˆ j ƒ n  g  } x$ ˆ j D] } | j | j	 ƒ  ƒ q_ W| j
 | ƒ | S(   Nc            s°   |  j  d ƒ r ˆ j |  } n ˆ j |  } y | j |  | ˆ j ˆ  ƒ Wn` t k
 r« t j ƒ  d } t t	 | ƒ ƒ } t
 | _ t j j | _ t	 | ƒ | _ | ‚ n Xd  S(   Ns   --i   (   t
   startswitht	   _long_optt
   _short_optt   processR@   R   t   syst   exc_infoR
   t   strt   OPTION_CONTEXT_ERROR_QUARKt   domainR   R   t	   BAD_VALUEt   codet   message(   t   option_namet   option_valuet   groupt   optR9   t   gerror(   R=   R   (    s0   /usr/lib64/python2.7/site-packages/gi/_option.pyt   callbackÄ   s    	(   R	   R   R;   RC   R>   RA   t   set_translation_domainRD   t   extendR1   t   add_entries(   R   R=   RY   RV   t   entriesRE   (    (   R=   R   s0   /usr/lib64/python2.7/site-packages/gi/_option.pyt   _to_goptiongroupÃ   s    	c         C   s   |  j  ƒ  |  j | ƒ S(   s€    Returns the corresponding GOptionGroup object.

        Can be used as parameter for gnome_program_init(), gtk_init().
        (   t   set_values_to_defaultsR^   (   R   R=   (    (    s0   /usr/lib64/python2.7/site-packages/gi/_option.pyt   get_option_groupá   s    
c         C   s|   x` |  j  D]U } |  j j | j ƒ } t | t ƒ r
 | j ƒ  } | j | | ƒ |  j | j <q
 q
 Wt j	 |  j ƒ |  _
 d  S(   N(   RD   R?   t   gett   destt
   isinstancet   _basestringt   get_opt_stringt   check_valueR   t   ValuesR@   (   R   RE   t   defaultt   opt_str(    (    s0   /usr/lib64/python2.7/site-packages/gi/_option.pyR_   é   s    N(	   R2   R3   R4   R<   R   RG   R^   R`   R_   (    (    (    s0   /usr/lib64/python2.7/site-packages/gi/_option.pyR   ’   s   		c           B   sS   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d d d „ Z
 RS(	   sH  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         O   sc   d | k r t  | d <n  | j d t ƒ |  _ | j d t ƒ |  _ t j j |  d t | | Žd  S(   Nt   option_classt   help_enabledt   ignore_unknown_optionst   add_help_option(	   R   t   popt   TrueRk   t   FalseRl   R   R   R   (   R   R   R   (    (    s0   /usr/lib64/python2.7/site-packages/gi/_option.pyR   
  s    	c         C   sJ   | d  k r d |  _ n. | j d ƒ r= | t d ƒ |  _ n	 | |  _ d  S(   NR8   s   %prog(   R<   t   usageRH   R   (   R   Rq   (    (    s0   /usr/lib64/python2.7/site-packages/gi/_option.pyt	   set_usage  s
    c   
         s  ˆ  j  r  ˆ  j d ˆ  j  } n	 ˆ  j } t j | ƒ } | j ˆ  j ƒ | j ˆ  j ƒ xH ˆ  j D]= } t	 | t j
 ƒ rƒ | } n | j ˆ  ƒ } | j | ƒ qb W‡  ‡ f d †  } t j
 d  d  d  | ƒ } g  } x$ ˆ  j D] }	 | j |	 j ƒ  ƒ qÝ W| j | ƒ | j | ƒ | S(   Ns    - c            sF   |  j  d ƒ r ˆ  j |  } n ˆ  j |  } | j |  | ˆ ˆ  ƒ d  S(   Ns   --(   RH   RI   RJ   RK   (   RT   RU   RV   RW   (   R   R@   (    s0   /usr/lib64/python2.7/site-packages/gi/_option.pyRY   +  s    (   RC   Rq   R	   t   OptionContextt   set_help_enabledRk   t   set_ignore_unknown_optionsRl   t   option_groupsRc   R   R`   t	   add_groupR<   RD   R[   R1   R\   t   set_main_group(
   R   R@   t   parameter_stringt   contextt   option_groupt   g_groupRY   t
   main_groupt   main_entriesRE   (    (   R   R@   s0   /usr/lib64/python2.7/site-packages/gi/_option.pyt   _to_goptioncontext  s&    			c         O   sï   t  | d t ƒ r6 t j j |  t |  | | Ž ƒ d  St | ƒ d k rÕ | rÕ t  | d t ƒ r¤ | d j s |  | d _ n  | d j |  k	 r¤ t d ƒ ‚ q¤ n  t  | d t	 j ƒ rÕ |  j
 j | d ƒ d  Sn  t j j |  | | Ž d  S(   Ni    i   s"   invalid OptionGroup (wrong parser)(   Rc   Rd   R   R   t   add_option_groupR   R   R=   R   R	   Rv   R   (   R   R   R   (    (    s0   /usr/lib64/python2.7/site-packages/gi/_option.pyR€   ;  s    c         C   sG   |  j  } x6 |  j D]+ } t | t j ƒ r | j | j  ƒ q q W| S(   N(   RD   Rv   Rc   R   R   R[   (   R   t   optionsRV   (    (    s0   /usr/lib64/python2.7/site-packages/gi/_option.pyt   _get_all_optionsK  s
    
c         C   s5   |  j  | ƒ } | j t j d g | ƒ d | (d  S(   Ni    i   (   R   t   parseRL   t   argv(   R   t   largst   rargsR@   Rz   (    (    s0   /usr/lib64/python2.7/site-packages/gi/_option.pyt   _process_argsR  s    c   	      C   sD  | p	 g  } y" t  j j |  | | ƒ \ } } Wn® t k
 rÞ t j ƒ  d } | j t k rc ‚  n  | j t	 j
 j k rŠ t | j ƒ ‚ qß | j t	 j
 j k r± t | j ƒ ‚ qß | j t	 j
 j k rØ t | j ƒ ‚ qß ‚  n XxD |  j D]9 } x0 | j j j ƒ  D] \ } } | j | | ƒ qWqé W| d t | ƒ !} | | f S(   Ni   i   (   R   R   t
   parse_argsR
   RL   RM   RP   RO   RR   R   R   RQ   R   RS   t   UNKNOWN_OPTIONR   t   FAILEDR    Rv   R@   t   __dict__t   itemst   ensure_valueR   (	   R   R   R@   t   old_argsR   R9   RV   t   keyt   value(    (    s0   /usr/lib64/python2.7/site-packages/gi/_option.pyRˆ   Z  s(    	N(   R2   R3   R4   R   Rr   R   R€   R‚   R‡   R<   Rˆ   (    (    (    s0   /usr/lib64/python2.7/site-packages/gi/_option.pyR   ó   s   				 			(   i   i    (   R4   RL   R   R    R   R   R   R   t   moduleR   t   version_infoRN   Rd   R,   t
   basestringt   gi._giR	   t	   gi._errorR
   R   t   quark_to_stringt   option_error_quarkRO   t   __all__R   R   R   R   (    (    (    s0   /usr/lib64/python2.7/site-packages/gi/_option.pyt   <module>   s4   (	Ta€