diff --git a/aqt/__init__.py b/aqt/__init__.py index 1d6df5930..4bd09abad 100644 --- a/aqt/__init__.py +++ b/aqt/__init__.py @@ -10,7 +10,9 @@ import tempfile import builtins import locale import gettext +from typing import Optional +from aqt.main import AnkiQt from aqt.qt import * import anki.lang from anki.consts import HELP_SITE @@ -24,7 +26,7 @@ appDonate="http://ankisrs.net/support/" appShared="https://ankiweb.net/shared/" appUpdate="https://ankiweb.net/update/desktop" appHelpSite=HELP_SITE -mw = None # set on init +mw: Optional[AnkiQt] = None # set on init moduleDir = os.path.split(os.path.dirname(os.path.abspath(__file__)))[0] diff --git a/aqt/addcards.py b/aqt/addcards.py index b97b559a4..bd00e78bb 100644 --- a/aqt/addcards.py +++ b/aqt/addcards.py @@ -1,8 +1,10 @@ # Copyright: Ankitects Pty Ltd and contributors # -*- coding: utf-8 -*- # License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html -from anki.lang import _ +from typing import List +from anki.lang import _ +from aqt import AnkiQt from aqt.qt import * import aqt.forms from aqt.utils import saveGeom, restoreGeom, showWarning, askUser, shortcut, \ @@ -14,7 +16,7 @@ import aqt.editor, aqt.modelchooser, aqt.deckchooser class AddCards(QDialog): - def __init__(self, mw): + def __init__(self, mw: AnkiQt): QDialog.__init__(self, None, Qt.Window) mw.setupDialogGC(self) self.mw = mw @@ -27,7 +29,7 @@ class AddCards(QDialog): self.setupEditor() self.setupButtons() self.onReset() - self.history = [] + self.history: List[int] = [] self.previousNote = None restoreGeom(self, "add") addHook('reset', self.onReset) diff --git a/aqt/browser.py b/aqt/browser.py index ee782a805..39d10b630 100644 --- a/aqt/browser.py +++ b/aqt/browser.py @@ -11,6 +11,7 @@ from operator import itemgetter from anki.lang import ngettext import json +from aqt import AnkiQt from aqt.qt import * import anki import aqt.forms @@ -383,7 +384,7 @@ class StatusDelegate(QItemDelegate): class Browser(QMainWindow): - def __init__(self, mw): + def __init__(self, mw: AnkiQt): QMainWindow.__init__(self, None, Qt.Window) self.mw = mw self.col = self.mw.col diff --git a/aqt/editor.py b/aqt/editor.py index 9283779ca..c0c3f2041 100644 --- a/aqt/editor.py +++ b/aqt/editor.py @@ -11,6 +11,7 @@ import unicodedata import json from anki.lang import _ +from aqt import AnkiQt from aqt.qt import * from anki.utils import isWin, namedtmp, stripHTMLMedia, \ checksum @@ -40,7 +41,7 @@ html { background: %s; } # caller is responsible for resetting note on reset class Editor: - def __init__(self, mw, widget, parentWindow, addMode=False): + def __init__(self, mw: AnkiQt, widget, parentWindow, addMode=False): self.mw = mw self.widget = widget self.parentWindow = parentWindow diff --git a/aqt/main.py b/aqt/main.py index 9244ee33c..616dd4623 100644 --- a/aqt/main.py +++ b/aqt/main.py @@ -10,8 +10,9 @@ import time import faulthandler import platform from threading import Thread - +from typing import Optional from send2trash import send2trash +from anki.collection import _Collection from aqt.qt import * from anki.storage import Collection from anki.utils import isWin, isMac, intTime, splitFields, ids2str, \ @@ -36,6 +37,7 @@ class AnkiQt(QMainWindow): QMainWindow.__init__(self) self.state = "startup" self.opts = opts + self.col: Optional[_Collection] = None aqt.mw = self self.app = app self.pm = profileManager diff --git a/aqt/reviewer.py b/aqt/reviewer.py index 03b228310..c47bff4e0 100644 --- a/aqt/reviewer.py +++ b/aqt/reviewer.py @@ -9,7 +9,11 @@ import unicodedata as ucd import html.parser import json +from typing import List + +from anki.cards import Card from anki.lang import _, ngettext +from aqt import AnkiQt from aqt.qt import * from anki.utils import stripHTML, bodyClass from anki.hooks import addHook, runHook, runFilter @@ -23,13 +27,13 @@ import aqt class Reviewer: "Manage reviews. Maintains a separate state." - def __init__(self, mw): + def __init__(self, mw: AnkiQt): self.mw = mw self.web = mw.web self.card = None - self.cardQueue = [] + self.cardQueue: List[Card] = [] self.hadCardQueue = False - self._answeredIds = [] + self._answeredIds: List[int] = [] self._recordedAudio = None self.typeCorrect = None # web init happens before this is set self.state = None