Fix mypy warnings in the tui/ directory (#2816)

This commit is contained in:
correctmost 2024-11-15 20:00:31 -05:00 committed by GitHub
parent 316711d261
commit a4935bdd10
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 16 additions and 15 deletions

View File

@ -7,6 +7,7 @@ import signal
from abc import ABCMeta, abstractmethod from abc import ABCMeta, abstractmethod
from curses.textpad import Textbox from curses.textpad import Textbox
from dataclasses import dataclass from dataclasses import dataclass
from types import FrameType, TracebackType
from typing import Any, Optional, Tuple, TYPE_CHECKING, Literal from typing import Any, Optional, Tuple, TYPE_CHECKING, Literal
from typing import Callable from typing import Callable
@ -111,7 +112,7 @@ class AbstractViewport:
def __init__(self) -> None: def __init__(self) -> None:
pass pass
def add_str(self, screen: Any, row: int, col: int, text: str, color: STYLE): def add_str(self, screen: Any, row: int, col: int, text: str, color: STYLE) -> None:
try: try:
screen.addstr(row, col, text, Tui.t().get_color(color)) screen.addstr(row, col, text, Tui.t().get_color(color))
except curses.error: except curses.error:
@ -204,7 +205,7 @@ class AbstractViewport:
dim: _FrameDim, dim: _FrameDim,
h_bar: str, h_bar: str,
scroll_pct: Optional[int] = None scroll_pct: Optional[int] = None
): ) -> ViewportEntry:
if scroll_pct is None: if scroll_pct is None:
bottom = Chars.Lower_left + h_bar + Chars.Lower_right bottom = Chars.Lower_left + h_bar + Chars.Lower_right
else: else:
@ -427,7 +428,7 @@ class Viewport(AbstractViewport):
self._state: Optional[ViewportState] = None self._state: Optional[ViewportState] = None
def getch(self): def getch(self) -> int:
return self._main_win.getch() return self._main_win.getch()
def erase(self) -> None: def erase(self) -> None:
@ -439,7 +440,7 @@ class Viewport(AbstractViewport):
lines: list[ViewportEntry], lines: list[ViewportEntry],
cur_pos: int = 0, cur_pos: int = 0,
scroll_pos: Optional[int] = None scroll_pos: Optional[int] = None
): ) -> None:
self._state = self._get_viewport_state(lines, cur_pos, scroll_pos) self._state = self._get_viewport_state(lines, cur_pos, scroll_pos)
visible_entries = self._adjust_entries_row(self._state.displayed_entries) visible_entries = self._adjust_entries_row(self._state.displayed_entries)
@ -669,7 +670,7 @@ class EditMenu(AbstractCurses):
self._clear_all() self._clear_all()
return result return result
def resize_win(self): def resize_win(self) -> None:
self._draw() self._draw()
def _clear_all(self) -> None: def _clear_all(self) -> None:
@ -918,7 +919,7 @@ class SelectMenu(AbstractCurses):
return [] return []
def _init_viewports(self, arg_prev_size: float | Literal['auto']): def _init_viewports(self, arg_prev_size: float | Literal['auto']) -> None:
footer_height = 2 # possible filter at the bottom footer_height = 2 # possible filter at the bottom
y_offset = 0 y_offset = 0
@ -1195,7 +1196,7 @@ class SelectMenu(AbstractCurses):
self._preview_vp.update(entries, scroll_pos=self._prev_scroll_pos) self._preview_vp.update(entries, scroll_pos=self._prev_scroll_pos)
def _calc_prev_scroll_pos(self, entries: list[ViewportEntry]): def _calc_prev_scroll_pos(self, entries: list[ViewportEntry]) -> None:
total_rows = max([e.row for e in entries]) + 1 # rows start with 0 and we need the count total_rows = max([e.row for e in entries]) + 1 # rows start with 0 and we need the count
if self._prev_scroll_pos >= total_rows: if self._prev_scroll_pos >= total_rows:
@ -1357,12 +1358,12 @@ class SelectMenu(AbstractCurses):
class Tui: class Tui:
_t: Optional['Tui'] = None _t: Optional['Tui'] = None
def __enter__(self): def __enter__(self) -> None:
if Tui._t is None: if Tui._t is None:
tui = self.init() tui = self.init()
Tui._t = tui Tui._t = tui
def __exit__(self, exc_type, exc_val, tb): def __exit__(self, exc_type: type[BaseException] | None, exc_val: BaseException | None, tb: TracebackType | None) -> None:
self.stop() self.stop()
@property @property
@ -1463,7 +1464,7 @@ class Tui:
tui.screen.clear() tui.screen.clear()
return Tui.t()._main_loop(component) return Tui.t()._main_loop(component)
def _sig_win_resize(self, signum: int, frame) -> None: def _sig_win_resize(self, signum: int, frame: FrameType | None) -> None:
if hasattr(self, '_component') and self._component is not None: # pylint: disable=E1101 if hasattr(self, '_component') and self._component is not None: # pylint: disable=E1101
self._component.resize_win() # pylint: disable=E1101 self._component.resize_win() # pylint: disable=E1101
@ -1471,7 +1472,7 @@ class Tui:
self._screen.refresh() self._screen.refresh()
return component.kickoff(self._screen) return component.kickoff(self._screen)
def _reset_terminal(self): def _reset_terminal(self) -> None:
os.system("reset") os.system("reset")
def _set_up_colors(self) -> None: def _set_up_colors(self) -> None:

View File

@ -73,7 +73,7 @@ class MenuItemGroup:
_filter_pattern: str = '' _filter_pattern: str = ''
def __post_init__(self): def __post_init__(self) -> None:
if len(self.menu_items) < 1: if len(self.menu_items) < 1:
raise ValueError('Menu must have at least one item') raise ValueError('Menu must have at least one item')
@ -207,7 +207,7 @@ class MenuItemGroup:
self._filter_pattern = pattern self._filter_pattern = pattern
self.reload_focus_itme() self.reload_focus_itme()
def append_filter(self, pattern: str): def append_filter(self, pattern: str) -> None:
self._filter_pattern += pattern self._filter_pattern += pattern
self.reload_focus_itme() self.reload_focus_itme()
@ -274,7 +274,7 @@ class MenuItemGroup:
if last_item: if last_item:
self.focus_item = last_item self.focus_item = last_item
def focus_prev(self, skip_empty: bool = True): def focus_prev(self, skip_empty: bool = True) -> None:
items = self.items items = self.items
if self.focus_item not in items: if self.focus_item not in items:
@ -288,7 +288,7 @@ class MenuItemGroup:
if self.focus_item.is_empty() and skip_empty: if self.focus_item.is_empty() and skip_empty:
self.focus_prev(skip_empty) self.focus_prev(skip_empty)
def focus_next(self, skip_empty: bool = True): def focus_next(self, skip_empty: bool = True) -> None:
items = self.items items = self.items
if self.focus_item not in items: if self.focus_item not in items: