zmc
2023-12-22 9fdbf60165db0400c2e8e6be2dc6e88138ac719a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
U
G=®dxEã@sàdZddlZddlZddlZddlZddlTdZe de¡Ze deef¡Z    e
  dd¡Z Gd    d
„d
ƒZ d d „Zd d„ejDƒZdd„Zdd„ZGdd„dƒZedkrÜdZdD]*Zedeƒed eeeƒ¡ƒeƒq°dS)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)Ú*z[a-zA-Z](?:[a-zA-Z0-9-]*)z^%s$z ^(%s)=!(%s)$ú-Ú_c@sŠeZdZdZddd„Zdd„Zdd„Zd d    d
„Zd d „Zd d„Z    dd„Z
dd„Z dd„Z dd„Z d!dd„Zdd„Zd"dd„Zd#dd„ZdS)$Ú FancyGetoptaÕ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
    NcCsN||_i|_|jr| ¡i|_i|_g|_g|_i|_i|_i|_    g|_
dS©N) Ú option_tableÚ option_indexÚ _build_indexÚaliasÚnegative_aliasÚ
short_optsÚ    long_optsÚ
short2longÚ    attr_nameÚ    takes_argÚ option_order©Úselfr©rúYD:\z\workplace\VsCode\pyvenv\venv\Lib\site-packages\setuptools/_distutils/fancy_getopt.pyÚ__init__)s    zFancyGetopt.__init__cCs(|j ¡|jD]}||j|d<qdS)Nr)rÚclearr)rÚoptionrrrr    Qs
 
zFancyGetopt._build_indexcCs||_| ¡dSr)rr    rrrrÚset_option_tableVszFancyGetopt.set_option_tablecCs<||jkrtd|ƒ‚n |||f}|j |¡||j|<dS)Nz'option conflict: already an option '%s')rÚDistutilsGetoptErrorrÚappend)rÚ long_optionÚ short_optionÚ help_stringrrrrÚ
add_optionZs
ÿ
 zFancyGetopt.add_optioncCs
||jkS)zcReturn true if the option table for this parser has an
        option with long name 'long_option'.)r©rrrrrÚ
has_optioncszFancyGetopt.has_optioncCs
| t¡S)z’Translate long option name 'long_option' to the form it
        has as an attribute of some object: ie., translate hyphens
        to underscores.©Ú    translateÚ longopt_xlater rrrÚ get_attr_namehszFancyGetopt.get_attr_namecCs\t|tƒst‚| ¡D]@\}}||jkr:td|||fƒ‚||jkrtd|||fƒ‚qdS)Nz(invalid %s '%s': option '%s' not definedz0invalid %s '%s': aliased option '%s' not defined)Ú
isinstanceÚdictÚAssertionErrorÚitemsrr)rÚaliasesÚwhatr
ÚoptrrrÚ_check_alias_dictns
ÿ
ÿzFancyGetopt._check_alias_dictcCs| |d¡||_dS)z'Set the aliases for this option parser.r
N)r-r
)rr
rrrÚ set_aliasesxs zFancyGetopt.set_aliasescCs| |d¡||_dS)zÚ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.znegative aliasN)r-r )rr rrrÚset_negative_aliases}s z FancyGetopt.set_negative_aliasescCsÌg|_g|_|j ¡i|_|jD]¢}t|ƒdkrD|\}}}d}n(t|ƒdkr^|\}}}}ntd|fƒ‚t|t    ƒr‚t|ƒdkrŽt
d|ƒ‚|dks¸t|t    ƒr¬t|ƒdks¸t
d    |ƒ‚||j|<|j  |¡|d
d krþ|ræ|d }|dd
…}d|j |<nF|j  |¡}|dk    r:|j |r0t
d ||fƒ‚||jd
<d|j |<|j |¡}|dk    r€|j ||j |kr€t
d||fƒ‚t |¡s˜t
d|ƒ‚| |¡|j|<|r"|j  |¡||j|d<q"dS)zPopulate the various data structures that keep tabs on the
        option table.  Called by 'getopt()' before it can do anything
        worthwhile.
        érézinvalid option tuple: %réz9invalid long option '%s': must be a string of length >= 2Néz:invalid short option '%s': must a single character or Noneéÿÿÿÿú=ú:z>invalid negative alias '%s': aliased option '%s' takes a valuezginvalid alias '%s': inconsistent with aliased option '%s' (one of them takes a value, the other doesn'tzEinvalid long option name '%s' (must be letters, numbers, hyphens only)r r rrÚrepeatrÚlenÚ
ValueErrorr&Ústrrrrr Úgetr
Ú
longopt_reÚmatchr%r)rrÚlongÚshortÚhelpr7Úalias_torrrÚ_grok_option_table…st
 
 ÿÿ
ÿÿ
 
 þÿ
 
 
