Hi Peter. Sadly (for me), you're right... then the only way to use doctest to work both in 2.6 and 3.1 (without modifications between them) is something like this:
#!/usr/bin/env python ''' >>> str(concat('hello','world')) 'hello world' ''' from __future__ import unicode_literals def concat( first, second ): return first + ' ' + second if __name__ == "__main__": import doctest doctest.testmod() Is there any way to avoid using str(...) to protect the string? M. --------------------------------------- #!/usr/bin/env python ''' >>> concat('hello','world') 'hello world' ''' from __future__ import unicode_literals def concat( first, second ): return first + ' ' + second if __name__ == "__main__": import doctest doctest.testmod() On 29 Gen, 16:50, Peter Otten <__pete...@web.de> wrote: > Mattsteel wrote: > > Hello all. > > I'm using Python 2.6.4 and Python 3.1.1. > > My wish is to code in a 3.1-compliant way using 2.6, so I'm importing > > the __future__ module. > > I've found a funny thing comparing the two folliwing snippets that > > differ for one line only, that is the position of __future__ import > > (before or after the doc string). > > > Well, I understand the subtle difference but still I wander what > > really happen behind the scenes. > > Are you sure? The second script has no module docstring, just a string > literal somewhere in the module, and therefore no tests. You can see that by > running it with the verbose option -v. Also, > > from __future__ import unicode_literals > > doesn't affect the repr() of a unicode instance. But the interactive > interpreter invokes repr() on the result before it is printed: > > >>> from __future__ import unicode_literals > >>> "yadda" > > u'yadda' > > > Comments are welcome. > > > --------------------------------------- > > #!/usr/bin/env python > > ''' > > >>> concat('hello','world') > > 'hello world' > > ''' > > from __future__ import unicode_literals > > def concat( first, second ): > > return first + ' ' + second > > if __name__ == "__main__": > > import doctest > > doctest.testmod() > > --------------------------------------- > > #!/usr/bin/env python > > from __future__ import unicode_literals > > ''' > > >>> concat('hello','world') > > 'hello world' > > ''' > > def concat( first, second ): > > return first + ' ' + second > > if __name__ == "__main__": > > import doctest > > doctest.testmod() > > --------------------------------------- > > > The first way shows the following failure: > > > --------------------------------------- > > Failed example: > > concat('hello','world') > > Expected: > > 'hello world' > > Got: > > u'hello world' > > > --------------------------------------- > > > Regards. > > > Matt. > > -- http://mail.python.org/mailman/listinfo/python-list