Author: Alexander Hesse <[email protected]>
Branch: quiet-rpython
Changeset: r60655:29f82492ab85
Date: 2013-01-28 17:15 +0100
http://bitbucket.org/pypy/pypy/changeset/29f82492ab85/
Log: -q/--quiet option flag for rpython to make its output less spammy
diff --git a/rpython/tool/ansi_print.py b/rpython/tool/ansi_print.py
--- a/rpython/tool/ansi_print.py
+++ b/rpython/tool/ansi_print.py
@@ -4,7 +4,18 @@
import sys
from py.io import ansi_print
-from rpython.tool.ansi_mandelbrot import Driver
+from rpython.tool.ansi_mandelbrot import Driver as MandelbrotDriver
+
+class SpinningDriver(object):
+ def __init__(self):
+ self.states = ['|', '/', '-', '\\']
+ self.state = 0
+ def reset(self):
+ self.state = 0
+ def dot(self):
+ sys.stderr.write(self.states[self.state] + '\b')
+ self.state += 1
+ self.state %= len(self.states)
class AnsiLog:
wrote_dot = False # XXX sharing state with all instances
@@ -20,17 +31,32 @@
'info': ((35,), False),
'stub': ((34,), False),
}
+
+ log_on_quiet = [
+ "ERROR",
+ "Error",
+ "info",
+ ]
def __init__(self, kw_to_color={}, file=None):
self.kw_to_color = self.KW_TO_COLOR.copy()
self.kw_to_color.update(kw_to_color)
self.file = file
- self.fancy = True
self.isatty = getattr(sys.stderr, 'isatty', lambda: False)
- if self.fancy and self.isatty():
- self.mandelbrot_driver = Driver()
- else:
- self.mandelbrot_driver = None
+ self.driver = None
+ self.set_option(fancy=True, quiet=False)
+
+ def set_option(self, fancy=None, quiet=None):
+ if fancy is not None:
+ self.fancy = fancy
+ if quiet is not None:
+ self.quiet = quiet
+
+ self.driver = None
+ if self.isatty and self.fancy:
+ self.driver = MandelbrotDriver()
+ if self.isatty and self.quiet:
+ self.driver = SpinningDriver()
def __call__(self, msg):
tty = self.isatty()
@@ -55,10 +81,10 @@
return
elif 'dot' in keywords:
if tty:
- if self.fancy:
+ if self.driver is not None:
if not AnsiLog.wrote_dot:
- self.mandelbrot_driver.reset()
- self.mandelbrot_driver.dot()
+ self.driver.reset()
+ self.driver.dot()
else:
ansi_print(".", tuple(esc), file=self.file, newline=False,
flush=flush)
AnsiLog.wrote_dot = True
@@ -67,8 +93,9 @@
AnsiLog.wrote_dot = False
sys.stderr.write("\n")
esc = tuple(esc)
- for line in msg.content().splitlines():
- ansi_print("[%s] %s" %(":".join(keywords), line), esc,
- file=self.file, newline=newline, flush=flush)
+ if not self.quiet or any([kw in self.log_on_quiet for kw in keywords]):
+ for line in msg.content().splitlines():
+ ansi_print("[%s] %s" %(":".join(keywords), line), esc,
+ file=self.file, newline=newline, flush=flush)
ansi_log = AnsiLog()
diff --git a/rpython/translator/goal/translate.py
b/rpython/translator/goal/translate.py
--- a/rpython/translator/goal/translate.py
+++ b/rpython/translator/goal/translate.py
@@ -74,6 +74,8 @@
cmdline="-h --help", negation=False),
BoolOption("fullhelp", "show full help message and exit", default=False,
cmdline="--full-help", negation=False),
+ BoolOption("quiet", "be less verbose and don't paint fractals",
default=False,
+ cmdline="-q --quiet", negation=False),
ArbitraryOption("goals", "XXX",
defaultfactory=list),
# xxx default goals ['annotate', 'rtype', 'backendopt', 'source',
'compile']
@@ -117,6 +119,8 @@
options, args = opt_parser.parse_args()
+ ansi_log.set_option(quiet=translateconfig.quiet)
+
# set goals and skipped_goals
reset = False
for name, _, _, _ in GOALS:
diff --git a/rpython/translator/platform/__init__.py
b/rpython/translator/platform/__init__.py
--- a/rpython/translator/platform/__init__.py
+++ b/rpython/translator/platform/__init__.py
@@ -7,7 +7,7 @@
from rpython.tool.udir import udir
log = py.log.Producer("platform")
-
+py.log.setconsumer("platform", ansi_log)
class CompilationError(Exception):
def __init__(self, out, err):
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit