Here’s another small fix. In Python and even in Jython, the __name__ of the topmost script is ‘__main__’. This is mostly used in the idiom:
if __name__ == "__main__": main()
In wsadmin, __name is set to ‘main’. Rather than put the clumsy:
if __name__ == "__main__" or __name__ == "main": main()
… in every script, let’s solve this once and for all:
topframe = sys._getframe() up1frame = topframe.f_back while topframe.f_back: topframe = topframe.f_back try: if up1frame == topframe and topframe.f_locals['__name__'] == 'main': topframe.f_locals['__name__'] = '__main__' except: pass
As usual, the current collection is at http://dbrand666.wordpress.com/ibmfixes-py
Update 4/16/2010: I decided this fix should only be applied if imported directly from the top level. This will keep it from potentially breaking existing main programs that don’t know about it.