The importer list have a Hook (#1543)

* The importer list have a Hook

Previously, add-on 175027074 simply edited the list once. It became impossible
since the list became a function. Hence I need a filter to add the list here.

@kelciour (nice to meet you by the way), you may be interested by it too (at
least if I believe efb1ce46d4 )

I would have preferred to use `anki.importing.base.Importer` instead of
`Any`. However, this leads to
> Name "anki.importing.base.Importer" is not defined  [name-defined]
when I run test.

Helps to solve this would be welcomed

* mention the hook may not last too long (dae)
This commit is contained in:
Arthur Milchior 2021-12-09 02:20:29 +01:00 committed by GitHub
parent 7ef40cb850
commit 08ad9f33b9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 2 deletions

View File

@ -3,6 +3,7 @@
from typing import Any, Callable, Sequence, Type, Union
from anki import hooks
from anki.collection import Collection
from anki.importing.anki2 import Anki2Importer
from anki.importing.apkg import AnkiPackageImporter
@ -15,7 +16,7 @@ from anki.lang import TR
def importers(col: Collection) -> Sequence[tuple[str, type[Importer]]]:
return (
importers = [
(col.tr.importing_text_separated_by_tabs_or_semicolons(), TextImporter),
(
col.tr.importing_packaged_anki_deckcollection_apkg_colpkg_zip(),
@ -24,4 +25,6 @@ def importers(col: Collection) -> Sequence[tuple[str, type[Importer]]]:
(col.tr.importing_mnemosyne_20_deck_db(), MnemosyneImporter),
(col.tr.importing_supermemo_xml_export_xml(), SupermemoXmlImporter),
(col.tr.importing_pauker_18_lesson_paugz(), PaukerImporter),
)
]
hooks.importing_importers(importers)
return importers

View File

@ -93,6 +93,17 @@ hooks = [
doc="""Allows changing the number of rev card for this deck (without
considering descendants).""",
),
Hook(
name="importing_importers",
args=["importers: list[tuple[str, Any]]"],
doc="""Allows updating the list of importers.
The resulting list is not saved and should be changed each time the
filter is called.
NOTE: Updates to the import/export code are expected in the coming
months, and this hook may be replaced with another solution at that
time. Tracked on https://github.com/ankitects/anki/issues/1018""",
),
# obsolete
Hook(
name="deck_added",