Releases: linuxserver/docker-beets
2.11.0-ls335
CI Report:
https://ci-tests.linuxserver.io/linuxserver/beets/2.11.0-ls335/index.html
LinuxServer Changes:
Full Changelog: 2.11.0-ls334...2.11.0-ls335
Remote Changes:
Updating PIP version of beets to 2.11.0
nightly-ec729d31-ls298
CI Report:
https://ci-tests.linuxserver.io/linuxserver/beets/nightly-ec729d31-ls298/index.html
LinuxServer Changes:
No changes
Remote Changes:
lyrics: add rate limiting and exponential backoff to prevent 429 errors (#6729)
Add a LyricsSession class that mounts RateLimitAdapter (4 req/sec) and
configures urllib3 Retry with exponential backoff on 429 responses. Each
backend instance gets its own session so rate limits apply independently
per API source.
Fixes #6728
nightly-7de08ba6-ls298
CI Report:
https://ci-tests.linuxserver.io/linuxserver/beets/nightly-7de08ba6-ls298/index.html
LinuxServer Changes:
No changes
Remote Changes:
refactor: Removed ImportTestCase in favor of ImportHelper (#6680)
Description
This PR removes ImportTestCase and replaces all occurrences with
ImportHelper + pytest.
This touches:
test_scrubtest_filefiltertest_replaygaintest_chromatest_import
This is related to the multi-step efforts to improve logging in beets
beetbox/beets#6553
nightly-01808922-ls298
CI Report:
https://ci-tests.linuxserver.io/linuxserver/beets/nightly-01808922-ls298/index.html
LinuxServer Changes:
Full Changelog: nightly-6f8d55da-ls297...nightly-01808922-ls298
Remote Changes:
Cast keys to list to avoid exception in optparse (#6725)
In #6695, the Item and Album all_keys methods return sets now. This
causes an error when used in optparse for choices as it doesn't accept
sets:
Traceback (most recent call last):
File "/home/user/.local/bin/beet", line 10, in <module>
sys.exit(main())
~~~~^^
File "/home/user/.local/lib/beets/beets/ui/__init__.py", line 964, in main
_raw_main(args)
~~~~~~~~~^^^^^^
File "/home/user/.local/lib/beets/beets/ui/__init__.py", line 940, in _raw_main
subcommands, lib = _setup(options)
~~~~~~^^^^^^^^^
File "/home/user/.local/lib/beets/beets/ui/__init__.py", line 781, in _setup
subcommands.extend(plugins.commands())
~~~~~~~~~~~~~~~~^^
File "/home/user/.local/lib/beets/beets/plugins.py", line 508, in commands
out += plugin.commands()
~~~~~~~~~~~~~~~^^
File "/home/user/.local/lib/beets/beetsplug/fish.py", line 80, in commands
cmd.parser.add_option(
~~~~~~~~~~~~~~~~~~~~~^
"-e",
^^^^^
...<4 lines>...
help="include specified field *values* in completions",
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/usr/lib/python3.14/optparse.py", line 990, in add_option
option = self.option_class(*args, **kwargs)
File "/usr/lib/python3.14/optparse.py", line 571, in __init__
checker(self)
~~~~~~~^^^^^^
File "/usr/lib/python3.14/optparse.py", line 658, in _check_choice
raise OptionError(
"choices must be a list of strings ('%s' supplied)"
% str(type(self.choices)).split("'")[1], self)
optparse.OptionError: option -e/--extravalues: choices must be a list of strings ('set' supplied)
nightly-bd325df2-ls297
CI Report:
https://ci-tests.linuxserver.io/linuxserver/beets/nightly-bd325df2-ls297/index.html
LinuxServer Changes:
Full Changelog: nightly-b208fe5d-ls296...nightly-bd325df2-ls297
Remote Changes:
lint: enable flake8-pie, flake8-return, flake8-builtins (#6691)
- Enables additional Ruff lint rules in
pyproject.toml:PIE,RET,
andA. - Applies the required cleanup across the codebase, mostly as
non-functional refactors:- simplifies return/control-flow patterns
- renames variables that shadow Python builtins like
id,dir,
type,hash, andinput - adds a few targeted
noqaexceptions where names are part of stable
APIs or intentional signatures - Touches core modules, plugins, tests, and docs, but the architectural
impact is low: this is mainly a repo-wide consistency and
maintainability pass rather than a behavior change. - Updates
.git-blame-ignore-revsso these broad lint-only commits are
ignored in blame, keeping future history easier to review.
nightly-6f8d55da-ls297
CI Report:
https://ci-tests.linuxserver.io/linuxserver/beets/nightly-6f8d55da-ls297/index.html
LinuxServer Changes:
No changes
Remote Changes:
Fix replace command callback signature (#6700)
Description
Fixes #6260.
The replace plugin assigns ReplacePlugin.run directly as the
replace command callback. Beets command callbacks are invoked with
(lib, opts, args), but ReplacePlugin.run only accepted (lib, args), so invoking the command raised:
TypeError: ReplacePlugin.run() takes 3 positional arguments but 4 were given
This change updates the callback signature to accept the options
argument and adds regression coverage for invoking beet replace
through the command runner.
To Do
-
Documentation.This is a bug fix for an existing command. - Changelog. Added an entry to
docs/changelog.rst. - Tests. Added regression coverage for the command callback path.
Tests
BEETSDIR=/private/tmp/beets-test-config UV_CACHE_DIR=/private/tmp/uv-cache uv run pytest test/plugins/test_replace.py
# 10 passednightly-b208fe5d-ls296
CI Report:
https://ci-tests.linuxserver.io/linuxserver/beets/nightly-b208fe5d-ls296/index.html
LinuxServer Changes:
Full Changelog: nightly-8a44a781-ls295...nightly-b208fe5d-ls296
Remote Changes:
badfiles: added config/cli options to automatically take action on error/warning (#6295)
Updated the badfiles plugin to support automatic actions taken on
warning or error imports, to be used with check_on_import: yes.
Example usage:
badfiles:
check_on_import: yes
import_action_on_warning: continue
import_action_on_error: skipThe above configuration will skip badfiles that error out, but ignore
any warnings found.
The default for both options is ask, preserving current behavior.
nightly-8a44a781-ls295
CI Report:
https://ci-tests.linuxserver.io/linuxserver/beets/nightly-8a44a781-ls295/index.html
LinuxServer Changes:
Full Changelog: nightly-0786ea8e-ls294...nightly-8a44a781-ls295
Remote Changes:
Fix titlecase template documentation (#6714)
- Correct the titlecase plugin path example to use
%titlecase{...}
syntax. - Use the documented
$albumfield in that example. - Add the titlecase plugin to the plugin-provided template functions
list. - Add an unreleased changelog note.
Fixes #6697.
Testing
git diff --check- Loaded
beets/util/functemplate.pydirectly withpython3to verify
the corrected syntax expands as a template function.
Full docs tooling was not available in this environment, so I could not
run the Sphinx documentation build.
2.11.0-ls334
CI Report:
https://ci-tests.linuxserver.io/linuxserver/beets/2.11.0-ls334/index.html
LinuxServer Changes:
Full Changelog: 2.11.0-ls333...2.11.0-ls334
Remote Changes:
Updating PIP version of beets to 2.11.0
nightly-d179dbbc-ls294
CI Report:
https://ci-tests.linuxserver.io/linuxserver/beets/nightly-d179dbbc-ls294/index.html
LinuxServer Changes:
No changes
Remote Changes:
Fix codecov tests upload (#6713)
This PR fixes Codecov test result uploads failing because pytest
generated overly long parameterized test names.
When pytest.mark.parametrize cases do not define explicit IDs, pytest
builds test names from the full parameter values. A Discogs test with a
single large parameter set produced a test name long enough to break
Codecov upload processing.
What changed
- Removed single-case parametrization from the affected Discogs tests
and moved the constants into the test bodies. - Added explicit, concise
pytest.param(..., id=...)IDs for the
Lastgenretest_get_genreparameter cases. - Added the
_p = pytest.paramalias intest_lastgenre.pyto keep the
parametrized cases compact.