--> --> -->
 
 
<type 'exceptions.AttributeError'>
Python 2.5.4: C:\Python25\pythonw.exe
Wed Sep 01 19:06:01 2010

A problem occurred in a Python script. Here is the sequence of function calls leading up to the error, in the order they occurred.

 C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py in _HandleRequest(self=<google.appengine.tools.dev_appserver.DevAppServerRequestHandler instance at 0x01472DF0>)
 3110         outfile = cStringIO.StringIO()
 3111         try:
 3112           self._Dispatch(dispatcher, self.rfile, outfile, env_dict)
 3113         finally:
 3114           self.module_manager.UpdateModuleFileModificationTimes()
self = <google.appengine.tools.dev_appserver.DevAppServerRequestHandler instance at 0x01472DF0>, self._Dispatch = <bound method DevAppServerRequestHandler._Dispat...vAppServerRequestHandler instance at 0x01472DF0>>, dispatcher = <google.appengine.tools.dev_appserver.MatcherDispatcher object at 0x0126AE70>, self.rfile = <socket._fileobject object at 0x0147AEF0>, outfile = <cStringIO.StringO object at 0x0147C540>, env_dict = {'APPLICATION_ID': 'helloworld', 'CURRENT_VERSION_ID': '1.1', 'REMOTE_ADDR': '127.0.0.1', 'REQUEST_METHOD': 'GET', 'SERVER_NAME': 'localhost', 'SERVER_PORT': '8083', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_SOFTWARE': 'Development/1.0'}
 C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py in _Dispatch(self=<google.appengine.tools.dev_appserver.DevAppServerRequestHandler instance at 0x01472DF0>, dispatcher=<google.appengine.tools.dev_appserver.MatcherDispatcher object at 0x0126AE70>, socket_infile=<socket._fileobject object at 0x0147AEF0>, outfile=<cStringIO.StringO object at 0x0147C540>, env_dict={'APPLICATION_ID': 'helloworld', 'CURRENT_VERSION_ID': '1.1', 'REMOTE_ADDR': '127.0.0.1', 'REQUEST_METHOD': 'GET', 'SERVER_NAME': 'localhost', 'SERVER_PORT': '8083', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_SOFTWARE': 'Development/1.0'})
 3053                               request_file,
 3054                               outfile,
 3055                               base_env_dict=env_dict)
 3056         finally:
 3057           request_file.close()
base_env_dict undefined, env_dict = {'APPLICATION_ID': 'helloworld', 'CURRENT_VERSION_ID': '1.1', 'REMOTE_ADDR': '127.0.0.1', 'REQUEST_METHOD': 'GET', 'SERVER_NAME': 'localhost', 'SERVER_PORT': '8083', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_SOFTWARE': 'Development/1.0'}
 C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py in Dispatch(self=<google.appengine.tools.dev_appserver.MatcherDispatcher object at 0x0126AE70>, relative_url='/', path=None, headers=<mimetools.Message instance at 0x01472D78>, infile=<closed file 'c:\docume~1\admini~1\locals~1\temp\request.zz1etn.tmp', mode 'rb' at 0x0107A890>, outfile=<cStringIO.StringO object at 0x0147C540>, base_env_dict={'APPLICATION_ID': 'helloworld', 'CURRENT_VERSION_ID': '1.1', 'REMOTE_ADDR': '127.0.0.1', 'REQUEST_METHOD': 'GET', 'SERVER_NAME': 'localhost', 'SERVER_PORT': '8083', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_SOFTWARE': 'Development/1.0'})
  446                                       infile,
  447                                       outfile,
  448                                       base_env_dict=base_env_dict)
  449 
  450         if forward:
base_env_dict = {'APPLICATION_ID': 'helloworld', 'CURRENT_VERSION_ID': '1.1', 'REMOTE_ADDR': '127.0.0.1', 'REQUEST_METHOD': 'GET', 'SERVER_NAME': 'localhost', 'SERVER_PORT': '8083', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_SOFTWARE': 'Development/1.0'}
 C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py in Dispatch(self=<google.appengine.tools.dev_appserver.CGIDispatcher object at 0x0147C0F0>, relative_url='/', path='helloworld.py', headers=<mimetools.Message instance at 0x01472D78>, infile=<closed file 'c:\docume~1\admini~1\locals~1\temp\request.zz1etn.tmp', mode 'rb' at 0x0107A890>, outfile=<cStringIO.StringO object at 0x0147C540>, base_env_dict={'APPLICATION_ID': 'helloworld', 'CURRENT_VERSION_ID': '1.1', 'REMOTE_ADDR': '127.0.0.1', 'REQUEST_METHOD': 'GET', 'SERVER_NAME': 'localhost', 'SERVER_PORT': '8083', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_SOFTWARE': 'Development/1.0'})
 2313                      memory_file,
 2314                      outfile,
 2315                      self._module_dict)
 2316       handler.AddDebuggingConsole(relative_url, env, outfile)
 2317     finally:
self = <google.appengine.tools.dev_appserver.CGIDispatcher object at 0x0147C0F0>, self._module_dict = {'HTMLParser': <module 'HTMLParser' from 'C:\Python25\lib\HTMLParser.py'>, 'StringIO': <module 'StringIO' from 'C:\Python25\lib\StringIO.pyc'>, '__future__': <module '__future__' from 'C:\Python25\lib\__future__.pyc'>, '__main__': <module 'helloworld' from 'E:\helloworld\helloworld.py'>, '_bisect': <module '_bisect' (built-in)>, '_hashlib': <module '_hashlib' from 'C:\Python25\DLLs\_hashlib.pyd'>, '_locale': <module '_locale' (built-in)>, '_mechanize_dist': <module '_mechanize_dist' from 'E:\helloworld\twill\other_packages\_mechanize_dist\__init__.pyc'>, '_mechanize_dist.ClientForm': <module '_mechanize_dist.ClientForm' from 'E:\he...l\other_packages\_mechanize_dist\ClientForm.pyc'>, '_mechanize_dist.HTMLParser': None, ...}
 C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py in ExecuteCGI(root_path=r'E:\helloworld', handler_path='helloworld.py', cgi_path=r'E:\helloworld\helloworld.py', env={'APPLICATION_ID': 'helloworld', 'AUTH_DOMAIN': 'gmail.com', 'CONTENT_LENGTH': '', 'CONTENT_TYPE': 'application/x-www-form-urlencoded', 'CURRENT_VERSION_ID': '1.1', 'GATEWAY_INTERFACE': 'CGI/1.1', 'HTTP_ACCEPT': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'HTTP_ACCEPT_CHARSET': 'ISO-8859-1,utf-8;q=0.7,*;q=0.7', 'HTTP_ACCEPT_LANGUAGE': 'en-us,en;q=0.5', 'HTTP_CONNECTION': 'keep-alive', ...}, infile=<cStringIO.StringO object at 0x0147C2E0>, outfile=<cStringIO.StringO object at 0x0147C540>, module_dict={'HTMLParser': <module 'HTMLParser' from 'C:\Python25\lib\HTMLParser.py'>, 'StringIO': <module 'StringIO' from 'C:\Python25\lib\StringIO.pyc'>, '__future__': <module '__future__' from 'C:\Python25\lib\__future__.pyc'>, '__main__': <module 'helloworld' from 'E:\helloworld\helloworld.py'>, '_bisect': <module '_bisect' (built-in)>, '_hashlib': <module '_hashlib' from 'C:\Python25\DLLs\_hashlib.pyd'>, '_locale': <module '_locale' (built-in)>, '_mechanize_dist': <module '_mechanize_dist' from 'E:\helloworld\twill\other_packages\_mechanize_dist\__init__.pyc'>, '_mechanize_dist.ClientForm': <module '_mechanize_dist.ClientForm' from 'E:\he...l\other_packages\_mechanize_dist\ClientForm.pyc'>, '_mechanize_dist.HTMLParser': None, ...}, exec_script=<function ExecuteOrImportScript at 0x01441B70>)
 2223     logging.debug('Executing CGI with env:\n%s', pprint.pformat(env))
 2224     try:
 2225       reset_modules = exec_script(handler_path, cgi_path, hook)
 2226     except SystemExit, e:
 2227       logging.debug('CGI exited with status: %s', e)
reset_modules = True, exec_script = <function ExecuteOrImportScript at 0x01441B70>, handler_path = 'helloworld.py', cgi_path = r'E:\helloworld\helloworld.py', hook = <google.appengine.tools.dev_appserver.HardenedModulesHook object at 0x0147C0D0>
 C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py in ExecuteOrImportScript(handler_path='helloworld.py', cgi_path=r'E:\helloworld\helloworld.py', import_hook=<google.appengine.tools.dev_appserver.HardenedModulesHook object at 0x0147C0D0>)
 2119   try:
 2120     if module_code:
 2121       exec module_code in script_module.__dict__
 2122     else:
 2123       script_module.main()
module_code = <code object <module> at 014399B0, file "E:\helloworld\helloworld.py", line 1>, script_module = <module 'helloworld' from 'E:\helloworld\helloworld.py'>, script_module.__dict__ = {'__builtins__': {'ArithmeticError': <type 'exceptions.ArithmeticError'>, 'AssertionError': <type 'exceptions.AssertionError'>, 'AttributeError': <type 'exceptions.AttributeError'>, 'BaseException': <type 'exceptions.BaseException'>, 'DeprecationWarning': <type 'exceptions.DeprecationWarning'>, 'EOFError': <type 'exceptions.EOFError'>, 'Ellipsis': Ellipsis, 'EnvironmentError': <type 'exceptions.EnvironmentError'>, 'Exception': <type 'exceptions.Exception'>, 'False': False, ...}, '__doc__': None, '__file__': r'E:\helloworld\helloworld.py', '__loader__': <google.appengine.tools.dev_appserver.HardenedModulesHook object at 0x0147C0D0>, '__name__': 'helloworld', 'add_auth': <function add_auth at 0x01705530>, 'add_extra_header': <function add_extra_header at 0x017057F0>, 'agent': <function agent at 0x01705130>, 'back': <function back at 0x016FEFB0>, 'clear_cookies': <function clear_cookies at 0x017054B0>, ...}
 E:\helloworld\helloworld.py in ()
    1 from twill.commands import *
    2 go("http://www.python.org/")
    3 showforms()
    4 
go = <function go at 0x016FED70>
 E:\helloworld\twill\commands.py in go(url='http://www.python.org/')
  110     Visit the URL given.
  111     """
  112     browser.go(url)
  113     return browser.get_url()
  114 
global browser = <twill.browser.TwillBrowser object at 0x016F6A50>, browser.go = <bound method TwillBrowser.go of <twill.browser.TwillBrowser object at 0x016F6A50>>, url = 'http://www.python.org/'
 E:\helloworld\twill\browser.py in go(self=<twill.browser.TwillBrowser object at 0x016F6A50>, url='http://www.python.org/')
  111         for u in try_urls:
  112             try:
  113                 self._journey('open', u)
  114                 success = True
  115                 break
self = <twill.browser.TwillBrowser object at 0x016F6A50>, self._journey = <bound method TwillBrowser._journey of <twill.browser.TwillBrowser object at 0x016F6A50>>, u = 'http://www.python.org/'
 E:\helloworld\twill\browser.py in _journey(self=<twill.browser.TwillBrowser object at 0x016F6A50>, func_name='open', *args=('http://www.python.org/',), **kwargs={})
  521         func = getattr(self._browser, func_name)
  522         try:
  523             r = func(*args, **kwargs)
  524         except mechanize.HTTPError, e:
  525             r = e
r undefined, func = <bound method PatchedMechanizeBrowser.open of <t....PatchedMechanizeBrowser instance at 0x016F7E90>>, args = ('http://www.python.org/',), kwargs = {}
 E:\helloworld\twill\other_packages\_mechanize_dist\_mechanize.py in open(self=<twill._browser.PatchedMechanizeBrowser instance at 0x016F7E90>, url='http://www.python.org/', data=None)
  210 
  211     def open(self, url, data=None):
  212         return self._mech_open(url, data)
  213 
  214     def _mech_open(self, url, data=None, update_history=True, visit=None):
self = <twill._browser.PatchedMechanizeBrowser instance at 0x016F7E90>, self._mech_open = <bound method PatchedMechanizeBrowser._mech_open....PatchedMechanizeBrowser instance at 0x016F7E90>>, url = 'http://www.python.org/', data = None
 E:\helloworld\twill\other_packages\_mechanize_dist\_mechanize.py in _mech_open(self=<twill._browser.PatchedMechanizeBrowser instance at 0x016F7E90>, url='http://www.python.org/', data=None, update_history=True, visit=True)
  255 
  256         if visit:
  257             self._set_response(response, False)
  258             response = copy.copy(self._response)
  259         elif response is not None:
self = <twill._browser.PatchedMechanizeBrowser instance at 0x016F7E90>, self._set_response = <bound method PatchedMechanizeBrowser._set_respo....PatchedMechanizeBrowser instance at 0x016F7E90>>, response = <response_seek_wrapper at 0x15a7cb0 whose wrappe...dist.httplib.HTTPResponse object at 0x0147C1F0>>>, builtin False = False
 E:\helloworld\twill\other_packages\_mechanize_dist\_mechanize.py in _set_response(self=<twill._browser.PatchedMechanizeBrowser instance at 0x016F7E90>, response=<response_seek_wrapper at 0x15a7f30 whose wrappe...dist.httplib.HTTPResponse object at 0x0147C1F0>>>, close_current=False)
  314             self._response.close()
  315         self._response = response
  316         self._factory.set_response(response)
  317 
  318     def visit_response(self, response, request=None):
self = <twill._browser.PatchedMechanizeBrowser instance at 0x016F7E90>, self._factory = <twill.utils.ConfigurableParsingFactory instance at 0x01495990>, self._factory.set_response = <bound method ConfigurableParsingFactory.set_res...nfigurableParsingFactory instance at 0x01495990>>, response = <response_seek_wrapper at 0x15a7f30 whose wrappe...dist.httplib.HTTPResponse object at 0x0147C1F0>>>
 E:\helloworld\twill\utils.py in set_response(self=<twill.utils.ConfigurableParsingFactory instance at 0x01495990>, response=<response_seek_wrapper at 0x15a7f30 whose wrappe...dist.httplib.HTTPResponse object at 0x0147C1F0>>>)
  322         else:
  323             self.factory = self.basic_factory
  324         cleaned_response = self._cleanup_html(response)
  325         self.factory.set_response(cleaned_response)
  326 
cleaned_response undefined, self = <twill.utils.ConfigurableParsingFactory instance at 0x01495990>, self._cleanup_html = <bound method ConfigurableParsingFactory._cleanu...nfigurableParsingFactory instance at 0x01495990>>, response = <response_seek_wrapper at 0x15a7f30 whose wrappe...dist.httplib.HTTPResponse object at 0x0147C1F0>>>
 E:\helloworld\twill\utils.py in _cleanup_html(self=<twill.utils.ConfigurableParsingFactory instance at 0x01495990>, response=<response_seek_wrapper at 0x15a7f30 whose wrappe...dist.httplib.HTTPResponse object at 0x0147C1F0>>>)
  358         use_tidy = _options.get('use_tidy')
  359         if use_tidy:
  360             (new_html, errors) = run_tidy(self._html)
  361             if new_html:
  362                 self._html = new_html
new_html undefined, errors undefined, global run_tidy = <function run_tidy at 0x016FC2F0>, self = <twill.utils.ConfigurableParsingFactory instance at 0x01495990>, self._html = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tra...div>\n\n\n </div>\n </div>\n</body>\n</html>\n\n\n\n\n\n\n'
 E:\helloworld\twill\utils.py in run_tidy(html='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tra...div>\n\n\n </div>\n </div>\n</body>\n</html>\n\n\n\n\n\n\n')
  273     if _tidy_exists:
  274         try:
  275             process = subprocess.Popen(_tidy_cmd, stdin=subprocess.PIPE,
  276                                        stdout=subprocess.PIPE,
  277                                        stderr=subprocess.PIPE, bufsize=0,
process undefined, global subprocess = <module 'google.appengine.dist.subprocess' from ..._appengine\google\appengine\dist\subprocess.pyc'>, subprocess.Popen undefined, global _tidy_cmd = ['tidy', '-q', '-ashtml'], stdin undefined, subprocess.PIPE undefined, stdout undefined, stderr undefined, bufsize undefined, shell undefined, builtin False = False

<type 'exceptions.AttributeError'>: 'module' object has no attribute 'Popen'
      args = ("'module' object has no attribute 'Popen'",)
      message = "'module' object has no attribute 'Popen'"