mirror of
https://github.com/beetbox/beets.git
synced 2025-12-06 16:42:42 +01:00
Improve typing for template fields and funcs
This commit is contained in:
parent
9c37f94171
commit
2eff2d25f5
1 changed files with 15 additions and 21 deletions
|
|
@ -151,9 +151,9 @@ class BeetsPlugin(metaclass=abc.ABCMeta):
|
|||
list
|
||||
)
|
||||
listeners: ClassVar[dict[EventType, list[Listener]]] = defaultdict(list)
|
||||
template_funcs: TFuncMap[str] | None = None
|
||||
template_fields: TFuncMap[Item] | None = None
|
||||
album_template_fields: TFuncMap[Album] | None = None
|
||||
template_funcs: ClassVar[TFuncMap[str]] = {}
|
||||
template_fields: ClassVar[TFuncMap[Item]] = {}
|
||||
album_template_fields: ClassVar[TFuncMap[Album]] = {}
|
||||
|
||||
name: str
|
||||
config: ConfigView
|
||||
|
|
@ -222,11 +222,11 @@ class BeetsPlugin(metaclass=abc.ABCMeta):
|
|||
# Set class attributes if they are not already set
|
||||
# for the type of plugin.
|
||||
if not self.template_funcs:
|
||||
self.template_funcs = {}
|
||||
self.template_funcs = {} # type: ignore[misc]
|
||||
if not self.template_fields:
|
||||
self.template_fields = {}
|
||||
self.template_fields = {} # type: ignore[misc]
|
||||
if not self.album_template_fields:
|
||||
self.album_template_fields = {}
|
||||
self.album_template_fields = {} # type: ignore[misc]
|
||||
|
||||
self.early_import_stages = []
|
||||
self.import_stages = []
|
||||
|
|
@ -368,8 +368,6 @@ class BeetsPlugin(metaclass=abc.ABCMeta):
|
|||
"""
|
||||
|
||||
def helper(func: TFunc[str]) -> TFunc[str]:
|
||||
if cls.template_funcs is None:
|
||||
cls.template_funcs = {}
|
||||
cls.template_funcs[name] = func
|
||||
return func
|
||||
|
||||
|
|
@ -384,8 +382,6 @@ class BeetsPlugin(metaclass=abc.ABCMeta):
|
|||
"""
|
||||
|
||||
def helper(func: TFunc[Item]) -> TFunc[Item]:
|
||||
if cls.template_fields is None:
|
||||
cls.template_fields = {}
|
||||
cls.template_fields[name] = func
|
||||
return func
|
||||
|
||||
|
|
@ -565,7 +561,6 @@ def template_funcs() -> TFuncMap[str]:
|
|||
"""
|
||||
funcs: TFuncMap[str] = {}
|
||||
for plugin in find_plugins():
|
||||
if plugin.template_funcs:
|
||||
funcs.update(plugin.template_funcs)
|
||||
return funcs
|
||||
|
||||
|
|
@ -592,14 +587,13 @@ F = TypeVar("F")
|
|||
|
||||
|
||||
def _check_conflicts_and_merge(
|
||||
plugin: BeetsPlugin, plugin_funcs: dict[str, F] | None, funcs: dict[str, F]
|
||||
plugin: BeetsPlugin, plugin_funcs: dict[str, F], funcs: dict[str, F]
|
||||
) -> None:
|
||||
"""Check the provided template functions for conflicts and merge into funcs.
|
||||
|
||||
Raises a `PluginConflictError` if a plugin defines template functions
|
||||
for fields that another plugin has already defined template functions for.
|
||||
"""
|
||||
if plugin_funcs:
|
||||
if not plugin_funcs.keys().isdisjoint(funcs.keys()):
|
||||
conflicted_fields = ", ".join(plugin_funcs.keys() & funcs.keys())
|
||||
raise PluginConflictError(
|
||||
|
|
|
|||
Loading…
Reference in a new issue