[Python-Dev] sys.modules["__main__"] in Jython

Skip Montanaro skip@pobox.com (Skip Montanaro)
Fri, 8 Jun 2001 09:51:27 -0500

Would someone with Jython experience check to see if it interprets
sys.modules["__main__"] in the same manner as Python?  I'm interested to see
if doctest's normal usage can be simplified slightly.  The doctest
documentation states:

    In normal use, end each module M with:

    def _test():
	import doctest, M           # replace M with your module's name
	return doctest.testmod(M)   # ditto

    if __name__ == "__main__":

I'm wondering if this works for Jython as well as Python:

    def _test():
	import doctest, sys
	return doctest.testmod(sys.modules["__main__"])

    if __name__ == "__main__":

If so, then I think doctest.testmod's signature can be changed to

    def testmod(m=None, name=None, globs=None, verbose=None, isprivate=None,

with the following extra code added to the start of the function:

        if m is None:
            import sys
            m = sys.modules["__main__"]

That way the most common doctest usage can be changed to

    def _test():
	import doctest
	return doctest.testmod()

    if __name__ == "__main__":

(I ran into a problem with a module that had initialization code that barfed
if executed more than once.)

Of course, these changes are ultimately Tim's decision.  I'm just trying to
knock down various potential hurdles.