From b35b69a2d3532e3ed9b63dc159ebbf163a52f2fc Mon Sep 17 00:00:00 2001 From: David Culley <6276049+davidculley@users.noreply.github.com> Date: Thu, 29 Aug 2024 12:07:06 +0200 Subject: [PATCH] mypy: fix type checking error (#3365) * refactor: fix type checking error error: Argument 1 to "_answerCard" of "Reviewer" has incompatible type "int"; expected "Literal[1, 2, 3, 4]" [arg-type] * refactor: remove check that `ease` is correct number * refactor: rename variable * refactor: add type hint for generator function * refactor: revise import of `functools.partial` * refactor: invert logic of if-construct to avoid nesting. * refactor: properly check for `None` * Update qt/aqt/reviewer.py --- qt/aqt/reviewer.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/qt/aqt/reviewer.py b/qt/aqt/reviewer.py index 0913d049d..4a16f7b47 100644 --- a/qt/aqt/reviewer.py +++ b/qt/aqt/reviewer.py @@ -3,13 +3,13 @@ from __future__ import annotations -import functools import json import random import re -from collections.abc import Callable, Sequence +from collections.abc import Callable, Generator, Sequence from dataclasses import dataclass from enum import Enum, auto +from functools import partial from typing import Any, Literal, Match, Union, cast import aqt @@ -591,6 +591,18 @@ class Reviewer: def _shortcutKeys( self, ) -> Sequence[tuple[str, Callable] | tuple[Qt.Key, Callable]]: + + def generate_default_answer_keys() -> ( + Generator[tuple[str, partial], None, None] + ): + for ease in aqt.mw.pm.default_answer_keys: + key = aqt.mw.pm.get_answer_key(ease) + if not key: + continue + ease = cast(Literal[1, 2, 3, 4], ease) + answer_card_according_to_pressed_key = partial(self._answerCard, ease) + yield (key, answer_card_according_to_pressed_key) + return [ ("e", self.mw.onEditCurrent), (" ", self.onEnterKey), @@ -617,11 +629,7 @@ class Reviewer: ("o", self.onOptions), ("i", self.on_card_info), ("Ctrl+Alt+i", self.on_previous_card_info), - *( - (key, functools.partial(self._answerCard, ease)) - for ease in aqt.mw.pm.default_answer_keys - if (key := aqt.mw.pm.get_answer_key(ease)) - ), + *generate_default_answer_keys(), ("u", self.mw.undo), ("5", self.on_pause_audio), ("6", self.on_seek_backward),