From cc9fbb4115b9041b0754ffdd6a3b0ace4b0a0a7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Attila=20Sz=C3=B6ll=C5=91si?= Date: Wed, 10 May 2017 22:55:16 +0200 Subject: [PATCH 1/2] Use width aware slice --- bpython/curtsiesfrontend/replpainter.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/bpython/curtsiesfrontend/replpainter.py b/bpython/curtsiesfrontend/replpainter.py index 36c9c1324..a48d299fb 100644 --- a/bpython/curtsiesfrontend/replpainter.py +++ b/bpython/curtsiesfrontend/replpainter.py @@ -25,11 +25,14 @@ def display_linize(msg, columns, blank_line=False): """Returns lines obtained by splitting msg over multiple lines. Warning: if msg is empty, returns an empty list of lines""" - display_lines = ([msg[start:end] - for start, end in zip( - range(0, len(msg), columns), - range(columns, len(msg) + columns, columns))] - if msg else ([''] if blank_line else [])) + msg = fmtstr(msg) + try: + display_lines = [msg.width_aware_slice(slice(start, end)) + for start, end in zip( + range(0, msg.width, columns), + range(columns, msg.width + columns, columns))] + except ValueError: + display_lines = ([''] if blank_line else []) return display_lines From c51184533c1c9a42c84f7a7d5eda01dad4464b39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Attila=20Sz=C3=B6ll=C5=91si?= Date: Thu, 11 May 2017 14:00:33 +0200 Subject: [PATCH 2/2] Fix test failure --- bpython/curtsiesfrontend/replpainter.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/bpython/curtsiesfrontend/replpainter.py b/bpython/curtsiesfrontend/replpainter.py index a48d299fb..16babde9d 100644 --- a/bpython/curtsiesfrontend/replpainter.py +++ b/bpython/curtsiesfrontend/replpainter.py @@ -27,12 +27,13 @@ def display_linize(msg, columns, blank_line=False): Warning: if msg is empty, returns an empty list of lines""" msg = fmtstr(msg) try: - display_lines = [msg.width_aware_slice(slice(start, end)) + display_lines = ([msg.width_aware_slice(slice(start, end)) for start, end in zip( range(0, msg.width, columns), range(columns, msg.width + columns, columns))] + if msg else ([''] if blank_line else [])) except ValueError: - display_lines = ([''] if blank_line else []) + display_lines = [''] return display_lines