[pypy-svn] r17885 - in pypy/dist/pypy: tool translator
pedronis at codespeak.net
pedronis at codespeak.net
Mon Sep 26 23:09:27 CEST 2005
Author: pedronis
Date: Mon Sep 26 23:09:24 2005
New Revision: 17885
Modified:
pypy/dist/pypy/tool/ansi_print.py
pypy/dist/pypy/translator/translator.py
Log:
tweak ansi_log to suppot the hold behavior on ttys for getflowgraph info
support mapping from keyword to color in ansi_log, now class based -> AnsiLog
Modified: pypy/dist/pypy/tool/ansi_print.py
==============================================================================
--- pypy/dist/pypy/tool/ansi_print.py (original)
+++ pypy/dist/pypy/tool/ansi_print.py Mon Sep 26 23:09:24 2005
@@ -4,7 +4,7 @@
import sys
-def ansi_print(text, esc, file=None, newline=True):
+def ansi_print(text, esc, file=None, newline=True, flush=False):
if file is None: file = sys.stderr
text = text.rstrip()
if esc and sys.platform != "win32" and file.isatty():
@@ -14,16 +14,44 @@
if newline:
text += '\n'
file.write(text)
+ if flush:
+ file.flush()
-def ansi_log(msg):
- keywords = list(msg.keywords)
- if 'bold' in keywords:
- keywords.remove('bold')
- esc = "1"
- elif 'red' in keywords:
- keywords.remove('red')
- esc = "31"
- else:
- esc = None
- ansi_print("[%s] %s" %(":".join(keywords), msg.content()), esc)
+
+class AnsiLog:
+
+ def __init__(self, kw_to_color={}, file=None):
+ self.kw_to_color = kw_to_color
+ self.file = file
+
+ def __call__(self, msg):
+ tty = getattr(sys.stderr, 'isatty', lambda: False)()
+ flush = False
+ newline = True
+ keywords = []
+ for kw in msg.keywords:
+ color = self.kw_to_color.get(kw)
+ if color and color not in keywords:
+ keywords.append(color)
+ keywords.append(kw)
+ if 'start' in keywords:
+ if tty:
+ newline = False
+ flush = True
+ keywords.remove('start')
+ elif 'done' in keywords:
+ if tty:
+ print >> sys.stderr
+ return
+ if 'bold' in keywords:
+ keywords.remove('bold')
+ esc = "1"
+ elif 'red' in keywords:
+ keywords.remove('red')
+ esc = "31"
+ else:
+ esc = None
+ ansi_print("[%s] %s" %(":".join(keywords), msg.content()), esc,
+ file=self.file, newline=newline, flush=flush)
+ansi_log = AnsiLog()
Modified: pypy/dist/pypy/translator/translator.py
==============================================================================
--- pypy/dist/pypy/translator/translator.py (original)
+++ pypy/dist/pypy/translator/translator.py Mon Sep 26 23:09:24 2005
@@ -64,7 +64,7 @@
func.func_globals.get('__name__', '?'),
func.func_code.co_firstlineno,
func.__name__)
- log(descr)
+ log.start(descr)
assert not self.frozen
space = FlowObjSpace()
space.builtins_can_raise_exceptions = self.builtins_can_raise_exceptions
More information about the Pypy-commit
mailing list