_iE dZddlZddlZddlZddlZddlmZmZdZejdezZ ejdjeeZ e jdd ZGd d Zd Zej$Dcic] }e|d  c}ZdZdZGddZedk(r:dZdD]2Zedezedj9eeee4yycc}w)a6distutils.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 N)DistutilsGetoptErrorDistutilsArgErrorz[a-zA-Z](?:[a-zA-Z0-9-]*)z^%s$z ^({})=!({})$-_cneZdZdZddZdZdZddZdZdZ d Z d Z d Z d Z dd ZdZddZddZy) FancyGetoptaWrapper 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 Nc||_i|_|jr|ji|_i|_g|_g|_i|_i|_i|_ g|_ yN) option_table option_index _build_indexaliasnegative_alias short_opts long_opts short2long attr_name takes_arg option_orderselfr s /builddir/build/BUILDROOT/alt-python312-setuptools-69.0.2-3.el8.x86_64/opt/alt/python312/lib/python3.12/site-packages/setuptools/_distutils/fancy_getopt.py__init__zFancyGetopt.__init__,sm)        !  c~|jj|jD]}||j|d<y)Nr)r clearr )roptions rrzFancyGetopt._build_indexTs8 !''F+1D  fQi ((rc2||_|jyr )r rrs rset_option_tablezFancyGetopt.set_option_tableYs( rc||jvrtd|z|||f}|jj|||j|<y)Nz'option conflict: already an option '%s')r rr append)r long_option short_option help_stringrs r add_optionzFancyGetopt.add_option]sW $++ +&9KG "<=F    $ $V ,-3D  k *rc||jvS)zcReturn true if the option table for this parser has an option with long name 'long_option'.)r rr#s r has_optionzFancyGetopt.has_optiongsd////rc,|jtS)zTranslate long option name 'long_option' to the form it has as an attribute of some object: ie., translate hyphens to underscores. translate longopt_xlater(s r get_attr_namezFancyGetopt.get_attr_namels$$]33rc t|tsJ|jD]K\}}||jvrt d|d|d|d||jvs8t d|d|d|dy)Nzinvalid z 'z ': option 'z ' not defined': aliased option ') isinstancedictitemsr r)raliaseswhatropts r_check_alias_dictzFancyGetopt._check_alias_dictrsv'4(((!--/JE3D---*UE+$+++*UC)*rc6|j|d||_y)z'Set the aliases for this option parser.rN)r7r)rrs r set_aliaseszFancyGetopt.set_aliasess ug. rc6|j|d||_y)zSet 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.znegative aliasN)r7r)rrs rset_negative_aliasesz FancyGetopt.set_negative_aliasess ~/?@,rcg|_g|_|jji|_|j D]}t |dk(r |\}}}d}n0t |dk(r|\}}}}ntdj|t|trt |dkrtd|z|,t|trt |dk(std |z||j|<|jj||d d k(r|r|d z}|dd }d|j|<n\|jj|}|0|j|rtd |d|d||jd <d|j|<|j j|}|1|j||j|k7rtd|d|dt"j%|std|z|j'||j(|<|s|jj|||j|d<y)zPopulate the various data structures that keep tabs on the option table. Called by 'getopt()' before it can do anything worthwhile. rzinvalid option tuple: {!r}z9invalid long option '%s': must be a string of length >= 2Nrz:invalid short option '%s': must a single character or None=:zinvalid negative alias 'r0z' takes a valuezinvalid alias 'z%': inconsistent with aliased option 'z/' (one of them takes a value, the other doesn'tzEinvalid long option name '%s' (must be letters, numbers, hyphens only)rrrrrepeatr len ValueErrorformatr1strrr"rrgetr longopt_rematchr.r)rrlongshorthelprCalias_tos r_grok_option_tablezFancyGetopt._grok_option_tablesY   ''F6{a$*!eTV!,2)eT6!!=!D!DV!LMMdC(CIM*S ] 5#(>3u:QR?*68=> !'DKK  NN ! !$ 'Bx3!CKEAbz'(t$ ..2248'~~h/2CGS *.DNN2&'(t$zz~~d+H#>>$'4>>(+CC.04X?##D)*>@DE $(#5#5d#;DNN4 &&u-,0a)M(rcv|tjdd}| t}d}nd}|jdj |j } t j |||j\}}|D]\}}t|dk(r|ddk(r|j|d}nt|dkDr|ddd k(sJ|dd}|jj|} | r| }|j|s0|d k(sJd |jj|} | r| }d}nd}|j |} |r+|j"j| t%|| ddz}t'|| ||j(j+||f|r||fS|S#t j$r}t|d}~wwxYw) aParse 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. NrTF r?rrz--zboolean option can't have value)sysargv OptionDummyrOjoinrgetoptrerrorrrDrrrHrrrrCgetattrsetattrrr") rargsobjectcreated_objectroptsmsgr6valrattrs rrWzFancyGetopt.getopts <88AB ]F!N"N !XXdoo.  )tZHJD$HC3x1}Q3ooc!f-3x!|BQ477!"gJJNN3'E>>#&byC"CCy++//4CCC>>#&Dt{{t,8fdA.2 FD# &    $ $c3Z 05: < KG|| )#C( ( )s$FF8( F33F8cH|j td|jS)zReturns the list of (option, value) tuples processed by the previous run of 'getopt()'. Raises RuntimeError if 'getopt()' hasn't been called yet. z!'getopt()' hasn't been called yet)r RuntimeError)rs rget_option_orderzFancyGetopt.get_option_orders(    $BC C$$ $rcbd}|jD]3}|d}|d}t|}|ddk(r|dz }||dz}||kDs2|}5|dzdzdz}d}||z } d |z} |r|g} nd g} |jD]}|dd \}}} t| | } |ddk(r|dd}|4| r| jd ||| dfznZ| jd ||fznCdj ||}| r| jd ||| dfzn| jd|z| ddD]}| j| |z| S)zGenerate help text (a list of strings, one per suggested line of output) from the option table for this FancyGetopt object. rrr@rANr?NrQzOption summary:r=z --%-*s %sz --%-*s z{} (-{})z --%-*s)r rD wrap_textr"rF)rheadermax_optrrKrLell opt_width line_width text_width big_indentlinesrMtext opt_namess r generate_helpzFancyGetopt.generate_help&s''F!9D1IEd)CBx3Ag AgW}(aK!Oa' 0 )+ 9_ HE&'E''F &r D%T:.DBx3Abz}LL7D$q'2J!JKLL$!?@ '--dE: LL7ItAw2O!OPLLi!78ABx Z#-. -(0 rc||tj}|j|D]}|j|dzy)N )rSstdoutrswrite)rrifilelines r print_helpzFancyGetopt.print_helpts5 <::D&&v.D JJtd{ #/rr )NN)__name__ __module__ __qualname____doc__rrr r&r)r.r7r9r;rOrWrdrsrzrrr r sS &P2 40 4  -P1d;z%L\$rr c^t|}|j||j||Sr )r r;rW)options negative_optr\r[parsers r fancy_getoptr{s+  !F  - ==v &&rrQc*|gSt||kr|gS|j}|jt}t j d|}|Dcgc]}|s| }}g}|rg}d}|rGt|d}||z|kr|j |d|d=||z}n|r|dddk(r|d=n|rG|r5|dk(r"|j |dd||d|d|d<|dddk(r|d=|j dj||r|Scc}w)zwrap_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. Nz( +|-+)rr@rQrR)rD expandtabsr,WS_TRANSresplitr"rV)rqwidthchunkschrpcur_linecur_lenrks rrhrhsO  |  4yEv ?? D >>( #D XXj$ 'F! (6RRb6F ( E fQi.C}%q *1I!C- Q3 6   !|q !E 23"1Ief-q ay|s"1I  RWWX&'A D LK)s DDc,|jtS)zXConvert a long option name to a valid Python identifier by changing "-" to "_". r+)r6s rtranslate_longoptrs == ''rceZdZdZgfdZy)rUz_Dummy class just used as a place to hold command-line option values as instance attributes.c,|D]}t||dy)zkCreate a new OptionDummy instance. The attributes listed in 'options' will be initialized to None.N)rZ)rrr6s rrzOptionDummy.__init__sC D#t $rN)r{r|r}r~rrrrrUrUs& "%rrU__main__zTra-la-la, supercalifragilisticexpialidocious. How *do* you spell that odd word, anyways? (Someone ask Mary -- she'll know [or she'll say, "How should I know?"].)) (z width: %dru)r~rSstringrrWerrorsrr longopt_patcompilerIrF neg_alias_rerG maketransr-r r whitespaceordrrhrrUr{rqwprintrV)_wschars0rrs ; + RZZ+- . rzz.// [IJ  c3' X$X$v ' .4->-> ?->'CL# -> ?3l(%% z D  kAo dii $*+, W @sC$