f5<dZddlZddlZddlZddlmZmZmZmZmZddl m Z ddl m Z m Z ddlmZe dZej#ej%Zgd ZGd d ej*ZGd d ej,ZGddej.ZeZy)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 OptionErrorOptionValueErrorBadOptionErrorOptionConflictError)get_introspection_module)_giPyGIDeprecationWarning)GErrorGLib) rrrrrOption OptionGroup OptionParser make_optionceZdZdZej j dzZej jgdzZdejzZ dZ dZ dZ y) raRepresents 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)hiddenin_main optional_arg--cbtjdttjj |g|i||j s tdt|j t|jkr td|jstd|j dy)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) warningswarnr optparser__init__ _long_opts ValueErrorlen _short_optshelpselfargskwargss ,/usr/lib/python3/dist-packages/gi/_option.pyrzOption.__init___s g "    777@A A t #d&6&6"7 7MO Oyy79KL Lc|j|vr%|jj|jtjj ||t |jt |jkDr tdy)NzCgoption.Option needs more long option names than short option names) REMAININGrappendrr_set_opt_stringrr r)r#optss r&r+zOption._set_opt_stringosk >>T ! OO " "4>> 2''d3 t 3t#7 789 9 8r'c#$Kd}|jr|tjjz}|jr|tjj z}|j r*|jr;|tjjz}n|tjjz}|jdk(r|tjjz}t|j|jD]K\}}|d}t|t s|j#d}|dd|||j$|j&fM|jt)|jdD]"}|ddd||j$|j&f$yw)Nrrrzutf-8)rr OptionFlagsHIDDENrIN_MAIN takes_valuer OPTIONAL_ARGNO_ARGtypeFILENAMEziprr isinstancebytesencoder!metavarr)r#flags long_name short_name short_bytess r&_to_goptionentrieszOption._to_goptionentrieswsZ ;; T%%,, ,E << T%%-- -E      ))666 T%%,, ,E 99 " T%%.. .E'*4??D)?@ IIQR=% 4<<H H IsFFN)__name__ __module__ __qualname____doc__rrTYPESATTRSr OPTION_REMAININGr)rr+rAr'r&rr8s`4 OO ! !% E OO ! !% E t,,,IM 9Ir'rc8eZdZdZ ddZdZdZd dZdZy) raA 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. Nctjdttjj |t d|||_d|_||_ |r||_ d|_ ||_ |r|D]}|j|yy)Nz`gi.repository.GLib.option.OptionGroup is depecated, use gi.repository.GLib.OptionContext insteaderror)rrr rOptionContainerrrnameparserhelp_descriptiondefaultsvaluestranslation_domain add_option)r#rN descriptionrP option_listrQrSoptions r&rzOptionGroup.__init__s  n "    ))$M  0 $DM "4 % (' ( r'c2g|_|jyN)rV_create_option_mappings)r#s r&_create_option_listzOptionGroup._create_option_lists $$&r'cVfd}tjjjj|}j r|j j g}jD]!}|j|j#|j||S)Nc|jdrj|}nj|} |j||jy#t $rht jd}tt|}t|_ tjj|_t||_|wxYw)Nrr) startswith _long_opt _short_optprocessrRrsysexc_infor strOPTION_CONTEXT_ERROR_QUARKdomainr r BAD_VALUEcodemessage) option_name option_valuegroupoptrLgerrorrOr#s r&callbackz.OptionGroup._to_goptiongroup..callbacks%%d+nn[1ook2  Kt{{FK#  q)E + : "..88 !$U  s AA1C) r rrNrUrPrSset_translation_domainrVextendrA add_entries)r#rOrorlentriesrWs`` r&_to_goptiongroupzOptionGroup._to_goptiongroups   4+;+; $ 5 5xA  " "  ( ()@)@ A&& 8F NN6446 7 8 '" r'cD|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#rOs r&get_option_groupzOptionGroup.get_option_groups! ##%$$V,,r'cL|jD]q}|jj|j}t |t s9|j }|j|||j|j<stj|j|_ yrY) rVrQgetdestr9rdget_opt_string check_valuerValuesrR)r#rWdefaultopt_strs r&rvz"OptionGroup.set_values_to_defaultss&& &Fmm'' 4G'3' //1-3-?-?W.& fkk*  & oodmm4 r')NNNrY) rBrCrDrErr[rtrwrvrIr'r&rrs+4<>,0$((,'<-5r'rc<eZdZdZdZdZdZdZdZdZ d d Z y) raHCommand 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. ctjdtd|vr t|d<|j dd|_|j dd|_tjj|g|ddi|y)Nzagi.repository.GLib.option.OptionParser is depecated, use gi.repository.GLib.OptionContext instead option_class help_enabledTignore_unknown_optionsFadd_help_option) rrr rpoprrrrrr"s r&rzOptionParser.__init__s o "   '%+F> ""JJ~t<&,jj1I16'8#&&t 8(, 8U 806 8r'cp|d|_y|jdr|tdd|_y||_y)Nrz%prog)usager^r)r#rs r& set_usagezOptionParser.set_usages5 =DJ   g &s7|}-DJDJr'cjrjdzjz}n j}tj|}|j j |j jjD]A}t|tjr|}n|j}|j|Cfd}tjddd|}g}jD]!} |j| j#|j!||j#||S)Nz - c|jdrj|}nj|}|j||y)Nr)r^r_r`ra)rjrkrlrmr#rRs r&roz1OptionParser._to_goptioncontext..callback4s?%%d+nn[1ook2 KK \64 @r')rUrr OptionContextset_help_enabledrset_ignore_unknown_optionsr option_groupsr9rrw add_grouprVrqrArrset_main_group) r#rRparameter_stringcontext option_groupg_groupro main_group main_entriesrWs `` r&_to_goptioncontextzOptionParser._to_goptioncontext$s   #zzE1D4D4DD #zz ##$45  !2!23**4+F+FG .. 'L,8&&77=   g &  ' A__T4x@  && =F    9 9 ; < =|,z*r'ct|dtr.tjj |t |g|i|yt |dk(r|st|dt r5|djs ||d_|dj|ur tdt|dtj r|jj|dytjj|g|i|y)Nrrz"invalid OptionGroup (wrong parser)) r9rdrradd_option_grouprrrOrr rr*r"s r&rzOptionParser.add_option_groupDs d1gs #  ! ! 2 243>t3Ud3Uf3U W  Y!^F$q';/Aw~~%)DGN7>>-$%IJJ$q'3??3""))$q'2..tEdEfEr'c|jdd}|jD]8}t|tjs|j |j:|SrY)rVrr9rrrq)r#optionsrls r&_get_all_optionszOptionParser._get_all_optionsTsP""1%'' 2E%!5!56u001 2r'c~|j|}|jtjdg|zdd|ddy)Nrr)rparserbargv)r#largsrargsrRrs r& _process_argszOptionParser._process_args[s<))&1 ==#((1+!67;ar'Nc tjj|||\}}|j$D]@}|j&j(j+D]\}}|j-||B||fS#t$rt j d}|j tk7r|jtjjk(rt|j|jtjjk(rt|j|jtjj k(rt#|jwxYw)Nr)rr parse_argsr rbrcrfrerhr rrgrriUNKNOWN_OPTIONrFAILEDrrrR__dict__items ensure_value)r#r$rRrrLrlkeyvalues r&rzOptionParser.parse_argscs* $11<<dF$MGT'' 1E#ll3399; 1 U$$S%0 1 1}# LLN1%E||99zzT--777&u}}55t//>>>$U]]33t//666#EMM22 s $A99C*E#)NN) rBrCrDrErrrrrrrrIr'r&rrs,, 8@F <r'r)rErbrrrrrrrmoduler gir r gi._errorr r quark_to_stringoption_error_quarkre__all__rrrrrIr'r&rs( ((,*'!11$2I2I2KL XIX__XIvb5(&&b5J@8((@F r'