Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package beets for openSUSE:Factory checked in at 2026-03-26 21:08:17 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/beets (Old) and /work/SRC/openSUSE:Factory/.beets.new.8177 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "beets" Thu Mar 26 21:08:17 2026 rev:16 rq:1342629 version:2.7.1 Changes: -------- --- /work/SRC/openSUSE:Factory/beets/beets.changes 2025-10-28 14:46:54.135786336 +0100 +++ /work/SRC/openSUSE:Factory/.beets.new.8177/beets.changes 2026-03-27 06:36:45.026432397 +0100 @@ -1,0 +2,274 @@ +Wed Mar 25 21:47:17 UTC 2026 - Dirk Müller <[email protected]> + +- update to 2.7.1: + * Tests that depend on the optional langdetect package are now + skipped when the package is not installed. :bug:`6421` + * :doc:`plugins/lastgenre`: Added cleanup_existing + configuration flag to allow whitelist canonicalization of + existing genres. + * Add native support for multiple genres per album/track. The + genres field now stores genres as a list and is written to + files as multiple individual genre tags (e.g., separate GENRE + tags for FLAC/MP3). The :doc:`plugins/musicbrainz`, + :doc:`plugins/beatport`, :doc:`plugins/discogs` and + :doc:`plugins/lastgenre` plugins have been updated to + populate the genres field as a list. Migration: Existing + libraries with comma-separated, semicolon-separated, or + slash-separated genre strings (e.g., "Rock, Alternative, + Indie") are automatically migrated to the genres list when + you first run beets after upgrading. The migration runs once + when the database schema is updated, splitting genre strings + and writing the changes to the database. The updated genres + values will be written to media files the next time you run a + command that writes tags (such as beet write or during + import). No manual action or mbsync is required. The genre + field is split by the first separator found in the string, in + the following order of precedence: :doc:`plugins/lastgenre` + separator configuration Semicolon followed by a space Comma + followed by a space Slash wrapped by spaces + * :doc:`plugins/lastgenre` separator configuration + * Semicolon followed by a space + * Comma followed by a space + * Slash wrapped by spaces + * :doc:`plugins/lyrics`: With synced enabled, existing synced + lyrics are no longer replaced by newly fetched plain lyrics, + even when force is enabled. + * :doc:`plugins/lyrics`: Remove Source: <lyrics-url> suffix + from lyrics. Store the backend name in lyrics_backend, URL in + lyrics_url, language in lyrics_language and translation + language (if translations present) in + lyrics_translation_language flexible attributes. Lyrics are + automatically migrated on the first beets run. :bug:`6370` + * :doc:`plugins/ftintitle`: Fix handling of multiple featured + artists with ampersand. + * :doc:`plugins/zero`: When the omit_single_disc option is set, + disctotal is zeroed alongside disc. + * :doc:`plugins/fetchart`: Prevent deletion of configured + fallback cover art + * :ref:`import-cmd` When autotagging, initialise empty multi- + valued fields with None instead of empty list, which caused + beets to overwrite existing metadata with empty list values + instead of leaving them unchanged. :bug:`6403` + * :doc:`plugins/fuzzy`: Improve fuzzy matching when the query + is shorter than the field value so substring-style searches + produce more useful results. :bug:`2043` + * :doc:`plugins/fuzzy`: Force slow query evaluation whenever + the fuzzy prefix is used (for example ~foo or %%foo), so + fuzzy matching is applied consistently. :bug:`5638` + * :ref:`import-cmd` Duplicate detection now works for as-is + imports (when autotag is disabled). Previously, + duplicate_keys and duplicate_action config options were + silently ignored for as-is imports. + * :doc:`/plugins/convert`: Fix extension substitution inside + path of the exported playlist. + * If you maintain a metadata source plugin that populates the + genre field, please update it to populate a list of genres + instead. You will see a deprecation warning for now, but + support for populating the single genre field will be removed + in version 3.0.0. + * :ref:`modify-cmd`: Use the following separator to delimit + multiple field values: |semicolon_space|. For example beet + modify albumtypes="album; ep". Previously, \␀ was used as a + separator. This applies to fields such as artists, albumtypes + etc. + * Improve highlighting of multi-valued fields changes. + * :doc:`plugins/edit`: Editing multi-valued fields now behaves + more naturally, with list values handled directly to make + metadata edits smoother and more predictable. + * :doc:`plugins/lastgenre`: The separator configuration option + is removed. Since genres are now stored as a list in the + genres field and written to files as individual genre tags, + this option has no effect and has been removed. + * :doc:`plugins/lyrics`: To cut down noise from the lrclib + lyrics source, synced lyrics are now checked to ensure the + final verse falls within the track's duration. + * Updated URLs in the documentation to use HTTPS where possible + and updated outdated links. + * :doc:`plugins/musicbrainz`: Fix crash when release mediums + lack the tracks key. :bug:`6302` + * :doc:`plugins/musicbrainz`: Fix search terms escaping. + :bug:`6347` + * :doc:`plugins/musicbrainz`: Fix support for alias and tracks + :conf:`plugins.musicbrainz:extra_tags`. + * :doc:`plugins/musicbrainz`: Fix fetching very large releases + that have more than 500 tracks. :bug:`6355` + * :doc:`plugins/badfiles`: Fix number of found errors in log + message + * :doc:`plugins/replaygain`: Avoid magic Windows prefix in + calls to command backends, such as mp3gain. :bug:`2946` + * :doc:`plugins/mbpseudo`: Fix crash due to missing + artist_credit field in the MusicBrainz API response. + :bug:`6339` + * :ref:`config-cmd`: Improved error message when user- + configured editor does not exist. :bug:`6176` + * :doc:`plugins/lyrics`: Disable tekstowo by default because it + blocks the beets User-Agent. + * Make packaging a required dependency. :bug:`6332` + * :doc:`plugins/fetchart`: Added config setting for a fallback + cover art image. + * :doc:`plugins/ftintitle`: Added argument for custom feat. + words in ftintitle. + * :doc:`plugins/ftintitle`: Added album template value + album_artist_no_feat. + * :doc:`plugins/musicbrainz`: Allow selecting tags or genres to + populate the genres tag. + * :doc:`plugins/ftintitle`: Added argument to skip the + processing of artist and album artist are the same in + ftintitle. + * :doc:`plugins/play`: Added $playlist marker to precisely edit + the playlist filepath into the command calling the player + program. + * :doc:`plugins/lastgenre`: For tuning plugin settings -vvv can + be passed to receive extra verbose logging around last.fm + results and how they are resolved. The extended_debug config + setting and --debug option have been removed. + * :doc:`plugins/importsource`: Added new plugin that tracks + original import paths and optionally suggests removing source + files when items are removed from the library. + * :doc:`plugins/mbpseudo`: Add a new mbpseudo plugin to + proactively receive MusicBrainz pseudo-releases as + recommendations during import. + * Added support for Python 3.13. + * :doc:`/plugins/convert`: force can be passed to override + checks like no_convert, never_convert_lossy_files, same + format, and max_bitrate + * :doc:`plugins/titlecase`: Add the titlecase plugin to allow + users to resolve differences in metadata source styles. + * :doc:`plugins/spotify`: Added support for multi-artist albums + and tracks, saving all contributing artists to the respective + fields. + * :doc:`plugins/fetchart`: Fix colorized output text. + * :doc:`plugins/ftintitle`: Featured artists are now inserted + before brackets containing remix/edit-related keywords (e.g., + "Remix", "Live", "Edit") instead of being appended at the + end. This improves formatting for titles like "Song 1 (Carol + Remix) ft. Bob" which becomes "Song 1 ft. Bob (Carol Remix)". + A variety of brackets are supported and a new + bracket_keywords configuration option allows customizing the + keywords. Setting bracket_keywords to an empty list matches + any bracket content regardless of keywords. + * :doc:`plugins/discogs`: Added support for multi value fields. + :bug:`6068` + * :doc:`plugins/embedart`: Embedded arts can now be cleared + during import with the clearart_on_import config option. + Also, beet clearart is only going to update the files + matching the query and with an embedded art, leaving + untouched the files without. + * :doc:`plugins/fish`: Filenames are now completed in more + places, like after beet import. + * :doc:`plugins/random`: Added --field option to specify which + field to use for equal-chance sampling (default: + albumartist). + * :doc:`/plugins/lastgenre`: Canonicalize genres when force and + keep_existing are on, yet no genre info on lastfm could be + found. :bug:`6303` + * Handle potential OSError when unlinking temporary files in + ArtResizer. :bug:`5615` + * :doc:`/plugins/spotify`: Updated Spotify API credentials. + :bug:`6270` + * :doc:`/plugins/smartplaylist`: Fixed an issue where multiple + queries in a playlist configuration were not preserving their + order, causing items to appear in database order rather than + the order specified in the config. :bug:`6183` + * :doc:`plugins/inline`: Fix recursion error when an inline + field definition shadows a built-in item field (e.g., + redefining track_no). Inline expressions now skip self- + references during evaluation to avoid infinite recursion. + :bug:`6115` + * When hardlinking from a symlink (e.g. importing a symlink + with hardlinking enabled), dereference the symlink then + hardlink, rather than creating a new (potentially broken) + symlink :bug:`5676` + * :doc:`/plugins/spotify`: The plugin now gracefully handles + audio-features API deprecation (HTTP 403 errors). When a 403 + error is encountered from the audio-features endpoint, the + plugin logs a warning once and skips audio features for all + remaining tracks in the session, avoiding unnecessary API + calls and rate limit exhaustion. + * Running beet --config <mypath> config -e now edits <mypath> + rather than the default config path. :bug:`5652` + * :doc:`plugins/lyrics`: Accepts strings for lyrics sources + (previously only accepted a list of strings). :bug:`5962` + * Fix a bug introduced in release 2.4.0 where import from any + valid import-log-file always threw a "none of the paths are + importable" error. + * :doc:`/plugins/web`: repair broken /item/values/… and + /albums/values/… endpoints. Previously, due to single-quotes + (ie. string literal) in the SQL query, the query eg. GET + /item/values/albumartist would return the literal + "albumartist" instead of a list of unique album artists. + * Sanitize log messages by removing control characters + preventing terminal rendering issues. + * When using :doc:`plugins/fromfilename` together with + :doc:`plugins/edit`, temporary tags extracted from filenames + are no longer lost when discarding or cancelling an edit + session during import. :bug:`6104` + * :ref:`update-cmd` :doc:`plugins/edit` fix display formatting + of field changes to clearly show added and removed flexible + fields. + * :doc:`plugins/lastgenre`: Fix the issue where last.fm doesn't + return any result in the artist genre stage because + "concatenation" words in the artist name (like "feat.", "+", + or "&") prevent it. Using the albumartists list field and + fetching a genre for each artist separately improves the + chance of receiving valid results in that stage. + * :doc:`/plugins/ftintitle`: Fixed artist name splitting to + prioritize explicit featuring tokens (feat, ft, featuring) + over generic separators (&, and), preventing incorrect splits + when both are present. + * :doc:`reference/cli`: Fix 'from_scratch' option for singleton + imports: delete all (old) metadata when new metadata is + applied. :bug:`3706` + * :doc:`/plugins/convert`: auto_keep now respects no_convert + and never_convert_lossy_files when deciding whether to + copy/transcode items, avoiding extra lossy duplicates. + * :doc:`plugins/discogs`: Fixed unexpected flex attr from the + Discogs plugin. :bug:`6177` + * Errors in metadata plugins during autotage process will now + be logged but won't crash beets anymore. If you want to raise + exceptions instead, set the new configuration option + raise_on_error to yes :bug:`5903`, :bug:`4789`. + * A new plugin event, album_matched, is sent when an album that + is being imported has been matched to its metadata and the + corresponding distance has been calculated. + * Added a reusable requests handler which can be used by + plugins to make HTTP requests with built-in retry and backoff + logic. It uses beets user-agent and configures timeouts. See + :class:`~beetsplug._utils.requests.RequestHandler` for + documentation. + * Replaced dependency on python-musicbrainzngs with a + lightweight custom MusicBrainz client implementation and + updated relevant plugins accordingly: + :doc:`plugins/listenbrainz` :doc:`plugins/mbcollection` + :doc:`plugins/mbpseudo` :doc:`plugins/missing` + :doc:`plugins/musicbrainz` :doc:`plugins/parentwork` See + :class:`~beetsplug._utils.musicbrainz.MusicBrainzAPI` for + documentation. + * :doc:`plugins/listenbrainz` + * :doc:`plugins/mbcollection` + * :doc:`plugins/mbpseudo` + * :doc:`plugins/missing` + * :doc:`plugins/musicbrainz` + * :doc:`plugins/parentwork` + * The minimum supported Python version is now 3.10. + * An unused dependency on mock has been removed. + * The documentation chapter :doc:`dev/paths` has been moved to + the "For Developers" section and revised to reflect current + best practices (pathlib usage). + * Refactored the beets/ui/commands.py monolithic file (2000+ + lines) into multiple modules within the beets/ui/commands + directory for better maintainability. + * :doc:`plugins/bpd`: Raise ImportError instead of ValueError + when GStreamer is unavailable, enabling importorskip usage in + pytest setup. + * Finally removed gmusic plugin and all related code/docs as + the Google Play Music service was shut down in 2020. + * Updated color documentation with bright_* and bg_bright_* + entries. + * Moved beets/random.py into beetsplug/random.py to cleanup + core module. + * dbcore: Allow models to declare SQL indices; add an + items.album_id index to speed up album.items() queries. + :bug:`5809` + +------------------------------------------------------------------- Old: ---- v2.5.1.tar.gz New: ---- v2.7.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ beets.spec ++++++ --- /var/tmp/diff_new_pack.lzflhf/_old 2026-03-27 06:36:45.702460260 +0100 +++ /var/tmp/diff_new_pack.lzflhf/_new 2026-03-27 06:36:45.706460425 +0100 @@ -1,7 +1,7 @@ # # spec file for package beets # -# Copyright (c) 2025 SUSE LLC and contributors +# Copyright (c) 2026 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -24,7 +24,7 @@ %{?sle15_python_module_pythons} %endif Name: beets -Version: 2.5.1 +Version: 2.7.1 Release: 0 Summary: Music tagger and library organizer License: MIT ++++++ v2.5.1.tar.gz -> v2.7.1.tar.gz ++++++ ++++ 45514 lines of diff (skipped)
