fix bug 570392, command help traceback

As a consequence of using doc=_('some message') the _()
method was returning a Gettext instance, thus when optparse
was handed the help text it received a Gettext instance instead
of a basestring. optparse tried to operate on the Gettext instance
as if it were a basestring and since it wasn't threw an exception.
The fix is to promote (e.g. cast) the option.doc to unicode.
If the option.doc was a str it becomes unicode, if it was unicode
nothing happens, if it was Gettext (or any other object implementing
the __unicode__() method) object is converted to unicode via the
objects rules.

By the way, while debugging this I discovered strings which were not
localized, sometimes option.doc would be a str and sometimes a Gettext
object. In a subsequent patch I'll fix all those unlocalized doc
strings, but I don't want to bury this fix along with a load of
string fixes.
This commit is contained in:
John Dennis 2010-03-04 18:41:51 -05:00 committed by Rob Crittenden
parent 1289285d49
commit 789cba4378

View File

@ -828,7 +828,7 @@ class cli(backend.Executioner):
for option in cmd.options():
kw = dict(
dest=option.name,
help=option.doc,
help=unicode(option.doc),
)
if option.password and self.env.interactive:
kw['action'] = 'store_true'