Plan 9 from Bell Labs’s /usr/web/sources/contrib/stallion/root/sys/lib/python2.7/distutils/fancy_getopt.pyo

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


�`^c@s�dZdZddlZddlZddlZddlZddlmZmZdZ	ej
de	�Zej
de	e	f�Zej
dd	�Zd
fd��YZd�Zej
ejd
eej��Zd�Zd�Zdfd��YZdS(s6distutils.fancy_getopt

Wrapper around the standard getopt module that provides the following
additional features:
  * short and long options are tied together
  * options have help strings, so fancy_getopt could potentially
    create a complete usage summary
  * options set attributes of a passed-in object
s$Id$i�N(tDistutilsGetoptErrortDistutilsArgErrors[a-zA-Z](?:[a-zA-Z0-9-]*)s^%s$s^(%s)=!(%s)$t-t_tFancyGetoptcBs�eZdZdd�Zd�Zd�Zddd�Zd�Zd�Z	d�Z
d�Zd	�Zd
�Z
ddd�Zd�Zdd
�Zddd�ZRS(s�Wrapper around the standard 'getopt()' module that provides some
    handy extra functionality:
      * short and long options are tied together
      * options have help strings, and help text can be assembled
        from them
      * options set attributes of a passed-in object
      * boolean options can have "negative aliases" -- eg. if
        --quiet is the "negative alias" of --verbose, then "--quiet"
        on the command line sets 'verbose' to false
    cCst||_i|_|jr(|j�ni|_i|_g|_g|_i|_i|_i|_	g|_
dS(N(toption_tabletoption_indext_build_indextaliastnegative_aliast
short_optst	long_optst
short2longt	attr_namet	takes_argtoption_order(tselfR((s,/sys/lib/python2.7/distutils/fancy_getopt.pyt__init__-s
			
							cCs6|jj�x"|jD]}||j|d<qWdS(Ni(RtclearR(Rtoption((s,/sys/lib/python2.7/distutils/fancy_getopt.pyRYs
cCs||_|j�dS(N(RR(RR((s,/sys/lib/python2.7/distutils/fancy_getopt.pytset_option_table^s	cCsO||jkrtd|�n,|||f}|jj|�||j|<dS(Ns'option conflict: already an option '%s'(RRRtappend(Rtlong_optiontshort_optionthelp_stringR((s,/sys/lib/python2.7/distutils/fancy_getopt.pyt
add_optionbs
cCs
||jkS(scReturn true if the option table for this parser has an
        option with long name 'long_option'.(R(RR((s,/sys/lib/python2.7/distutils/fancy_getopt.pyt
has_optionlscCstj|t�S(s�Translate long option name 'long_option' to the form it
        has as an attribute of some object: ie., translate hyphens
        to underscores.(tstringt	translatet
longopt_xlate(RR((s,/sys/lib/python2.7/distutils/fancy_getopt.pyt
get_attr_nameqscCsqxj|j�D]\\}}||jkrAtd|||f�n||jkr
td|||f�q
q
WdS(Ns(invalid %s '%s': option '%s' not defineds0invalid %s '%s': aliased option '%s' not defined(titemsRR(RtaliasestwhatRtopt((s,/sys/lib/python2.7/distutils/fancy_getopt.pyt_check_alias_dictxscCs|j|d�||_dS(s'Set the aliases for this option parser.RN(R#R(RR((s,/sys/lib/python2.7/distutils/fancy_getopt.pytset_aliases�scCs|j|d�||_dS(s�Set the negative aliases for this option parser.
        'negative_alias' should be a dictionary mapping option names to
        option names, both the key and value must already be defined
        in the option table.snegative aliasN(R#R	(RR	((s,/sys/lib/python2.7/distutils/fancy_getopt.pytset_negative_aliases�scCs�g|_g|_|jj�i|_x]|jD]R}t|�dkrb|\}}}d}n7t|�dkr�|\}}}}ntd|f�t|t	�s�t|�dkr�t
d|�n|dkp�|t	�o�|�dkst
d|�n||j|<|jj|�|d	d
kre|rH|d}n|dd	!}d|j
|<nk|jj|�}|dk	r�|j
|r�t
d||f�n||jd	<d|j
|<n
d|j
|<|jj|�}|dk	r!|j
||j
|kr!t
d
||f�q!ntj|�sDt
dd|�n|j|�|j|<|r2|jj|�||j|d<q2q2WdS(s�Populate the various data structures that keep tabs on the
        option table.  Called by 'getopt()' before it can do anything
        worthwhile.
        iiisinvalid option tuple: %ris9invalid long option '%s': must be a string of length >= 2is:invalid short option '%s': must a single character or Nonei�t=t:s>invalid negative alias '%s': aliased option '%s' takes a valuesginvalid alias '%s': inconsistent with aliased option '%s' (one of them takes a value, the other doesn'tsinvalid long option name '%s' s'(must be letters, numbers, hyphens onlyN(RR
RRtrepeatRtlent
ValueErrort
isinstancetstrRtNoneRRR	tgetRt
longopt_retmatchRR
(RRtlongtshortthelpR(talias_to((s,/sys/lib/python2.7/distutils/fancy_getopt.pyt_grok_option_table�sd		
		"
!






cCs�|dkrtjd}n|dkr:t�}d}nd}|j�tj|j�}y"tj|||j	�\}}Wntj
k
r�}t|�nXx|D]\}}t|�dkr�ddkr�j
|d}n
|d}|jj|�}	|	r|	}n|j|sQ|jj|�}	|	rH|	}d}qQd}n|j|}
|r�|jj|
�dk	r�t||
d�d}nt||
|�|jj||f�q�W|r�||fS|SdS(sParse command-line options in args. Store as attributes on object.

        If 'args' is None or not supplied, uses 'sys.argv[1:]'.  If
        'object' is None or not supplied, creates a new OptionDummy
        object, stores option values there, and returns a tuple (args,
        object).  If 'object' is supplied, it is modified in place and
        'getopt()' just returns 'args'; in both cases, the returned
        'args' is a modified copy of the passed-in 'args' list, which
        is left untouched.
        iiiRN(R-tsystargvtOptionDummyR5RtjoinR
tgetoptRterrorRR)RRR.RR	R
R(tgetattrtsetattrRR(Rtargstobjecttcreated_objectR
toptstmsgR"tvalRtattr((s,/sys/lib/python2.7/distutils/fancy_getopt.pyR:�sB		
"
"
	
		

cCs&|jdkrtd�n|jSdS(s�Returns the list of (option, value) tuples processed by the
        previous run of 'getopt()'.  Raises RuntimeError if
        'getopt()' hasn't been called yet.
        s!'getopt()' hasn't been called yetN(RR-tRuntimeError(R((s,/sys/lib/python2.7/distutils/fancy_getopt.pytget_option_order*scCs�d}x||jD]q}|d}|d}t|�}|ddkrS|d}n|dk	rl|d}n||kr|}qqW|ddd}d}||}	d|}
|r�|g}n	d	g}x|jD]}|d
 \}}}t||	�}
|ddkr|dd!}n|dkrk|
rQ|jd|||
df�q�|jd||f�nHd
||f}|
r�|jd|||
df�n|jd|�x#|
dD]}|j|
|�q�Wq�W|S(s�Generate help text (a list of strings, one per suggested line of
        output) from the option table for this FancyGetopt object.
        iii�R&iiiNt sOption summary:is  --%-*s  %ss
  --%-*s  s%s (-%s)s  --%-*sN(RR)R-t	wrap_textR(Rtheadertmax_optRR1R2tlt	opt_widtht
line_widtht
text_widtht
big_indenttlinesR3ttextt	opt_names((s,/sys/lib/python2.7/distutils/fancy_getopt.pyt
generate_help5sF






	!	cCsG|dkrtj}nx(|j|�D]}|j|d�q(WdS(Ns
(R-R6tstdoutRStwrite(RRItfiletline((s,/sys/lib/python2.7/distutils/fancy_getopt.pyt
print_help�sN(t__name__t
__module__t__doc__R-RRRRRRR#R$R%R5R:RFRSRX(((s,/sys/lib/python2.7/distutils/fancy_getopt.pyR!s
,		
							X@	TcCs)t|�}|j|�|j||�S(N(RR%R:(toptionstnegative_optR?R>tparser((s,/sys/lib/python2.7/distutils/fancy_getopt.pytfancy_getopt�s
RGcCs~|dkrgSt|�|kr)|gStj|�}tj|t�}tjd|�}td|�}g}x|ryg}d}xt|r�|d�}|||kr�|j	|d�|d=||}q�|r�dddkr�d=nPq�W|r]|dkr<|j	|dd|!�|d||d<n|dddkr]|d=q]n|j	tj
|d��qtW|S(s�wrap_text(text : string, width : int) -> [string]

    Split 'text' into multiple lines of no more than 'width' characters
    each, and return the list of strings that results.
    s( +|-+)ii�RGtN(R-R)Rt
expandtabsRtWS_TRANStretsplittfilterRR9(RQtwidthtchunksRPtcur_linetcur_lenRK((s,/sys/lib/python2.7/distutils/fancy_getopt.pyRH�s:		


cCstj|t�S(sXConvert a long option name to a valid Python identifier by
    changing "-" to "_".
    (RRR(R"((s,/sys/lib/python2.7/distutils/fancy_getopt.pyttranslate_longopt�sR8cBseZdZgd�ZRS(s_Dummy class just used as a place to hold command-line option
    values as instance attributes.cCs%x|D]}t||d�qWdS(skCreate a new OptionDummy instance.  The attributes listed in
        'options' will be initialized to None.N(R=R-(RR\R"((s,/sys/lib/python2.7/distutils/fancy_getopt.pyR�s
(RYRZR[R(((s,/sys/lib/python2.7/distutils/fancy_getopt.pyR8�s(R[t__revision__R6RRcR:tdistutils.errorsRRtlongopt_pattcompileR/tneg_alias_ret	maketransRRR_t
whitespaceR)RbRHRjR8(((s,/sys/lib/python2.7/distutils/fancy_getopt.pyt<module>	s"�"	;	

Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to [email protected].