[pypy-dev] pypy sandbox

Dalius Dobravolskas dalius.dobravolskas at gmail.com
Sun Feb 22 20:57:22 CET 2009


Hello,

Dalius Dobravolskas wrote:
> 1. I'm running my code behind Apache mod_wsgi. As you might know
> mod_wsgi is very strict WSGI implementation. pypy_interact failed when
> was calling isatty function (mod_wsgi.Log does not have this
> function). I have fixed that by adding "'isatty in dir(log)". I will
> give later exact locations and names if I have confused them
Here is traceback from this situation:

Traceback (most recent call last):, referer: http://py.sandbox.lt/
   File "/home/dalius/wsgi/pypysandboxserver.py", line 25, in __call__, 
referer: http://py.sandbox.lt/
     sandproc.interact(stdout=code_output, stderr=code_output), referer: 
http://py.sandbox.lt/
   File 
"/home/dalius/projects/pypy-trunk/pypy/translator/sandbox/sandlib.py", 
line 307, in interact, referer: http://py.sandbox.lt/
     returncode = self.handle_until_return(), referer: http://py.sandbox.lt/
   File 
"/home/dalius/projects/pypy-trunk/pypy/translator/sandbox/sandlib.py", 
line 228, in handle_until_return, referer: http://py.sandbox.lt/
     log.call('%s(%s)' % (fnname,, referer: http://py.sandbox.lt/
   File "/home/dalius/projects/pypy-trunk/py/log/producer.py", line 55, 
in __call__, referer: http://py.sandbox.lt/
     func(self.Message(self.keywords, args)), referer: http://py.sandbox.lt/
   File "/home/dalius/projects/pypy-trunk/pypy/tool/ansi_print.py", line 
72, in __call__, referer: http://py.sandbox.lt/
     file=self.file, newline=newline, flush=flush), referer: 
http://py.sandbox.lt/
   File "/home/dalius/projects/pypy-trunk/py/io/terminalwriter.py", line 
34, in ansi_print, referer: http://py.sandbox.lt/
     if esc and sys.platform != "win32" and file.isatty():, referer: 
http://py.sandbox.lt/
 AttributeError: 'mod_wsgi.Log' object has no attribute 'isatty', 
referer: http://py.sandbox.lt/


Here is diff how I have avoided this problem:

--- io/terminalwriter.py    (revision 62015)
+++ io/terminalwriter.py    (working copy)
@@ -31,7 +31,7 @@
     if file is None:
         file = sys.stderr
     text = text.rstrip()
-    if esc and sys.platform != "win32" and file.isatty():
+    if esc and sys.platform != "win32" and 'isatty' in dir(file) and 
file.isatty():
         if not isinstance(esc, tuple):
             esc = (esc,)
         text = (''.join(['\x1b[%sm' % cod for cod in esc])  + 

Could it be fixed in the code?

Regards,
Dalius



More information about the Pypy-dev mailing list