[Python-Dev] Tag trackbacks with version (was Re: readd u'' literal support in 3.3?) (original) (raw)

PJ Eby pje at telecommunity.com
Sun Dec 11 21:12:52 CET 2011


On Sat, Dec 10, 2011 at 5:30 PM, Terry Reedy <tjreedy at udel.edu> wrote:

Is doctest really insisting that the whole line Traceback (most recent call last): exactly match, with nothing added? It really should not, as that is not part of the language spec. This seems like the tail wagging the dog.

It's a regular expression match, actually. The standard matcher ignores everything between the Traceback line (matched by a regex) and the first unindented line that follows in the doctest. However, if you explicitly try to match a traceback with the ellipsis matcher, intending to observe whether certain specific lines are printed, then you wouldn't be using doctest's built-in matcher, and that was the case I was concerned about.

However, as it turns out, I was confused about when this latter case occurs: in order to do it, you have to actually intentionally print a traceback (e.g. via traceback.format_exception() and friends), rather than allowing the exception to propagate normally. This doesn't happen nearly as often in my doctests as I thought it did, but if format_exception() changes it'll still affect some people.

The other piece I was pointing out was that if you change the message without changing the doctest regex, then pasting an interpreter transcript into a doctest will no longer work, because doctest will think it's trying to match non-error output. So that has to be changed when the exception format changes.

So, no actual objection here; just saying that if you don't change that regex, people who create new doctests with tracebacks won't be able to get them to work without deleting the version info from their copy-pasted tracebacks. I was also concerned about a situation that, while it exists, does not occur anywhere near as frequently as I thought it would in my own tests, even for things that seriously abuse Python internals and likely can't be ported to Python 3 anyway. ;-) -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-dev/attachments/20111211/bbb639d6/attachment.html>



More information about the Python-Dev mailing list