From 66c68fd9efe8fbe71fc7398b609b29eb6bb86c6a Mon Sep 17 00:00:00 2001 From: scito Date: Mon, 2 Jan 2023 22:41:30 +0100 Subject: [PATCH] fix Python 3.7 compatibility --- src/extract_otp_secrets.py | 10 ++++++---- tests/extract_otp_secrets_test.py | 4 ++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/extract_otp_secrets.py b/src/extract_otp_secrets.py index 61083f4..f3edd7c 100644 --- a/src/extract_otp_secrets.py +++ b/src/extract_otp_secrets.py @@ -240,11 +240,13 @@ def cv2_draw_box(img: Any, raw_pts: Any, color: ColorBGR) -> Any: # TODO use cv2 types if available def cv2_print_text(img: Any, text: str, line_number: int, position: TextPosition, color: ColorBGR, opposite_len: Optional[int] = None) -> None: - text_dim, _ = cv2.getTextSize(text, FONT, FONT_SCALE, FONT_THICKNESS) window_dim = cv2.getWindowImageRect(WINDOW_NAME) - out_text = text \ - if not opposite_len or (actual_width := text_dim[TEXT_WIDTH] + opposite_len * CHAR_DX + 4 * BORDER) <= window_dim[WINDOW_WIDTH] \ - else text[:(window_dim[WINDOW_WIDTH] - actual_width) // CHAR_DX] + '.' + out_text = text + if opposite_len: + text_dim, _ = cv2.getTextSize(out_text, FONT, FONT_SCALE, FONT_THICKNESS) + actual_width = text_dim[TEXT_WIDTH] + opposite_len * CHAR_DX + 4 * BORDER + if actual_width >= window_dim[WINDOW_WIDTH]: + out_text = out_text[:(window_dim[WINDOW_WIDTH] - actual_width) // CHAR_DX] + '.' text_dim, _ = cv2.getTextSize(out_text, FONT, FONT_SCALE, FONT_THICKNESS) if position == TextPosition.LEFT: pos = BORDER, START_Y + line_number * FONT_DY diff --git a/tests/extract_otp_secrets_test.py b/tests/extract_otp_secrets_test.py index 0b02481..75df41e 100644 --- a/tests/extract_otp_secrets_test.py +++ b/tests/extract_otp_secrets_test.py @@ -413,8 +413,8 @@ def test_extract_verbose(verbose_level: str, color: str, capsys: pytest.CaptureF # Assert captured = capsys.readouterr() - expected_stdout = normalize_verbose_text(read_file_to_str(f'tests/data/print_verbose_output{color}{verbose_level}.txt'), actual_relaxed := relaxed or sys.implementation.name == 'pypy') - actual_stdout = normalize_verbose_text(captured.out, actual_relaxed) + expected_stdout = normalize_verbose_text(read_file_to_str(f'tests/data/print_verbose_output{color}{verbose_level}.txt'), relaxed or sys.implementation.name == 'pypy') + actual_stdout = normalize_verbose_text(captured.out, relaxed or sys.implementation.name == 'pypy') assert actual_stdout == expected_stdout assert captured.err == ''