mirror of
https://github.com/beetbox/beets.git
synced 2025-12-06 08:39:17 +01:00
Move vfs.py to beetsplug._utils package to avoid polluting core namespace (#6017)
This PR moves the `vfs.py` module, which is only used by plugins, to avoid polluting the main beets namespace. Also exposes the `vfs` and `art` module from beets with a deprecation warning.
This commit is contained in:
parent
b06f3f6aa6
commit
4782e96599
8 changed files with 40 additions and 9 deletions
|
|
@ -72,4 +72,4 @@ d93ddf8dd43e4f9ed072a03829e287c78d2570a2
|
||||||
# Moved plugin docs Further Reading chapter
|
# Moved plugin docs Further Reading chapter
|
||||||
33f1a5d0bef8ca08be79ee7a0d02a018d502680d
|
33f1a5d0bef8ca08be79ee7a0d02a018d502680d
|
||||||
# Moved art.py utility module from beets into beetsplug
|
# Moved art.py utility module from beets into beetsplug
|
||||||
28aee0fde463f1e18dfdba1994e2bdb80833722f
|
28aee0fde463f1e18dfdba1994e2bdb80833722f
|
||||||
|
|
|
||||||
|
|
@ -17,10 +17,25 @@ from sys import stderr
|
||||||
|
|
||||||
import confuse
|
import confuse
|
||||||
|
|
||||||
|
from .util import deprecate_imports
|
||||||
|
|
||||||
__version__ = "2.4.0"
|
__version__ = "2.4.0"
|
||||||
__author__ = "Adrian Sampson <adrian@radbox.org>"
|
__author__ = "Adrian Sampson <adrian@radbox.org>"
|
||||||
|
|
||||||
|
|
||||||
|
def __getattr__(name: str):
|
||||||
|
"""Handle deprecated imports."""
|
||||||
|
return deprecate_imports(
|
||||||
|
old_module=__name__,
|
||||||
|
new_module_by_name={
|
||||||
|
"art": "beetsplug._utils",
|
||||||
|
"vfs": "beetsplug._utils",
|
||||||
|
},
|
||||||
|
name=name,
|
||||||
|
version="3.0.0",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class IncludeLazyConfig(confuse.LazyConfig):
|
class IncludeLazyConfig(confuse.LazyConfig):
|
||||||
"""A version of Confuse's LazyConfig that also merges in data from
|
"""A version of Confuse's LazyConfig that also merges in data from
|
||||||
YAML files specified in an `include` setting.
|
YAML files specified in an `include` setting.
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
from . import art, vfs
|
||||||
|
|
||||||
|
__all__ = ["art", "vfs"]
|
||||||
|
|
@ -16,17 +16,25 @@
|
||||||
libraries.
|
libraries.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from typing import Any, NamedTuple
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from typing import TYPE_CHECKING, NamedTuple
|
||||||
|
|
||||||
from beets import util
|
from beets import util
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from beets.library import Library
|
||||||
|
|
||||||
|
|
||||||
class Node(NamedTuple):
|
class Node(NamedTuple):
|
||||||
files: dict[str, Any]
|
files: dict[str, int]
|
||||||
dirs: dict[str, Any]
|
# Maps filenames to Item ids.
|
||||||
|
|
||||||
|
dirs: dict[str, Node]
|
||||||
|
# Maps directory names to child nodes.
|
||||||
|
|
||||||
|
|
||||||
def _insert(node, path, itemid):
|
def _insert(node: Node, path: list[str], itemid: int):
|
||||||
"""Insert an item into a virtual filesystem node."""
|
"""Insert an item into a virtual filesystem node."""
|
||||||
if len(path) == 1:
|
if len(path) == 1:
|
||||||
# Last component. Insert file.
|
# Last component. Insert file.
|
||||||
|
|
@ -40,7 +48,7 @@ def _insert(node, path, itemid):
|
||||||
_insert(node.dirs[dirname], rest, itemid)
|
_insert(node.dirs[dirname], rest, itemid)
|
||||||
|
|
||||||
|
|
||||||
def libtree(lib):
|
def libtree(lib: Library) -> Node:
|
||||||
"""Generates a filesystem-like directory tree for the files
|
"""Generates a filesystem-like directory tree for the files
|
||||||
contained in `lib`. Filesystem nodes are (files, dirs) named
|
contained in `lib`. Filesystem nodes are (files, dirs) named
|
||||||
tuples in which both components are dictionaries. The first
|
tuples in which both components are dictionaries. The first
|
||||||
|
|
@ -17,10 +17,11 @@
|
||||||
import cProfile
|
import cProfile
|
||||||
import timeit
|
import timeit
|
||||||
|
|
||||||
from beets import importer, library, plugins, ui, vfs
|
from beets import importer, library, plugins, ui
|
||||||
from beets.autotag import match
|
from beets.autotag import match
|
||||||
from beets.plugins import BeetsPlugin
|
from beets.plugins import BeetsPlugin
|
||||||
from beets.util.functemplate import Template
|
from beets.util.functemplate import Template
|
||||||
|
from beetsplug._utils import vfs
|
||||||
|
|
||||||
|
|
||||||
def aunique_benchmark(lib, prof):
|
def aunique_benchmark(lib, prof):
|
||||||
|
|
|
||||||
|
|
@ -30,10 +30,11 @@ from typing import TYPE_CHECKING
|
||||||
|
|
||||||
import beets
|
import beets
|
||||||
import beets.ui
|
import beets.ui
|
||||||
from beets import dbcore, logging, vfs
|
from beets import dbcore, logging
|
||||||
from beets.library import Item
|
from beets.library import Item
|
||||||
from beets.plugins import BeetsPlugin
|
from beets.plugins import BeetsPlugin
|
||||||
from beets.util import as_string, bluelet
|
from beets.util import as_string, bluelet
|
||||||
|
from beetsplug._utils import vfs
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from beets.dbcore.query import Query
|
from beets.dbcore.query import Query
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,9 @@ Other changes:
|
||||||
- Moved ``art.py`` utility module from ``beets`` into ``beetsplug`` namespace as
|
- Moved ``art.py`` utility module from ``beets`` into ``beetsplug`` namespace as
|
||||||
it is not used in the core beets codebase. It can now be found in
|
it is not used in the core beets codebase. It can now be found in
|
||||||
``beetsplug._utils``.
|
``beetsplug._utils``.
|
||||||
|
- Moved ``vfs.py`` utility module from ``beets`` into ``beetsplug`` namespace as
|
||||||
|
it is not used in the core beets codebase. It can now be found in
|
||||||
|
``beetsplug._utils``.
|
||||||
- :class:`beets.metadata_plugin.MetadataSourcePlugin`: Remove discogs specific
|
- :class:`beets.metadata_plugin.MetadataSourcePlugin`: Remove discogs specific
|
||||||
disambiguation stripping.
|
disambiguation stripping.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,9 +14,9 @@
|
||||||
|
|
||||||
"""Tests for the virtual filesystem builder.."""
|
"""Tests for the virtual filesystem builder.."""
|
||||||
|
|
||||||
from beets import vfs
|
|
||||||
from beets.test import _common
|
from beets.test import _common
|
||||||
from beets.test.helper import BeetsTestCase
|
from beets.test.helper import BeetsTestCase
|
||||||
|
from beetsplug._utils import vfs
|
||||||
|
|
||||||
|
|
||||||
class VFSTest(BeetsTestCase):
|
class VFSTest(BeetsTestCase):
|
||||||
Loading…
Reference in a new issue