diff --git a/pylib/anki/cards.py b/pylib/anki/cards.py index abbcf81e4..5f5aaf945 100644 --- a/pylib/anki/cards.py +++ b/pylib/anki/cards.py @@ -7,6 +7,10 @@ import pprint import time import anki # pylint: disable=unused-import +import anki.collection +import anki.decks +import anki.notes +import anki.template from anki import cards_pb2, hooks from anki._legacy import DeprecatedNamesMixin, deprecated from anki.consts import * diff --git a/pylib/anki/config.py b/pylib/anki/config.py index 61d3e9357..834af5004 100644 --- a/pylib/anki/config.py +++ b/pylib/anki/config.py @@ -25,6 +25,7 @@ from typing import Any from weakref import ref import anki +import anki.collection from anki import config_pb2 from anki.collection import OpChanges from anki.errors import NotFoundError diff --git a/pylib/anki/decks.py b/pylib/anki/decks.py index 38a4d069c..fd528a8fd 100644 --- a/pylib/anki/decks.py +++ b/pylib/anki/decks.py @@ -9,9 +9,10 @@ from typing import TYPE_CHECKING, Any, Iterable, NewType, Sequence, no_type_chec if TYPE_CHECKING: import anki +import anki.cards +import anki.collection from anki import deckconfig_pb2, decks_pb2 from anki._legacy import DeprecatedNamesMixin, deprecated, print_deprecation_warning -from anki.cards import CardId from anki.collection import OpChanges, OpChangesWithCount, OpChangesWithId from anki.consts import * from anki.errors import NotFoundError @@ -383,7 +384,7 @@ class DeckManager(DeprecatedNamesMixin): return deck["name"] return None - def cids(self, did: DeckId, children: bool = False) -> list[CardId]: + def cids(self, did: DeckId, children: bool = False) -> list[anki.cards.CardId]: if not children: return self.col.db.list("select id from cards where did=?", did) dids = [did] @@ -391,7 +392,7 @@ class DeckManager(DeprecatedNamesMixin): dids.append(id) return self.col.db.list(f"select id from cards where did in {ids2str(dids)}") - def for_card_ids(self, cids: list[CardId]) -> list[DeckId]: + def for_card_ids(self, cids: list[anki.cards.CardId]) -> list[DeckId]: return self.col.db.list(f"select did from cards where id in {ids2str(cids)}") # Deck selection @@ -543,7 +544,7 @@ class DeckManager(DeprecatedNamesMixin): return {d["name"]: d for d in self.all()} @deprecated(info="use col.set_deck() instead") - def set_deck(self, cids: list[CardId], did: DeckId) -> None: + def set_deck(self, cids: list[anki.cards.CardId], did: DeckId) -> None: self.col.set_deck(card_ids=cids, deck_id=did) self.col.db.execute( f"update cards set did=?,usn=?,mod=? where id in {ids2str(cids)}", diff --git a/pylib/anki/latex.py b/pylib/anki/latex.py index 3117ca081..56d7415a9 100644 --- a/pylib/anki/latex.py +++ b/pylib/anki/latex.py @@ -10,6 +10,7 @@ from dataclasses import dataclass from typing import Any import anki +import anki.collection from anki import card_rendering_pb2, hooks from anki.models import NotetypeDict from anki.template import TemplateRenderContext, TemplateRenderOutput diff --git a/pylib/anki/models.py b/pylib/anki/models.py index 08f8a7fb0..7cc3b0c54 100644 --- a/pylib/anki/models.py +++ b/pylib/anki/models.py @@ -10,6 +10,8 @@ import time from typing import Any, NewType, Sequence, Union import anki # pylint: disable=unused-import +import anki.collection +import anki.notes from anki import notetypes_pb2 from anki._legacy import DeprecatedNamesMixin, deprecated, print_deprecation_warning from anki.collection import OpChanges, OpChangesWithId diff --git a/pylib/anki/notes.py b/pylib/anki/notes.py index f2175fcad..9e6d6f153 100644 --- a/pylib/anki/notes.py +++ b/pylib/anki/notes.py @@ -7,6 +7,10 @@ import copy from typing import Any, NewType, Sequence import anki # pylint: disable=unused-import +import anki.cards +import anki.collection +import anki.decks +import anki.template from anki import hooks, notes_pb2 from anki._legacy import DeprecatedNamesMixin from anki.consts import MODEL_STD diff --git a/pylib/anki/scheduler/base.py b/pylib/anki/scheduler/base.py index bc90edb88..39e3e1fe9 100644 --- a/pylib/anki/scheduler/base.py +++ b/pylib/anki/scheduler/base.py @@ -4,6 +4,7 @@ from __future__ import annotations import anki +import anki.collection from anki import decks_pb2, scheduler_pb2 from anki._legacy import DeprecatedNamesMixin from anki.collection import OpChanges, OpChangesWithCount, OpChangesWithId diff --git a/pylib/anki/scheduler/v1.py b/pylib/anki/scheduler/v1.py index 28c89b53a..a4694da10 100644 --- a/pylib/anki/scheduler/v1.py +++ b/pylib/anki/scheduler/v1.py @@ -6,6 +6,7 @@ from __future__ import annotations import anki +import anki.collection from anki.cards import Card from anki.consts import * from anki.decks import DeckId diff --git a/pylib/anki/scheduler/v2.py b/pylib/anki/scheduler/v2.py index ecfd90236..3c3626cc8 100644 --- a/pylib/anki/scheduler/v2.py +++ b/pylib/anki/scheduler/v2.py @@ -11,6 +11,7 @@ from heapq import * from typing import Any, Callable, cast import anki # pylint: disable=unused-import +import anki.collection from anki import hooks, scheduler_pb2 from anki.cards import Card, CardId from anki.consts import * diff --git a/pylib/anki/template.py b/pylib/anki/template.py index dd7673f1a..ed63516b4 100644 --- a/pylib/anki/template.py +++ b/pylib/anki/template.py @@ -32,12 +32,13 @@ from dataclasses import dataclass from typing import Any, Sequence, Union import anki +import anki.cards +import anki.collection +import anki.notes from anki import card_rendering_pb2, hooks -from anki.cards import Card from anki.decks import DeckManager from anki.errors import TemplateError from anki.models import NotetypeDict -from anki.notes import Note from anki.sound import AVTag, SoundOrVideoTag, TTSTag from anki.utils import to_json_bytes @@ -116,14 +117,16 @@ class TemplateRenderContext: using the _private fields directly.""" @staticmethod - def from_existing_card(card: Card, browser: bool) -> TemplateRenderContext: + def from_existing_card( + card: anki.cards.Card, browser: bool + ) -> TemplateRenderContext: return TemplateRenderContext(card.col, card, card.note(), browser) @classmethod def from_card_layout( cls, - note: Note, - card: Card, + note: anki.notes.Note, + card: anki.cards.Card, notetype: NotetypeDict, template: dict, fill_empty: bool, @@ -140,8 +143,8 @@ class TemplateRenderContext: def __init__( self, col: anki.collection.Collection, - card: Card, - note: Note, + card: anki.cards.Card, + note: anki.notes.Note, browser: bool = False, notetype: NotetypeDict = None, template: dict | None = None, @@ -188,14 +191,14 @@ class TemplateRenderContext: return self._fields - def card(self) -> Card: + def card(self) -> anki.cards.Card: """Returns the card being rendered. Be careful not to call .question() or .answer() on the card, or you'll create an infinite loop.""" return self._card - def note(self) -> Note: + def note(self) -> anki.notes.Note: return self._note def note_type(self) -> NotetypeDict: @@ -281,7 +284,7 @@ class TemplateRenderOutput: # legacy -def templates_for_card(card: Card, browser: bool) -> tuple[str, str]: +def templates_for_card(card: anki.cards.Card, browser: bool) -> tuple[str, str]: template = card.template() if browser: question, answer = template.get("bqfmt"), template.get("bafmt") @@ -317,7 +320,7 @@ def apply_custom_filters( field_text, node.field_name, filter_name, ctx ) # legacy hook - the second and fifth argument are no longer used. - field_text = anki.hooks.runFilter( + field_text = hooks.runFilter( f"fmod_{filter_name}", field_text, "", diff --git a/qt/aqt/_macos_helper.py b/qt/aqt/_macos_helper.py index f0c14d999..5a421a1a2 100644 --- a/qt/aqt/_macos_helper.py +++ b/qt/aqt/_macos_helper.py @@ -9,6 +9,7 @@ from ctypes import CDLL, CFUNCTYPE, c_char_p from typing import Callable import aqt +import aqt.utils class _MacOSHelper: diff --git a/qt/aqt/addons.py b/qt/aqt/addons.py index 3f8b954ae..c0067742f 100644 --- a/qt/aqt/addons.py +++ b/qt/aqt/addons.py @@ -22,6 +22,7 @@ from jsonschema.exceptions import ValidationError from send2trash import send2trash import anki +import anki.utils import aqt import aqt.forms import aqt.main diff --git a/qt/aqt/browser/browser.py b/qt/aqt/browser/browser.py index e490ec4a1..25ef4ba8c 100644 --- a/qt/aqt/browser/browser.py +++ b/qt/aqt/browser/browser.py @@ -7,7 +7,10 @@ import json from typing import Callable, Sequence import aqt +import aqt.browser +import aqt.editor import aqt.forms +import aqt.operations from anki._legacy import deprecated from anki.cards import Card, CardId from anki.collection import Collection, Config, OpChanges, SearchNode diff --git a/qt/aqt/browser/find_and_replace.py b/qt/aqt/browser/find_and_replace.py index 39add80e6..a68c75dbc 100644 --- a/qt/aqt/browser/find_and_replace.py +++ b/qt/aqt/browser/find_and_replace.py @@ -6,6 +6,8 @@ from __future__ import annotations from typing import Sequence import aqt +import aqt.forms +import aqt.operations from anki.notes import NoteId from aqt import AnkiQt from aqt.operations import QueryOp diff --git a/qt/aqt/browser/find_duplicates.py b/qt/aqt/browser/find_duplicates.py index 4af17cfe2..f7924ccc2 100644 --- a/qt/aqt/browser/find_duplicates.py +++ b/qt/aqt/browser/find_duplicates.py @@ -9,6 +9,7 @@ from typing import Any import anki import anki.find import aqt +import aqt.forms from anki.collection import SearchNode from anki.notes import NoteId from aqt.qt import * diff --git a/qt/aqt/browser/sidebar/model.py b/qt/aqt/browser/sidebar/model.py index e9b3062d3..f463754df 100644 --- a/qt/aqt/browser/sidebar/model.py +++ b/qt/aqt/browser/sidebar/model.py @@ -5,6 +5,7 @@ from __future__ import annotations from typing import cast import aqt +import aqt.browser from aqt.browser.sidebar.item import SidebarItem from aqt.qt import * from aqt.theme import theme_manager diff --git a/qt/aqt/browser/sidebar/searchbar.py b/qt/aqt/browser/sidebar/searchbar.py index 9d12e3fae..3c5243ecb 100644 --- a/qt/aqt/browser/sidebar/searchbar.py +++ b/qt/aqt/browser/sidebar/searchbar.py @@ -4,6 +4,8 @@ from __future__ import annotations import aqt +import aqt.browser +import aqt.gui_hooks from aqt import colors from aqt.browser.sidebar import _want_right_border from aqt.qt import * diff --git a/qt/aqt/browser/sidebar/toolbar.py b/qt/aqt/browser/sidebar/toolbar.py index 030b47041..349e0f4d0 100644 --- a/qt/aqt/browser/sidebar/toolbar.py +++ b/qt/aqt/browser/sidebar/toolbar.py @@ -6,6 +6,8 @@ from __future__ import annotations from enum import Enum, auto import aqt +import aqt.browser +import aqt.gui_hooks from aqt.qt import * from aqt.theme import theme_manager from aqt.utils import tr diff --git a/qt/aqt/browser/sidebar/tree.py b/qt/aqt/browser/sidebar/tree.py index b6b39d938..4a90fedaf 100644 --- a/qt/aqt/browser/sidebar/tree.py +++ b/qt/aqt/browser/sidebar/tree.py @@ -6,6 +6,8 @@ from enum import Enum, auto from typing import Iterable, cast import aqt +import aqt.browser +import aqt.operations from anki.collection import ( Config, OpChanges, diff --git a/qt/aqt/browser/table/__init__.py b/qt/aqt/browser/table/__init__.py index a35cd8ce5..6df0d130b 100644 --- a/qt/aqt/browser/table/__init__.py +++ b/qt/aqt/browser/table/__init__.py @@ -7,6 +7,7 @@ from dataclasses import dataclass from typing import TYPE_CHECKING, Generator, Sequence, Union import aqt +import aqt.browser from anki.cards import CardId from anki.collection import BrowserColumns as Columns from anki.collection import BrowserRow diff --git a/qt/aqt/browser/table/model.py b/qt/aqt/browser/table/model.py index e997bf230..2ae0b1e58 100644 --- a/qt/aqt/browser/table/model.py +++ b/qt/aqt/browser/table/model.py @@ -6,6 +6,7 @@ import time from typing import Any, Callable, Sequence import aqt +import aqt.browser from anki.cards import Card, CardId from anki.collection import BrowserColumns as Columns from anki.collection import Collection diff --git a/qt/aqt/browser/table/table.py b/qt/aqt/browser/table/table.py index 1d50d7009..69d4e183d 100644 --- a/qt/aqt/browser/table/table.py +++ b/qt/aqt/browser/table/table.py @@ -5,6 +5,7 @@ from __future__ import annotations from typing import Any, Callable, Sequence import aqt +import aqt.browser import aqt.forms from anki.cards import Card, CardId from anki.collection import Collection, Config, OpChanges diff --git a/qt/aqt/changenotetype.py b/qt/aqt/changenotetype.py index bf22e382f..f7787d3d3 100644 --- a/qt/aqt/changenotetype.py +++ b/qt/aqt/changenotetype.py @@ -7,6 +7,8 @@ from typing import Sequence import aqt import aqt.deckconf +import aqt.main +import aqt.operations from anki.collection import OpChanges from anki.models import ChangeNotetypeRequest, NotetypeId from anki.notes import NoteId diff --git a/qt/aqt/clayout.py b/qt/aqt/clayout.py index 8be142112..b2643e9a8 100644 --- a/qt/aqt/clayout.py +++ b/qt/aqt/clayout.py @@ -6,6 +6,8 @@ from concurrent.futures import Future from typing import Any, Match, Optional import aqt +import aqt.forms +import aqt.operations from anki.collection import OpChanges from anki.consts import * from anki.lang import without_unicode_isolation diff --git a/qt/aqt/customstudy.py b/qt/aqt/customstudy.py index 5b021c9b4..315dbab30 100644 --- a/qt/aqt/customstudy.py +++ b/qt/aqt/customstudy.py @@ -2,6 +2,8 @@ # License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html import aqt +import aqt.forms +import aqt.operations from anki.consts import * from anki.scheduler import CustomStudyRequest from aqt.operations.scheduling import custom_study diff --git a/qt/aqt/dbcheck.py b/qt/aqt/dbcheck.py index 00e70adbd..e5143c43d 100644 --- a/qt/aqt/dbcheck.py +++ b/qt/aqt/dbcheck.py @@ -6,6 +6,7 @@ from __future__ import annotations from concurrent.futures import Future import aqt +import aqt.main from aqt.qt import * from aqt.utils import showText, tooltip diff --git a/qt/aqt/deckbrowser.py b/qt/aqt/deckbrowser.py index cfc4a4d33..ebf413878 100644 --- a/qt/aqt/deckbrowser.py +++ b/qt/aqt/deckbrowser.py @@ -8,6 +8,7 @@ from dataclasses import dataclass from typing import Any import aqt +import aqt.operations from anki.collection import OpChanges from anki.decks import DeckCollapseScope, DeckId, DeckTreeNode from aqt import AnkiQt, gui_hooks diff --git a/qt/aqt/deckconf.py b/qt/aqt/deckconf.py index 4ac709ea8..aed8452e3 100644 --- a/qt/aqt/deckconf.py +++ b/qt/aqt/deckconf.py @@ -7,6 +7,7 @@ from operator import itemgetter from typing import Any import aqt +import aqt.forms from anki.consts import NEW_CARDS_RANDOM from anki.decks import DeckConfigDict from anki.lang import without_unicode_isolation diff --git a/qt/aqt/deckdescription.py b/qt/aqt/deckdescription.py index ccd534601..69e77626e 100644 --- a/qt/aqt/deckdescription.py +++ b/qt/aqt/deckdescription.py @@ -4,6 +4,8 @@ from __future__ import annotations import aqt +import aqt.main +import aqt.operations from anki.decks import DeckDict from aqt.operations import QueryOp from aqt.operations.deck import update_deck_dict diff --git a/qt/aqt/deckoptions.py b/qt/aqt/deckoptions.py index ff8258839..77fa97ac3 100644 --- a/qt/aqt/deckoptions.py +++ b/qt/aqt/deckoptions.py @@ -5,6 +5,7 @@ from __future__ import annotations import aqt import aqt.deckconf +import aqt.main from anki.cards import Card from anki.decks import DeckDict, DeckId from anki.lang import without_unicode_isolation diff --git a/qt/aqt/editor.py b/qt/aqt/editor.py index 41e9e38c9..5b9124f9f 100644 --- a/qt/aqt/editor.py +++ b/qt/aqt/editor.py @@ -22,6 +22,8 @@ import requests from bs4 import BeautifulSoup import aqt +import aqt.forms +import aqt.operations import aqt.sound from anki._legacy import deprecated from anki.cards import Card diff --git a/qt/aqt/emptycards.py b/qt/aqt/emptycards.py index 5a9c08bc1..12026cb14 100644 --- a/qt/aqt/emptycards.py +++ b/qt/aqt/emptycards.py @@ -8,6 +8,8 @@ from concurrent.futures import Future from typing import Any import aqt +import aqt.forms +import aqt.main from anki.cards import CardId from anki.collection import EmptyCardsReport from aqt import gui_hooks diff --git a/qt/aqt/exporting.py b/qt/aqt/exporting.py index 5b4b1534d..4049b7724 100644 --- a/qt/aqt/exporting.py +++ b/qt/aqt/exporting.py @@ -9,6 +9,8 @@ import time from concurrent.futures import Future import aqt +import aqt.forms +import aqt.main from anki import hooks from anki.cards import CardId from anki.decks import DeckId diff --git a/qt/aqt/fields.py b/qt/aqt/fields.py index 6c3e6a9d7..7c4733ebb 100644 --- a/qt/aqt/fields.py +++ b/qt/aqt/fields.py @@ -4,6 +4,8 @@ from typing import Optional import aqt +import aqt.forms +import aqt.operations from anki.collection import OpChanges from anki.consts import * from anki.lang import without_unicode_isolation diff --git a/qt/aqt/filtered_deck.py b/qt/aqt/filtered_deck.py index 098756348..d70bbb3df 100644 --- a/qt/aqt/filtered_deck.py +++ b/qt/aqt/filtered_deck.py @@ -4,6 +4,8 @@ from __future__ import annotations import aqt +import aqt.forms +import aqt.operations from anki.collection import OpChangesWithId, SearchNode from anki.decks import DeckDict, DeckId, FilteredDeckConfig from anki.errors import SearchError diff --git a/qt/aqt/flags.py b/qt/aqt/flags.py index 64ee04524..ee4100056 100644 --- a/qt/aqt/flags.py +++ b/qt/aqt/flags.py @@ -6,6 +6,7 @@ from dataclasses import dataclass from typing import cast import aqt +import aqt.main from anki.collection import SearchNode from aqt import colors, gui_hooks from aqt.theme import ColoredIcon diff --git a/qt/aqt/legacy.py b/qt/aqt/legacy.py index 7b450c3e7..535d70a46 100644 --- a/qt/aqt/legacy.py +++ b/qt/aqt/legacy.py @@ -10,6 +10,8 @@ from __future__ import annotations from typing import Any import anki +import anki.sound +import anki.utils import aqt from aqt.theme import theme_manager diff --git a/qt/aqt/main.py b/qt/aqt/main.py index 3d2a9c083..609d9aada 100644 --- a/qt/aqt/main.py +++ b/qt/aqt/main.py @@ -16,9 +16,13 @@ from threading import Thread from typing import Any, Literal, Sequence, TextIO, TypeVar, cast import anki +import anki.cards +import anki.sound import aqt +import aqt.forms import aqt.mediasrv import aqt.mpv +import aqt.operations import aqt.progress import aqt.sound import aqt.stats diff --git a/qt/aqt/mediacheck.py b/qt/aqt/mediacheck.py index 740fc9cc3..db88028bf 100644 --- a/qt/aqt/mediacheck.py +++ b/qt/aqt/mediacheck.py @@ -9,6 +9,7 @@ from concurrent.futures import Future from typing import Iterable, Sequence, TypeVar import aqt +import aqt.progress from anki.collection import Collection, SearchNode from anki.errors import Interrupted from anki.media import CheckMediaResponse diff --git a/qt/aqt/mediasrv.py b/qt/aqt/mediasrv.py index ea3018a90..36e4bdcc6 100644 --- a/qt/aqt/mediasrv.py +++ b/qt/aqt/mediasrv.py @@ -21,6 +21,8 @@ from flask import Response, request from waitress.server import create_server import aqt +import aqt.main +import aqt.operations from anki import hooks from anki._vendor import stringcase from anki.collection import OpChanges diff --git a/qt/aqt/mediasync.py b/qt/aqt/mediasync.py index 5961ceecf..3f40b77ad 100644 --- a/qt/aqt/mediasync.py +++ b/qt/aqt/mediasync.py @@ -9,6 +9,8 @@ from dataclasses import dataclass from typing import Any, Callable, Union import aqt +import aqt.forms +import aqt.main from anki.collection import Progress from anki.errors import Interrupted, NetworkError from anki.types import assert_exhaustive diff --git a/qt/aqt/operations/__init__.py b/qt/aqt/operations/__init__.py index 620bf5fae..a2d3eb7db 100644 --- a/qt/aqt/operations/__init__.py +++ b/qt/aqt/operations/__init__.py @@ -7,6 +7,7 @@ from concurrent.futures._base import Future from typing import Any, Callable, Generic, Protocol, TypeVar, Union import aqt +import aqt.gui_hooks from anki.collection import ( Collection, OpChanges, diff --git a/qt/aqt/operations/scheduling.py b/qt/aqt/operations/scheduling.py index 1e8f27da2..624496f1a 100644 --- a/qt/aqt/operations/scheduling.py +++ b/qt/aqt/operations/scheduling.py @@ -6,6 +6,7 @@ from __future__ import annotations from typing import Sequence import aqt +import aqt.forms from anki.cards import CardId from anki.collection import ( CARD_TYPE_NEW, diff --git a/qt/aqt/overview.py b/qt/aqt/overview.py index c8044e4ef..a11473e2f 100644 --- a/qt/aqt/overview.py +++ b/qt/aqt/overview.py @@ -6,6 +6,7 @@ from dataclasses import dataclass from typing import Any, Callable import aqt +import aqt.operations from anki.collection import OpChanges from anki.scheduler import UnburyDeck from aqt import gui_hooks diff --git a/qt/aqt/preferences.py b/qt/aqt/preferences.py index 099f9de1a..75f8ff34d 100644 --- a/qt/aqt/preferences.py +++ b/qt/aqt/preferences.py @@ -5,6 +5,8 @@ from typing import Any, cast import anki.lang import aqt +import aqt.forms +import aqt.operations from anki.collection import OpChanges from anki.consts import new_card_scheduling_labels from aqt import AnkiQt diff --git a/qt/aqt/reviewer.py b/qt/aqt/reviewer.py index 7d2377950..753d366f1 100644 --- a/qt/aqt/reviewer.py +++ b/qt/aqt/reviewer.py @@ -14,6 +14,8 @@ from enum import Enum, auto from typing import Any, Callable, Literal, Match, Sequence, cast import aqt +import aqt.browser +import aqt.operations from anki import hooks from anki.cards import Card, CardId from anki.collection import Config, OpChanges, OpChangesWithCount diff --git a/qt/aqt/sound.py b/qt/aqt/sound.py index abf8ec320..14dfdf36d 100644 --- a/qt/aqt/sound.py +++ b/qt/aqt/sound.py @@ -19,6 +19,8 @@ from typing import Any, Callable, cast from markdown import markdown import aqt +import aqt.mpv +import aqt.qt from anki import hooks from anki.cards import Card from anki.sound import AV_REF_RE, AVTag, SoundOrVideoTag diff --git a/qt/aqt/stats.py b/qt/aqt/stats.py index 262ace180..90a3af964 100644 --- a/qt/aqt/stats.py +++ b/qt/aqt/stats.py @@ -6,6 +6,8 @@ import time from typing import Any import aqt +import aqt.forms +import aqt.main from aqt import gui_hooks from aqt.qt import * from aqt.theme import theme_manager diff --git a/qt/aqt/studydeck.py b/qt/aqt/studydeck.py index 4181f1407..306cf71ba 100644 --- a/qt/aqt/studydeck.py +++ b/qt/aqt/studydeck.py @@ -4,6 +4,8 @@ from typing import Optional import aqt +import aqt.forms +import aqt.operations from anki.collection import OpChangesWithId from anki.decks import DeckId from aqt import gui_hooks diff --git a/qt/aqt/sync.py b/qt/aqt/sync.py index 7e8eb83ed..6d828c716 100644 --- a/qt/aqt/sync.py +++ b/qt/aqt/sync.py @@ -9,6 +9,7 @@ from concurrent.futures import Future from typing import Callable import aqt +import aqt.main from anki.errors import Interrupted, SyncError, SyncErrorKind from anki.lang import without_unicode_isolation from anki.sync import SyncOutput, SyncStatus diff --git a/qt/aqt/taglimit.py b/qt/aqt/taglimit.py index b996bc1d2..ef87bb173 100644 --- a/qt/aqt/taglimit.py +++ b/qt/aqt/taglimit.py @@ -6,6 +6,8 @@ from __future__ import annotations from typing import List, Optional, Tuple import aqt +import aqt.customstudy +import aqt.forms from anki.lang import with_collapsed_whitespace from aqt.main import AnkiQt from aqt.qt import * diff --git a/qt/aqt/tts.py b/qt/aqt/tts.py index 6a944b325..4298c53af 100644 --- a/qt/aqt/tts.py +++ b/qt/aqt/tts.py @@ -39,6 +39,7 @@ from operator import attrgetter from typing import Any, cast import anki +import anki.template from anki import hooks from anki.sound import AVTag, TTSTag from anki.utils import checksum, is_win, tmpdir diff --git a/qt/aqt/webview.py b/qt/aqt/webview.py index 134d29337..0bde73a68 100644 --- a/qt/aqt/webview.py +++ b/qt/aqt/webview.py @@ -8,6 +8,7 @@ import sys from typing import Any, Callable, Optional, Sequence, cast import anki +import anki.lang from anki.lang import is_rtl from anki.utils import is_lin, is_mac, is_win from aqt import colors, gui_hooks