annotate Lib/optparse.py @ 69778:07613ea46dbc

Merge: I was right, hardconding the localhost IP doesn't work in linux-vserver.
author R David Murray <rdmurray@bitdance.com>
date Mon, 02 May 2011 08:48:00 -0400
parents 4a5782a2b074
children 2a403afc4a76
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
49493
bdf4da5d04ad merge from trunk
Benjamin Peterson <benjamin@python.org>
parents: 44098
diff changeset
1 """A powerful, extensible, and easy-to-use option parser.
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
2
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
3 By Greg Ward <gward@python.net>
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
4
49493
bdf4da5d04ad merge from trunk
Benjamin Peterson <benjamin@python.org>
parents: 44098
diff changeset
5 Originally distributed as Optik.
28705
be14970a9955 Update to Optik 1.4.1; here are the relevant bits of the change log:
Greg Ward <gward@python.net>
parents: 27091
diff changeset
6
be14970a9955 Update to Optik 1.4.1; here are the relevant bits of the change log:
Greg Ward <gward@python.net>
parents: 27091
diff changeset
7 For support, use the optik-users@lists.sourceforge.net mailing list
be14970a9955 Update to Optik 1.4.1; here are the relevant bits of the change log:
Greg Ward <gward@python.net>
parents: 27091
diff changeset
8 (http://lists.sourceforge.net/lists/listinfo/optik-users).
53523
ea4e192d9414 Merged revisions 71540,71563 via svnmerge from
Georg Brandl <georg@python.org>
parents: 52892
diff changeset
9
ea4e192d9414 Merged revisions 71540,71563 via svnmerge from
Georg Brandl <georg@python.org>
parents: 52892
diff changeset
10 Simple usage example:
ea4e192d9414 Merged revisions 71540,71563 via svnmerge from
Georg Brandl <georg@python.org>
parents: 52892
diff changeset
11
ea4e192d9414 Merged revisions 71540,71563 via svnmerge from
Georg Brandl <georg@python.org>
parents: 52892
diff changeset
12 from optparse import OptionParser
ea4e192d9414 Merged revisions 71540,71563 via svnmerge from
Georg Brandl <georg@python.org>
parents: 52892
diff changeset
13
ea4e192d9414 Merged revisions 71540,71563 via svnmerge from
Georg Brandl <georg@python.org>
parents: 52892
diff changeset
14 parser = OptionParser()
ea4e192d9414 Merged revisions 71540,71563 via svnmerge from
Georg Brandl <georg@python.org>
parents: 52892
diff changeset
15 parser.add_option("-f", "--file", dest="filename",
ea4e192d9414 Merged revisions 71540,71563 via svnmerge from
Georg Brandl <georg@python.org>
parents: 52892
diff changeset
16 help="write report to FILE", metavar="FILE")
ea4e192d9414 Merged revisions 71540,71563 via svnmerge from
Georg Brandl <georg@python.org>
parents: 52892
diff changeset
17 parser.add_option("-q", "--quiet",
ea4e192d9414 Merged revisions 71540,71563 via svnmerge from
Georg Brandl <georg@python.org>
parents: 52892
diff changeset
18 action="store_false", dest="verbose", default=True,
ea4e192d9414 Merged revisions 71540,71563 via svnmerge from
Georg Brandl <georg@python.org>
parents: 52892
diff changeset
19 help="don't print status messages to stdout")
ea4e192d9414 Merged revisions 71540,71563 via svnmerge from
Georg Brandl <georg@python.org>
parents: 52892
diff changeset
20
ea4e192d9414 Merged revisions 71540,71563 via svnmerge from
Georg Brandl <georg@python.org>
parents: 52892
diff changeset
21 (options, args) = parser.parse_args()
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
22 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
23
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38669
diff changeset
24 __version__ = "1.5.3"
28705
be14970a9955 Update to Optik 1.4.1; here are the relevant bits of the change log:
Greg Ward <gward@python.net>
parents: 27091
diff changeset
25
29021
2f652a59ebb0 Update to Optik 1.4.1+: adds __all__ (Optik SF bug #728563).
Greg Ward <gward@python.net>
parents: 28774
diff changeset
26 __all__ = ['Option',
52892
792bb885029f Merged revisions 70712,70714,70764-70765,70769-70771,70773,70776-70777,70788-70789,70824,70828,70832,70836,70842,70851,70855,70857,70866-70872,70883,70885,70893-70894,70896-70897,70903,70905-70907,70915,70927,70933,70951,70960,70962-70964,70998,71001,71006,71008,71010-71011,71019,71037,71056,71094,71101-71103,71106,71119,71123,71149-71150,71203,71212,71214-71217,71221,71240 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 51776
diff changeset
27 'make_option',
29021
2f652a59ebb0 Update to Optik 1.4.1+: adds __all__ (Optik SF bug #728563).
Greg Ward <gward@python.net>
parents: 28774
diff changeset
28 'SUPPRESS_HELP',
2f652a59ebb0 Update to Optik 1.4.1+: adds __all__ (Optik SF bug #728563).
Greg Ward <gward@python.net>
parents: 28774
diff changeset
29 'SUPPRESS_USAGE',
2f652a59ebb0 Update to Optik 1.4.1+: adds __all__ (Optik SF bug #728563).
Greg Ward <gward@python.net>
parents: 28774
diff changeset
30 'Values',
2f652a59ebb0 Update to Optik 1.4.1+: adds __all__ (Optik SF bug #728563).
Greg Ward <gward@python.net>
parents: 28774
diff changeset
31 'OptionContainer',
2f652a59ebb0 Update to Optik 1.4.1+: adds __all__ (Optik SF bug #728563).
Greg Ward <gward@python.net>
parents: 28774
diff changeset
32 'OptionGroup',
2f652a59ebb0 Update to Optik 1.4.1+: adds __all__ (Optik SF bug #728563).
Greg Ward <gward@python.net>
parents: 28774
diff changeset
33 'OptionParser',
2f652a59ebb0 Update to Optik 1.4.1+: adds __all__ (Optik SF bug #728563).
Greg Ward <gward@python.net>
parents: 28774
diff changeset
34 'HelpFormatter',
2f652a59ebb0 Update to Optik 1.4.1+: adds __all__ (Optik SF bug #728563).
Greg Ward <gward@python.net>
parents: 28774
diff changeset
35 'IndentedHelpFormatter',
2f652a59ebb0 Update to Optik 1.4.1+: adds __all__ (Optik SF bug #728563).
Greg Ward <gward@python.net>
parents: 28774
diff changeset
36 'TitledHelpFormatter',
2f652a59ebb0 Update to Optik 1.4.1+: adds __all__ (Optik SF bug #728563).
Greg Ward <gward@python.net>
parents: 28774
diff changeset
37 'OptParseError',
2f652a59ebb0 Update to Optik 1.4.1+: adds __all__ (Optik SF bug #728563).
Greg Ward <gward@python.net>
parents: 28774
diff changeset
38 'OptionError',
2f652a59ebb0 Update to Optik 1.4.1+: adds __all__ (Optik SF bug #728563).
Greg Ward <gward@python.net>
parents: 28774
diff changeset
39 'OptionConflictError',
2f652a59ebb0 Update to Optik 1.4.1+: adds __all__ (Optik SF bug #728563).
Greg Ward <gward@python.net>
parents: 28774
diff changeset
40 'OptionValueError',
2f652a59ebb0 Update to Optik 1.4.1+: adds __all__ (Optik SF bug #728563).
Greg Ward <gward@python.net>
parents: 28774
diff changeset
41 'BadOptionError']
28705
be14970a9955 Update to Optik 1.4.1; here are the relevant bits of the change log:
Greg Ward <gward@python.net>
parents: 27091
diff changeset
42
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
43 __copyright__ = """
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
44 Copyright (c) 2001-2006 Gregory P. Ward. All rights reserved.
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
45 Copyright (c) 2002-2006 Python Software Foundation. All rights reserved.
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
46
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
47 Redistribution and use in source and binary forms, with or without
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
48 modification, are permitted provided that the following conditions are
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
49 met:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
50
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
51 * Redistributions of source code must retain the above copyright
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
52 notice, this list of conditions and the following disclaimer.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
53
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
54 * Redistributions in binary form must reproduce the above copyright
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
55 notice, this list of conditions and the following disclaimer in the
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
56 documentation and/or other materials provided with the distribution.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
57
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
58 * Neither the name of the author nor the names of its
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
59 contributors may be used to endorse or promote products derived from
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
60 this software without specific prior written permission.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
61
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
62 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
63 IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
64 TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
65 PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
66 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
67 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
68 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
69 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
70 LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
71 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
72 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
73 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
74
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
75 import sys, os
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
76 import textwrap
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
77
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
78 def _repr(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
79 return "<%s at 0x%x: %s>" % (self.__class__.__name__, id(self), self)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
80
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
81
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
82 # This file was generated from:
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38669
diff changeset
83 # Id: option_parser.py 527 2006-07-23 15:21:30Z greg
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38669
diff changeset
84 # Id: option.py 522 2006-06-11 16:22:03Z gward
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38669
diff changeset
85 # Id: help.py 527 2006-07-23 15:21:30Z greg
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
86 # Id: errors.py 509 2006-04-20 00:58:24Z gward
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
87
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
88 try:
68767
4a5782a2b074 Use proper gettext plural forms in optparse (closes #4391).
Éric Araujo <merwok@netwok.org>
parents: 53523
diff changeset
89 from gettext import gettext, ngettext
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
90 except ImportError:
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
91 def gettext(message):
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
92 return message
68767
4a5782a2b074 Use proper gettext plural forms in optparse (closes #4391).
Éric Araujo <merwok@netwok.org>
parents: 53523
diff changeset
93
4a5782a2b074 Use proper gettext plural forms in optparse (closes #4391).
Éric Araujo <merwok@netwok.org>
parents: 53523
diff changeset
94 def ngettext(singular, plural, n):
4a5782a2b074 Use proper gettext plural forms in optparse (closes #4391).
Éric Araujo <merwok@netwok.org>
parents: 53523
diff changeset
95 if n == 1:
4a5782a2b074 Use proper gettext plural forms in optparse (closes #4391).
Éric Araujo <merwok@netwok.org>
parents: 53523
diff changeset
96 return singular
4a5782a2b074 Use proper gettext plural forms in optparse (closes #4391).
Éric Araujo <merwok@netwok.org>
parents: 53523
diff changeset
97 return plural
4a5782a2b074 Use proper gettext plural forms in optparse (closes #4391).
Éric Araujo <merwok@netwok.org>
parents: 53523
diff changeset
98
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
99 _ = gettext
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
100
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
101
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
102 class OptParseError (Exception):
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
103 def __init__(self, msg):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
104 self.msg = msg
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
105
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
106 def __str__(self):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
107 return self.msg
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
108
28705
be14970a9955 Update to Optik 1.4.1; here are the relevant bits of the change log:
Greg Ward <gward@python.net>
parents: 27091
diff changeset
109
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
110 class OptionError (OptParseError):
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
111 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
112 Raised if an Option instance is created with invalid or
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
113 inconsistent arguments.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
114 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
115
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
116 def __init__(self, msg, option):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
117 self.msg = msg
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
118 self.option_id = str(option)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
119
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
120 def __str__(self):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
121 if self.option_id:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
122 return "option %s: %s" % (self.option_id, self.msg)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
123 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
124 return self.msg
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
125
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
126 class OptionConflictError (OptionError):
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
127 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
128 Raised if conflicting options are added to an OptionParser.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
129 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
130
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
131 class OptionValueError (OptParseError):
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
132 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
133 Raised if an invalid option value is encountered on the command
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
134 line.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
135 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
136
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
137 class BadOptionError (OptParseError):
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
138 """
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
139 Raised if an invalid option is seen on the command line.
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
140 """
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
141 def __init__(self, opt_str):
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
142 self.opt_str = opt_str
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
143
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
144 def __str__(self):
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
145 return _("no such option: %s") % self.opt_str
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
146
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
147 class AmbiguousOptionError (BadOptionError):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
148 """
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
149 Raised if an ambiguous option is seen on the command line.
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
150 """
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
151 def __init__(self, opt_str, possibilities):
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
152 BadOptionError.__init__(self, opt_str)
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
153 self.possibilities = possibilities
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
154
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
155 def __str__(self):
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
156 return (_("ambiguous option: %s (%s?)")
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
157 % (self.opt_str, ", ".join(self.possibilities)))
28705
be14970a9955 Update to Optik 1.4.1; here are the relevant bits of the change log:
Greg Ward <gward@python.net>
parents: 27091
diff changeset
158
be14970a9955 Update to Optik 1.4.1; here are the relevant bits of the change log:
Greg Ward <gward@python.net>
parents: 27091
diff changeset
159
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
160 class HelpFormatter:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
161
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
162 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
163 Abstract base class for formatting option help. OptionParser
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
164 instances should use one of the HelpFormatter subclasses for
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
165 formatting help; by default IndentedHelpFormatter is used.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
166
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
167 Instance attributes:
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
168 parser : OptionParser
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
169 the controlling OptionParser instance
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
170 indent_increment : int
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
171 the number of columns to indent per nesting level
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
172 max_help_position : int
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
173 the maximum starting column for option help text
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
174 help_position : int
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
175 the calculated starting column for option help text;
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
176 initially the same as the maximum
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
177 width : int
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
178 total number of columns for output (pass None to constructor for
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
179 this value to be taken from the $COLUMNS environment variable)
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
180 level : int
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
181 current indentation level
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
182 current_indent : int
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
183 current indentation level (in columns)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
184 help_width : int
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
185 number of columns available for option help text (calculated)
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
186 default_tag : str
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
187 text to replace with each option's default value, "%default"
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
188 by default. Set to false value to disable default value expansion.
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
189 option_strings : { Option : str }
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
190 maps Option instances to the snippet of help text explaining
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
191 the syntax of that option, e.g. "-h, --help" or
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
192 "-fFILE, --file=FILE"
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
193 _short_opt_fmt : str
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
194 format string controlling how short options with values are
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
195 printed in help text. Must be either "%s%s" ("-fFILE") or
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
196 "%s %s" ("-f FILE"), because those are the two syntaxes that
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
197 Optik supports.
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
198 _long_opt_fmt : str
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
199 similar but for long options; must be either "%s %s" ("--file FILE")
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
200 or "%s=%s" ("--file=FILE").
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
201 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
202
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
203 NO_DEFAULT_VALUE = "none"
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
204
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
205 def __init__(self,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
206 indent_increment,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
207 max_help_position,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
208 width,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
209 short_first):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
210 self.parser = None
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
211 self.indent_increment = indent_increment
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
212 self.help_position = self.max_help_position = max_help_position
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
213 if width is None:
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
214 try:
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
215 width = int(os.environ['COLUMNS'])
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
216 except (KeyError, ValueError):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
217 width = 80
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
218 width -= 2
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
219 self.width = width
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
220 self.current_indent = 0
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
221 self.level = 0
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
222 self.help_width = None # computed later
28705
be14970a9955 Update to Optik 1.4.1; here are the relevant bits of the change log:
Greg Ward <gward@python.net>
parents: 27091
diff changeset
223 self.short_first = short_first
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
224 self.default_tag = "%default"
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
225 self.option_strings = {}
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
226 self._short_opt_fmt = "%s %s"
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
227 self._long_opt_fmt = "%s=%s"
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
228
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
229 def set_parser(self, parser):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
230 self.parser = parser
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
231
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
232 def set_short_opt_delimiter(self, delim):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
233 if delim not in ("", " "):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
234 raise ValueError(
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
235 "invalid metavar delimiter for short options: %r" % delim)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
236 self._short_opt_fmt = "%s" + delim + "%s"
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
237
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
238 def set_long_opt_delimiter(self, delim):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
239 if delim not in ("=", " "):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
240 raise ValueError(
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
241 "invalid metavar delimiter for long options: %r" % delim)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
242 self._long_opt_fmt = "%s" + delim + "%s"
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
243
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
244 def indent(self):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
245 self.current_indent += self.indent_increment
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
246 self.level += 1
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
247
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
248 def dedent(self):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
249 self.current_indent -= self.indent_increment
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
250 assert self.current_indent >= 0, "Indent decreased below 0."
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
251 self.level -= 1
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
252
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
253 def format_usage(self, usage):
43020
907a45df1295 Raise statement normalization in Lib/.
Collin Winter <collinw@gmail.com>
parents: 42552
diff changeset
254 raise NotImplementedError("subclasses must implement")
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
255
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
256 def format_heading(self, heading):
43020
907a45df1295 Raise statement normalization in Lib/.
Collin Winter <collinw@gmail.com>
parents: 42552
diff changeset
257 raise NotImplementedError("subclasses must implement")
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
258
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
259 def _format_text(self, text):
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
260 """
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
261 Format a paragraph of free-form text for inclusion in the
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
262 help output at the current indentation level.
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
263 """
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
264 text_width = self.width - self.current_indent
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
265 indent = " "*self.current_indent
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
266 return textwrap.fill(text,
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
267 text_width,
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
268 initial_indent=indent,
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
269 subsequent_indent=indent)
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
270
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
271 def format_description(self, description):
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
272 if description:
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
273 return self._format_text(description) + "\n"
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
274 else:
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
275 return ""
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
276
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
277 def format_epilog(self, epilog):
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
278 if epilog:
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
279 return "\n" + self._format_text(epilog) + "\n"
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
280 else:
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
281 return ""
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
282
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
283
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
284 def expand_default(self, option):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
285 if self.parser is None or not self.default_tag:
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
286 return option.help
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
287
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
288 default_value = self.parser.defaults.get(option.dest)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
289 if default_value is NO_DEFAULT or default_value is None:
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
290 default_value = self.NO_DEFAULT_VALUE
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
291
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
292 return option.help.replace(self.default_tag, str(default_value))
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
293
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
294 def format_option(self, option):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
295 # The help for each option consists of two parts:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
296 # * the opt strings and metavars
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
297 # eg. ("-x", or "-fFILENAME, --file=FILENAME")
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
298 # * the user-supplied help string
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
299 # eg. ("turn on expert mode", "read data from FILENAME")
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
300 #
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
301 # If possible, we write both of these on the same line:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
302 # -x turn on expert mode
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
303 #
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
304 # But if the opt string list is too long, we put the help
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
305 # string on a second line, indented to the same column it would
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
306 # start in if it fit on the first line.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
307 # -fFILENAME, --file=FILENAME
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
308 # read data from FILENAME
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
309 result = []
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
310 opts = self.option_strings[option]
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
311 opt_width = self.help_position - self.current_indent - 2
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
312 if len(opts) > opt_width:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
313 opts = "%*s%s\n" % (self.current_indent, "", opts)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
314 indent_first = self.help_position
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
315 else: # start help on same line as opts
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
316 opts = "%*s%-*s " % (self.current_indent, "", opt_width, opts)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
317 indent_first = 0
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
318 result.append(opts)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
319 if option.help:
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
320 help_text = self.expand_default(option)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
321 help_lines = textwrap.wrap(help_text, self.help_width)
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
322 result.append("%*s%s\n" % (indent_first, "", help_lines[0]))
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
323 result.extend(["%*s%s\n" % (self.help_position, "", line)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
324 for line in help_lines[1:]])
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
325 elif opts[-1] != "\n":
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
326 result.append("\n")
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
327 return "".join(result)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
328
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
329 def store_option_strings(self, parser):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
330 self.indent()
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
331 max_len = 0
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
332 for opt in parser.option_list:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
333 strings = self.format_option_strings(opt)
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
334 self.option_strings[opt] = strings
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
335 max_len = max(max_len, len(strings) + self.current_indent)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
336 self.indent()
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
337 for group in parser.option_groups:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
338 for opt in group.option_list:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
339 strings = self.format_option_strings(opt)
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
340 self.option_strings[opt] = strings
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
341 max_len = max(max_len, len(strings) + self.current_indent)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
342 self.dedent()
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
343 self.dedent()
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
344 self.help_position = min(max_len + 2, self.max_help_position)
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
345 self.help_width = self.width - self.help_position
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
346
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
347 def format_option_strings(self, option):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
348 """Return a comma-separated list of option strings & metavariables."""
28705
be14970a9955 Update to Optik 1.4.1; here are the relevant bits of the change log:
Greg Ward <gward@python.net>
parents: 27091
diff changeset
349 if option.takes_value():
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
350 metavar = option.metavar or option.dest.upper()
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
351 short_opts = [self._short_opt_fmt % (sopt, metavar)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
352 for sopt in option._short_opts]
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
353 long_opts = [self._long_opt_fmt % (lopt, metavar)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
354 for lopt in option._long_opts]
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
355 else:
28705
be14970a9955 Update to Optik 1.4.1; here are the relevant bits of the change log:
Greg Ward <gward@python.net>
parents: 27091
diff changeset
356 short_opts = option._short_opts
be14970a9955 Update to Optik 1.4.1; here are the relevant bits of the change log:
Greg Ward <gward@python.net>
parents: 27091
diff changeset
357 long_opts = option._long_opts
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
358
28705
be14970a9955 Update to Optik 1.4.1; here are the relevant bits of the change log:
Greg Ward <gward@python.net>
parents: 27091
diff changeset
359 if self.short_first:
be14970a9955 Update to Optik 1.4.1; here are the relevant bits of the change log:
Greg Ward <gward@python.net>
parents: 27091
diff changeset
360 opts = short_opts + long_opts
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
361 else:
28705
be14970a9955 Update to Optik 1.4.1; here are the relevant bits of the change log:
Greg Ward <gward@python.net>
parents: 27091
diff changeset
362 opts = long_opts + short_opts
be14970a9955 Update to Optik 1.4.1; here are the relevant bits of the change log:
Greg Ward <gward@python.net>
parents: 27091
diff changeset
363
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
364 return ", ".join(opts)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
365
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
366 class IndentedHelpFormatter (HelpFormatter):
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
367 """Format help with indented section bodies.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
368 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
369
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
370 def __init__(self,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
371 indent_increment=2,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
372 max_help_position=24,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
373 width=None,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
374 short_first=1):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
375 HelpFormatter.__init__(
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
376 self, indent_increment, max_help_position, width, short_first)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
377
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
378 def format_usage(self, usage):
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
379 return _("Usage: %s\n") % usage
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
380
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
381 def format_heading(self, heading):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
382 return "%*s%s:\n" % (self.current_indent, "", heading)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
383
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
384
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
385 class TitledHelpFormatter (HelpFormatter):
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
386 """Format help with underlined section headers.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
387 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
388
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
389 def __init__(self,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
390 indent_increment=0,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
391 max_help_position=24,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
392 width=None,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
393 short_first=0):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
394 HelpFormatter.__init__ (
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
395 self, indent_increment, max_help_position, width, short_first)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
396
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
397 def format_usage(self, usage):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
398 return "%s %s\n" % (self.format_heading(_("Usage")), usage)
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
399
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
400 def format_heading(self, heading):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
401 return "%s\n%s\n" % (heading, "=-"[self.level] * len(heading))
28705
be14970a9955 Update to Optik 1.4.1; here are the relevant bits of the change log:
Greg Ward <gward@python.net>
parents: 27091
diff changeset
402
be14970a9955 Update to Optik 1.4.1; here are the relevant bits of the change log:
Greg Ward <gward@python.net>
parents: 27091
diff changeset
403
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
404 def _parse_num(val, type):
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
405 if val[:2].lower() == "0x": # hexadecimal
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
406 radix = 16
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
407 elif val[:2].lower() == "0b": # binary
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
408 radix = 2
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
409 val = val[2:] or "0" # have to remove "0b" prefix
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
410 elif val[:1] == "0": # octal
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
411 radix = 8
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
412 else: # decimal
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
413 radix = 10
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
414
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
415 return type(val, radix)
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
416
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
417 def _parse_int(val):
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
418 return _parse_num(val, int)
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
419
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
420 def _parse_long(val):
40644
1c26505c1de6 Rip out 'long' and 'L'-suffixed integer literals.
Guido van Rossum <guido@python.org>
parents: 40587
diff changeset
421 return _parse_num(val, int)
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
422
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
423 _builtin_cvt = { "int" : (_parse_int, _("integer")),
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
424 "long" : (_parse_long, _("long integer")),
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
425 "float" : (float, _("floating-point")),
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
426 "complex" : (complex, _("complex")) }
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
427
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
428 def check_builtin(option, opt, value):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
429 (cvt, what) = _builtin_cvt[option.type]
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
430 try:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
431 return cvt(value)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
432 except ValueError:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
433 raise OptionValueError(
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
434 _("option %s: invalid %s value: %r") % (opt, what, value))
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
435
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
436 def check_choice(option, opt, value):
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
437 if value in option.choices:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
438 return value
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
439 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
440 choices = ", ".join(map(repr, option.choices))
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
441 raise OptionValueError(
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
442 _("option %s: invalid choice: %r (choose from %s)")
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
443 % (opt, value, choices))
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
444
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
445 # Not supplying a default is different from a default of None,
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
446 # so we need an explicit "not supplied" value.
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
447 NO_DEFAULT = ("NO", "DEFAULT")
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
448
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
449
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
450 class Option:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
451 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
452 Instance attributes:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
453 _short_opts : [string]
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
454 _long_opts : [string]
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
455
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
456 action : string
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
457 type : string
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
458 dest : string
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
459 default : any
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
460 nargs : int
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
461 const : any
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
462 choices : [string]
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
463 callback : function
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
464 callback_args : (any*)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
465 callback_kwargs : { string : any }
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
466 help : string
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
467 metavar : string
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
468 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
469
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
470 # The list of instance attributes that may be set through
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
471 # keyword args to the constructor.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
472 ATTRS = ['action',
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
473 'type',
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
474 'dest',
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
475 'default',
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
476 'nargs',
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
477 'const',
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
478 'choices',
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
479 'callback',
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
480 'callback_args',
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
481 'callback_kwargs',
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
482 'help',
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
483 'metavar']
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
484
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
485 # The set of actions allowed by option parsers. Explicitly listed
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
486 # here so the constructor can validate its arguments.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
487 ACTIONS = ("store",
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
488 "store_const",
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
489 "store_true",
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
490 "store_false",
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
491 "append",
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
492 "append_const",
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
493 "count",
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
494 "callback",
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
495 "help",
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
496 "version")
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
497
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
498 # The set of actions that involve storing a value somewhere;
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
499 # also listed just for constructor argument validation. (If
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
500 # the action is one of these, there must be a destination.)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
501 STORE_ACTIONS = ("store",
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
502 "store_const",
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
503 "store_true",
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
504 "store_false",
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
505 "append",
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
506 "append_const",
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
507 "count")
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
508
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
509 # The set of actions for which it makes sense to supply a value
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33772
diff changeset
510 # type, ie. which may consume an argument from the command line.
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
511 TYPED_ACTIONS = ("store",
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
512 "append",
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
513 "callback")
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
514
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33772
diff changeset
515 # The set of actions which *require* a value type, ie. that
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33772
diff changeset
516 # always consume an argument from the command line.
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33772
diff changeset
517 ALWAYS_TYPED_ACTIONS = ("store",
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33772
diff changeset
518 "append")
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33772
diff changeset
519
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
520 # The set of actions which take a 'const' attribute.
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
521 CONST_ACTIONS = ("store_const",
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
522 "append_const")
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
523
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
524 # The set of known types for option parsers. Again, listed here for
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
525 # constructor argument validation.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
526 TYPES = ("string", "int", "long", "float", "complex", "choice")
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
527
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
528 # Dictionary of argument checking functions, which convert and
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
529 # validate option arguments according to the option type.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
530 #
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
531 # Signature of checking functions is:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
532 # check(option : Option, opt : string, value : string) -> any
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
533 # where
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
534 # option is the Option instance calling the checker
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
535 # opt is the actual option seen on the command-line
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
536 # (eg. "-a", "--file")
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
537 # value is the option argument seen on the command-line
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
538 #
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
539 # The return value should be in the appropriate Python type
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
540 # for option.type -- eg. an integer if option.type == "int".
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
541 #
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
542 # If no checker is defined for a type, arguments will be
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
543 # unchecked and remain strings.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
544 TYPE_CHECKER = { "int" : check_builtin,
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
545 "long" : check_builtin,
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
546 "float" : check_builtin,
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
547 "complex": check_builtin,
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
548 "choice" : check_choice,
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
549 }
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
550
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
551
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
552 # CHECK_METHODS is a list of unbound method objects; they are called
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
553 # by the constructor, in order, after all attributes are
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
554 # initialized. The list is created and filled in later, after all
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
555 # the methods are actually defined. (I just put it here because I
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
556 # like to define and document all class attributes in the same
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
557 # place.) Subclasses that add another _check_*() method should
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
558 # define their own CHECK_METHODS list that adds their check method
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
559 # to those from this class.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
560 CHECK_METHODS = None
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
561
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
562
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
563 # -- Constructor/initialization methods ----------------------------
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
564
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
565 def __init__(self, *opts, **attrs):
28705
be14970a9955 Update to Optik 1.4.1; here are the relevant bits of the change log:
Greg Ward <gward@python.net>
parents: 27091
diff changeset
566 # Set _short_opts, _long_opts attrs from 'opts' tuple.
be14970a9955 Update to Optik 1.4.1; here are the relevant bits of the change log:
Greg Ward <gward@python.net>
parents: 27091
diff changeset
567 # Have to be set now, in case no option strings are supplied.
be14970a9955 Update to Optik 1.4.1; here are the relevant bits of the change log:
Greg Ward <gward@python.net>
parents: 27091
diff changeset
568 self._short_opts = []
be14970a9955 Update to Optik 1.4.1; here are the relevant bits of the change log:
Greg Ward <gward@python.net>
parents: 27091
diff changeset
569 self._long_opts = []
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
570 opts = self._check_opt_strings(opts)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
571 self._set_opt_strings(opts)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
572
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
573 # Set all other attrs (action, type, etc.) from 'attrs' dict
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
574 self._set_attrs(attrs)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
575
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
576 # Check all the attributes we just set. There are lots of
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
577 # complicated interdependencies, but luckily they can be farmed
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
578 # out to the _check_*() methods listed in CHECK_METHODS -- which
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
579 # could be handy for subclasses! The one thing these all share
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
580 # is that they raise OptionError if they discover a problem.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
581 for checker in self.CHECK_METHODS:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
582 checker(self)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
583
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
584 def _check_opt_strings(self, opts):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
585 # Filter out None because early versions of Optik had exactly
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
586 # one short option and one long option, either of which
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
587 # could be None.
42142
a53e48be6df9 Merged revisions 56125-56153 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41986
diff changeset
588 opts = [opt for opt in opts if opt]
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
589 if not opts:
28705
be14970a9955 Update to Optik 1.4.1; here are the relevant bits of the change log:
Greg Ward <gward@python.net>
parents: 27091
diff changeset
590 raise TypeError("at least one option string must be supplied")
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
591 return opts
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
592
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
593 def _set_opt_strings(self, opts):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
594 for opt in opts:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
595 if len(opt) < 2:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
596 raise OptionError(
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
597 "invalid option string %r: "
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
598 "must be at least two characters long" % opt, self)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
599 elif len(opt) == 2:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
600 if not (opt[0] == "-" and opt[1] != "-"):
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
601 raise OptionError(
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
602 "invalid short option string %r: "
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
603 "must be of the form -x, (x any non-dash char)" % opt,
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
604 self)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
605 self._short_opts.append(opt)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
606 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
607 if not (opt[0:2] == "--" and opt[2] != "-"):
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
608 raise OptionError(
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
609 "invalid long option string %r: "
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
610 "must start with --, followed by non-dash" % opt,
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
611 self)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
612 self._long_opts.append(opt)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
613
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
614 def _set_attrs(self, attrs):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
615 for attr in self.ATTRS:
39575
63237fcefd99 Get rid of dict.has_key(). Boy this has a lot of repercussions!
Guido van Rossum <guido@python.org>
parents: 39442
diff changeset
616 if attr in attrs:
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
617 setattr(self, attr, attrs[attr])
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
618 del attrs[attr]
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
619 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
620 if attr == 'default':
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
621 setattr(self, attr, NO_DEFAULT)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
622 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
623 setattr(self, attr, None)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
624 if attrs:
40819
5ef70c49d85a Checkin the regenerated Python-ast.c and fix test_optparse.
Georg Brandl <georg@python.org>
parents: 40775
diff changeset
625 attrs = sorted(attrs.keys())
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
626 raise OptionError(
38669
19fd6141940d Partially merge trunk into p3yk. The removal of Mac/Tools is confusing svn
Thomas Wouters <thomas@python.org>
parents: 38453
diff changeset
627 "invalid keyword arguments: %s" % ", ".join(attrs),
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
628 self)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
629
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
630
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
631 # -- Constructor validation methods --------------------------------
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
632
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
633 def _check_action(self):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
634 if self.action is None:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
635 self.action = "store"
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
636 elif self.action not in self.ACTIONS:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
637 raise OptionError("invalid action: %r" % self.action, self)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
638
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
639 def _check_type(self):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
640 if self.type is None:
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33772
diff changeset
641 if self.action in self.ALWAYS_TYPED_ACTIONS:
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
642 if self.choices is not None:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
643 # The "choices" attribute implies "choice" type.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
644 self.type = "choice"
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
645 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
646 # No type given? "string" is the most sensible default.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
647 self.type = "string"
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
648 else:
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
649 # Allow type objects or builtin type conversion functions
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
650 # (int, str, etc.) as an alternative to their names. (The
44098
0889daf6d0d9 #1535: rename __builtin__ module to builtins.
Georg Brandl <georg@python.org>
parents: 43577
diff changeset
651 # complicated check of builtins is only necessary for
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
652 # Python 2.1 and earlier, and is short-circuited by the
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
653 # first check on modern Pythons.)
44098
0889daf6d0d9 #1535: rename __builtin__ module to builtins.
Georg Brandl <georg@python.org>
parents: 43577
diff changeset
654 import builtins
41986
6464cc638faa Merged revisions 55795-55816 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41969
diff changeset
655 if ( isinstance(self.type, type) or
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
656 (hasattr(self.type, "__name__") and
44098
0889daf6d0d9 #1535: rename __builtin__ module to builtins.
Georg Brandl <georg@python.org>
parents: 43577
diff changeset
657 getattr(builtins, self.type.__name__, None) is self.type) ):
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
658 self.type = self.type.__name__
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
659
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
660 if self.type == "str":
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
661 self.type = "string"
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
662
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
663 if self.type not in self.TYPES:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
664 raise OptionError("invalid option type: %r" % self.type, self)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
665 if self.action not in self.TYPED_ACTIONS:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
666 raise OptionError(
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
667 "must not supply a type for action %r" % self.action, self)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
668
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
669 def _check_choice(self):
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
670 if self.type == "choice":
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
671 if self.choices is None:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
672 raise OptionError(
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
673 "must supply a list of choices for type 'choice'", self)
41986
6464cc638faa Merged revisions 55795-55816 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41969
diff changeset
674 elif not isinstance(self.choices, (tuple, list)):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
675 raise OptionError(
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
676 "choices must be a list of strings ('%s' supplied)"
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
677 % str(type(self.choices)).split("'")[1], self)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
678 elif self.choices is not None:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
679 raise OptionError(
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
680 "must not supply choices for type %r" % self.type, self)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
681
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
682 def _check_dest(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
683 # No destination given, and we need one for this action. The
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
684 # self.type check is for callbacks that take a value.
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
685 takes_value = (self.action in self.STORE_ACTIONS or
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
686 self.type is not None)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
687 if self.dest is None and takes_value:
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
688
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
689 # Glean a destination from the first long option string,
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
690 # or from the first short option string if no long options.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
691 if self._long_opts:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
692 # eg. "--foo-bar" -> "foo_bar"
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
693 self.dest = self._long_opts[0][2:].replace('-', '_')
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
694 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
695 self.dest = self._short_opts[0][1]
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
696
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
697 def _check_const(self):
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
698 if self.action not in self.CONST_ACTIONS and self.const is not None:
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
699 raise OptionError(
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
700 "'const' must not be supplied for action %r" % self.action,
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
701 self)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
702
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
703 def _check_nargs(self):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
704 if self.action in self.TYPED_ACTIONS:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
705 if self.nargs is None:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
706 self.nargs = 1
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
707 elif self.nargs is not None:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
708 raise OptionError(
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
709 "'nargs' must not be supplied for action %r" % self.action,
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
710 self)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
711
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
712 def _check_callback(self):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
713 if self.action == "callback":
41824
24b60622b944 Merged revisions 55407-55513 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41610
diff changeset
714 if not hasattr(self.callback, '__call__'):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
715 raise OptionError(
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
716 "callback not callable: %r" % self.callback, self)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
717 if (self.callback_args is not None and
41986
6464cc638faa Merged revisions 55795-55816 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41969
diff changeset
718 not isinstance(self.callback_args, tuple)):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
719 raise OptionError(
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
720 "callback_args, if supplied, must be a tuple: not %r"
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
721 % self.callback_args, self)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
722 if (self.callback_kwargs is not None and
41986
6464cc638faa Merged revisions 55795-55816 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41969
diff changeset
723 not isinstance(self.callback_kwargs, dict)):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
724 raise OptionError(
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
725 "callback_kwargs, if supplied, must be a dict: not %r"
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
726 % self.callback_kwargs, self)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
727 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
728 if self.callback is not None:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
729 raise OptionError(
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
730 "callback supplied (%r) for non-callback option"
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
731 % self.callback, self)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
732 if self.callback_args is not None:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
733 raise OptionError(
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
734 "callback_args supplied for non-callback option", self)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
735 if self.callback_kwargs is not None:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
736 raise OptionError(
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
737 "callback_kwargs supplied for non-callback option", self)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
738
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
739
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
740 CHECK_METHODS = [_check_action,
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
741 _check_type,
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
742 _check_choice,
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
743 _check_dest,
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
744 _check_const,
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
745 _check_nargs,
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
746 _check_callback]
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
747
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
748
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
749 # -- Miscellaneous methods -----------------------------------------
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
750
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
751 def __str__(self):
28705
be14970a9955 Update to Optik 1.4.1; here are the relevant bits of the change log:
Greg Ward <gward@python.net>
parents: 27091
diff changeset
752 return "/".join(self._short_opts + self._long_opts)
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
753
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
754 __repr__ = _repr
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
755
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
756 def takes_value(self):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
757 return self.type is not None
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
758
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
759 def get_opt_string(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
760 if self._long_opts:
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
761 return self._long_opts[0]
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
762 else:
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
763 return self._short_opts[0]
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
764
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
765
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
766 # -- Processing methods --------------------------------------------
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
767
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
768 def check_value(self, opt, value):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
769 checker = self.TYPE_CHECKER.get(self.type)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
770 if checker is None:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
771 return value
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
772 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
773 return checker(self, opt, value)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
774
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
775 def convert_value(self, opt, value):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
776 if value is not None:
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
777 if self.nargs == 1:
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
778 return self.check_value(opt, value)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
779 else:
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
780 return tuple([self.check_value(opt, v) for v in value])
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
781
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
782 def process(self, opt, value, values, parser):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
783
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
784 # First, convert the value(s) to the right type. Howl if any
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
785 # value(s) are bogus.
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
786 value = self.convert_value(opt, value)
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
787
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
788 # And then take whatever action is expected of us.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
789 # This is a separate method to make life easier for
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
790 # subclasses to add new actions.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
791 return self.take_action(
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
792 self.action, self.dest, opt, value, values, parser)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
793
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
794 def take_action(self, action, dest, opt, value, values, parser):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
795 if action == "store":
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
796 setattr(values, dest, value)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
797 elif action == "store_const":
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
798 setattr(values, dest, self.const)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
799 elif action == "store_true":
28705
be14970a9955 Update to Optik 1.4.1; here are the relevant bits of the change log:
Greg Ward <gward@python.net>
parents: 27091
diff changeset
800 setattr(values, dest, True)
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
801 elif action == "store_false":
28705
be14970a9955 Update to Optik 1.4.1; here are the relevant bits of the change log:
Greg Ward <gward@python.net>
parents: 27091
diff changeset
802 setattr(values, dest, False)
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
803 elif action == "append":
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
804 values.ensure_value(dest, []).append(value)
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
805 elif action == "append_const":
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
806 values.ensure_value(dest, []).append(self.const)
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
807 elif action == "count":
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
808 setattr(values, dest, values.ensure_value(dest, 0) + 1)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
809 elif action == "callback":
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
810 args = self.callback_args or ()
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
811 kwargs = self.callback_kwargs or {}
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
812 self.callback(self, opt, value, parser, *args, **kwargs)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
813 elif action == "help":
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
814 parser.print_help()
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33772
diff changeset
815 parser.exit()
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
816 elif action == "version":
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
817 parser.print_version()
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33772
diff changeset
818 parser.exit()
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
819 else:
49908
ed8adfef26c6 Merged revisions 67348,67355,67359,67362,67364-67365,67367-67368,67398,67423-67424,67432,67440-67441,67444-67445,67454-67455,67457-67458 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 49493
diff changeset
820 raise ValueError("unknown action %r" % self.action)
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
821
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
822 return 1
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
823
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
824 # class Option
28705
be14970a9955 Update to Optik 1.4.1; here are the relevant bits of the change log:
Greg Ward <gward@python.net>
parents: 27091
diff changeset
825
be14970a9955 Update to Optik 1.4.1; here are the relevant bits of the change log:
Greg Ward <gward@python.net>
parents: 27091
diff changeset
826
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
827 SUPPRESS_HELP = "SUPPRESS"+"HELP"
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
828 SUPPRESS_USAGE = "SUPPRESS"+"USAGE"
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
829
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
830 class Values:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
831
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
832 def __init__(self, defaults=None):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
833 if defaults:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
834 for (attr, val) in defaults.items():
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
835 setattr(self, attr, val)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
836
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
837 def __str__(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
838 return str(self.__dict__)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
839
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
840 __repr__ = _repr
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
841
39644
13d5e5f0e993 Restructure comparison dramatically. There is no longer a default
Guido van Rossum <guido@python.org>
parents: 39589
diff changeset
842 def __eq__(self, other):
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
843 if isinstance(other, Values):
39644
13d5e5f0e993 Restructure comparison dramatically. There is no longer a default
Guido van Rossum <guido@python.org>
parents: 39589
diff changeset
844 return self.__dict__ == other.__dict__
41986
6464cc638faa Merged revisions 55795-55816 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41969
diff changeset
845 elif isinstance(other, dict):
39644
13d5e5f0e993 Restructure comparison dramatically. There is no longer a default
Guido van Rossum <guido@python.org>
parents: 39589
diff changeset
846 return self.__dict__ == other
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
847 else:
39644
13d5e5f0e993 Restructure comparison dramatically. There is no longer a default
Guido van Rossum <guido@python.org>
parents: 39589
diff changeset
848 return NotImplemented
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
849
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
850 def _update_careful(self, dict):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
851 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
852 Update the option values from an arbitrary dictionary, but only
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
853 use keys from dict that already have a corresponding attribute
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
854 in self. Any keys in dict without a corresponding attribute
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
855 are silently ignored.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
856 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
857 for attr in dir(self):
39575
63237fcefd99 Get rid of dict.has_key(). Boy this has a lot of repercussions!
Guido van Rossum <guido@python.org>
parents: 39442
diff changeset
858 if attr in dict:
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
859 dval = dict[attr]
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
860 if dval is not None:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
861 setattr(self, attr, dval)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
862
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
863 def _update_loose(self, dict):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
864 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
865 Update the option values from an arbitrary dictionary,
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
866 using all keys from the dictionary regardless of whether
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
867 they have a corresponding attribute in self or not.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
868 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
869 self.__dict__.update(dict)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
870
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
871 def _update(self, dict, mode):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
872 if mode == "careful":
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
873 self._update_careful(dict)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
874 elif mode == "loose":
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
875 self._update_loose(dict)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
876 else:
43020
907a45df1295 Raise statement normalization in Lib/.
Collin Winter <collinw@gmail.com>
parents: 42552
diff changeset
877 raise ValueError("invalid update mode: %r" % mode)
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
878
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
879 def read_module(self, modname, mode="careful"):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
880 __import__(modname)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
881 mod = sys.modules[modname]
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
882 self._update(vars(mod), mode)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
883
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
884 def read_file(self, filename, mode="careful"):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
885 vars = {}
42552
ac192f89c109 Kill execfile(), use exec() instead
Neal Norwitz <nnorwitz@gmail.com>
parents: 42501
diff changeset
886 exec(open(filename).read(), vars)
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
887 self._update(vars, mode)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
888
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
889 def ensure_value(self, attr, value):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
890 if not hasattr(self, attr) or getattr(self, attr) is None:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
891 setattr(self, attr, value)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
892 return getattr(self, attr)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
893
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
894
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
895 class OptionContainer:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
896
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
897 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
898 Abstract base class.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
899
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
900 Class attributes:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
901 standard_option_list : [Option]
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
902 list of standard options that will be accepted by all instances
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
903 of this parser class (intended to be overridden by subclasses).
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
904
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
905 Instance attributes:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
906 option_list : [Option]
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
907 the list of Option objects contained by this OptionContainer
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
908 _short_opt : { string : Option }
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
909 dictionary mapping short option strings, eg. "-f" or "-X",
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
910 to the Option instances that implement them. If an Option
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
911 has multiple short option strings, it will appears in this
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
912 dictionary multiple times. [1]
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
913 _long_opt : { string : Option }
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
914 dictionary mapping long option strings, eg. "--file" or
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
915 "--exclude", to the Option instances that implement them.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
916 Again, a given Option can occur multiple times in this
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
917 dictionary. [1]
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
918 defaults : { string : any }
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
919 dictionary mapping option destination names to default
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
920 values for each destination [1]
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
921
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
922 [1] These mappings are common to (shared by) all components of the
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
923 controlling OptionParser, where they are initially created.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
924
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
925 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
926
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
927 def __init__(self, option_class, conflict_handler, description):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
928 # Initialize the option list and related data structures.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
929 # This method must be provided by subclasses, and it must
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
930 # initialize at least the following instance attributes:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
931 # option_list, _short_opt, _long_opt, defaults.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
932 self._create_option_list()
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
933
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
934 self.option_class = option_class
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
935 self.set_conflict_handler(conflict_handler)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
936 self.set_description(description)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
937
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
938 def _create_option_mappings(self):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
939 # For use by OptionParser constructor -- create the master
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
940 # option mappings used by this OptionParser and all
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
941 # OptionGroups that it owns.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
942 self._short_opt = {} # single letter -> Option instance
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
943 self._long_opt = {} # long option -> Option instance
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
944 self.defaults = {} # maps option dest -> default value
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
945
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
946
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
947 def _share_option_mappings(self, parser):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
948 # For use by OptionGroup constructor -- use shared option
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
949 # mappings from the OptionParser that owns this OptionGroup.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
950 self._short_opt = parser._short_opt
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
951 self._long_opt = parser._long_opt
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
952 self.defaults = parser.defaults
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
953
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
954 def set_conflict_handler(self, handler):
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33772
diff changeset
955 if handler not in ("error", "resolve"):
43020
907a45df1295 Raise statement normalization in Lib/.
Collin Winter <collinw@gmail.com>
parents: 42552
diff changeset
956 raise ValueError("invalid conflict_resolution value %r" % handler)
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
957 self.conflict_handler = handler
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
958
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
959 def set_description(self, description):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
960 self.description = description
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
961
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
962 def get_description(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
963 return self.description
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
964
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
965
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
966 def destroy(self):
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
967 """see OptionParser.destroy()."""
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
968 del self._short_opt
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
969 del self._long_opt
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
970 del self.defaults
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
971
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
972
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
973 # -- Option-adding methods -----------------------------------------
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
974
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
975 def _check_conflict(self, option):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
976 conflict_opts = []
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
977 for opt in option._short_opts:
39575
63237fcefd99 Get rid of dict.has_key(). Boy this has a lot of repercussions!
Guido van Rossum <guido@python.org>
parents: 39442
diff changeset
978 if opt in self._short_opt:
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
979 conflict_opts.append((opt, self._short_opt[opt]))
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
980 for opt in option._long_opts:
39575
63237fcefd99 Get rid of dict.has_key(). Boy this has a lot of repercussions!
Guido van Rossum <guido@python.org>
parents: 39442
diff changeset
981 if opt in self._long_opt:
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
982 conflict_opts.append((opt, self._long_opt[opt]))
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
983
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
984 if conflict_opts:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
985 handler = self.conflict_handler
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33772
diff changeset
986 if handler == "error":
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
987 raise OptionConflictError(
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
988 "conflicting option string(s): %s"
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
989 % ", ".join([co[0] for co in conflict_opts]),
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
990 option)
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33772
diff changeset
991 elif handler == "resolve":
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
992 for (opt, c_option) in conflict_opts:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
993 if opt.startswith("--"):
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
994 c_option._long_opts.remove(opt)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
995 del self._long_opt[opt]
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
996 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
997 c_option._short_opts.remove(opt)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
998 del self._short_opt[opt]
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
999 if not (c_option._short_opts or c_option._long_opts):
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1000 c_option.container.option_list.remove(c_option)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1001
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1002 def add_option(self, *args, **kwargs):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1003 """add_option(Option)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1004 add_option(opt_str, ..., kwarg=val, ...)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1005 """
43577
ace45b361e87 Patch# 1258 by Christian Heimes: kill basestring.
Guido van Rossum <guido@python.org>
parents: 43020
diff changeset
1006 if isinstance(args[0], str):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1007 option = self.option_class(*args, **kwargs)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1008 elif len(args) == 1 and not kwargs:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1009 option = args[0]
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1010 if not isinstance(option, Option):
43020
907a45df1295 Raise statement normalization in Lib/.
Collin Winter <collinw@gmail.com>
parents: 42552
diff changeset
1011 raise TypeError("not an Option instance: %r" % option)
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1012 else:
43020
907a45df1295 Raise statement normalization in Lib/.
Collin Winter <collinw@gmail.com>
parents: 42552
diff changeset
1013 raise TypeError("invalid arguments")
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1014
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1015 self._check_conflict(option)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1016
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1017 self.option_list.append(option)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1018 option.container = self
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1019 for opt in option._short_opts:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1020 self._short_opt[opt] = option
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1021 for opt in option._long_opts:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1022 self._long_opt[opt] = option
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1023
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1024 if option.dest is not None: # option has a dest, we need a default
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1025 if option.default is not NO_DEFAULT:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1026 self.defaults[option.dest] = option.default
39575
63237fcefd99 Get rid of dict.has_key(). Boy this has a lot of repercussions!
Guido van Rossum <guido@python.org>
parents: 39442
diff changeset
1027 elif option.dest not in self.defaults:
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1028 self.defaults[option.dest] = None
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1029
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1030 return option
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1031
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1032 def add_options(self, option_list):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1033 for option in option_list:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1034 self.add_option(option)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1035
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1036 # -- Option query/removal methods ----------------------------------
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1037
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1038 def get_option(self, opt_str):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1039 return (self._short_opt.get(opt_str) or
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1040 self._long_opt.get(opt_str))
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1041
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1042 def has_option(self, opt_str):
39575
63237fcefd99 Get rid of dict.has_key(). Boy this has a lot of repercussions!
Guido van Rossum <guido@python.org>
parents: 39442
diff changeset
1043 return (opt_str in self._short_opt or
39589
d240ce5696f9 More has_key() fixes.
Guido van Rossum <guido@python.org>
parents: 39575
diff changeset
1044 opt_str in self._long_opt)
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1045
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1046 def remove_option(self, opt_str):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1047 option = self._short_opt.get(opt_str)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1048 if option is None:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1049 option = self._long_opt.get(opt_str)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1050 if option is None:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1051 raise ValueError("no such option %r" % opt_str)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1052
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1053 for opt in option._short_opts:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1054 del self._short_opt[opt]
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1055 for opt in option._long_opts:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1056 del self._long_opt[opt]
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1057 option.container.option_list.remove(option)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1058
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1059
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1060 # -- Help-formatting methods ---------------------------------------
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1061
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1062 def format_option_help(self, formatter):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1063 if not self.option_list:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1064 return ""
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1065 result = []
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1066 for option in self.option_list:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1067 if not option.help is SUPPRESS_HELP:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1068 result.append(formatter.format_option(option))
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1069 return "".join(result)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1070
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1071 def format_description(self, formatter):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1072 return formatter.format_description(self.get_description())
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1073
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1074 def format_help(self, formatter):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1075 result = []
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1076 if self.description:
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1077 result.append(self.format_description(formatter))
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1078 if self.option_list:
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1079 result.append(self.format_option_help(formatter))
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1080 return "\n".join(result)
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1081
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1082
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1083 class OptionGroup (OptionContainer):
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1084
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1085 def __init__(self, parser, title, description=None):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1086 self.parser = parser
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1087 OptionContainer.__init__(
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1088 self, parser.option_class, parser.conflict_handler, description)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1089 self.title = title
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1090
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1091 def _create_option_list(self):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1092 self.option_list = []
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1093 self._share_option_mappings(self.parser)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1094
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1095 def set_title(self, title):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1096 self.title = title
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1097
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
1098 def destroy(self):
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
1099 """see OptionParser.destroy()."""
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
1100 OptionContainer.destroy(self)
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
1101 del self.option_list
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
1102
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1103 # -- Help-formatting methods ---------------------------------------
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1104
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1105 def format_help(self, formatter):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1106 result = formatter.format_heading(self.title)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1107 formatter.indent()
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1108 result += OptionContainer.format_help(self, formatter)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1109 formatter.dedent()
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1110 return result
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1111
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1112
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1113 class OptionParser (OptionContainer):
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1114
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1115 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1116 Class attributes:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1117 standard_option_list : [Option]
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1118 list of standard options that will be accepted by all instances
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1119 of this parser class (intended to be overridden by subclasses).
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1120
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1121 Instance attributes:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1122 usage : string
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1123 a usage string for your program. Before it is displayed
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1124 to the user, "%prog" will be expanded to the name of
28705
be14970a9955 Update to Optik 1.4.1; here are the relevant bits of the change log:
Greg Ward <gward@python.net>
parents: 27091
diff changeset
1125 your program (self.prog or os.path.basename(sys.argv[0])).
be14970a9955 Update to Optik 1.4.1; here are the relevant bits of the change log:
Greg Ward <gward@python.net>
parents: 27091
diff changeset
1126 prog : string
be14970a9955 Update to Optik 1.4.1; here are the relevant bits of the change log:
Greg Ward <gward@python.net>
parents: 27091
diff changeset
1127 the name of the current program (to override
be14970a9955 Update to Optik 1.4.1; here are the relevant bits of the change log:
Greg Ward <gward@python.net>
parents: 27091
diff changeset
1128 os.path.basename(sys.argv[0])).
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
1129 epilog : string
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
1130 paragraph of help text to print after option help
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1131
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1132 option_groups : [OptionGroup]
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1133 list of option groups in this parser (option groups are
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1134 irrelevant for parsing the command-line, but very useful
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1135 for generating help)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1136
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1137 allow_interspersed_args : bool = true
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1138 if true, positional arguments may be interspersed with options.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1139 Assuming -a and -b each take a single argument, the command-line
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1140 -ablah foo bar -bboo baz
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1141 will be interpreted the same as
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1142 -ablah -bboo -- foo bar baz
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1143 If this flag were false, that command line would be interpreted as
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1144 -ablah -- foo bar -bboo baz
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1145 -- ie. we stop processing options as soon as we see the first
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1146 non-option argument. (This is the tradition followed by
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1147 Python's getopt module, Perl's Getopt::Std, and other argument-
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1148 parsing libraries, but it is generally annoying to users.)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1149
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1150 process_default_values : bool = true
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1151 if true, option default values are processed similarly to option
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1152 values from the command line: that is, they are passed to the
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1153 type-checking function for the option's type (as long as the
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1154 default value is a string). (This really only matters if you
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1155 have defined custom types; see SF bug #955889.) Set it to false
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1156 to restore the behaviour of Optik 1.4.1 and earlier.
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1157
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1158 rargs : [string]
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1159 the argument list currently being parsed. Only set when
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1160 parse_args() is active, and continually trimmed down as
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1161 we consume arguments. Mainly there for the benefit of
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1162 callback options.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1163 largs : [string]
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1164 the list of leftover arguments that we have skipped while
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1165 parsing options. If allow_interspersed_args is false, this
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1166 list is always empty.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1167 values : Values
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1168 the set of option values currently being accumulated. Only
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1169 set when parse_args() is active. Also mainly for callbacks.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1170
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1171 Because of the 'rargs', 'largs', and 'values' attributes,
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1172 OptionParser is not thread-safe. If, for some perverse reason, you
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1173 need to parse command-line arguments simultaneously in different
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1174 threads, use different OptionParser instances.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1175
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1176 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1177
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1178 standard_option_list = []
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1179
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1180 def __init__(self,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1181 usage=None,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1182 option_list=None,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1183 option_class=Option,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1184 version=None,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1185 conflict_handler="error",
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1186 description=None,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1187 formatter=None,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1188 add_help_option=True,
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
1189 prog=None,
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
1190 epilog=None):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1191 OptionContainer.__init__(
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1192 self, option_class, conflict_handler, description)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1193 self.set_usage(usage)
28705
be14970a9955 Update to Optik 1.4.1; here are the relevant bits of the change log:
Greg Ward <gward@python.net>
parents: 27091
diff changeset
1194 self.prog = prog
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1195 self.version = version
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1196 self.allow_interspersed_args = True
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1197 self.process_default_values = True
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1198 if formatter is None:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1199 formatter = IndentedHelpFormatter()
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1200 self.formatter = formatter
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1201 self.formatter.set_parser(self)
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
1202 self.epilog = epilog
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1203
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1204 # Populate the option list; initial sources are the
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1205 # standard_option_list class attribute, the 'option_list'
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1206 # argument, and (if applicable) the _add_version_option() and
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1207 # _add_help_option() methods.
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1208 self._populate_option_list(option_list,
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1209 add_help=add_help_option)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1210
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1211 self._init_parsing_state()
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1212
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
1213
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
1214 def destroy(self):
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
1215 """
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
1216 Declare that you are done with this OptionParser. This cleans up
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
1217 reference cycles so the OptionParser (and all objects referenced by
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
1218 it) can be garbage-collected promptly. After calling destroy(), the
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
1219 OptionParser is unusable.
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
1220 """
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
1221 OptionContainer.destroy(self)
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
1222 for group in self.option_groups:
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
1223 group.destroy()
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
1224 del self.option_list
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
1225 del self.option_groups
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
1226 del self.formatter
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
1227
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
1228
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1229 # -- Private methods -----------------------------------------------
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1230 # (used by our or OptionContainer's constructor)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1231
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1232 def _create_option_list(self):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1233 self.option_list = []
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1234 self.option_groups = []
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1235 self._create_option_mappings()
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1236
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1237 def _add_help_option(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1238 self.add_option("-h", "--help",
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1239 action="help",
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1240 help=_("show this help message and exit"))
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1241
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1242 def _add_version_option(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1243 self.add_option("--version",
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1244 action="version",
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1245 help=_("show program's version number and exit"))
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1246
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1247 def _populate_option_list(self, option_list, add_help=True):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1248 if self.standard_option_list:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1249 self.add_options(self.standard_option_list)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1250 if option_list:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1251 self.add_options(option_list)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1252 if self.version:
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1253 self._add_version_option()
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1254 if add_help:
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1255 self._add_help_option()
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1256
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1257 def _init_parsing_state(self):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1258 # These are set in parse_args() for the convenience of callbacks.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1259 self.rargs = None
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1260 self.largs = None
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1261 self.values = None
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1262
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1263
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1264 # -- Simple modifier methods ---------------------------------------
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1265
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1266 def set_usage(self, usage):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1267 if usage is None:
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1268 self.usage = _("%prog [options]")
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1269 elif usage is SUPPRESS_USAGE:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1270 self.usage = None
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1271 # For backwards compatibility with Optik 1.3 and earlier.
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
1272 elif usage.lower().startswith("usage: "):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1273 self.usage = usage[7:]
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1274 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1275 self.usage = usage
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1276
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1277 def enable_interspersed_args(self):
49493
bdf4da5d04ad merge from trunk
Benjamin Peterson <benjamin@python.org>
parents: 44098
diff changeset
1278 """Set parsing to not stop on the first non-option, allowing
bdf4da5d04ad merge from trunk
Benjamin Peterson <benjamin@python.org>
parents: 44098
diff changeset
1279 interspersing switches with command arguments. This is the
bdf4da5d04ad merge from trunk
Benjamin Peterson <benjamin@python.org>
parents: 44098
diff changeset
1280 default behavior. See also disable_interspersed_args() and the
bdf4da5d04ad merge from trunk
Benjamin Peterson <benjamin@python.org>
parents: 44098
diff changeset
1281 class documentation description of the attribute
bdf4da5d04ad merge from trunk
Benjamin Peterson <benjamin@python.org>
parents: 44098
diff changeset
1282 allow_interspersed_args."""
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1283 self.allow_interspersed_args = True
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1284
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1285 def disable_interspersed_args(self):
49493
bdf4da5d04ad merge from trunk
Benjamin Peterson <benjamin@python.org>
parents: 44098
diff changeset
1286 """Set parsing to stop on the first non-option. Use this if
bdf4da5d04ad merge from trunk
Benjamin Peterson <benjamin@python.org>
parents: 44098
diff changeset
1287 you have a command processor which runs another command that
bdf4da5d04ad merge from trunk
Benjamin Peterson <benjamin@python.org>
parents: 44098
diff changeset
1288 has options of its own and you want to make sure these options
bdf4da5d04ad merge from trunk
Benjamin Peterson <benjamin@python.org>
parents: 44098
diff changeset
1289 don't get confused.
bdf4da5d04ad merge from trunk
Benjamin Peterson <benjamin@python.org>
parents: 44098
diff changeset
1290 """
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1291 self.allow_interspersed_args = False
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1292
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1293 def set_process_default_values(self, process):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1294 self.process_default_values = process
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1295
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1296 def set_default(self, dest, value):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1297 self.defaults[dest] = value
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1298
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1299 def set_defaults(self, **kwargs):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1300 self.defaults.update(kwargs)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1301
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1302 def _get_all_options(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1303 options = self.option_list[:]
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1304 for group in self.option_groups:
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1305 options.extend(group.option_list)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1306 return options
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1307
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1308 def get_default_values(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1309 if not self.process_default_values:
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1310 # Old, pre-Optik 1.5 behaviour.
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1311 return Values(self.defaults)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1312
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1313 defaults = self.defaults.copy()
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1314 for option in self._get_all_options():
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1315 default = defaults.get(option.dest)
43577
ace45b361e87 Patch# 1258 by Christian Heimes: kill basestring.
Guido van Rossum <guido@python.org>
parents: 43020
diff changeset
1316 if isinstance(default, str):
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1317 opt_str = option.get_opt_string()
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1318 defaults[option.dest] = option.check_value(opt_str, default)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1319
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1320 return Values(defaults)
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1321
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1322
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1323 # -- OptionGroup methods -------------------------------------------
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1324
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1325 def add_option_group(self, *args, **kwargs):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1326 # XXX lots of overlap with OptionContainer.add_option()
43577
ace45b361e87 Patch# 1258 by Christian Heimes: kill basestring.
Guido van Rossum <guido@python.org>
parents: 43020
diff changeset
1327 if isinstance(args[0], str):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1328 group = OptionGroup(self, *args, **kwargs)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1329 elif len(args) == 1 and not kwargs:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1330 group = args[0]
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1331 if not isinstance(group, OptionGroup):
43020
907a45df1295 Raise statement normalization in Lib/.
Collin Winter <collinw@gmail.com>
parents: 42552
diff changeset
1332 raise TypeError("not an OptionGroup instance: %r" % group)
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1333 if group.parser is not self:
43020
907a45df1295 Raise statement normalization in Lib/.
Collin Winter <collinw@gmail.com>
parents: 42552
diff changeset
1334 raise ValueError("invalid OptionGroup (wrong parser)")
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1335 else:
43020
907a45df1295 Raise statement normalization in Lib/.
Collin Winter <collinw@gmail.com>
parents: 42552
diff changeset
1336 raise TypeError("invalid arguments")
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1337
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1338 self.option_groups.append(group)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1339 return group
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1340
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1341 def get_option_group(self, opt_str):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1342 option = (self._short_opt.get(opt_str) or
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1343 self._long_opt.get(opt_str))
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1344 if option and option.container is not self:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1345 return option.container
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1346 return None
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1347
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1348
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1349 # -- Option-parsing methods ----------------------------------------
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1350
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1351 def _get_args(self, args):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1352 if args is None:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1353 return sys.argv[1:]
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1354 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1355 return args[:] # don't modify caller's list
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1356
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1357 def parse_args(self, args=None, values=None):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1358 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1359 parse_args(args : [string] = sys.argv[1:],
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1360 values : Values = None)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1361 -> (values : Values, args : [string])
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1362
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1363 Parse the command-line options found in 'args' (default:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1364 sys.argv[1:]). Any errors result in a call to 'error()', which
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1365 by default prints the usage message to stderr and calls
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1366 sys.exit() with an error message. On success returns a pair
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1367 (values, args) where 'values' is an Values instance (with all
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1368 your option values) and 'args' is the list of arguments left
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1369 over after parsing options.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1370 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1371 rargs = self._get_args(args)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1372 if values is None:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1373 values = self.get_default_values()
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1374
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1375 # Store the halves of the argument list as attributes for the
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1376 # convenience of callbacks:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1377 # rargs
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1378 # the rest of the command-line (the "r" stands for
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1379 # "remaining" or "right-hand")
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1380 # largs
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1381 # the leftover arguments -- ie. what's left after removing
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1382 # options and their arguments (the "l" stands for "leftover"
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1383 # or "left-hand")
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1384 self.rargs = rargs
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1385 self.largs = largs = []
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1386 self.values = values
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1387
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1388 try:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1389 stop = self._process_args(largs, rargs, values)
40587
6b18a095c2e7 SF patch 1631942 by Collin Winter:
Guido van Rossum <guido@python.org>
parents: 39644
diff changeset
1390 except (BadOptionError, OptionValueError) as err:
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
1391 self.error(str(err))
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1392
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1393 args = largs + rargs
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1394 return self.check_values(values, args)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1395
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1396 def check_values(self, values, args):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1397 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1398 check_values(values : Values, args : [string])
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1399 -> (values : Values, args : [string])
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1400
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1401 Check that the supplied option values and leftover arguments are
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1402 valid. Returns the option values and leftover arguments
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1403 (possibly adjusted, possibly completely new -- whatever you
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1404 like). Default implementation just returns the passed-in
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1405 values; subclasses may override as desired.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1406 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1407 return (values, args)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1408
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1409 def _process_args(self, largs, rargs, values):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1410 """_process_args(largs : [string],
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1411 rargs : [string],
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1412 values : Values)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1413
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1414 Process command-line arguments and populate 'values', consuming
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1415 options and arguments from 'rargs'. If 'allow_interspersed_args' is
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1416 false, stop at the first non-option argument. If true, accumulate any
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1417 interspersed non-option arguments in 'largs'.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1418 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1419 while rargs:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1420 arg = rargs[0]
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1421 # We handle bare "--" explicitly, and bare "-" is handled by the
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1422 # standard arg handler since the short arg case ensures that the
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1423 # len of the opt string is greater than 1.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1424 if arg == "--":
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1425 del rargs[0]
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1426 return
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1427 elif arg[0:2] == "--":
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1428 # process a single long option (possibly with value(s))
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1429 self._process_long_opt(rargs, values)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1430 elif arg[:1] == "-" and len(arg) > 1:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1431 # process a cluster of short options (possibly with
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1432 # value(s) for the last one only)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1433 self._process_short_opts(rargs, values)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1434 elif self.allow_interspersed_args:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1435 largs.append(arg)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1436 del rargs[0]
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1437 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1438 return # stop now, leave this arg in rargs
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1439
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1440 # Say this is the original argument list:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1441 # [arg0, arg1, ..., arg(i-1), arg(i), arg(i+1), ..., arg(N-1)]
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1442 # ^
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1443 # (we are about to process arg(i)).
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1444 #
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1445 # Then rargs is [arg(i), ..., arg(N-1)] and largs is a *subset* of
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1446 # [arg0, ..., arg(i-1)] (any options and their arguments will have
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1447 # been removed from largs).
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1448 #
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1449 # The while loop will usually consume 1 or more arguments per pass.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1450 # If it consumes 1 (eg. arg is an option that takes no arguments),
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1451 # then after _process_arg() is done the situation is:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1452 #
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1453 # largs = subset of [arg0, ..., arg(i)]
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1454 # rargs = [arg(i+1), ..., arg(N-1)]
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1455 #
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1456 # If allow_interspersed_args is false, largs will always be
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1457 # *empty* -- still a subset of [arg0, ..., arg(i-1)], but
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1458 # not a very interesting subset!
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1459
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1460 def _match_long_opt(self, opt):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1461 """_match_long_opt(opt : string) -> string
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1462
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1463 Determine which long option string 'opt' matches, ie. which one
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1464 it is an unambiguous abbrevation for. Raises BadOptionError if
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1465 'opt' doesn't unambiguously match any long option string.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1466 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1467 return _match_abbrev(opt, self._long_opt)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1468
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1469 def _process_long_opt(self, rargs, values):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1470 arg = rargs.pop(0)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1471
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1472 # Value explicitly attached to arg? Pretend it's the next
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1473 # argument.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1474 if "=" in arg:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1475 (opt, next_arg) = arg.split("=", 1)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1476 rargs.insert(0, next_arg)
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1477 had_explicit_value = True
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1478 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1479 opt = arg
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1480 had_explicit_value = False
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1481
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1482 opt = self._match_long_opt(opt)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1483 option = self._long_opt[opt]
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1484 if option.takes_value():
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1485 nargs = option.nargs
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1486 if len(rargs) < nargs:
68767
4a5782a2b074 Use proper gettext plural forms in optparse (closes #4391).
Éric Araujo <merwok@netwok.org>
parents: 53523
diff changeset
1487 self.error(ngettext(
4a5782a2b074 Use proper gettext plural forms in optparse (closes #4391).
Éric Araujo <merwok@netwok.org>
parents: 53523
diff changeset
1488 "%(option)s option requires %(number)d argument",
4a5782a2b074 Use proper gettext plural forms in optparse (closes #4391).
Éric Araujo <merwok@netwok.org>
parents: 53523
diff changeset
1489 "%(option)s option requires %(number)d arguments",
4a5782a2b074 Use proper gettext plural forms in optparse (closes #4391).
Éric Araujo <merwok@netwok.org>
parents: 53523
diff changeset
1490 nargs) % {"option": opt, "number": nargs})
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1491 elif nargs == 1:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1492 value = rargs.pop(0)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1493 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1494 value = tuple(rargs[0:nargs])
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1495 del rargs[0:nargs]
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1496
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1497 elif had_explicit_value:
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1498 self.error(_("%s option does not take a value") % opt)
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1499
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1500 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1501 value = None
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1502
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1503 option.process(opt, value, values, self)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1504
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1505 def _process_short_opts(self, rargs, values):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1506 arg = rargs.pop(0)
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1507 stop = False
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1508 i = 1
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1509 for ch in arg[1:]:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1510 opt = "-" + ch
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1511 option = self._short_opt.get(opt)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1512 i += 1 # we have consumed a character
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1513
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1514 if not option:
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
1515 raise BadOptionError(opt)
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1516 if option.takes_value():
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1517 # Any characters left in arg? Pretend they're the
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1518 # next arg, and stop consuming characters of arg.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1519 if i < len(arg):
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1520 rargs.insert(0, arg[i:])
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1521 stop = True
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1522
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1523 nargs = option.nargs
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1524 if len(rargs) < nargs:
68767
4a5782a2b074 Use proper gettext plural forms in optparse (closes #4391).
Éric Araujo <merwok@netwok.org>
parents: 53523
diff changeset
1525 self.error(ngettext(
4a5782a2b074 Use proper gettext plural forms in optparse (closes #4391).
Éric Araujo <merwok@netwok.org>
parents: 53523
diff changeset
1526 "%(option)s option requires %(number)d argument",
4a5782a2b074 Use proper gettext plural forms in optparse (closes #4391).
Éric Araujo <merwok@netwok.org>
parents: 53523
diff changeset
1527 "%(option)s option requires %(number)d arguments",
4a5782a2b074 Use proper gettext plural forms in optparse (closes #4391).
Éric Araujo <merwok@netwok.org>
parents: 53523
diff changeset
1528 nargs) % {"option": opt, "number": nargs})
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1529 elif nargs == 1:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1530 value = rargs.pop(0)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1531 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1532 value = tuple(rargs[0:nargs])
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1533 del rargs[0:nargs]
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1534
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1535 else: # option doesn't take a value
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1536 value = None
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1537
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1538 option.process(opt, value, values, self)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1539
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1540 if stop:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1541 break
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1542
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1543
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1544 # -- Feedback methods ----------------------------------------------
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1545
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1546 def get_prog_name(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1547 if self.prog is None:
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1548 return os.path.basename(sys.argv[0])
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1549 else:
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1550 return self.prog
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1551
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1552 def expand_prog_name(self, s):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1553 return s.replace("%prog", self.get_prog_name())
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1554
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1555 def get_description(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1556 return self.expand_prog_name(self.description)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1557
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33772
diff changeset
1558 def exit(self, status=0, msg=None):
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33772
diff changeset
1559 if msg:
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33772
diff changeset
1560 sys.stderr.write(msg)
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33772
diff changeset
1561 sys.exit(status)
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33772
diff changeset
1562
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1563 def error(self, msg):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1564 """error(msg : string)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1565
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1566 Print a usage message incorporating 'msg' to stderr and exit.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1567 If you override this in a subclass, it should not return -- it
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1568 should either exit or raise an exception.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1569 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1570 self.print_usage(sys.stderr)
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33772
diff changeset
1571 self.exit(2, "%s: error: %s\n" % (self.get_prog_name(), msg))
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1572
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1573 def get_usage(self):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1574 if self.usage:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1575 return self.formatter.format_usage(
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1576 self.expand_prog_name(self.usage))
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1577 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1578 return ""
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1579
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1580 def print_usage(self, file=None):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1581 """print_usage(file : file = stdout)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1582
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1583 Print the usage message for the current program (self.usage) to
51776
d06a3ebf306f Merged revisions 69846 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 49908
diff changeset
1584 'file' (default stdout). Any occurrence of the string "%prog" in
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1585 self.usage is replaced with the name of the current program
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1586 (basename of sys.argv[0]). Does nothing if self.usage is empty
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1587 or not defined.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1588 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1589 if self.usage:
40775
4cdf21a0dbbc Fix most trivially-findable print statements.
Guido van Rossum <guido@python.org>
parents: 40644
diff changeset
1590 print(self.get_usage(), file=file)
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1591
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1592 def get_version(self):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1593 if self.version:
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1594 return self.expand_prog_name(self.version)
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1595 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1596 return ""
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1597
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1598 def print_version(self, file=None):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1599 """print_version(file : file = stdout)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1600
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1601 Print the version message for this program (self.version) to
51776
d06a3ebf306f Merged revisions 69846 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 49908
diff changeset
1602 'file' (default stdout). As with print_usage(), any occurrence
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1603 of "%prog" in self.version is replaced by the current program's
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1604 name. Does nothing if self.version is empty or undefined.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1605 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1606 if self.version:
40775
4cdf21a0dbbc Fix most trivially-findable print statements.
Guido van Rossum <guido@python.org>
parents: 40644
diff changeset
1607 print(self.get_version(), file=file)
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1608
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1609 def format_option_help(self, formatter=None):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1610 if formatter is None:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1611 formatter = self.formatter
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1612 formatter.store_option_strings(self)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1613 result = []
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
1614 result.append(formatter.format_heading(_("Options")))
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1615 formatter.indent()
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1616 if self.option_list:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1617 result.append(OptionContainer.format_option_help(self, formatter))
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1618 result.append("\n")
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1619 for group in self.option_groups:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1620 result.append(group.format_help(formatter))
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1621 result.append("\n")
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1622 formatter.dedent()
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1623 # Drop the last "\n", or the header if no options or option groups:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1624 return "".join(result[:-1])
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1625
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
1626 def format_epilog(self, formatter):
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
1627 return formatter.format_epilog(self.epilog)
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
1628
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1629 def format_help(self, formatter=None):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1630 if formatter is None:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1631 formatter = self.formatter
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1632 result = []
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1633 if self.usage:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1634 result.append(self.get_usage() + "\n")
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1635 if self.description:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1636 result.append(self.format_description(formatter) + "\n")
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1637 result.append(self.format_option_help(formatter))
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
1638 result.append(self.format_epilog(formatter))
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1639 return "".join(result)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1640
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1641 def print_help(self, file=None):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1642 """print_help(file : file = stdout)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1643
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1644 Print an extended help message, listing all options and any
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1645 help text provided with them, to 'file' (default stdout).
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1646 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1647 if file is None:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1648 file = sys.stdout
42501
f6069f9dd52d SF patch# 1770008 by Christian Heimes (plus some extras).
Guido van Rossum <guido@python.org>
parents: 42142
diff changeset
1649 file.write(self.format_help())
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1650
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1651 # class OptionParser
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1652
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1653
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1654 def _match_abbrev(s, wordmap):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1655 """_match_abbrev(s : string, wordmap : {string : Option}) -> string
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1656
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1657 Return the string key in 'wordmap' for which 's' is an unambiguous
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1658 abbreviation. If 's' is found to be ambiguous or doesn't match any of
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1659 'words', raise BadOptionError.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1660 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1661 # Is there an exact match?
39575
63237fcefd99 Get rid of dict.has_key(). Boy this has a lot of repercussions!
Guido van Rossum <guido@python.org>
parents: 39442
diff changeset
1662 if s in wordmap:
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1663 return s
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1664 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1665 # Isolate all words with s as a prefix.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1666 possibilities = [word for word in wordmap.keys()
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1667 if word.startswith(s)]
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1668 # No exact match, so there had better be just one possibility.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1669 if len(possibilities) == 1:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1670 return possibilities[0]
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1671 elif not possibilities:
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
1672 raise BadOptionError(s)
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1673 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1674 # More than one possible completion: ambiguous prefix.
38669
19fd6141940d Partially merge trunk into p3yk. The removal of Mac/Tools is confusing svn
Thomas Wouters <thomas@python.org>
parents: 38453
diff changeset
1675 possibilities.sort()
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 34551
diff changeset
1676 raise AmbiguousOptionError(s, possibilities)
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1677
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1678
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1679 # Some day, there might be many Option classes. As of Optik 1.3, the
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1680 # preferred way to instantiate Options is indirectly, via make_option(),
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1681 # which will become a factory function when there are many Option
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1682 # classes.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1683 make_option = Option