doctests compatibility for python 2 & python 3

Robin Becker robin at reportlab.com
Fri Jan 17 07:14:51 EST 2014


On 17/01/2014 11:30, Chris Angelico wrote:
> On Fri, Jan 17, 2014 at 10:24 PM, Chris Angelico <rosuav at gmail.com> wrote:
>> Do your test strings contain any non-ASCII characters? If not, you
>> might be able to do this:
>>
>> def func(a):
>>      """
>>      >>> str(func(u'aaa'))
>>      'aaa'
>>      """
>>      return a
>
> Actually, probably better than that:
>
> def func(a):
>      """
>      >>> text(func(u'aaa'))
>      'aaa'
>      """
>      return a
>
> try:
>      class text(unicode): # Will throw NameError in Py3
>          def __repr__(self):
>              return unicode.__repr__(self)[1:]
> except NameError:
>      # Python 3 doesn't need this wrapper.
>      text = str
>
> Little helper class that does what I don't think monkey-patching will
> do. I've tested this and it appears to work in both 2.7.4 and 3.4.0b2,
> but that doesn't necessarily mean that the repr of any given Unicode
> string will be exactly the same on both versions. It's likely to be
> better than depending on the strings being ASCII, though.
>
> ChrisA
>

I tried this approach with a few more complicated outcomes and they fail in 
python2 or 3 depending on how I try to render the result in the doctest.
-- 
Robin Becker




More information about the Python-list mailing list