From 04fcac72ec339f84c11b2a31a37d00c79e00d457 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 19 Apr 2026 21:41:58 +0530 Subject: [PATCH] Update minimum python to 3.11 from 3.10 3.10 is failing in CI and I cant be arsed to figure out why. It's anyway a few months from EOL --- kittens/panel/main.py | 3 ++- kitty/child.py | 3 ++- kitty/cli.py | 2 +- kitty/conf/types.py | 3 ++- kitty/conf/utils.py | 2 +- kitty/launch.py | 3 ++- kitty/layout/base.py | 3 ++- kitty/session.py | 3 ++- kitty/shell_integration.py | 2 +- kitty/simple_cli_definitions.py | 3 ++- kitty/window.py | 2 +- kitty/window_list.py | 5 +++-- pyproject.toml | 2 +- 13 files changed, 22 insertions(+), 14 deletions(-) diff --git a/kittens/panel/main.py b/kittens/panel/main.py index b89b806a7..298ee0221 100644 --- a/kittens/panel/main.py +++ b/kittens/panel/main.py @@ -6,7 +6,8 @@ import sys from contextlib import suppress from functools import partial from types import MappingProxyType -from typing import Any, Iterable, Mapping, Sequence +from typing import Any +from collections.abc import Iterable, Mapping, Sequence from kitty.cli import parse_args from kitty.cli_stub import PanelCLIOptions diff --git a/kitty/child.py b/kitty/child.py index fa745b2a4..77f436320 100644 --- a/kitty/child.py +++ b/kitty/child.py @@ -9,7 +9,8 @@ from collections.abc import Generator, Sequence from contextlib import contextmanager, suppress from itertools import count from time import monotonic -from typing import TYPE_CHECKING, DefaultDict, Iterable, Mapping, Optional, TypedDict +from typing import TYPE_CHECKING, DefaultDict, Optional, TypedDict +from collections.abc import Iterable, Mapping import kitty.fast_data_types as fast_data_types diff --git a/kitty/cli.py b/kitty/cli.py index 545de0791..4bf8ef8ee 100644 --- a/kitty/cli.py +++ b/kitty/cli.py @@ -517,7 +517,7 @@ def seq_as_rst( if (otype := opt.type).startswith('bool-'): val_name = f' [={help_defval_for_bool(otype)}]' else: - val_name = ' <{}>'.format(opt.dest.upper()) + val_name = f' <{opt.dest.upper()}>' a(defn + ', '.join(o + val_name for o in sorted(opt.aliases))) if opt.help: defval = opt.default diff --git a/kitty/conf/types.py b/kitty/conf/types.py index 979499e30..b6cc74223 100644 --- a/kitty/conf/types.py +++ b/kitty/conf/types.py @@ -9,7 +9,8 @@ from collections.abc import Callable, Iterable, Iterator from functools import lru_cache from importlib import import_module from re import Match -from typing import Any, Optional, Sequence, Union, cast +from typing import Any, Optional, Union, cast +from collections.abc import Sequence import kitty.conf.utils as generic_parsers from kitty.constants import website_url diff --git a/kitty/conf/utils.py b/kitty/conf/utils.py index 1867bb46f..ca92fe195 100644 --- a/kitty/conf/utils.py +++ b/kitty/conf/utils.py @@ -236,7 +236,7 @@ def geninclude(path: str) -> list[str]: if path.endswith('.py'): return pygeninclude(path) import subprocess - cp = subprocess.run([path], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True) + cp = subprocess.run([path], capture_output=True, text=True) if cp.returncode != 0: raise GenincludeError(f'Running the geninclude program: {path} failed with exit code: {cp.returncode} and STDERR:\n{cp.stderr}') return cp.stdout.splitlines() diff --git a/kitty/launch.py b/kitty/launch.py index 12366854c..e259238ad 100644 --- a/kitty/launch.py +++ b/kitty/launch.py @@ -6,7 +6,8 @@ import os import shutil from collections.abc import Container, Iterable, Iterator, Sequence from contextlib import suppress -from typing import Any, Callable, Literal, NamedTuple, TypedDict +from typing import Any, Literal, NamedTuple, TypedDict +from collections.abc import Callable from .boss import Boss from .child import Child diff --git a/kitty/layout/base.py b/kitty/layout/base.py index ffd911fcf..764e5d17f 100644 --- a/kitty/layout/base.py +++ b/kitty/layout/base.py @@ -5,7 +5,8 @@ from collections.abc import Generator, Iterable, Iterator, Sequence from enum import Enum from functools import partial from itertools import repeat -from typing import Any, Callable, ClassVar, NamedTuple +from typing import Any, ClassVar, NamedTuple +from collections.abc import Callable from kitty.borders import BorderColor from kitty.fast_data_types import BOTTOM_EDGE, RIGHT_EDGE, Region, get_options, set_active_window, viewport_for_window diff --git a/kitty/session.py b/kitty/session.py index 11bbcacf8..a70c95ade 100644 --- a/kitty/session.py +++ b/kitty/session.py @@ -10,7 +10,8 @@ from collections.abc import Callable, Generator, Iterator, Mapping from contextlib import suppress from functools import partial from gettext import gettext as _ -from typing import TYPE_CHECKING, Any, Optional, Sequence, Union +from typing import TYPE_CHECKING, Any, Optional, Union +from collections.abc import Sequence from .cli_stub import CLIOptions, GotoSessionOptions, SaveAsSessionOptions from .constants import config_dir, unserialize_launch_flag diff --git a/kitty/shell_integration.py b/kitty/shell_integration.py index 17727c87f..c374d5000 100644 --- a/kitty/shell_integration.py +++ b/kitty/shell_integration.py @@ -7,7 +7,7 @@ import re import subprocess from collections.abc import Callable from contextlib import suppress -from typing import Iterable +from collections.abc import Iterable from .constants import shell_integration_dir from .fast_data_types import get_options diff --git a/kitty/simple_cli_definitions.py b/kitty/simple_cli_definitions.py index 1b5262199..f78012fb9 100644 --- a/kitty/simple_cli_definitions.py +++ b/kitty/simple_cli_definitions.py @@ -8,7 +8,8 @@ import re import sys from enum import Enum, auto from functools import lru_cache -from typing import Any, Iterator, NamedTuple, Sequence +from typing import Any, NamedTuple +from collections.abc import Iterator, Sequence if getattr(sys, 'running_from_setup', False): is_macos = 'darwin' in sys.platform.lower() diff --git a/kitty/window.py b/kitty/window.py index e2e4a41a2..02460d410 100644 --- a/kitty/window.py +++ b/kitty/window.py @@ -19,12 +19,12 @@ from typing import ( TYPE_CHECKING, Any, Deque, - Iterator, Literal, NamedTuple, Optional, Union, ) +from collections.abc import Iterator from .child import ProcessDesc from .cli_stub import CLIOptions, SaveAsSessionOptions diff --git a/kitty/window_list.py b/kitty/window_list.py index f29fbd792..30979d2d8 100644 --- a/kitty/window_list.py +++ b/kitty/window_list.py @@ -6,7 +6,8 @@ from collections import deque from collections.abc import Iterator from contextlib import suppress from itertools import count -from typing import Any, Deque, Sequence, Union +from typing import Any, Deque, Union +from collections.abc import Sequence from .fast_data_types import Color, get_options from .types import OverlayType, WindowGeometry @@ -238,7 +239,7 @@ class WindowList: for wg in state['window_groups']: old_group_id = wg['id'] if new_group_id := ans.get(old_group_id): - groups.append((g := gmap[new_group_id])) + groups.append(g := gmap[new_group_id]) new_window_ids = [] for old_window_id in wg['window_ids']: if new_window_id := window_id_map.get(old_window_id): diff --git a/pyproject.toml b/pyproject.toml index 22ae77bdc..46cd5ca11 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,5 @@ [project] -requires-python = ">=3.10" +requires-python = ">=3.11" license = "GPL-3.0-only" [build-system]