Releases: linuxserver/docker-beets
nightly-6abb901b-ls204
CI Report:
https://ci-tests.linuxserver.io/linuxserver/beets/nightly-6abb901b-ls204/index.html
LinuxServer Changes:
Full Changelog: nightly-95b33643-ls203...nightly-6abb901b-ls204
Remote Changes:
Add deprecation warning for musicbrainz.enabled but use it to load the plugin, centralise deprecations handling (#6127)
Fixes: #6121
This PR introduces a centralized deprecation system and adjusts
musicbrainz plugin loading to properly handle the deprecated
musicbrainz.enabled configuration option.
MusicBrainz
- Added deprecation warnings for the
musicbrainz.enabledconfiguration
option: - When set to
true, warns users to explicitly addmusicbrainzto
theirpluginsconfiguration and adds it if not already present - When set to
false, warns users and adds the plugin to
disabled_plugins(list
received by the--disable-pluginsflag)
Deprecations
-
Created new
beets/util/deprecation.pymodule with standardized
deprecation helpers:deprecate_for_user()- logs warnings visible to end users
-
deprecate_for_maintainers()- emitsDeprecationWarningfor
developers -
deprecate_imports()- handles deprecated module imports with
automatic version calculation -
_format_message()- generates consistent deprecation messages that
auto-calculate next major version -
Migrated all deprecation handling to use the new centralized
functions:- Replaced inline
warnings.warn()calls throughout codebase
- Replaced inline
-
Updated
deprecate_imports()signature to remove explicitversion
parameter -
Converted user-facing deprecation warnings in plugins to use
logger-baseddeprecate_for_user()
nightly-53931279-ls204
CI Report:
https://ci-tests.linuxserver.io/linuxserver/beets/nightly-53931279-ls204/index.html
LinuxServer Changes:
No changes
Remote Changes:
docs: fix link to plugin development docs (#6198)
Fixes the link to the plugin development documentation.
nightly-2bd77b98-ls204
CI Report:
https://ci-tests.linuxserver.io/linuxserver/beets/nightly-2bd77b98-ls204/index.html
LinuxServer Changes:
No changes
Remote Changes:
Fix convert --format with never_convert_lossy_files (#6171)
Description
Fixes #5625
When convert.never_convert_lossy_files is enabled, beet convert was
ignoring the explicit --format option and just copying the lossy files
without
transcoding them. For example:
beet convert format:mp3 --format opus
would still produce MP3 files instead of OPUS.
Change:
- Allows to override options
never_convert_lossy_files,max_bitrate
orno_convertforbeet convertas well as trying to convert to the
same format as existing already with a new option--force. That way,
for example lossy files selected by the query are transcoded to the
requested format anyway. - Keeps existing behavior for automatic conversion on import (no CLI
override there). - Adds tests to cover checking whether
--forcecorrectly overrides
settings or CLI options. - Documents the behavior in the convert plugin docs
Co-authored-by: J0J0 Todos [email protected]
nightly-95b33643-ls203
CI Report:
https://ci-tests.linuxserver.io/linuxserver/beets/nightly-95b33643-ls203/index.html
LinuxServer Changes:
Full Changelog: nightly-b4f0dbf5-ls202...nightly-95b33643-ls203
Remote Changes:
reflink() doesn't take Path parameters (#6186)
Fix test_successful_reflink, by passing the right kinds of parameters.
This was failing inside the reflink package:
/usr/lib/python3/dist-packages/reflink/reflink.py:34: in reflink
backend.clone(oldpath, newpath)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
oldpath = PosixPath('/tmp/tmpx3jirmhp/testfile')
newpath = PosixPath('/tmp/tmpx3jirmhp/testfile.dest')
def clone(oldpath, newpath):
if isinstance(oldpath, unicode):
oldpath = oldpath.encode(sys.getfilesystemencoding())
if isinstance(newpath, unicode):
newpath = newpath.encode(sys.getfilesystemencoding())
> newpath_c = ffi.new('char[]', newpath)
^^^^^^^^^^^^^^^^^^^^^^^^^^
E TypeError: expected new array length or list/tuple/str, not PosixPath
2.5.1-ls299
CI Report:
https://ci-tests.linuxserver.io/linuxserver/beets/2.5.1-ls299/index.html
LinuxServer Changes:
Full Changelog: 2.5.1-ls298...2.5.1-ls299
Remote Changes:
Updating PIP version of beets to 2.5.1
nightly-cb0d15ff-ls202
CI Report:
https://ci-tests.linuxserver.io/linuxserver/beets/nightly-cb0d15ff-ls202/index.html
LinuxServer Changes:
No changes
Remote Changes:
Remove gmusic plugin (#6192)
Sometimes it is time to let go of old things:
This PR removes the old gmusic plugin and all related docs.
The google play music service was shutdown in 2020 and already
deprecated in beets 1.6.0.
nightly-b9023521-ls202
CI Report:
https://ci-tests.linuxserver.io/linuxserver/beets/nightly-b9023521-ls202/index.html
LinuxServer Changes:
Full Changelog: nightly-d446e10f-ls201...nightly-b9023521-ls202
Remote Changes:
New Plugin: Titlecase (#6133)
This plugin aims to address the shortcomings of the %title function, as
brought up in issues #152, #3298 and an initial look to improvement with
#3411. It supplies a new string format command, %titlecase which
doesn't interfere with any prior expected behavior of the %title
format command.
It also adds the ability to apply titlecase logic to metadata fields
that a user selects, which is useful if you, like me, are looking for
stylistic consistency and the minor stylistic differences between
Musizbrainz, Discogs, Deezer etc, with title case are slightly
infuriating.
This will add an optional dependency of
titlecase, which allows the
titlecase core logic to be externally maintained.
If there's not enough draw to have this as a core plugin, I can also
spin this into an independent one, but it seemed like a recurring theme
that the %title string format didn't really behave as expected, and I
wanted my metadata to match too.
- Documentation. (If you've added a new command-line flag, for
example, find the appropriate page underdocs/to describe it.) - Changelog. (Add an entry to
docs/changelog.rstto the bottom of
one of the lists near the top of the document.) - Tests. - Not 100% coverage, but didn't see a lot of other plugins
with testing for import stages.
nightly-b4f0dbf5-ls202
CI Report:
https://ci-tests.linuxserver.io/linuxserver/beets/nightly-b4f0dbf5-ls202/index.html
LinuxServer Changes:
No changes
Remote Changes:
Fix recursion in inline plugin when item_fields shadow DB fields (#6115) (#6174)
Description
Fixes #6115.
When an inline field definition shadows a built-in database field (e.g.,
redefining track_no in item_fields), the inline plugin evaluates the
field template by constructing a dictionary of all item values.
Previously, this triggered unbounded recursion because _dict_for(obj)
re-entered __getitem__ for the same key while evaluating the computed
field.
This PR adds a per-object, per-key evaluation guard to prevent re-entry
when the same inline field is accessed during expression evaluation.
This resolves the recursion error while preserving normal computed-field
behavior.
A regression test
(TestInlineRecursion.test_no_recursion_when_inline_shadows_fixed_field)
verifies that $track_no evaluates correctly ('01') when shadowed.
To Do
-
Documentation. -
Changelog. - Tests.
2.5.1-ls298
CI Report:
https://ci-tests.linuxserver.io/linuxserver/beets/2.5.1-ls298/index.html
LinuxServer Changes:
Full Changelog: 2.5.1-ls297...2.5.1-ls298
Remote Changes:
Updating PIP version of beets to 2.5.1
nightly-f79c125d-ls201
CI Report:
https://ci-tests.linuxserver.io/linuxserver/beets/nightly-f79c125d-ls201/index.html
LinuxServer Changes:
Full Changelog: nightly-88ca0ce1-ls200...nightly-f79c125d-ls201
Remote Changes:
Catch ValueError when beetsplug.bpd cannot be imported (#6170)
Catch ValueError when setting gst required version
pytest.importorskip is used to catch the case when beetsplug.bpd cannot
be imported. On macOS, the gi module was able to be imported, but when
trying to specify gi.require_version, a ValueError is raised about
Gst being unavailable. pytest does not catch this ValueError during
importskip as it is not an ImportError, and thus the test suite
errors during the test collection phase.
With this change, we catch the ValueError, and re-raise it as an
ImportError and pytest gracefully skips those tests.
Fixes #3324