Add Homebrew (brew install beets) to the OS package manager list in the
installation guide, alongside the existing MacPorts entry.
The beets formula was recently added to homebrew-core.
- Add item_types ClassVar with tidal_track_id, tidal_album_id,
tidal_artist_id, tidal_track_popularity, tidal_alb_popularity,
tidal_updated fields
- Populate flexattrs during album/track import via AlbumInfo/TrackInfo
kwargs
- Add beet tidalsync command to refresh popularity data post-import
- Add tidal fields to REIMPORT_FRESH_FIELDS_ITEM for reimport support
- Add tests for flexattr population and tidalsync behavior
- Update tidal plugin docs with attribute reference and tidalsync usage
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
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)
This feature was introduced in 2.10 but results a lot of data being
overwritten with (potentially) incorrect data the next time a user runs
`mbsync` over their library.
To make this less of a "breaking" change, make this feature opt-in. The
users who want this large change can enable the functionality.