From d3cc63efb09f6614dc74557331a51352f44137ad Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Fri, 17 Jan 2020 10:17:33 +1000 Subject: [PATCH] move types.py into the files responsible for each type --- pylib/anki/collection.py | 5 ++--- pylib/anki/latex.py | 2 +- pylib/anki/models.py | 10 +++++++++- pylib/anki/notes.py | 2 +- pylib/anki/rsbackend.py | 3 +-- pylib/anki/stdmodels.py | 2 +- pylib/anki/template.py | 22 +++++++++++++++++++++- pylib/anki/types.py | 38 -------------------------------------- qt/aqt/browser.py | 2 +- 9 files changed, 37 insertions(+), 49 deletions(-) delete mode 100644 pylib/anki/types.py diff --git a/pylib/anki/collection.py b/pylib/anki/collection.py index 4aa9f0e0c..fabe871a2 100644 --- a/pylib/anki/collection.py +++ b/pylib/anki/collection.py @@ -25,14 +25,13 @@ from anki.errors import AnkiError from anki.hooks import runFilter from anki.lang import _, ngettext from anki.media import MediaManager -from anki.models import ModelManager +from anki.models import ModelManager, NoteType, Template from anki.notes import Note from anki.rsbackend import RustBackend from anki.sched import Scheduler as V1Scheduler from anki.schedv2 import Scheduler as V2Scheduler from anki.tags import TagManager -from anki.template import TemplateRenderContext, render_card -from anki.types import NoteType, QAData, Template +from anki.template import QAData, TemplateRenderContext, render_card from anki.utils import ( devMode, fieldChecksum, diff --git a/pylib/anki/latex.py b/pylib/anki/latex.py index 3df5b2179..94db38bc6 100644 --- a/pylib/anki/latex.py +++ b/pylib/anki/latex.py @@ -12,8 +12,8 @@ from typing import Any, Optional, Tuple import anki from anki import hooks from anki.lang import _ +from anki.models import NoteType from anki.template import TemplateRenderContext -from anki.types import NoteType from anki.utils import call, checksum, isMac, namedtmp, stripHTML, tmpdir pngCommands = [ diff --git a/pylib/anki/models.py b/pylib/anki/models.py index 79a198fa3..9206b0c5c 100644 --- a/pylib/anki/models.py +++ b/pylib/anki/models.py @@ -13,9 +13,17 @@ import anki # pylint: disable=unused-import from anki import hooks from anki.consts import * from anki.lang import _ -from anki.types import Field, NoteType, Template from anki.utils import checksum, ids2str, intTime, joinFields, splitFields +# types +NoteType = Dict[str, Any] +Field = Dict[str, Any] +Template = Dict[str, Union[str, int, None]] +TemplateRequirementType = str # Union["all", "any", "none"] +# template ordinal, type, list of field ordinals +TemplateRequiredFieldOrds = Tuple[int, TemplateRequirementType, List[int]] +AllTemplateReqs = List[TemplateRequiredFieldOrds] + # Models ########################################################################## diff --git a/pylib/anki/notes.py b/pylib/anki/notes.py index 7878ad00b..a312ac43a 100644 --- a/pylib/anki/notes.py +++ b/pylib/anki/notes.py @@ -6,7 +6,7 @@ from __future__ import annotations from typing import Any, Dict, List, Optional, Tuple import anki # pylint: disable=unused-import -from anki.types import NoteType +from anki.models import NoteType from anki.utils import ( fieldChecksum, guid64, diff --git a/pylib/anki/rsbackend.py b/pylib/anki/rsbackend.py index 50c0aff86..9e5eee8b3 100644 --- a/pylib/anki/rsbackend.py +++ b/pylib/anki/rsbackend.py @@ -8,8 +8,7 @@ import ankirspy # pytype: disable=import-error import anki.backend_pb2 as pb import anki.buildinfo - -from .types import AllTemplateReqs +from anki.models import AllTemplateReqs assert ankirspy.buildhash() == anki.buildinfo.buildhash diff --git a/pylib/anki/stdmodels.py b/pylib/anki/stdmodels.py index 0da5fe2b2..3776638ca 100644 --- a/pylib/anki/stdmodels.py +++ b/pylib/anki/stdmodels.py @@ -5,7 +5,7 @@ from typing import Any, Callable, List, Tuple, Union from anki.consts import MODEL_CLOZE from anki.lang import _ -from anki.types import NoteType +from anki.models import NoteType models: List[Tuple[Union[Callable[[], str], str], Callable[[Any], NoteType]]] = [] diff --git a/pylib/anki/template.py b/pylib/anki/template.py index 55018957f..ad9c3e50a 100644 --- a/pylib/anki/template.py +++ b/pylib/anki/template.py @@ -33,9 +33,29 @@ from typing import Any, Dict, List, Optional, Tuple import anki from anki import hooks +from anki.models import NoteType from anki.rsbackend import TemplateReplacementList from anki.sound import stripSounds -from anki.types import NoteType, QAData + +QAData = Tuple[ + # Card ID this QA comes from. Corresponds to 'cid' column. + int, + # Note ID this QA comes from. Corresponds to 'nid' column. + int, + # ID of the model (i.e., NoteType) for this QA's note. Corresponds to 'mid' column. + int, + # Deck ID. Corresponds to 'did' column. + int, + # Index of the card template (within the NoteType) this QA was built + # from. Corresponds to 'ord' column. + int, + # Tags, separated by space. Corresponds to 'tags' column. + str, + # Corresponds to 'flds' column. TODO: document. + str, + # Corresponds to 'cardFlags' column. TODO: document + int, +] class TemplateRenderContext: diff --git a/pylib/anki/types.py b/pylib/anki/types.py deleted file mode 100644 index 19395eaa2..000000000 --- a/pylib/anki/types.py +++ /dev/null @@ -1,38 +0,0 @@ -from typing import Any, Dict, List, Tuple, Union - -# Model attributes are stored in a dict keyed by strings. This type alias -# provides more descriptive function signatures than just 'Dict[str, Any]' -# for methods that operate on models. -# TODO: Use https://www.python.org/dev/peps/pep-0589/ when available in -# supported Python versions. - -NoteType = Dict[str, Any] - -Field = Dict[str, Any] - -Template = Dict[str, Union[str, int, None]] - -QAData = Tuple[ - # Card ID this QA comes from. Corresponds to 'cid' column. - int, - # Note ID this QA comes from. Corresponds to 'nid' column. - int, - # ID of the model (i.e., NoteType) for this QA's note. Corresponds to 'mid' column. - int, - # Deck ID. Corresponds to 'did' column. - int, - # Index of the card template (within the NoteType) this QA was built - # from. Corresponds to 'ord' column. - int, - # Tags, separated by space. Corresponds to 'tags' column. - str, - # Corresponds to 'flds' column. TODO: document. - str, - # Corresponds to 'cardFlags' column. TODO: document - int, -] - -TemplateRequirementType = str # Union["all", "any", "none"] -# template ordinal, type, list of field ordinals -TemplateRequiredFieldOrds = Tuple[int, TemplateRequirementType, List[int]] -AllTemplateReqs = List[TemplateRequiredFieldOrds] diff --git a/qt/aqt/browser.py b/qt/aqt/browser.py index c13ffd0ea..b8c38352d 100644 --- a/qt/aqt/browser.py +++ b/qt/aqt/browser.py @@ -18,8 +18,8 @@ from anki.cards import Card from anki.collection import _Collection from anki.consts import * from anki.lang import _, ngettext +from anki.models import NoteType from anki.notes import Note -from anki.types import NoteType from anki.utils import ( bodyClass, fmtTimeSpan,