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

Reply via email to