[BUG] Bundled beets-extrafiles plugin is incompatible with bundled beets 2.13.1
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 48/100
Direzione di ricerca
Inizia esaminando il codice sorgente incluso di beets-extrafiles in /lsiopy/lib/python3.12/site-packages/beetsplug/extrafiles.py e la configurazione delle dipendenze o del packaging dell’immagine. Riproduci il fallimento con beets 2.13.1 ed extrafiles abilitato, quindi verifica che la risoluzione di compatibilità scelta consenta al plugin di caricarsi correttamente e di gestire file aggiuntivi degli album.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Is there an existing issue for this?
- I have searched the existing issues
Current Behavior
With extrafiles enabled in the beets configuration, every beets invocation reports:
** error loading plugin extrafiles
Traceback (most recent call last):
File "/lsiopy/lib/python3.12/site-packages/beets/plugins.py", line 438, in _get_plugin
return obj()
^^^^^
File "/lsiopy/lib/python3.12/site-packages/beetsplug/extrafiles.py", line 82, in init
self.path_formats = beets.ui.get_path_formats(self.config['paths'])
^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: module 'beets.ui' has no attribute 'get_path_formats'
beets then continues without loading extrafiles:
beets version 2.13.1
Python version 3.12.14
plugins: chroma, duplicates, embedart, fetchart, info, lastgenre, missing, musicbrainz, replaygain
The bundled extrafiles plugin therefore cannot currently be used with the bundled beets version.
Expected Behavior
Since beets-extrafiles is included with the LinuxServer beets image, enabling it in config.yaml should load the plugin successfully and allow beets to handle additional non-audio album files.
At minimum, plugins bundled with the image should be compatible with the beets version shipped in the same image.
Steps To Reproduce
- Run the current LinuxServer beets image.
- Verify the beets version:
beet version
The affected image reports:
beets version 2.13.1
Python version 3.12.14
- Add extrafiles to the plugin list in config.yaml, for example:
plugins: musicbrainz chroma fetchart embedart replaygain lastgenre duplicates missing info extrafiles
extrafiles:
patterns:
documents:
- '.[pP][dD][fF]'
- '.[tT][xX][tT]'
-
Run:
beet version -
Observe that extrafiles fails during plugin initialization with:
AttributeError: module 'beets.ui' has no attribute 'get_path_formats'
The error originates from:
self.path_formats = beets.ui.get_path_formats(self.config['paths'])
in:
/lsiopy/lib/python3.12/site-packages/beetsplug/extrafiles.py
Environment
Container image: lscr.io/linuxserver/beets:latest
Image digest: sha256:ebbf760517976c1fd77420e446aa89af414fef1afd3e162c5ba3996bf585d3d3 beets version: 2.13.1 Python version: 3.12.14 Plugin: bundled beets-extrafiles Plugin path: /lsiopy/lib/python3.12/site-packages/beetsplug/extrafiles.py
CPU architecture
x86-64
Docker creation
The container is run using Docker Compose with:
lscr.io/linuxserver/beets:latest
The exact image currently in use is:
sha256:ebbf760517976c1fd77420e446aa89af414fef1afd3e162c5ba3996bf585d3d3
The issue is reproducible from within the running container and does not appear to depend on volume mappings or the contents of the music library.
Container logs
** error loading plugin extrafiles Traceback (most recent call last): File "/lsiopy/lib/python3.12/site-packages/beets/plugins.py", line 438, in _get_plugin return obj() ^^^^^ File "/lsiopy/lib/python3.12/site-packages/beetsplug/extrafiles.py", line 82, in __init__ self.path_formats = beets.ui.get_path_formats(self.config['paths']) ^^^^^^^^^^^^^^^^^^^^^^^^^ AttributeError: module 'beets.ui' has no attribute 'get_path_formats' beets version 2.13.1 Python version 3.12.14 plugins: chroma, duplicates, embedart, fetchart, info, lastgenre, missing, musicbrainz, replaygain
Workaround / Additional context
A direct modification of:
/lsiopy/lib/python3.12/site-packages/beetsplug/extrafiles.py
can work around the immediate initialization error, for example by avoiding the obsolete beets.ui.get_path_formats(...) call when custom extrafiles.paths are not required.
However, modifying files inside the container does not seem like a suitable permanent workaround:
the modification is lost when the container is recreated;
it is not visible from the image or Compose configuration;
it could conflict with a future upstream fix.
A safer temporary workaround is therefore to disable extrafiles.
For users who need to preserve non-audio album artifacts such as PDF booklets, liner notes, artwork, CUE/log files, etc., beets-filetote appears to be a maintained alternative and can be installed separately rather than patching the bundled plugin in place.
Possible resolutions might therefore include:
updating/fixing the bundled beets-extrafiles plugin so it is compatible with the shipped beets version;
replacing it with a maintained compatible alternative; or
no longer bundling/advertising beets-extrafiles until it is compatible again.
The main issue is that a plugin bundled with the image currently depends on a beets API that is absent from the beets version shipped in the same image.
- Lingua principale
- Dockerfile
- Stelle
- 186
- Fork
- 56
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Issue simili
-
core dependencies
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 80/100
-
bug github_actions
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
registrystack/registry-stack#1393 ·
-
module: core
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
bigbluebutton/bigbluebutton#25849 ·
-
bug engine
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
rocky-data/rocky#2181 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100