ýÿ
ÿÿ zFancyGetopt._grok_option_tablec
Cs |dkrtjdd…}|dkr*tƒ}d}nd}| ¡d |j¡}zt |||j¡\}}Wn,tjk
r†}z t    |ƒ‚W5d}~XYnX|D]ü\}}t
|ƒdkr¼|ddkr¼|j |d}n,t
|ƒdkrØ|dd…d    ksÜt ‚|dd…}|j  |¡}    |    rü|    }|j|s:|d
kst d ƒ‚|j |¡}    |    r6|    }d}nd}|j|}
|rl|j |
¡dk    rlt||
dƒd}t||
|ƒ|j ||f¡qŒ|r˜||fS|SdS) 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.
        Nr3TFú r2rrz--Úzboolean option can't have value)ÚsysÚargvÚ OptionDummyrBÚjoinr Úgetoptr ÚerrorÚDistutilsArgErrorr8rr(r
r;rr rr7ÚgetattrÚsetattrrr) rÚargsÚobjectÚcreated_objectr ÚoptsÚmsgr,Úvalr
ÚattrrrrrIÒsF        
 zFancyGetopt.getoptcCs|jdkrtdƒ‚n|jSdS)z«Returns the list of (option, value) tuples processed by the
        previous run of 'getopt()'.  Raises RuntimeError if
        'getopt()' hasn't been called yet.
        Nz!'getopt()' hasn't been called yet)rÚ RuntimeError)rrrrÚget_option_orders
 
zFancyGetopt.get_option_ordercCsjd}|jD]L}|d}|d}t|ƒ}|ddkr:|d}|dk    rJ|d}||kr
|}q
|ddd}d}||}    d    |}
|rˆ|g} nd
g} |jD]Ð}|dd …\}}} t| |    ƒ} |ddkrÌ|dd…}|dkr| rô|  d ||| df¡n|  d ||f¡n:d||f}| r4|  d ||| df¡n|  d|¡| dd…D]}|  |
|¡qNq”| S)zŒGenerate help text (a list of strings, one per suggested line of
        output) from the option table for this FancyGetopt object.
        rr3r4r5Nér2éNrCzOption summary:r0z   --%-*s  %sz
  --%-*s  z%s (-%s)z  --%-*s)rr8Ú    wrap_textr)rÚheaderÚmax_optrr>r?ÚlÚ    opt_widthÚ
line_widthÚ
text_widthÚ
big_indentÚlinesr@ÚtextÚ    opt_namesrrrÚ generate_helpsH
 
 
 
  ÿzFancyGetopt.generate_helpcCs0|dkrtj}| |¡D]}| |d¡qdS)NÚ
)rEÚstdoutrdÚwrite)rrZÚfileÚlinerrrÚ
print_helphszFancyGetopt.print_help)N)NN)NN)N)NN)Ú__name__Ú
__module__Ú __qualname__Ú__doc__rr    rrr!r%r-r.r/rBrIrVrdrjrrrrrs
(
    
M
=
 
OrcCst|ƒ}| |¡| ||¡Sr)rr/rI)ÚoptionsÚ negative_optrOrNÚparserrrrÚ fancy_getoptos
rrcCsi|]}t|ƒd“qS)rC)Úord)Ú.0Z_wscharrrrÚ
<dictcomp>usrucCs|dkr gSt|ƒ|kr|gS| ¡}| t¡}t d|¡}dd„|Dƒ}g}|rg}d}|r´t|dƒ}|||kr–| |d¡|d=||}q\|r´|dddkr´|d=q´q\|r|dkrì| |dd|…¡|d|d…|d<|dddkr|d=| d |¡¡qN|S)    z¶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.
    Nz( +|-+)cSsg|] }|r|‘qSrr)rtÚchrrrÚ
<listcomp>…szwrap_text.<locals>.<listcomp>rr4rCrD)r8Ú
expandtabsr#ÚWS_TRANSÚreÚsplitrrH)rbÚwidthÚchunksraÚcur_lineÚcur_lenr\rrrrYws: 
 
rYcCs
| t¡S)zXConvert a long option name to a valid Python identifier by
    changing "-" to "_".
    r")r,rrrÚtranslate_longopt­sr€c@seZdZdZgfdd„ZdS)rGz_Dummy class just used as a place to hold command-line option
    values as instance attributes.cCs|D]}t||dƒqdS)zkCreate a new OptionDummy instance.  The attributes listed in
        'options' will be initialized to None.N)rM)rror,rrrr¸szOptionDummy.__init__N)rkrlrmrnrrrrrrG´srGÚ__main__z¢Tra-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: %dre)rnrEÚstringrzrIÚdistutils.errorsÚ longopt_patÚcompiler<Ú neg_alias_rer:Ú    maketransr$rrrÚ
whitespaceryrYr€rGrkrbÚwÚprintrHrrrrÚ<module>s*
 T6