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 <[email protected]> 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