diff --git a/anki/cards.py b/anki/cards.py index 3f5978c04..505108ced 100644 --- a/anki/cards.py +++ b/anki/cards.py @@ -22,8 +22,9 @@ from typing import Any, Optional class Card: - def __init__(self, col, id=None) -> None: - self.col = col + def __init__(self, col, id: Optional[int] = None) -> None: + from anki.collection import _Collection + self.col: _Collection = col self.timerStarted = None self._qa = None self._note = None @@ -117,7 +118,7 @@ lapses=?, left=?, odue=?, odid=?, did=? where id = ?""", self.left, self.odue, self.odid, self.did, self.id) self.col.log(self) - def q(self, reload=False, browser=False) -> str: + def q(self, reload: bool = False, browser: bool = False) -> str: return self.css() + self._getQA(reload, browser)['q'] def a(self) -> str: @@ -126,7 +127,7 @@ lapses=?, left=?, odue=?, odid=?, did=? where id = ?""", def css(self) -> str: return "" % self.model()['css'] - def _getQA(self, reload=False, browser=False) -> Any: + def _getQA(self, reload: bool = False, browser: bool = False) -> Any: if not self._qa or reload: f = self.note(reload); m = self.model(); t = self.template() data = [self.id, f.id, m['id'], self.odid or self.did, self.ord, @@ -138,7 +139,7 @@ lapses=?, left=?, odue=?, odid=?, did=? where id = ?""", self._qa = self.col._renderQA(data, *args) return self._qa - def note(self, reload=False) -> Any: + def note(self, reload: bool = False) -> Any: if not self._note or reload: self._note = self.col.getNote(self.nid) return self._note @@ -188,6 +189,6 @@ lapses=?, left=?, odue=?, odid=?, did=? where id = ?""", def userFlag(self) -> Any: return self.flags & 0b111 - def setUserFlag(self, flag) -> None: + def setUserFlag(self, flag: int) -> None: assert 0 <= flag <= 7 self.flags = (self.flags & ~0b111) | flag diff --git a/anki/notes.py b/anki/notes.py index b1bd5953e..da8244c3d 100644 --- a/anki/notes.py +++ b/anki/notes.py @@ -4,11 +4,12 @@ from anki.utils import fieldChecksum, intTime, \ joinFields, splitFields, stripHTMLMedia, timestampID, guid64 -from typing import Any, List, Tuple +from typing import List, Tuple +from typing import Any, Optional class Note: - def __init__(self, col, model=None, id=None) -> None: + def __init__(self, col, model: Optional[Any] = None, id: Optional[int] = None) -> None: assert not (model and id) self.col = col self.newlyAdded = False @@ -44,7 +45,7 @@ from notes where id = ?""", self.id) self._fmap = self.col.models.fieldMap(self._model) self.scm = self.col.scm - def flush(self, mod=None) -> None: + def flush(self, mod: Optional[int] = None) -> None: "If fields or tags have changed, write changes to disk." assert self.scm == self.col.scm self._preFlush() @@ -90,16 +91,16 @@ insert or replace into notes values (?,?,?,?,?,?,?,?,?,?,?)""", return [(f['name'], self.fields[ord]) for ord, f in sorted(self._fmap.values())] - def _fieldOrd(self, key) -> Any: + def _fieldOrd(self, key: str) -> Any: try: return self._fmap[key][0] except: raise KeyError(key) - def __getitem__(self, key) -> Any: + def __getitem__(self, key: str) -> Any: return self.fields[self._fieldOrd(key)] - def __setitem__(self, key, value) -> None: + def __setitem__(self, key: str, value: str) -> None: self.fields[self._fieldOrd(key)] = value def __contains__(self, key) -> bool: @@ -108,7 +109,7 @@ insert or replace into notes values (?,?,?,?,?,?,?,?,?,?,?)""", # Tags ################################################## - def hasTag(self, tag) -> Any: + def hasTag(self, tag: str) -> Any: return self.col.tags.inList(tag, self.tags) def stringTags(self) -> Any: @@ -125,7 +126,7 @@ insert or replace into notes values (?,?,?,?,?,?,?,?,?,?,?)""", for r in rem: self.tags.remove(r) - def addTag(self, tag) -> None: + def addTag(self, tag: str) -> None: # duplicates will be stripped on save self.tags.append(tag)