Index: third_party/logilab/common/optik_ext.py |
diff --git a/third_party/logilab/common/optik_ext.py b/third_party/logilab/common/optik_ext.py |
index 1fd2a7f8cc02eeb037671a9d4a59f8daf38de5a2..39bbe18d1598522d33c4ba8f54180ea74a260483 100644 |
--- a/third_party/logilab/common/optik_ext.py |
+++ b/third_party/logilab/common/optik_ext.py |
@@ -46,8 +46,6 @@ It also defines three new types for optik/optparse command line parser : |
argument of this type will be converted to a float value in bytes |
according to byte units (b, kb, mb, gb, tb) |
""" |
-from __future__ import print_function |
- |
__docformat__ = "restructuredtext en" |
import re |
@@ -67,9 +65,10 @@ try: |
except ImportError: |
HAS_MX_DATETIME = False |
-from logilab.common.textutils import splitstrip, TIME_UNITS, BYTE_UNITS, \ |
- apply_units |
+OPTPARSE_FORMAT_DEFAULT = sys.version_info >= (2, 4) |
+ |
+from logilab.common.textutils import splitstrip |
def check_regexp(option, opt, value): |
"""check a regexp value by trying to compile it |
@@ -169,15 +168,18 @@ def check_color(option, opt, value): |
raise OptionValueError(msg % (opt, value)) |
def check_time(option, opt, value): |
+ from logilab.common.textutils import TIME_UNITS, apply_units |
if isinstance(value, (int, long, float)): |
return value |
return apply_units(value, TIME_UNITS) |
def check_bytes(option, opt, value): |
+ from logilab.common.textutils import BYTE_UNITS, apply_units |
if hasattr(value, '__int__'): |
return value |
return apply_units(value, BYTE_UNITS) |
+import types |
class Option(BaseOption): |
"""override optik.Option to add some new option types |
@@ -212,7 +214,7 @@ class Option(BaseOption): |
if self.choices is None: |
raise OptionError( |
"must supply a list of choices for type 'choice'", self) |
- elif not isinstance(self.choices, (tuple, list)): |
+ elif type(self.choices) not in (types.TupleType, types.ListType): |
raise OptionError( |
"choices must be a list of strings ('%s' supplied)" |
% str(type(self.choices)).split("'")[1], self) |
@@ -225,7 +227,10 @@ class Option(BaseOption): |
def process(self, opt, value, values, parser): |
# First, convert the value(s) to the right type. Howl if any |
# value(s) are bogus. |
- value = self.convert_value(opt, value) |
+ try: |
+ value = self.convert_value(opt, value) |
+ except AttributeError: # py < 2.4 |
+ value = self.check_value(opt, value) |
if self.type == 'named': |
existant = getattr(values, self.dest) |
if existant: |
@@ -383,9 +388,9 @@ def generate_manpage(optparser, pkginfo, section=1, stream=sys.stdout, level=0): |
formatter = ManHelpFormatter() |
formatter.output_level = level |
formatter.parser = optparser |
- print(formatter.format_head(optparser, pkginfo, section), file=stream) |
- print(optparser.format_option_help(formatter), file=stream) |
- print(formatter.format_tail(pkginfo), file=stream) |
+ print >> stream, formatter.format_head(optparser, pkginfo, section) |
+ print >> stream, optparser.format_option_help(formatter) |
+ print >> stream, formatter.format_tail(pkginfo) |
__all__ = ('OptionParser', 'Option', 'OptionGroup', 'OptionValueError', |