annotate Lib/optparse.py @ 39042:c02fa187e0f4 legacy-trunk

Part of SF patch #1484695. This removes dead code. The chksum was already verified in .frombuf() on the lines above. If there was a problem an exception is raised, so there was no way this condition could have been true.
author Neal Norwitz <nnorwitz@gmail.com>
date Mon, 10 Jul 2006 00:23:17 +0000
parents b50ab288ae27
children a3fda843234e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1 """optparse - a powerful, extensible, and easy-to-use option parser.
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
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
5 Originally distributed as Optik; see http://optik.sourceforge.net/ .
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
6
29021
2f652a59ebb0 Update to Optik 1.4.1+: adds __all__ (Optik SF bug #728563).
Greg Ward <gward@python.net>
parents: 28774
diff changeset
7 If you have problems with this module, please do not file bugs,
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
8 patches, or feature requests with Python; instead, use Optik's
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
9 SourceForge project page:
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
10 http://sourceforge.net/projects/optik
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
11
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
12 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
13 (http://lists.sourceforge.net/lists/listinfo/optik-users).
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
14 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
15
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
16 # Python developers: please do not make changes to this file, since
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
17 # it is automatically generated from the Optik source code.
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
18
38746
fc4afee40c2b Bug #1498146: fix optparse to handle Unicode strings in option help,
Greg Ward <gward@python.net>
parents: 38464
diff changeset
19 __version__ = "1.5.1+"
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
20
29021
2f652a59ebb0 Update to Optik 1.4.1+: adds __all__ (Optik SF bug #728563).
Greg Ward <gward@python.net>
parents: 28774
diff changeset
21 __all__ = ['Option',
2f652a59ebb0 Update to Optik 1.4.1+: adds __all__ (Optik SF bug #728563).
Greg Ward <gward@python.net>
parents: 28774
diff changeset
22 'SUPPRESS_HELP',
2f652a59ebb0 Update to Optik 1.4.1+: adds __all__ (Optik SF bug #728563).
Greg Ward <gward@python.net>
parents: 28774
diff changeset
23 'SUPPRESS_USAGE',
2f652a59ebb0 Update to Optik 1.4.1+: adds __all__ (Optik SF bug #728563).
Greg Ward <gward@python.net>
parents: 28774
diff changeset
24 'Values',
2f652a59ebb0 Update to Optik 1.4.1+: adds __all__ (Optik SF bug #728563).
Greg Ward <gward@python.net>
parents: 28774
diff changeset
25 'OptionContainer',
2f652a59ebb0 Update to Optik 1.4.1+: adds __all__ (Optik SF bug #728563).
Greg Ward <gward@python.net>
parents: 28774
diff changeset
26 'OptionGroup',
2f652a59ebb0 Update to Optik 1.4.1+: adds __all__ (Optik SF bug #728563).
Greg Ward <gward@python.net>
parents: 28774
diff changeset
27 'OptionParser',
2f652a59ebb0 Update to Optik 1.4.1+: adds __all__ (Optik SF bug #728563).
Greg Ward <gward@python.net>
parents: 28774
diff changeset
28 'HelpFormatter',
2f652a59ebb0 Update to Optik 1.4.1+: adds __all__ (Optik SF bug #728563).
Greg Ward <gward@python.net>
parents: 28774
diff changeset
29 'IndentedHelpFormatter',
2f652a59ebb0 Update to Optik 1.4.1+: adds __all__ (Optik SF bug #728563).
Greg Ward <gward@python.net>
parents: 28774
diff changeset
30 'TitledHelpFormatter',
2f652a59ebb0 Update to Optik 1.4.1+: adds __all__ (Optik SF bug #728563).
Greg Ward <gward@python.net>
parents: 28774
diff changeset
31 'OptParseError',
2f652a59ebb0 Update to Optik 1.4.1+: adds __all__ (Optik SF bug #728563).
Greg Ward <gward@python.net>
parents: 28774
diff changeset
32 'OptionError',
2f652a59ebb0 Update to Optik 1.4.1+: adds __all__ (Optik SF bug #728563).
Greg Ward <gward@python.net>
parents: 28774
diff changeset
33 'OptionConflictError',
2f652a59ebb0 Update to Optik 1.4.1+: adds __all__ (Optik SF bug #728563).
Greg Ward <gward@python.net>
parents: 28774
diff changeset
34 'OptionValueError',
2f652a59ebb0 Update to Optik 1.4.1+: adds __all__ (Optik SF bug #728563).
Greg Ward <gward@python.net>
parents: 28774
diff changeset
35 '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
36
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
37 __copyright__ = """
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
38 Copyright (c) 2001-2006 Gregory P. Ward. All rights reserved.
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
39 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
40
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
41 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
42 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
43 met:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
44
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
45 * 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
46 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
47
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
48 * 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
49 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
50 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
51
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
52 * 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
53 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
54 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
55
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
56 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
57 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
58 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
59 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
60 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
61 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
62 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
63 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
64 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
65 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
66 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
67 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
68
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
69 import sys, os
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
70 import types
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
71 import textwrap
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
72
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
73 def _repr(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
74 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
75
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
76
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
77 # This file was generated from:
38746
fc4afee40c2b Bug #1498146: fix optparse to handle Unicode strings in option help,
Greg Ward <gward@python.net>
parents: 38464
diff changeset
78 # Id: option_parser.py 522 2006-06-11 16:22:03Z gward
fc4afee40c2b Bug #1498146: fix optparse to handle Unicode strings in option help,
Greg Ward <gward@python.net>
parents: 38464
diff changeset
79 # Id: option.py 522 2006-06-11 16:22:03Z gward
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
80 # Id: help.py 509 2006-04-20 00:58:24Z gward
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
81 # Id: errors.py 509 2006-04-20 00:58:24Z gward
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
82
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
83 try:
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
84 from gettext import gettext
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
85 except ImportError:
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
86 def gettext(message):
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
87 return message
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
88 _ = gettext
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
89
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
90
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
91 class OptParseError (Exception):
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
92 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
93 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
94
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
95 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
96 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
97
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
98
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
99 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
100 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
101 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
102 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
103 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
104
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
105 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
106 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
107 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
108
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
109 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
110 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
111 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
112 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
113 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
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 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
116 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
117 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
118 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
119
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
120 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
121 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
122 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
123 line.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
124 """
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 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
127 """
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
128 Raised if an invalid option is seen on the command line.
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
129 """
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
130 def __init__(self, opt_str):
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
131 self.opt_str = opt_str
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
132
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
133 def __str__(self):
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
134 return _("no such option: %s") % self.opt_str
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
135
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
136 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
137 """
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
138 Raised if an ambiguous option is seen on the command line.
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
139 """
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
140 def __init__(self, opt_str, possibilities):
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
141 BadOptionError.__init__(self, opt_str)
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
142 self.possibilities = possibilities
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
143
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
144 def __str__(self):
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
145 return (_("ambiguous option: %s (%s?)")
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
146 % (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
147
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
148
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
149 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
150
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
151 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
152 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
153 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
154 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
155
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
156 Instance attributes:
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
157 parser : OptionParser
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
158 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
159 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
160 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
161 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
162 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
163 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
164 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
165 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
166 width : int
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
167 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
168 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
169 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
170 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
171 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
172 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
173 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
174 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
175 default_tag : str
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
176 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
177 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
178 option_strings : { Option : str }
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
179 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
180 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
181 "-fFILE, --file=FILE"
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
182 _short_opt_fmt : str
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
183 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
184 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
185 "%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
186 Optik supports.
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
187 _long_opt_fmt : str
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
188 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
189 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
190 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
191
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
192 NO_DEFAULT_VALUE = "none"
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
193
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
194 def __init__(self,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
195 indent_increment,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
196 max_help_position,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
197 width,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
198 short_first):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
199 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
200 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
201 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
202 if width is None:
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
203 try:
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
204 width = int(os.environ['COLUMNS'])
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
205 except (KeyError, ValueError):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
206 width = 80
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
207 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
208 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
209 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
210 self.level = 0
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
211 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
212 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
213 self.default_tag = "%default"
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
214 self.option_strings = {}
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
215 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
216 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
217
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
218 def set_parser(self, parser):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
219 self.parser = parser
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
220
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
221 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
222 if delim not in ("", " "):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
223 raise ValueError(
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
224 "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
225 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
226
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
227 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
228 if delim not in ("=", " "):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
229 raise ValueError(
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
230 "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
231 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
232
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
233 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
234 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
235 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
236
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
237 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
238 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
239 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
240 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
241
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
242 def format_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
243 raise NotImplementedError, "subclasses must implement"
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
244
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
245 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
246 raise NotImplementedError, "subclasses must implement"
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
247
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
248 def _format_text(self, text):
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
249 """
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
250 Format a paragraph of free-form text for inclusion in the
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
251 help output at the current indentation level.
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
252 """
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
253 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
254 indent = " "*self.current_indent
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
255 return textwrap.fill(text,
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
256 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
257 initial_indent=indent,
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
258 subsequent_indent=indent)
38748
b50ab288ae27 Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 38746
diff changeset
259
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
260 def format_description(self, description):
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
261 if description:
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
262 return self._format_text(description) + "\n"
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
263 else:
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
264 return ""
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
265
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
266 def format_epilog(self, epilog):
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
267 if epilog:
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
268 return "\n" + self._format_text(epilog) + "\n"
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
269 else:
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
270 return ""
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
271
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
272
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
273 def expand_default(self, option):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
274 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
275 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
276
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
277 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
278 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
279 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
280
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
281 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
282
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
283 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
284 # 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
285 # * 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
286 # 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
287 # * 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
288 # 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
289 #
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
290 # 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
291 # -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
292 #
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
293 # 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
294 # 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
295 # 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
296 # -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
297 # 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
298 result = []
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
299 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
300 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
301 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
302 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
303 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
304 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
305 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
306 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
307 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
308 if option.help:
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
309 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
310 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
311 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
312 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
313 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
314 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
315 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
316 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
317
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
318 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
319 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
320 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
321 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
322 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
323 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
324 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
325 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
326 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
327 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
328 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
329 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
330 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
331 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
332 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
333 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
334 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
335
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
336 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
337 """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
338 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
339 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
340 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
341 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
342 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
343 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
344 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
345 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
346 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
347
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
348 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
349 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
350 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
351 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
352
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
353 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
354
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
355 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
356 """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
357 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
358
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
359 def __init__(self,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
360 indent_increment=2,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
361 max_help_position=24,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
362 width=None,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
363 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
364 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
365 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
366
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
367 def format_usage(self, usage):
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
368 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
369
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
370 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
371 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
372
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
373
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
374 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
375 """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
376 """
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 __init__(self,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
379 indent_increment=0,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
380 max_help_position=24,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
381 width=None,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
382 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
383 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
384 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
385
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
386 def format_usage(self, usage):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
387 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
388
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
389 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
390 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
391
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
392
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
393 def _parse_num(val, type):
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
394 if val[:2].lower() == "0x": # hexadecimal
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
395 radix = 16
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
396 elif val[:2].lower() == "0b": # binary
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
397 radix = 2
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
398 val = val[2:] or "0" # have to remove "0b" prefix
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
399 elif val[:1] == "0": # octal
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
400 radix = 8
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
401 else: # decimal
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
402 radix = 10
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
403
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
404 return type(val, radix)
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
405
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
406 def _parse_int(val):
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
407 return _parse_num(val, int)
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
408
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
409 def _parse_long(val):
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
410 return _parse_num(val, long)
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
411
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
412 _builtin_cvt = { "int" : (_parse_int, _("integer")),
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
413 "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
414 "float" : (float, _("floating-point")),
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
415 "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
416
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
417 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
418 (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
419 try:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
420 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
421 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
422 raise OptionValueError(
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
423 _("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
424
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
425 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
426 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
427 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
428 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
429 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
430 raise OptionValueError(
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
431 _("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
432 % (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
433
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
434 # 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
435 # 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
436 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
437
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
438
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
439 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
440 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
441 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
442 _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
443 _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
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 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
446 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
447 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
448 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
449 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
450 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
451 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
452 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
453 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
454 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
455 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
456 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
457 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
458
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
459 # 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
460 # 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
461 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
462 'type',
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
463 'dest',
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
464 'default',
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
465 'nargs',
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
466 'const',
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
467 'choices',
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
468 'callback',
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
469 '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
470 '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
471 'help',
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
472 'metavar']
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
473
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
474 # 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
475 # 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
476 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
477 "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
478 "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
479 "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
480 "append",
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
481 "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
482 "count",
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
483 "callback",
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
484 "help",
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
485 "version")
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
486
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
487 # 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
488 # 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
489 # 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
490 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
491 "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
492 "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
493 "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
494 "append",
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
495 "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
496 "count")
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 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
499 # 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
500 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
501 "append",
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
502 "callback")
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
503
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33772
diff changeset
504 # 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
505 # 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
506 ALWAYS_TYPED_ACTIONS = ("store",
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33772
diff changeset
507 "append")
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33772
diff changeset
508
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
509 # The set of actions which take a 'const' attribute.
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
510 CONST_ACTIONS = ("store_const",
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
511 "append_const")
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
512
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
513 # 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
514 # 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
515 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
516
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
517 # 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
518 # 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
519 #
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
520 # 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
521 # 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
522 # where
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
523 # 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
524 # 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
525 # (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
526 # 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
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 # 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
529 # 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
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 # 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
532 # 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
533 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
534 "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
535 "float" : check_builtin,
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
536 "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
537 "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
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
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
540
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
541 # 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
542 # 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
543 # 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
544 # 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
545 # 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
546 # 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
547 # 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
548 # 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
549 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
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 # -- 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
553
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
554 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
555 # 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
556 # 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
557 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
558 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
559 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
560 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
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 # 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
563 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
564
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
565 # 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
566 # 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
567 # 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
568 # 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
569 # 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
570 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
571 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
572
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
573 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
574 # 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
575 # 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
576 # could be None.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
577 opts = filter(None, opts)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
578 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
579 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
580 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
581
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
582 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
583 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
584 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
585 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
586 "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
587 "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
588 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
589 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
590 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
591 "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
592 "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
593 self)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
594 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
595 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
596 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
597 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
598 "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
599 "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
600 self)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
601 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
602
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
603 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
604 for attr in self.ATTRS:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
605 if attrs.has_key(attr):
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
606 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
607 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
608 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
609 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
610 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
611 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
612 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
613 if attrs:
38464
e989ee5d404a ("Forward-port" of r46506)
Armin Rigo <arigo@tunes.org>
parents: 37943
diff changeset
614 attrs = attrs.keys()
e989ee5d404a ("Forward-port" of r46506)
Armin Rigo <arigo@tunes.org>
parents: 37943
diff changeset
615 attrs.sort()
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
616 raise OptionError(
38464
e989ee5d404a ("Forward-port" of r46506)
Armin Rigo <arigo@tunes.org>
parents: 37943
diff changeset
617 "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
618 self)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
619
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
620
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
621 # -- 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
622
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
623 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
624 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
625 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
626 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
627 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
628
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
629 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
630 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
631 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
632 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
633 # 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
634 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
635 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
636 # 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
637 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
638 else:
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
639 # Allow type objects or builtin type conversion functions
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
640 # (int, str, etc.) as an alternative to their names. (The
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
641 # complicated check of __builtin__ is only necessary for
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
642 # Python 2.1 and earlier, and is short-circuited by the
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
643 # first check on modern Pythons.)
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
644 import __builtin__
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
645 if ( type(self.type) is types.TypeType or
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
646 (hasattr(self.type, "__name__") and
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
647 getattr(__builtin__, 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
648 self.type = self.type.__name__
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
649
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
650 if self.type == "str":
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
651 self.type = "string"
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
652
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
653 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
654 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
655 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
656 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
657 "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
658
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
659 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
660 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
661 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
662 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
663 "must supply a list of choices for type 'choice'", self)
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
664 elif type(self.choices) not in (types.TupleType, types.ListType):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
665 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
666 "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
667 % 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
668 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
669 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
670 "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
671
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
672 def _check_dest(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
673 # 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
674 # 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
675 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
676 self.type is not None)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
677 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
678
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
679 # 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
680 # 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
681 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
682 # 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
683 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
684 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
685 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
686
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
687 def _check_const(self):
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
688 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
689 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
690 "'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
691 self)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
692
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
693 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
694 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
695 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
696 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
697 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
698 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
699 "'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
700 self)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
701
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
702 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
703 if self.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
704 if not callable(self.callback):
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
705 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
706 "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
707 if (self.callback_args is not None and
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
708 type(self.callback_args) is not types.TupleType):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
709 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
710 "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
711 % 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
712 if (self.callback_kwargs is not None and
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
713 type(self.callback_kwargs) is not types.DictType):
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
714 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
715 "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
716 % 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
717 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
718 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
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 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
721 % 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
722 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
723 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
724 "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
725 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
726 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
727 "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
728
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
729
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
730 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
731 _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
732 _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
733 _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
734 _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
735 _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
736 _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
737
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 # -- 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
740
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
741 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
742 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
743
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
744 __repr__ = _repr
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
745
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
746 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
747 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
748
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
749 def get_opt_string(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
750 if self._long_opts:
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
751 return self._long_opts[0]
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
752 else:
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
753 return self._short_opts[0]
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
754
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
755
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
756 # -- 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
757
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
758 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
759 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
760 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
761 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
762 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
763 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
764
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
765 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
766 if value is not None:
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
767 if self.nargs == 1:
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
768 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
769 else:
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
770 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
771
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
772 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
773
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
774 # 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
775 # value(s) are bogus.
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
776 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
777
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
778 # 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
779 # 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
780 # 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
781 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
782 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
783
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
784 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
785 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
786 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
787 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
788 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
789 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
790 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
791 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
792 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
793 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
794 values.ensure_value(dest, []).append(value)
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
795 elif action == "append_const":
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
796 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
797 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
798 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
799 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
800 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
801 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
802 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
803 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
804 parser.print_help()
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33772
diff changeset
805 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
806 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
807 parser.print_version()
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33772
diff changeset
808 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
809 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
810 raise RuntimeError, "unknown 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
811
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
812 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
813
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
814 # 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
815
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
816
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
817 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
818 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
819
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
820 # For compatibility with Python 2.2
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
821 try:
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
822 True, False
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
823 except NameError:
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
824 (True, False) = (1, 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
825
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
826 def isbasestring(x):
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
827 return isinstance(x, types.StringType) or isinstance(x, types.UnicodeType)
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
828
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
829 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
830
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
831 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
832 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
833 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
834 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
835
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
836 def __str__(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
837 return str(self.__dict__)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
838
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
839 __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
840
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
841 def __cmp__(self, other):
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
842 if isinstance(other, Values):
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
843 return cmp(self.__dict__, other.__dict__)
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
844 elif isinstance(other, types.DictType):
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
845 return cmp(self.__dict__, other)
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
846 else:
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
847 return -1
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
848
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
849 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
850 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
851 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
852 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
853 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
854 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
855 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
856 for attr in dir(self):
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
857 if dict.has_key(attr):
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
858 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
859 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
860 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
861
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
862 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
863 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
864 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
865 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
866 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
867 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
868 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
869
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
870 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
871 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
872 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
873 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
874 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
875 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
876 raise ValueError, "invalid update mode: %r" % mode
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
877
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
878 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
879 __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
880 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
881 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
882
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
883 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
884 vars = {}
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
885 execfile(filename, vars)
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
886 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
887
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
888 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
889 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
890 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
891 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
892
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 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
895
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 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
898
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
899 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
900 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
901 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
902 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
903
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
904 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
905 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
906 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
907 _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
908 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
909 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
910 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
911 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
912 _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
913 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
914 "--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
915 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
916 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
917 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
918 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
919 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
920
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
921 [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
922 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
923
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
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
926 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
927 # 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
928 # 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
929 # 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
930 # 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
931 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
932
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
933 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
934 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
935 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
936
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
937 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
938 # 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
939 # 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
940 # 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
941 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
942 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
943 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
944
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
945
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
946 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
947 # 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
948 # 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
949 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
950 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
951 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
952
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
953 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
954 if handler not in ("error", "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
955 raise ValueError, "invalid conflict_resolution value %r" % handler
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
956 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
957
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
958 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
959 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
960
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
961 def get_description(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
962 return self.description
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
963
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
964
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
965 def destroy(self):
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
966 """see OptionParser.destroy()."""
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
967 del self._short_opt
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
968 del self._long_opt
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
969 del self.defaults
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
970
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
971
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
972 # -- 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
973
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
974 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
975 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
976 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
977 if self._short_opt.has_key(opt):
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
978 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
979 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
980 if self._long_opt.has_key(opt):
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
981 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
982
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
983 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
984 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
985 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
986 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
987 "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
988 % ", ".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
989 option)
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33772
diff changeset
990 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
991 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
992 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
993 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
994 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
995 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
996 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
997 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
998 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
999 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
1000
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1001 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
1002 """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
1003 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
1004 """
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
1005 if type(args[0]) is types.StringType:
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1006 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
1007 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
1008 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
1009 if not isinstance(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
1010 raise TypeError, "not an Option instance: %r" % option
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1011 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1012 raise TypeError, "invalid arguments"
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1013
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1014 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
1015
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1016 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
1017 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
1018 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
1019 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
1020 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
1021 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
1022
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1023 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
1024 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
1025 self.defaults[option.dest] = option.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 elif not self.defaults.has_key(option.dest):
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1027 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
1028
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1029 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
1030
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1031 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
1032 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
1033 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
1034
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1035 # -- 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
1036
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1037 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
1038 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
1039 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
1040
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1041 def has_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
1042 return (self._short_opt.has_key(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
1043 self._long_opt.has_key(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
1044
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1045 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
1046 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
1047 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
1048 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
1049 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
1050 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
1051
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1052 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
1053 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
1054 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
1055 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
1056 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
1057
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 # -- 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
1060
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1061 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
1062 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
1063 return ""
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1064 result = []
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1065 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
1066 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
1067 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
1068 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
1069
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1070 def format_description(self, formatter):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1071 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
1072
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1073 def format_help(self, formatter):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1074 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
1075 if self.description:
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1076 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
1077 if self.option_list:
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1078 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
1079 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
1080
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 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
1083
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1084 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
1085 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
1086 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
1087 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
1088 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
1089
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1090 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
1091 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
1092 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
1093
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1094 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
1095 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
1096
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
1097 def destroy(self):
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
1098 """see OptionParser.destroy()."""
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
1099 OptionContainer.destroy(self)
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
1100 del self.option_list
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
1101
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1102 # -- 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
1103
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1104 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
1105 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
1106 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
1107 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
1108 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
1109 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
1110
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 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
1113
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 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
1116 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
1117 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
1118 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
1119
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1120 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
1121 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
1122 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
1123 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
1124 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
1125 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
1126 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
1127 os.path.basename(sys.argv[0])).
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
1128 epilog : string
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
1129 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
1130
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1131 option_groups : [OptionGroup]
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1132 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
1133 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
1134 for generating help)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1135
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1136 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
1137 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
1138 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
1139 -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
1140 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
1141 -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
1142 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
1143 -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
1144 -- 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
1145 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
1146 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
1147 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
1148
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1149 process_default_values : bool = true
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1150 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
1151 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
1152 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
1153 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
1154 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
1155 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
1156
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1157 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
1158 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
1159 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
1160 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
1161 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
1162 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
1163 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
1164 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
1165 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
1166 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
1167 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
1168 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
1169
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1170 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
1171 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
1172 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
1173 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
1174
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 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
1178
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1179 def __init__(self,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1180 usage=None,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1181 option_list=None,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1182 option_class=Option,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1183 version=None,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1184 conflict_handler="error",
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1185 description=None,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1186 formatter=None,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1187 add_help_option=True,
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
1188 prog=None,
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
1189 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
1190 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
1191 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
1192 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
1193 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
1194 self.version = version
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1195 self.allow_interspersed_args = True
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1196 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
1197 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
1198 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
1199 self.formatter = formatter
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1200 self.formatter.set_parser(self)
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
1201 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
1202
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1203 # 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
1204 # 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
1205 # 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
1206 # _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
1207 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
1208 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
1209
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1210 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
1211
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
1212
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
1213 def destroy(self):
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
1214 """
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
1215 Declare that you are done with this OptionParser. This cleans up
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
1216 reference cycles so the OptionParser (and all objects referenced by
38748
b50ab288ae27 Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 38746
diff changeset
1217 it) can be garbage-collected promptly. After calling destroy(), the
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
1218 OptionParser is unusable.
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
1219 """
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
1220 OptionContainer.destroy(self)
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
1221 for group in self.option_groups:
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
1222 group.destroy()
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
1223 del self.option_list
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
1224 del self.option_groups
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
1225 del self.formatter
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
1226
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
1227
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1228 # -- 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
1229 # (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
1230
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1231 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
1232 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
1233 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
1234 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
1235
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1236 def _add_help_option(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1237 self.add_option("-h", "--help",
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1238 action="help",
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1239 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
1240
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1241 def _add_version_option(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1242 self.add_option("--version",
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1243 action="version",
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1244 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
1245
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1246 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
1247 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
1248 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
1249 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
1250 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
1251 if self.version:
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1252 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
1253 if add_help:
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1254 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
1255
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1256 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
1257 # 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
1258 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
1259 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
1260 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
1261
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 # -- 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
1264
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1265 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
1266 if usage is None:
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1267 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
1268 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
1269 self.usage = None
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1270 # For backwards compatibility with Optik 1.3 and earlier.
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
1271 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
1272 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
1273 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1274 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
1275
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1276 def enable_interspersed_args(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1277 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
1278
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1279 def disable_interspersed_args(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1280 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
1281
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1282 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
1283 self.process_default_values = process
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1284
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1285 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
1286 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
1287
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1288 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
1289 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
1290
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1291 def _get_all_options(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1292 options = self.option_list[:]
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1293 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
1294 options.extend(group.option_list)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1295 return options
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1296
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1297 def get_default_values(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1298 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
1299 # 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
1300 return Values(self.defaults)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1301
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1302 defaults = self.defaults.copy()
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1303 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
1304 default = defaults.get(option.dest)
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
1305 if isbasestring(default):
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1306 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
1307 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
1308
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1309 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
1310
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1311
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1312 # -- 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
1313
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1314 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
1315 # XXX lots of overlap with OptionContainer.add_option()
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
1316 if type(args[0]) is types.StringType:
26224
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1317 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
1318 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
1319 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
1320 if not isinstance(group, OptionGroup):
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1321 raise TypeError, "not an OptionGroup instance: %r" % group
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1322 if group.parser 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
1323 raise ValueError, "invalid OptionGroup (wrong parser)"
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1324 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1325 raise TypeError, "invalid arguments"
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1326
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1327 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
1328 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
1329
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1330 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
1331 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
1332 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
1333 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
1334 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
1335 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
1336
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 # -- 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
1339
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1340 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
1341 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
1342 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
1343 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1344 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
1345
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1346 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
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 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
1349 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
1350 -> (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
1351
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1352 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
1353 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
1354 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
1355 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
1356 (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
1357 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
1358 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
1359 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1360 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
1361 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
1362 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
1363
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1364 # 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
1365 # 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
1366 # rargs
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1367 # 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
1368 # "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
1369 # largs
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1370 # 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
1371 # 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
1372 # 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
1373 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
1374 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
1375 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
1376
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1377 try:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1378 stop = self._process_args(largs, 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
1379 except (BadOptionError, OptionValueError), err:
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
1380 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
1381
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1382 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
1383 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
1384
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1385 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
1386 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1387 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
1388 -> (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
1389
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1390 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
1391 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
1392 (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
1393 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
1394 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
1395 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1396 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
1397
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1398 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
1399 """_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
1400 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
1401 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
1402
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1403 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
1404 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
1405 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
1406 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
1407 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1408 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
1409 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
1410 # 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
1411 # 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
1412 # 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
1413 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
1414 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
1415 return
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1416 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
1417 # 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
1418 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
1419 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
1420 # 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
1421 # 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
1422 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
1423 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
1424 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
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 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1427 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
1428
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1429 # 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
1430 # [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
1431 # ^
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1432 # (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
1433 #
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1434 # 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
1435 # [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
1436 # 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
1437 #
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1438 # 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
1439 # 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
1440 # 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
1441 #
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1442 # 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
1443 # 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
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 # 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
1446 # *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
1447 # 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
1448
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1449 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
1450 """_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
1451
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1452 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
1453 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
1454 '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
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 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
1457
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1458 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
1459 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
1460
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1461 # 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
1462 # argument.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1463 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
1464 (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
1465 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
1466 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
1467 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1468 opt = arg
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1469 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
1470
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1471 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
1472 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
1473 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
1474 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
1475 if len(rargs) < nargs:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1476 if nargs == 1:
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1477 self.error(_("%s option requires an argument") % 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
1478 else:
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1479 self.error(_("%s option requires %d 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
1480 % (opt, nargs))
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1481 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
1482 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
1483 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1484 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
1485 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
1486
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1487 elif had_explicit_value:
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1488 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
1489
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1490 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1491 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
1492
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1493 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
1494
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1495 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
1496 arg = rargs.pop(0)
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1497 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
1498 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
1499 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
1500 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
1501 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
1502 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
1503
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1504 if not option:
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
1505 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
1506 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
1507 # 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
1508 # 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
1509 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
1510 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
1511 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
1512
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1513 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
1514 if len(rargs) < nargs:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1515 if nargs == 1:
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1516 self.error(_("%s option requires an argument") % 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
1517 else:
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1518 self.error(_("%s option requires %d 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
1519 % (opt, nargs))
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1520 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
1521 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
1522 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1523 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
1524 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
1525
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1526 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
1527 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
1528
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1529 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
1530
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1531 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
1532 break
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1533
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 # -- 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
1536
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1537 def get_prog_name(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1538 if self.prog is None:
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1539 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
1540 else:
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1541 return self.prog
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1542
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1543 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
1544 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
1545
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1546 def get_description(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1547 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
1548
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33772
diff changeset
1549 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
1550 if msg:
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33772
diff changeset
1551 sys.stderr.write(msg)
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33772
diff changeset
1552 sys.exit(status)
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33772
diff changeset
1553
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1554 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
1555 """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
1556
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1557 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
1558 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
1559 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
1560 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1561 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
1562 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
1563
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1564 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
1565 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
1566 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
1567 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
1568 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1569 return ""
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1570
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1571 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
1572 """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
1573
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1574 Print the usage message for the current program (self.usage) to
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1575 'file' (default stdout). Any occurence of the string "%prog" in
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1576 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
1577 (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
1578 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
1579 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1580 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
1581 print >>file, self.get_usage()
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1582
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1583 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
1584 if self.version:
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1585 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
1586 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1587 return ""
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1588
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1589 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
1590 """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
1591
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1592 Print the version message for this program (self.version) to
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1593 'file' (default stdout). As with print_usage(), any occurence
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1594 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
1595 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
1596 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1597 if self.version:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1598 print >>file, self.get_version()
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1599
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1600 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
1601 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
1602 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
1603 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
1604 result = []
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
1605 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
1606 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
1607 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
1608 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
1609 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
1610 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
1611 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
1612 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
1613 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
1614 # 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
1615 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
1616
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
1617 def format_epilog(self, formatter):
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
1618 return formatter.format_epilog(self.epilog)
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
1619
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1620 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
1621 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
1622 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
1623 result = []
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1624 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
1625 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
1626 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
1627 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
1628 result.append(self.format_option_help(formatter))
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
1629 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
1630 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
1631
38746
fc4afee40c2b Bug #1498146: fix optparse to handle Unicode strings in option help,
Greg Ward <gward@python.net>
parents: 38464
diff changeset
1632 # used by test suite
fc4afee40c2b Bug #1498146: fix optparse to handle Unicode strings in option help,
Greg Ward <gward@python.net>
parents: 38464
diff changeset
1633 def _get_encoding(self, file):
fc4afee40c2b Bug #1498146: fix optparse to handle Unicode strings in option help,
Greg Ward <gward@python.net>
parents: 38464
diff changeset
1634 return getattr(file, "encoding", sys.getdefaultencoding())
fc4afee40c2b Bug #1498146: fix optparse to handle Unicode strings in option help,
Greg Ward <gward@python.net>
parents: 38464
diff changeset
1635
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1636 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
1637 """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
1638
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1639 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
1640 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
1641 """
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1642 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
1643 file = sys.stdout
38746
fc4afee40c2b Bug #1498146: fix optparse to handle Unicode strings in option help,
Greg Ward <gward@python.net>
parents: 38464
diff changeset
1644 encoding = self._get_encoding(file)
fc4afee40c2b Bug #1498146: fix optparse to handle Unicode strings in option help,
Greg Ward <gward@python.net>
parents: 38464
diff changeset
1645 file.write(self.format_help().encode(encoding, "replace"))
26224
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 # 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
1648
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1649
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1650 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
1651 """_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
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 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
1654 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
1655 '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
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 # Is there an exact match?
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1658 if wordmap.has_key(s):
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1659 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
1660 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1661 # 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
1662 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
1663 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
1664 # 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
1665 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
1666 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
1667 elif not possibilities:
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
1668 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
1669 else:
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1670 # More than one possible completion: ambiguous prefix.
38464
e989ee5d404a ("Forward-port" of r46506)
Armin Rigo <arigo@tunes.org>
parents: 37943
diff changeset
1671 possibilities.sort()
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 34551
diff changeset
1672 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
1673
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1674
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1675 # 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
1676 # 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
1677 # 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
1678 # classes.
adb93f4e9780 Checking in Greg Ward's Optik, as optparse.py. This is the most
Guido van Rossum <guido@python.org>
parents:
diff changeset
1679 make_option = Option