<div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">I mentioned it earlier, but I think you missed it: I was actually</div>
thinking inside the doctest itself. Your system of global assignment<br>
works as-is if you do it inside the doctests themselves (except for<br>
threads, but who runs doctests in multiple threads? gah!)<br></blockquote><div><br></div><div>My only concern with that is muddying the documentation with long instructions on how to run the doctests.  I'm not saying its not the best way though, because I do think the global assignments are a problem which would need to be resolved.   Another way, though, would be to store compare functions by the module they were defined in and run assign them to the tests accordingly.  This might end up quite complicated though.</div>

<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">I think that a naive user would expect, w.r.t. all these things, that</div>
he copy-pasted a shell session, it would "just work". Where we can fix<br>
doctest to align with such lofty expectations, at least in the common<br>
cases -- such as with dicts and defaultdicts and so on -- is it really<br>
so bad?<br></blockquote><div><br></div><div>This would be convenient, but, to play devil's advocate, how about testing this class?</div><div><br></div><div>class NotADict:</div><div>    def repr(self):</div><div>        return '{'a': 1} </div>

<div><br></div><div>Bearing in mind that the purpose of doctests is documentation rather than testing, maybe we're trying to do too much.  The problem is that {1, 2, 3} doesn't match {2, 1, 3}, not that {1, 2, 3} might match something else that looks like {1, 2, 3}.  My point is that maybe its better to err on the side of bad tests passing rather than good tests failing.  After all, they should ideally all be repeated in a more controlled unit test environment anyway.</div>

</div>