mirror of
https://github.com/ankitects/anki.git
synced 2025-09-18 22:12:21 -04:00
use literal for ease type
This commit is contained in:
parent
b6a3842fd9
commit
63f1a363af
2 changed files with 28 additions and 10 deletions
|
@ -11,7 +11,18 @@ import re
|
||||||
import unicodedata as ucd
|
import unicodedata as ucd
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from enum import Enum, auto
|
from enum import Enum, auto
|
||||||
from typing import Any, Callable, List, Match, Optional, Sequence, Tuple, Union, cast
|
from typing import (
|
||||||
|
Any,
|
||||||
|
Callable,
|
||||||
|
List,
|
||||||
|
Literal,
|
||||||
|
Match,
|
||||||
|
Optional,
|
||||||
|
Sequence,
|
||||||
|
Tuple,
|
||||||
|
Union,
|
||||||
|
cast,
|
||||||
|
)
|
||||||
|
|
||||||
from PyQt5.QtCore import Qt
|
from PyQt5.QtCore import Qt
|
||||||
|
|
||||||
|
@ -389,7 +400,7 @@ class Reviewer:
|
||||||
# Answering a card
|
# Answering a card
|
||||||
############################################################
|
############################################################
|
||||||
|
|
||||||
def _answerCard(self, ease: int) -> None:
|
def _answerCard(self, ease: Literal[1, 2, 3, 4]) -> None:
|
||||||
"Reschedule card and show next."
|
"Reschedule card and show next."
|
||||||
if self.mw.state != "review":
|
if self.mw.state != "review":
|
||||||
# showing resetRequired screen; ignore key
|
# showing resetRequired screen; ignore key
|
||||||
|
@ -421,7 +432,7 @@ class Reviewer:
|
||||||
self.mw.col.sched.answerCard(self.card, ease)
|
self.mw.col.sched.answerCard(self.card, ease)
|
||||||
self._after_answering(ease)
|
self._after_answering(ease)
|
||||||
|
|
||||||
def _after_answering(self, ease: int) -> None:
|
def _after_answering(self, ease: Literal[1, 2, 3, 4]) -> None:
|
||||||
gui_hooks.reviewer_did_answer_card(self, self.card, ease)
|
gui_hooks.reviewer_did_answer_card(self, self.card, ease)
|
||||||
self._answeredIds.append(self.card.id)
|
self._answeredIds.append(self.card.id)
|
||||||
self.mw.autosave()
|
self.mw.autosave()
|
||||||
|
@ -486,7 +497,8 @@ class Reviewer:
|
||||||
def _onAnswerButton(self, val: str) -> None:
|
def _onAnswerButton(self, val: str) -> None:
|
||||||
# button selected?
|
# button selected?
|
||||||
if val and val in "1234":
|
if val and val in "1234":
|
||||||
self._answerCard(int(val))
|
val2: Literal[1, 2, 3, 4] = int(val) # type: ignore
|
||||||
|
self._answerCard(val2)
|
||||||
else:
|
else:
|
||||||
self._answerCard(self._defaultEase())
|
self._answerCard(self._defaultEase())
|
||||||
|
|
||||||
|
@ -494,7 +506,8 @@ class Reviewer:
|
||||||
if url == "ans":
|
if url == "ans":
|
||||||
self._getTypedAnswer()
|
self._getTypedAnswer()
|
||||||
elif url.startswith("ease"):
|
elif url.startswith("ease"):
|
||||||
self._answerCard(int(url[4:]))
|
val: Literal[1, 2, 3, 4] = int(url[4:]) # type: ignore
|
||||||
|
self._answerCard(val)
|
||||||
elif url == "edit":
|
elif url == "edit":
|
||||||
self.mw.onEditCurrent()
|
self.mw.onEditCurrent()
|
||||||
elif url == "more":
|
elif url == "more":
|
||||||
|
@ -778,7 +791,7 @@ time = %(time)d;
|
||||||
<span class=review-count>{counts[2]}</span>
|
<span class=review-count>{counts[2]}</span>
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def _defaultEase(self) -> int:
|
def _defaultEase(self) -> Literal[2, 3]:
|
||||||
if self.mw.col.sched.answerButtons(self.card) == 4:
|
if self.mw.col.sched.answerButtons(self.card) == 4:
|
||||||
return 3
|
return 3
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -19,7 +19,8 @@ prefix = """\
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from typing import Any, Callable, Dict, List, Sequence, Tuple, Optional, Union
|
from typing import Any, Callable, Dict, List, Sequence, Tuple, Optional, \
|
||||||
|
Union, Literal
|
||||||
|
|
||||||
import anki
|
import anki
|
||||||
import aqt
|
import aqt
|
||||||
|
@ -101,11 +102,11 @@ hooks = [
|
||||||
Hook(
|
Hook(
|
||||||
name="reviewer_will_answer_card",
|
name="reviewer_will_answer_card",
|
||||||
args=[
|
args=[
|
||||||
"ease_tuple: Tuple[bool, int]",
|
"ease_tuple: Tuple[bool, Literal[1, 2, 3, 4]]",
|
||||||
"reviewer: aqt.reviewer.Reviewer",
|
"reviewer: aqt.reviewer.Reviewer",
|
||||||
"card: Card",
|
"card: Card",
|
||||||
],
|
],
|
||||||
return_type="Tuple[bool, int]",
|
return_type="Tuple[bool, Literal[1, 2, 3, 4]]",
|
||||||
doc="""Used to modify the ease at which a card is rated or to bypass
|
doc="""Used to modify the ease at which a card is rated or to bypass
|
||||||
rating the card completely.
|
rating the card completely.
|
||||||
|
|
||||||
|
@ -118,7 +119,11 @@ hooks = [
|
||||||
),
|
),
|
||||||
Hook(
|
Hook(
|
||||||
name="reviewer_did_answer_card",
|
name="reviewer_did_answer_card",
|
||||||
args=["reviewer: aqt.reviewer.Reviewer", "card: Card", "ease: int"],
|
args=[
|
||||||
|
"reviewer: aqt.reviewer.Reviewer",
|
||||||
|
"card: Card",
|
||||||
|
"ease: Literal[1, 2, 3, 4]",
|
||||||
|
],
|
||||||
),
|
),
|
||||||
Hook(
|
Hook(
|
||||||
name="reviewer_will_show_context_menu",
|
name="reviewer_will_show_context_menu",
|
||||||
|
|
Loading…
Reference in a new issue