pkgsrc-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
CVS commit: pkgsrc/audio/py-beets
Module Name: pkgsrc
Committed By: wiz
Date: Mon Feb 9 12:44:18 UTC 2026
Modified Files:
pkgsrc/audio/py-beets: Makefile PLIST distinfo
Removed Files:
pkgsrc/audio/py-beets/patches: patch-beets_ui_____init____.py
patch-beetsplug_lyrics.py
Log Message:
py-beets: update to 2.6.1.
2.6.1 (February 02, 2026)
-------------------------
Bug fixes:
- Make ``packaging`` a required dependency. :bug:`6332`
2.6.0 (February 01, 2026)
-------------------------
Beets now requires Python 3.10 or later since support for EOL Python 3.9 has
been dropped.
New features:
- :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``).
Bug fixes:
- :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`.
For plugin developers:
- 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.
For packagers:
- The minimum supported Python version is now 3.10.
- An unused dependency on ``mock`` has been removed.
Other changes:
- 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`
To generate a diff of this commit:
cvs rdiff -u -r1.48 -r1.49 pkgsrc/audio/py-beets/Makefile
cvs rdiff -u -r1.26 -r1.27 pkgsrc/audio/py-beets/PLIST
cvs rdiff -u -r1.27 -r1.28 pkgsrc/audio/py-beets/distinfo
cvs rdiff -u -r1.1 -r0 \
pkgsrc/audio/py-beets/patches/patch-beets_ui_____init____.py \
pkgsrc/audio/py-beets/patches/patch-beetsplug_lyrics.py
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: pkgsrc/audio/py-beets/Makefile
diff -u pkgsrc/audio/py-beets/Makefile:1.48 pkgsrc/audio/py-beets/Makefile:1.49
--- pkgsrc/audio/py-beets/Makefile:1.48 Mon Dec 29 17:54:57 2025
+++ pkgsrc/audio/py-beets/Makefile Mon Feb 9 12:44:18 2026
@@ -1,8 +1,7 @@
-# $NetBSD: Makefile,v 1.48 2025/12/29 17:54:57 wiz Exp $
+# $NetBSD: Makefile,v 1.49 2026/02/09 12:44:18 wiz Exp $
-DISTNAME= beets-2.5.1
+DISTNAME= beets-2.6.1
PKGNAME= ${PYPKGPREFIX}-${DISTNAME}
-PKGREVISION= 1
CATEGORIES= audio python
MASTER_SITES= ${MASTER_SITE_PYPI:=b/beets/}
@@ -43,8 +42,8 @@ INSTALLATION_DIRS+= ${PKGMANDIR}/man1 ${
PYTHON_VERSIONS_INCOMPATIBLE= 310
-# as of 2.5.1
-# 1082 passed, 101 skipped
+# as of 2.6.1
+# 898 passed, 100 skipped
.if make(test)
ALLOW_NETWORK_ACCESS= yes
.endif
@@ -59,8 +58,6 @@ post-install:
${INSTALL_DATA} ${WRKSRC}/man/beet.1 ${DESTDIR}${PREFIX}/${PKGMANDIR}/man1/beet-${PYVERSSUFFIX}.1
${INSTALL_DATA} ${WRKSRC}/man/beetsconfig.5 ${DESTDIR}${PREFIX}/${PKGMANDIR}/man5/beetsconfig-${PYVERSSUFFIX}.5
cd ${DESTDIR}${PREFIX}/bin && ${MV} beet beet-${PYVERSSUFFIX} || ${TRUE}
- ${RM} ${DESTDIR}${PREFIX}/${PYSITELIB}/beets/ui/__init__.py.orig
- ${RM} ${DESTDIR}${PREFIX}/${PYSITELIB}/beetsplug/lyrics.py.orig
.include "../../lang/python/batteries-included.mk"
.include "../../lang/python/wheel.mk"
Index: pkgsrc/audio/py-beets/PLIST
diff -u pkgsrc/audio/py-beets/PLIST:1.26 pkgsrc/audio/py-beets/PLIST:1.27
--- pkgsrc/audio/py-beets/PLIST:1.26 Sun Oct 19 18:42:55 2025
+++ pkgsrc/audio/py-beets/PLIST Mon Feb 9 12:44:18 2026
@@ -1,4 +1,4 @@
-@comment $NetBSD: PLIST,v 1.26 2025/10/19 18:42:55 wiz Exp $
+@comment $NetBSD: PLIST,v 1.27 2026/02/09 12:44:18 wiz Exp $
bin/beet-${PYVERSSUFFIX}
${PYSITELIB}/${WHEEL_INFODIR}/METADATA
${PYSITELIB}/${WHEEL_INFODIR}/RECORD
@@ -82,9 +82,6 @@ ${PYSITELIB}/beets/plugins.py
${PYSITELIB}/beets/plugins.pyc
${PYSITELIB}/beets/plugins.pyo
${PYSITELIB}/beets/py.typed
-${PYSITELIB}/beets/random.py
-${PYSITELIB}/beets/random.pyc
-${PYSITELIB}/beets/random.pyo
${PYSITELIB}/beets/test/__init__.py
${PYSITELIB}/beets/test/__init__.pyc
${PYSITELIB}/beets/test/__init__.pyo
@@ -97,10 +94,58 @@ ${PYSITELIB}/beets/test/helper.pyo
${PYSITELIB}/beets/ui/__init__.py
${PYSITELIB}/beets/ui/__init__.pyc
${PYSITELIB}/beets/ui/__init__.pyo
-${PYSITELIB}/beets/ui/commands.py
-${PYSITELIB}/beets/ui/commands.pyc
-${PYSITELIB}/beets/ui/commands.pyo
-${PYSITELIB}/beets/ui/completion_base.sh
+${PYSITELIB}/beets/ui/commands/__init__.py
+${PYSITELIB}/beets/ui/commands/__init__.pyc
+${PYSITELIB}/beets/ui/commands/__init__.pyo
+${PYSITELIB}/beets/ui/commands/completion.py
+${PYSITELIB}/beets/ui/commands/completion.pyc
+${PYSITELIB}/beets/ui/commands/completion.pyo
+${PYSITELIB}/beets/ui/commands/completion_base.sh
+${PYSITELIB}/beets/ui/commands/config.py
+${PYSITELIB}/beets/ui/commands/config.pyc
+${PYSITELIB}/beets/ui/commands/config.pyo
+${PYSITELIB}/beets/ui/commands/fields.py
+${PYSITELIB}/beets/ui/commands/fields.pyc
+${PYSITELIB}/beets/ui/commands/fields.pyo
+${PYSITELIB}/beets/ui/commands/help.py
+${PYSITELIB}/beets/ui/commands/help.pyc
+${PYSITELIB}/beets/ui/commands/help.pyo
+${PYSITELIB}/beets/ui/commands/import_/__init__.py
+${PYSITELIB}/beets/ui/commands/import_/__init__.pyc
+${PYSITELIB}/beets/ui/commands/import_/__init__.pyo
+${PYSITELIB}/beets/ui/commands/import_/display.py
+${PYSITELIB}/beets/ui/commands/import_/display.pyc
+${PYSITELIB}/beets/ui/commands/import_/display.pyo
+${PYSITELIB}/beets/ui/commands/import_/session.py
+${PYSITELIB}/beets/ui/commands/import_/session.pyc
+${PYSITELIB}/beets/ui/commands/import_/session.pyo
+${PYSITELIB}/beets/ui/commands/list.py
+${PYSITELIB}/beets/ui/commands/list.pyc
+${PYSITELIB}/beets/ui/commands/list.pyo
+${PYSITELIB}/beets/ui/commands/modify.py
+${PYSITELIB}/beets/ui/commands/modify.pyc
+${PYSITELIB}/beets/ui/commands/modify.pyo
+${PYSITELIB}/beets/ui/commands/move.py
+${PYSITELIB}/beets/ui/commands/move.pyc
+${PYSITELIB}/beets/ui/commands/move.pyo
+${PYSITELIB}/beets/ui/commands/remove.py
+${PYSITELIB}/beets/ui/commands/remove.pyc
+${PYSITELIB}/beets/ui/commands/remove.pyo
+${PYSITELIB}/beets/ui/commands/stats.py
+${PYSITELIB}/beets/ui/commands/stats.pyc
+${PYSITELIB}/beets/ui/commands/stats.pyo
+${PYSITELIB}/beets/ui/commands/update.py
+${PYSITELIB}/beets/ui/commands/update.pyc
+${PYSITELIB}/beets/ui/commands/update.pyo
+${PYSITELIB}/beets/ui/commands/utils.py
+${PYSITELIB}/beets/ui/commands/utils.pyc
+${PYSITELIB}/beets/ui/commands/utils.pyo
+${PYSITELIB}/beets/ui/commands/version.py
+${PYSITELIB}/beets/ui/commands/version.pyc
+${PYSITELIB}/beets/ui/commands/version.pyo
+${PYSITELIB}/beets/ui/commands/write.py
+${PYSITELIB}/beets/ui/commands/write.pyc
+${PYSITELIB}/beets/ui/commands/write.pyo
${PYSITELIB}/beets/util/__init__.py
${PYSITELIB}/beets/util/__init__.pyc
${PYSITELIB}/beets/util/__init__.pyo
@@ -113,6 +158,9 @@ ${PYSITELIB}/beets/util/bluelet.pyo
${PYSITELIB}/beets/util/config.py
${PYSITELIB}/beets/util/config.pyc
${PYSITELIB}/beets/util/config.pyo
+${PYSITELIB}/beets/util/deprecation.py
+${PYSITELIB}/beets/util/deprecation.pyc
+${PYSITELIB}/beets/util/deprecation.pyo
${PYSITELIB}/beets/util/functemplate.py
${PYSITELIB}/beets/util/functemplate.pyc
${PYSITELIB}/beets/util/functemplate.pyo
@@ -140,6 +188,12 @@ ${PYSITELIB}/beetsplug/_utils/__init__.p
${PYSITELIB}/beetsplug/_utils/art.py
${PYSITELIB}/beetsplug/_utils/art.pyc
${PYSITELIB}/beetsplug/_utils/art.pyo
+${PYSITELIB}/beetsplug/_utils/musicbrainz.py
+${PYSITELIB}/beetsplug/_utils/musicbrainz.pyc
+${PYSITELIB}/beetsplug/_utils/musicbrainz.pyo
+${PYSITELIB}/beetsplug/_utils/requests.py
+${PYSITELIB}/beetsplug/_utils/requests.pyc
+${PYSITELIB}/beetsplug/_utils/requests.pyo
${PYSITELIB}/beetsplug/_utils/vfs.py
${PYSITELIB}/beetsplug/_utils/vfs.pyc
${PYSITELIB}/beetsplug/_utils/vfs.pyo
@@ -197,9 +251,15 @@ ${PYSITELIB}/beetsplug/convert.pyo
${PYSITELIB}/beetsplug/deezer.py
${PYSITELIB}/beetsplug/deezer.pyc
${PYSITELIB}/beetsplug/deezer.pyo
-${PYSITELIB}/beetsplug/discogs.py
-${PYSITELIB}/beetsplug/discogs.pyc
-${PYSITELIB}/beetsplug/discogs.pyo
+${PYSITELIB}/beetsplug/discogs/__init__.py
+${PYSITELIB}/beetsplug/discogs/__init__.pyc
+${PYSITELIB}/beetsplug/discogs/__init__.pyo
+${PYSITELIB}/beetsplug/discogs/states.py
+${PYSITELIB}/beetsplug/discogs/states.pyc
+${PYSITELIB}/beetsplug/discogs/states.pyo
+${PYSITELIB}/beetsplug/discogs/types.py
+${PYSITELIB}/beetsplug/discogs/types.pyc
+${PYSITELIB}/beetsplug/discogs/types.pyo
${PYSITELIB}/beetsplug/duplicates.py
${PYSITELIB}/beetsplug/duplicates.pyc
${PYSITELIB}/beetsplug/duplicates.pyo
@@ -236,9 +296,6 @@ ${PYSITELIB}/beetsplug/ftintitle.pyo
${PYSITELIB}/beetsplug/fuzzy.py
${PYSITELIB}/beetsplug/fuzzy.pyc
${PYSITELIB}/beetsplug/fuzzy.pyo
-${PYSITELIB}/beetsplug/gmusic.py
-${PYSITELIB}/beetsplug/gmusic.pyc
-${PYSITELIB}/beetsplug/gmusic.pyo
${PYSITELIB}/beetsplug/hook.py
${PYSITELIB}/beetsplug/hook.pyc
${PYSITELIB}/beetsplug/hook.pyo
@@ -251,6 +308,9 @@ ${PYSITELIB}/beetsplug/importadded.pyo
${PYSITELIB}/beetsplug/importfeeds.py
${PYSITELIB}/beetsplug/importfeeds.pyc
${PYSITELIB}/beetsplug/importfeeds.pyo
+${PYSITELIB}/beetsplug/importsource.py
+${PYSITELIB}/beetsplug/importsource.pyc
+${PYSITELIB}/beetsplug/importsource.pyo
${PYSITELIB}/beetsplug/info.py
${PYSITELIB}/beetsplug/info.pyc
${PYSITELIB}/beetsplug/info.pyo
@@ -289,6 +349,9 @@ ${PYSITELIB}/beetsplug/lyrics.pyo
${PYSITELIB}/beetsplug/mbcollection.py
${PYSITELIB}/beetsplug/mbcollection.pyc
${PYSITELIB}/beetsplug/mbcollection.pyo
+${PYSITELIB}/beetsplug/mbpseudo.py
+${PYSITELIB}/beetsplug/mbpseudo.pyc
+${PYSITELIB}/beetsplug/mbpseudo.pyo
${PYSITELIB}/beetsplug/mbsubmit.py
${PYSITELIB}/beetsplug/mbsubmit.pyc
${PYSITELIB}/beetsplug/mbsubmit.pyo
@@ -370,6 +433,9 @@ ${PYSITELIB}/beetsplug/the.pyo
${PYSITELIB}/beetsplug/thumbnails.py
${PYSITELIB}/beetsplug/thumbnails.pyc
${PYSITELIB}/beetsplug/thumbnails.pyo
+${PYSITELIB}/beetsplug/titlecase.py
+${PYSITELIB}/beetsplug/titlecase.pyc
+${PYSITELIB}/beetsplug/titlecase.pyo
${PYSITELIB}/beetsplug/types.py
${PYSITELIB}/beetsplug/types.pyc
${PYSITELIB}/beetsplug/types.pyo
Index: pkgsrc/audio/py-beets/distinfo
diff -u pkgsrc/audio/py-beets/distinfo:1.27 pkgsrc/audio/py-beets/distinfo:1.28
--- pkgsrc/audio/py-beets/distinfo:1.27 Mon Dec 29 17:54:57 2025
+++ pkgsrc/audio/py-beets/distinfo Mon Feb 9 12:44:18 2026
@@ -1,7 +1,5 @@
-$NetBSD: distinfo,v 1.27 2025/12/29 17:54:57 wiz Exp $
+$NetBSD: distinfo,v 1.28 2026/02/09 12:44:18 wiz Exp $
-BLAKE2s (beets-2.5.1.tar.gz) = 41091492b86070d8b52fa354466ee02923c2ea229809b89d4fa64d15dd432a1b
-SHA512 (beets-2.5.1.tar.gz) = 289f68804e7293e93044b7ab7ed1537e0cbf07bb4e0f081d89875fabdb22af747f377dde30bf9d489086dd53525cbac348ec3b5c9642fdb551eeda63e2b5dcc0
-Size (beets-2.5.1.tar.gz) = 2147257 bytes
-SHA1 (patch-beets_ui_____init____.py) = d424cb78976cd619840e317f68470cdb51c709bf
-SHA1 (patch-beetsplug_lyrics.py) = e113e8ccd31510e8850e7d12a4f2f9849032af1e
+BLAKE2s (beets-2.6.1.tar.gz) = ed7e2bb1526e1bb44deb88d0050c15567291a2814fe49a43d0149c2325bf7549
+SHA512 (beets-2.6.1.tar.gz) = 8ea25d87a7415bfc7cb1b197aa3295d4cb007e39fd1ba38c34995aba59d069b180ae387ddf2101c00fad4065a9320455d4ffc741a6989b8343903b7832853128
+Size (beets-2.6.1.tar.gz) = 2175882 bytes
Home |
Main Index |
Thread Index |
Old Index