Anki/pylib/anki/errors.py
Abdo 5cde4b6941
Remove v1/v2 support from the backend (#2727)
* Remove v1/v2 support from deck list

* Remove v1/v2 support from most routines and show error

* Remove scheduler_version from preferences

* Fix formatting

* Remove v1/v2 conditionals from Python code

* Fix legacy importer

* Remove legacy hooks

* Add missing scheduler checks

* Remove V2 logic from deck options screen

* Remove the review_did_undo hook

* Restore ability to open old options with shift (dae)
2023-10-14 10:50:59 +10:00

132 lines
2.3 KiB
Python

# Copyright: Ankitects Pty Ltd and contributors
# License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
from __future__ import annotations
from enum import Enum
from typing import TYPE_CHECKING
if TYPE_CHECKING:
import anki.collection
class AnkiException(Exception):
"""
General Anki exception that all custom exceptions raised by Anki should
inherit from. Allows add-ons to easily identify Anki-native exceptions.
When inheriting from a Python built-in exception other than `Exception`,
please supply `AnkiException` as an additional inheritance:
```
class MyNewAnkiException(ValueError, AnkiException):
pass
```
"""
class BackendError(AnkiException):
"An error originating from Anki's backend."
def __init__(
self,
message: str,
help_page: anki.collection.HelpPage.V | None,
context: str | None,
backtrace: str | None,
) -> None:
super().__init__()
self._message = message
self.help_page = help_page
self.context = context
self.backtrace = backtrace
def __str__(self) -> str:
return self._message
class Interrupted(BackendError):
pass
class NetworkError(BackendError):
pass
class SyncErrorKind(Enum):
AUTH = 1
OTHER = 2
class SyncError(BackendError):
def __init__(
self,
message: str,
help_page: anki.collection.HelpPage.V | None,
context: str | None,
backtrace: str | None,
kind: SyncErrorKind,
):
self.kind = kind
super().__init__(message, help_page, context, backtrace)
class BackendIOError(BackendError):
pass
class CustomStudyError(BackendError):
pass
class DBError(BackendError):
pass
class CardTypeError(BackendError):
pass
class TemplateError(BackendError):
pass
class NotFoundError(BackendError):
pass
class DeletedError(BackendError):
pass
class ExistsError(BackendError):
pass
class UndoEmpty(BackendError):
pass
class FilteredDeckError(BackendError):
pass
class InvalidInput(BackendError):
pass
class SearchError(BackendError):
pass
class SchedulerUpgradeRequired(BackendError):
pass
class AbortSchemaModification(AnkiException):
pass
# legacy
DeckRenameError = FilteredDeckError
AnkiError = AbortSchemaModification