Skip to content

Commit 0d4a307

Browse files
committed
update better_exchook
1 parent abd2339 commit 0d4a307

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

returnn/util/better_exchook.py

+14-6
Original file line numberDiff line numberDiff line change
@@ -930,31 +930,36 @@ def __init__(self, color):
930930
self.lines = []
931931
self.dom_term = DomTerm() if DomTerm.is_domterm() else None
932932

933-
def __call__(self, s1, s2=None, **kwargs):
933+
def __call__(self, s1, s2=None, merge_into_prev=True, **kwargs):
934934
"""
935935
Adds to self.lines.
936936
This strange function signature is for historical reasons.
937937
938938
:param str s1:
939939
:param str|None s2:
940+
:param bool merge_into_prev: if True and existing self.lines, merge into prev line.
940941
:param kwargs: passed to self.color
941942
"""
942943
if kwargs:
943944
s1 = self.color(s1, **kwargs)
944945
if s2 is not None:
945946
s1 = add_indent_lines(s1, s2)
946-
self.lines.append(s1 + "\n")
947+
if merge_into_prev and self.lines:
948+
self.lines[-1] += s1 + "\n"
949+
else:
950+
self.lines.append(s1 + "\n")
947951

948952
@contextlib.contextmanager
949-
def fold_text_ctx(self, line):
953+
def fold_text_ctx(self, line, merge_into_prev=True):
950954
"""
951955
Folds text, via :class:`DomTerm`, if available.
952956
Notes that this temporarily overwrites self.lines.
953957
954958
:param str line: always visible
959+
:param bool merge_into_prev: if True and existing self.lines, merge into prev line.
955960
"""
956961
if not self.dom_term:
957-
self.__call__(line)
962+
self.__call__(line, merge_into_prev=merge_into_prev)
958963
yield
959964
return
960965
self.lines, old_lines = [], self.lines # overwrite self.lines
@@ -970,7 +975,10 @@ def fold_text_ctx(self, line):
970975
line = line[1:]
971976
self.dom_term.fold_text(line, hidden=hidden_text, file=output_buf, align=len(prefix))
972977
output_text = prefix[1:] + output_buf.getvalue()
973-
self.lines.append(output_text)
978+
if merge_into_prev and self.lines:
979+
self.lines[-1] += output_text
980+
else:
981+
self.lines.append(output_text)
974982

975983
def _pp_extra_info(self, obj, depth_limit=3):
976984
"""
@@ -1197,7 +1205,7 @@ def _try_set(old, prefix, func):
11971205
name,
11981206
]
11991207
)
1200-
with output.fold_text_ctx(file_descr):
1208+
with output.fold_text_ctx(file_descr, merge_into_prev=False):
12011209
source_code = get_source_code(filename, lineno, f.f_globals)
12021210
if source_code:
12031211
source_code = remove_indent_lines(replace_tab_indents(source_code)).rstrip()

0 commit comments

Comments
 (0)