Skip to content

Releases: linuxserver/docker-beets

nightly-6abb901b-ls204

02 Dec 02:40
cef13b8

Choose a tag to compare

Pre-release

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.enabled configuration
    option:
  • When set to true, warns users to explicitly add musicbrainz to
    their plugins configuration 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-plugins flag)

Deprecations

  • Created new beets/util/deprecation.py module with standardized
    deprecation helpers:

    • deprecate_for_user() - logs warnings visible to end users
  • deprecate_for_maintainers() - emits DeprecationWarning for
    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
  • Updated deprecate_imports() signature to remove explicit version
    parameter

  • Converted user-facing deprecation warnings in plugins to use
    logger-based deprecate_for_user()

nightly-53931279-ls204

02 Dec 11:08
cef13b8

Choose a tag to compare

Pre-release

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

03 Dec 22:07
cef13b8

Choose a tag to compare

Pre-release

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
    or no_convert for beet convert as 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 --force correctly overrides
    settings or CLI options.
  • Documents the behavior in the convert plugin docs

Co-authored-by: J0J0 Todos [email protected]

nightly-95b33643-ls203

30 Nov 06:12
1eea2be

Choose a tag to compare

Pre-release

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

28 Nov 18:57
7cea1de

Choose a tag to compare

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

28 Nov 21:07
d90ecb8

Choose a tag to compare

Pre-release

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

23 Nov 19:12
d90ecb8

Choose a tag to compare

Pre-release

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 under docs/ to describe it.)
  • Changelog. (Add an entry to docs/changelog.rst to 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

26 Nov 02:35
d90ecb8

Choose a tag to compare

Pre-release

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

21 Nov 19:00
fd5ecce

Choose a tag to compare

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

19 Nov 12:10
51cfc25

Choose a tag to compare

Pre-release

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