From 08c0321fc48b086d6133c4f0d13150e26d7dcdda Mon Sep 17 00:00:00 2001 From: pagedown Date: Wed, 1 Mar 2023 12:03:56 +0800 Subject: [PATCH 1/2] Don't use the deprecated imghdr module --- kitty/rc/set_background_image.py | 4 ++-- kitty/rc/set_window_logo.py | 5 ++--- kitty/utils.py | 8 ++++++++ 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/kitty/rc/set_background_image.py b/kitty/rc/set_background_image.py index db461532d..40560259f 100644 --- a/kitty/rc/set_background_image.py +++ b/kitty/rc/set_background_image.py @@ -1,12 +1,12 @@ #!/usr/bin/env python # License: GPLv3 Copyright: 2020, Kovid Goyal -import imghdr import os from base64 import standard_b64decode, standard_b64encode from typing import TYPE_CHECKING, Optional from kitty.types import AsyncResponse +from kitty.utils import is_png from .base import ( MATCH_WINDOW_OPTION, @@ -89,7 +89,7 @@ failed, the command will exit with a success code. if path.lower() == 'none': ret['data'] = '-' return ret - if imghdr.what(path) != 'png': + if not is_png(path): self.fatal(f'{path} is not a PNG image') def file_pipe(path: str) -> CmdGenerator: diff --git a/kitty/rc/set_window_logo.py b/kitty/rc/set_window_logo.py index 2a5e6b2ec..73bb3f811 100644 --- a/kitty/rc/set_window_logo.py +++ b/kitty/rc/set_window_logo.py @@ -1,13 +1,12 @@ #!/usr/bin/env python # License: GPLv3 Copyright: 2020, Kovid Goyal - -import imghdr import os from base64 import standard_b64decode, standard_b64encode from typing import TYPE_CHECKING, Optional from kitty.types import AsyncResponse +from kitty.utils import is_png from .base import ( MATCH_WINDOW_OPTION, @@ -85,7 +84,7 @@ failed, the command will exit with a success code. if path.lower() == 'none': ret['data'] = '-' return ret - if imghdr.what(path) != 'png': + if not is_png(path): self.fatal(f'{path} is not a PNG image') def file_pipe(path: str) -> CmdGenerator: diff --git a/kitty/utils.py b/kitty/utils.py index 11ca4bdeb..8b1e4a580 100644 --- a/kitty/utils.py +++ b/kitty/utils.py @@ -1137,3 +1137,11 @@ def extract_all_from_tarfile_safely(tf: 'tarfile.TarFile', dest: str) -> None: tar.extractall(path, tar.getmembers(), numeric_owner=numeric_owner) safe_extract(tf, dest) + + +def is_png(path: str) -> bool: + if path: + with suppress(Exception), open(path, 'rb') as f: + header = f.read(8) + return header.startswith(b'\211PNG\r\n\032\n') + return False From 3d50c1ea5aca284a3084ab1d89c9af3f9b140791 Mon Sep 17 00:00:00 2001 From: pagedown Date: Wed, 1 Mar 2023 12:04:04 +0800 Subject: [PATCH 2/2] Fix cursor misalignment after displaying detailed traceback --- kittens/show_error/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kittens/show_error/main.py b/kittens/show_error/main.py index e4e5ef312..1f3abc215 100644 --- a/kittens/show_error/main.py +++ b/kittens/show_error/main.py @@ -55,7 +55,7 @@ def real_main(args: List[str]) -> None: tb = data['tb'] for ln in tb.splitlines(): print('\r\n', ln, sep='', end='') - print(flush=True) + print(end='\r\n', flush=True) hold_till_enter()