move the remaining exports from _backend

This commit is contained in:
Damien Elmes 2021-01-31 17:17:28 +10:00
parent 260a270eb0
commit ea31e8ca3e
4 changed files with 23 additions and 43 deletions

View file

@ -1,25 +1,9 @@
# Copyright: Ankitects Pty Ltd and contributors # Copyright: Ankitects Pty Ltd and contributors
# License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html # License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
# pylint: skip-file
"""
Python bindings for Anki's Rust libraries.
Please do not access methods on the backend directly - they may be changed
or removed at any time. Instead, please use the methods on the collection
instead. Eg, don't use col.backend.all_deck_config(), instead use
col.decks.all_config()
If you need to access a backend method that is not currently accessible
via the collection, please send through a pull request that adds a method.
"""
from __future__ import annotations from __future__ import annotations
import enum
import json
import os import os
from dataclasses import dataclass
from typing import TYPE_CHECKING, Any, Dict, List, Optional, Sequence, Union from typing import TYPE_CHECKING, Any, Dict, List, Optional, Sequence, Union
import anki.buildinfo import anki.buildinfo
@ -38,21 +22,21 @@ if TYPE_CHECKING:
assert rsbridge.buildhash() == anki.buildinfo.buildhash assert rsbridge.buildhash() == anki.buildinfo.buildhash
# FIXME: rather than adding new items here, items intended to be consumed
# by external libraries (eg aqt) should be exported in the module that
# refers to them, eg collection.py
SchedTimingToday = pb.SchedTimingTodayOut
BackendCard = pb.Card
BackendNote = pb.Note
Tag = pb.Tag
TagTreeNode = pb.TagTreeNode
NoteType = pb.NoteType
BackendNoteTypeID = pb.NoteTypeID
ConcatSeparator = pb.ConcatenateSearchesIn.Separator
CountsForDeckToday = pb.CountsForDeckTodayOut
class RustBackend(RustBackendGenerated): class RustBackend(RustBackendGenerated):
"""
Python bindings for Anki's Rust libraries.
Please do not access methods on the backend directly - they may be changed
or removed at any time. Instead, please use the methods on the collection
instead. Eg, don't use col._backend.all_deck_config(), instead use
col.decks.all_config()
If you need to access a backend method that is not currently accessible
via the collection, please send through a pull request that adds a
public method.
"""
def __init__( def __init__(
self, self,
ftl_folder: Optional[str] = None, ftl_folder: Optional[str] = None,

View file

@ -19,20 +19,14 @@ import anki.find
import anki.latex # sets up hook import anki.latex # sets up hook
import anki.template import anki.template
from anki import hooks from anki import hooks
from anki._backend import ( # pylint: disable=unused-import from anki._backend import RustBackend
ConcatSeparator,
FormatTimeSpanContext,
RustBackend,
)
# from anki._backend import _SyncStatus as SyncStatus
from anki.cards import Card from anki.cards import Card
from anki.config import ConfigManager from anki.config import ConfigManager
from anki.consts import * from anki.consts import *
from anki.dbproxy import DBProxy from anki.dbproxy import DBProxy
from anki.decks import DeckManager from anki.decks import DeckManager
from anki.errors import AnkiError, DBError from anki.errors import AnkiError, DBError
from anki.lang import TR from anki.lang import TR, FormatTimeSpanContext
from anki.media import MediaManager, media_paths_from_col_path from anki.media import MediaManager, media_paths_from_col_path
from anki.models import ModelManager from anki.models import ModelManager
from anki.notes import Note from anki.notes import Note
@ -551,9 +545,9 @@ class Collection:
term = self.backend.filter_to_search(term) term = self.backend.filter_to_search(term)
searches.append(term) searches.append(term)
if match_any: if match_any:
sep = ConcatSeparator.OR sep = _pb.ConcatenateSearchesIn.Separator.OR
else: else:
sep = ConcatSeparator.AND sep = _pb.ConcatenateSearchesIn.Separator.AND
search_string = self.backend.concatenate_searches(sep=sep, searches=searches) search_string = self.backend.concatenate_searches(sep=sep, searches=searches)
if negate: if negate:
search_string = self.backend.negate_search(search_string) search_string = self.backend.negate_search(search_string)

View file

@ -510,5 +510,5 @@ and notes.mid = ? and cards.ord = ?""",
self, m: NoteType, flds: str, allowEmpty: bool = True self, m: NoteType, flds: str, allowEmpty: bool = True
) -> List[int]: ) -> List[int]:
print("_availClozeOrds() is deprecated; use note.cloze_numbers_in_fields()") print("_availClozeOrds() is deprecated; use note.cloze_numbers_in_fields()")
note = anki._backend.BackendNote(fields=[flds]) note = _pb.Note(fields=[flds])
return list(self.col.backend.cloze_numbers_in_note(note)) return list(self.col.backend.cloze_numbers_in_note(note))

View file

@ -22,14 +22,16 @@ from typing import (
import anki # pylint: disable=unused-import import anki # pylint: disable=unused-import
import anki._backend.backend_pb2 as _pb import anki._backend.backend_pb2 as _pb
from anki import hooks from anki import hooks
from anki._backend import CountsForDeckToday, FormatTimeSpanContext, SchedTimingToday
from anki.cards import Card from anki.cards import Card
from anki.consts import * from anki.consts import *
from anki.decks import Deck, DeckConfig, DeckManager, DeckTreeNode, QueueConfig from anki.decks import Deck, DeckConfig, DeckManager, DeckTreeNode, QueueConfig
from anki.lang import FormatTimeSpanContext
from anki.notes import Note from anki.notes import Note
from anki.utils import from_json_bytes, ids2str, intTime from anki.utils import from_json_bytes, ids2str, intTime
CongratsInfoOut = anki._backend.backend_pb2.CongratsInfoOut CongratsInfo = _pb.CongratsInfoOut
CountsForDeckToday = _pb.CountsForDeckTodayOut
SchedTimingToday = _pb.SchedTimingTodayOut
UnburyCurrentDeckMode = _pb.UnburyCardsInCurrentDeckIn.Mode # pylint:disable=no-member UnburyCurrentDeckMode = _pb.UnburyCardsInCurrentDeckIn.Mode # pylint:disable=no-member
BuryOrSuspendMode = _pb.BuryOrSuspendCardsIn.Mode # pylint:disable=no-member BuryOrSuspendMode = _pb.BuryOrSuspendCardsIn.Mode # pylint:disable=no-member
@ -1236,7 +1238,7 @@ due = (case when odue>0 then odue else due end), odue = 0, odid = 0, usn = ? whe
# Deck finished state # Deck finished state
########################################################################## ##########################################################################
def congratulations_info(self) -> CongratsInfoOut: def congratulations_info(self) -> CongratsInfo:
return self.col.backend.congrats_info() return self.col.backend.congrats_info()
def finishedMsg(self) -> str: def finishedMsg(self) -> str: