Problem with mixing doctest with gettext _()

Peter Otten __peter__ at web.de
Fri Feb 27 11:44:24 EST 2004


Pierre Rouleau wrote:

> Skip Montanaro wrote:
> 
>> If you really want a dummy _() you can also stuff your version into
>> builtins:
>> 
>>     >>> import __builtin__
>>     >>> def foo(s): return s
>>     ...
>>     >>> __builtin__._ = foo
>>     >>> _
>>     <function foo at 0x1d6670>
>>     >>> _("hi")
>>     'hi'
> 
> I tried that, but it only works for the first call...

Setting __builtin__._ to the result of the last calculation is a side effect
of sys.displayhook. Therefore you need to change that too:

Python 2.3.3 (#1, Jan  3 2004, 13:57:08)
[GCC 3.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> def mydisplayhook(a):
...     if a is not None: sys.stdout.write("%r\n" % a)
...
>>> def foo(s): return s
...
>>> sys.displayhook = mydisplayhook
>>> import __builtin__
>>> __builtin__._ = foo
>>> _("hi")
'hi'
>>> _("hello")
'hello'
>>>

Peter



More information about the Python-list mailing list