diff --git a/pykat/finesse.py b/pykat/finesse.py index 50a5948e8014915306cb42d4e0d3f90fa1aa0c3b..272d28f1038a61a652f451224c8435df96c9103c 100644 --- a/pykat/finesse.py +++ b/pykat/finesse.py @@ -38,6 +38,8 @@ import itertools import ctypes import ctypes.util import collections +import re + from collections import namedtuple, OrderedDict from pykat.node_network import NodeNetwork @@ -880,18 +882,19 @@ class kat(object): p=subprocess.Popen(cmd, shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE) err = "" - #if self.verbose: print "Finesse output:" - + #if self.verbose: print "Finesse output:" for line in iter(p.stderr.readline, ""): - if len(line) > 0: - if isinstance(line, unicode): - import unicodedata - line = unicodedata.normalize('NFKD', line).encode("ascii", "ignore") - - if line.lstrip().startswith('**'): + # remove any ANSI commands + ansi = re.compile(r'\x1b[^m]*m') + line = ansi.sub('', line) + + # warnings and errors start with an asterisk + # so if verbose show them + if line.lstrip().startswith('*'): if self.verbose: sys.stdout.write(line) - elif line.rstrip().endswith('s'): + + elif line.rstrip().endswith('s') and line.contains('%'): vals = line.split("-") action = vals[0].strip() prc = vals[1].strip()[:] @@ -907,8 +910,6 @@ class kat(object): if printerr == 1: sys.stdout.write("\r{0} {1}".format(action, prc)) - elif line[0:3] == '** ': - if self.verbose: sys.stdout.write(line) else: err += line