I may have found the source of my infinite loop when importing kid modules from my cherrypy server. Here is some code from the autoreloader module of cherrypy:
def reloader_thread(): mtimes = {} def fileattr(m): return getattr(m, "__file__", None) while RUN_RELOADER: for filename in map(fileattr, sys.modules.values()) + reloadFiles: if filename: if filename.endswith(".pyc"): filename = filename[:-1] try: mtime = os.stat(filename).st_mtime except OSError: sys.exit(3) # force reload if filename not in mtimes: mtimes[filename] = mtime continue if mtime > mtimes[filename]: sys.exit(3) # force reload time.sleep(1) So what happens if one of my modules is a kid template named 'login.kid'? kid compiles the template to login.pyc, which means the os.stat call in this function will be passed 'login.py' which does not exist. -- http://mail.python.org/mailman/listinfo/python-list