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: Sun Sep 21 15:17:23 UTC 2025
Modified Files:
pkgsrc/audio/py-beets: Makefile PLIST distinfo
Log Message:
py-beets: update to 2.4.0.
2.4.0 (September 13, 2025)
--------------------------
New features:
- :doc:`plugins/musicbrainz`: The MusicBrainz autotagger has been moved to a
separate plugin. The default :ref:`plugins-config` includes ``musicbrainz``,
but if you've customized your ``plugins`` list in your configuration, you'll
need to explicitly add ``musicbrainz`` to continue using this functionality.
Configuration option ``musicbrainz.enabled`` has thus been deprecated.
:bug:`2686` :bug:`4605`
- :doc:`plugins/web`: Show notifications when a track plays. This uses the Media
Session API to customize media notifications.
- :doc:`plugins/discogs`: Add configurable ``search_limit`` option to limit the
number of results returned by the Discogs metadata search queries.
- :doc:`plugins/discogs`: Implement ``track_for_id`` method to allow retrieving
singletons by their Discogs ID. :bug:`4661`
- :doc:`plugins/replace`: Add new plugin.
- :doc:`plugins/duplicates`: Add ``--remove`` option, allowing to remove from
the library without deleting media files. :bug:`5832`
- :doc:`plugins/playlist`: Support files with the ``.m3u8`` extension.
:bug:`5829`
- :doc:`plugins/mbcollection`: When getting the user collections, only consider
collections of releases, and ignore collections of other entity types.
- :doc:`plugins/mpdstats`: Add new configuration option,
``played_ratio_threshold``, to allow configuring the percentage the song must
be played for it to be counted as played instead of skipped.
- :doc:`plugins/web`: Display artist and album as part of the search results.
- :doc:`plugins/spotify` :doc:`plugins/deezer`: Add new configuration option
``search_limit`` to limit the number of results returned by search queries.
Bug fixes:
- :doc:`plugins/musicbrainz`: fix regression where user configured
``extra_tags`` have been read incorrectly. :bug:`5788`
- tests: Fix library tests failing on Windows when run from outside ``D:/``.
:bug:`5802`
- Fix an issue where calling ``Library.add`` would cause the ``database_change``
event to be sent twice, not once. :bug:`5560`
- Fix ``HiddenFileTest`` by using ``bytestring_path()``.
- tests: Fix tests failing without ``langdetect`` (by making it required).
:bug:`5797`
- :doc:`plugins/musicbrainz`: Fix the MusicBrainz search not taking into account
the album/recording aliases
- :doc:`/plugins/spotify`: Fix the issue with that every query to spotify was
ascii encoded. This resulted in bad matches for queries that contained special
e.g. non latin characters as 盗作. If you want to keep the legacy behavior set
the config option ``spotify.search_query_ascii: yes``. :bug:`5699`
- :doc:`plugins/discogs`: Beets will no longer crash if a release has been
deleted, and returns a 404.
- :doc:`plugins/lastgenre`: Fix the issue introduced in Beets 2.3.0 where
non-whitelisted last.fm genres were not canonicalized to parent genres.
:bug:`5930`
- :doc:`plugins/chroma`: AcoustID lookup HTTP requests will now time out after
10 seconds, rather than hanging the entire import process.
- :doc:`/plugins/deezer`: Fix the issue with that every query to deezer was
ascii encoded. This resulted in bad matches for queries that contained special
e.g. non latin characters as 盗作. If you want to keep the legacy behavior set
the config option ``deezer.search_query_ascii: yes``. :bug:`5860`
- Fixed regression with :doc:`/plugins/listenbrainz` where the plugin could not
be loaded :bug:`5975`
For packagers:
- Optional ``extra_tags`` parameter has been removed from
``BeetsPlugin.candidates`` method signature since it is never passed in. If
you override this method in your plugin, feel free to remove this parameter.
- Loosened ``typing_extensions`` dependency in pyproject.toml to apply to every
python version.
For plugin developers:
- The ``fetchart`` plugins has seen a few changes to function signatures and
source registration in the process of introducing typings to the code. Custom
art sources might need to be adapted.
- We split the responsibilities of plugins into two base classes
1. :class:`beets.plugins.BeetsPlugin` is the base class for all plugins, any
plugin needs to inherit from this class.
2. :class:`beets.metadata_plugin.MetadataSourcePlugin` allows plugins to act
like metadata sources. E.g. used by the MusicBrainz plugin. All plugins in
the beets repo are opted into this class where applicable. If you are
maintaining a plugin that acts like a metadata source, i.e. you expose any
of ``track_for_id``, ``album_for_id``, ``candidates``, ``item_candidates``,
``album_distance``, ``track_distance`` methods, please update your plugin
to inherit from the new baseclass, as otherwise your plugin will stop
working with the next major release.
- Several definitions have been moved:
- ``BLOB_TYPE`` constant, ``PathQuery`` and ``SingletonQuery`` queries have
moved from ``beets.library`` to ``beets.dbcore.query`` module
- ``DateType``, ``DurationType``, ``PathType`` types and ``MusicalKey`` class
have moved from ``beets.library`` to ``beets.dbcore.types`` module.
- ``Distance`` has moved from ``beets.autotag`` to ``beets.autotag.distance``
module.
- ``beets.autotag.current_metadata`` has been renamed to
``beets.util.get_most_common_tags``.
Old imports are now deprecated and will be removed in version ``3.0.0``.
- ``beets.ui.decargs`` is deprecated and will be removed in version ``3.0.0``.
- Beets is now PEP 561 compliant, which means that it provides type hints for
all public APIs. This allows IDEs to provide better autocompletion and type
checking for downstream users of the beets API.
- ``plugins.find_plugins`` function does not anymore load plugins. You need to
explicitly call ``plugins.load_plugins()`` to load them.
- ``plugins.load_plugins`` function does not anymore accept the list of plugins
to load. Instead, it loads all plugins that are configured by
:ref:`plugins-config` configuration.
- Flexible fields, which can be used by plugins to store additional metadata,
now also support list values. Previously, beets would throw an error while
storing the data in the SQL database due to missing type conversion.
:bug:`5698`
Other changes:
- Refactor: Split responsibilities of Plugins into MetaDataPlugins and general
Plugins.
- Documentation structure for auto generated API references changed slightly.
Autogenerated API references are now located in the ``docs/api`` subdirectory.
- :doc:`/plugins/substitute`: Fix rST formatting for example cases so that each
case is shown on separate lines.
- Refactored library.py file by splitting it into multiple modules within the
beets/library directory.
- Added a test to check that all plugins can be imported without errors.
- :doc:`/guides/main`: Add instructions to install beets on Void Linux.
- :doc:`plugins/lastgenre`: Refactor loading whitelist and canonicalization
file. :bug:`5979`
- :doc:`plugins/lastgenre`: Updated and streamlined the genre whitelist and
canonicalization tree :bug:`5977`
- UI: Update default ``text_diff_added`` color from **bold red** to **bold
green.**
- UI: Use ``text_diff_added`` and ``text_diff_removed`` colors in **all** diff
comparisons, including case differences.
To generate a diff of this commit:
cvs rdiff -u -r1.39 -r1.40 pkgsrc/audio/py-beets/Makefile
cvs rdiff -u -r1.22 -r1.23 pkgsrc/audio/py-beets/PLIST
cvs rdiff -u -r1.23 -r1.24 pkgsrc/audio/py-beets/distinfo
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.39 pkgsrc/audio/py-beets/Makefile:1.40
--- pkgsrc/audio/py-beets/Makefile:1.39 Thu Jul 3 19:18:02 2025
+++ pkgsrc/audio/py-beets/Makefile Sun Sep 21 15:17:23 2025
@@ -1,6 +1,6 @@
-# $NetBSD: Makefile,v 1.39 2025/07/03 19:18:02 wiz Exp $
+# $NetBSD: Makefile,v 1.40 2025/09/21 15:17:23 wiz Exp $
-DISTNAME= beets-2.3.1
+DISTNAME= beets-2.4.0
PKGNAME= ${PYPKGPREFIX}-${DISTNAME}
CATEGORIES= audio python
MASTER_SITES= ${MASTER_SITE_PYPI:=b/beets/}
@@ -20,6 +20,7 @@ DEPENDS+= ${PYPKGPREFIX}-mediafile>=0.12
DEPENDS+= ${PYPKGPREFIX}-musicbrainz-ngs>=0.4:../../audio/py-musicbrainz-ngs
DEPENDS+= ${PYPKGPREFIX}-numpy>=1.24.4:../../math/py-numpy
DEPENDS+= ${PYPKGPREFIX}-platformdirs>=3.5.0:../../misc/py-platformdirs
+DEPENDS+= ${PYPKGPREFIX}-typing-extensions-[0-9]*:../../devel/py-typing-extensions
DEPENDS+= ${PYPKGPREFIX}-yaml-[0-9]*:../../textproc/py-yaml
# update
DEPENDS+= ${PYPKGPREFIX}-requests-[0-9]*:../../devel/py-requests
@@ -40,6 +41,12 @@ INSTALLATION_DIRS+= ${PKGMANDIR}/man1 ${
PYTHON_VERSIONS_INCOMPATIBLE= 39 310
+# as of 2.4.0
+# 1067 passed, 101 skipped, 1 warning
+.if make(test)
+ALLOW_NETWORK_ACCESS= yes
+.endif
+
.include "../../lang/python/pyversion.mk"
.if ${PYTHON_VERSION} < 311
DEPENDS+= ${PYPKGPREFIX}-typing-extensions-[0-9]*:../../devel/py-typing-extensions
Index: pkgsrc/audio/py-beets/PLIST
diff -u pkgsrc/audio/py-beets/PLIST:1.22 pkgsrc/audio/py-beets/PLIST:1.23
--- pkgsrc/audio/py-beets/PLIST:1.22 Wed May 14 13:33:05 2025
+++ pkgsrc/audio/py-beets/PLIST Sun Sep 21 15:17:23 2025
@@ -1,4 +1,4 @@
-@comment $NetBSD: PLIST,v 1.22 2025/05/14 13:33:05 adam Exp $
+@comment $NetBSD: PLIST,v 1.23 2025/09/21 15:17:23 wiz Exp $
bin/beet-${PYVERSSUFFIX}
${PYSITELIB}/${WHEEL_INFODIR}/LICENSE
${PYSITELIB}/${WHEEL_INFODIR}/METADATA
@@ -17,15 +17,15 @@ ${PYSITELIB}/beets/art.pyo
${PYSITELIB}/beets/autotag/__init__.py
${PYSITELIB}/beets/autotag/__init__.pyc
${PYSITELIB}/beets/autotag/__init__.pyo
+${PYSITELIB}/beets/autotag/distance.py
+${PYSITELIB}/beets/autotag/distance.pyc
+${PYSITELIB}/beets/autotag/distance.pyo
${PYSITELIB}/beets/autotag/hooks.py
${PYSITELIB}/beets/autotag/hooks.pyc
${PYSITELIB}/beets/autotag/hooks.pyo
${PYSITELIB}/beets/autotag/match.py
${PYSITELIB}/beets/autotag/match.pyc
${PYSITELIB}/beets/autotag/match.pyo
-${PYSITELIB}/beets/autotag/mb.py
-${PYSITELIB}/beets/autotag/mb.pyc
-${PYSITELIB}/beets/autotag/mb.pyo
${PYSITELIB}/beets/config_default.yaml
${PYSITELIB}/beets/dbcore/__init__.py
${PYSITELIB}/beets/dbcore/__init__.pyc
@@ -42,21 +42,49 @@ ${PYSITELIB}/beets/dbcore/queryparse.pyo
${PYSITELIB}/beets/dbcore/types.py
${PYSITELIB}/beets/dbcore/types.pyc
${PYSITELIB}/beets/dbcore/types.pyo
-${PYSITELIB}/beets/importer.py
-${PYSITELIB}/beets/importer.pyc
-${PYSITELIB}/beets/importer.pyo
-${PYSITELIB}/beets/library.py
-${PYSITELIB}/beets/library.pyc
-${PYSITELIB}/beets/library.pyo
+${PYSITELIB}/beets/importer/__init__.py
+${PYSITELIB}/beets/importer/__init__.pyc
+${PYSITELIB}/beets/importer/__init__.pyo
+${PYSITELIB}/beets/importer/session.py
+${PYSITELIB}/beets/importer/session.pyc
+${PYSITELIB}/beets/importer/session.pyo
+${PYSITELIB}/beets/importer/stages.py
+${PYSITELIB}/beets/importer/stages.pyc
+${PYSITELIB}/beets/importer/stages.pyo
+${PYSITELIB}/beets/importer/state.py
+${PYSITELIB}/beets/importer/state.pyc
+${PYSITELIB}/beets/importer/state.pyo
+${PYSITELIB}/beets/importer/tasks.py
+${PYSITELIB}/beets/importer/tasks.pyc
+${PYSITELIB}/beets/importer/tasks.pyo
+${PYSITELIB}/beets/library/__init__.py
+${PYSITELIB}/beets/library/__init__.pyc
+${PYSITELIB}/beets/library/__init__.pyo
+${PYSITELIB}/beets/library/exceptions.py
+${PYSITELIB}/beets/library/exceptions.pyc
+${PYSITELIB}/beets/library/exceptions.pyo
+${PYSITELIB}/beets/library/library.py
+${PYSITELIB}/beets/library/library.pyc
+${PYSITELIB}/beets/library/library.pyo
+${PYSITELIB}/beets/library/models.py
+${PYSITELIB}/beets/library/models.pyc
+${PYSITELIB}/beets/library/models.pyo
+${PYSITELIB}/beets/library/queries.py
+${PYSITELIB}/beets/library/queries.pyc
+${PYSITELIB}/beets/library/queries.pyo
${PYSITELIB}/beets/logging.py
${PYSITELIB}/beets/logging.pyc
${PYSITELIB}/beets/logging.pyo
${PYSITELIB}/beets/mediafile.py
${PYSITELIB}/beets/mediafile.pyc
${PYSITELIB}/beets/mediafile.pyo
+${PYSITELIB}/beets/metadata_plugins.py
+${PYSITELIB}/beets/metadata_plugins.pyc
+${PYSITELIB}/beets/metadata_plugins.pyo
${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
@@ -85,6 +113,9 @@ ${PYSITELIB}/beets/util/artresizer.pyo
${PYSITELIB}/beets/util/bluelet.py
${PYSITELIB}/beets/util/bluelet.pyc
${PYSITELIB}/beets/util/bluelet.pyo
+${PYSITELIB}/beets/util/config.py
+${PYSITELIB}/beets/util/config.pyc
+${PYSITELIB}/beets/util/config.pyo
${PYSITELIB}/beets/util/functemplate.py
${PYSITELIB}/beets/util/functemplate.pyc
${PYSITELIB}/beets/util/functemplate.pyo
@@ -100,6 +131,9 @@ ${PYSITELIB}/beets/util/m3u.pyo
${PYSITELIB}/beets/util/pipeline.py
${PYSITELIB}/beets/util/pipeline.pyc
${PYSITELIB}/beets/util/pipeline.pyo
+${PYSITELIB}/beets/util/units.py
+${PYSITELIB}/beets/util/units.pyc
+${PYSITELIB}/beets/util/units.pyo
${PYSITELIB}/beets/vfs.py
${PYSITELIB}/beets/vfs.pyc
${PYSITELIB}/beets/vfs.pyo
@@ -276,6 +310,9 @@ ${PYSITELIB}/beetsplug/mpdstats.pyo
${PYSITELIB}/beetsplug/mpdupdate.py
${PYSITELIB}/beetsplug/mpdupdate.pyc
${PYSITELIB}/beetsplug/mpdupdate.pyo
+${PYSITELIB}/beetsplug/musicbrainz.py
+${PYSITELIB}/beetsplug/musicbrainz.pyc
+${PYSITELIB}/beetsplug/musicbrainz.pyo
${PYSITELIB}/beetsplug/parentwork.py
${PYSITELIB}/beetsplug/parentwork.pyc
${PYSITELIB}/beetsplug/parentwork.pyo
@@ -294,6 +331,9 @@ ${PYSITELIB}/beetsplug/plexupdate.pyo
${PYSITELIB}/beetsplug/random.py
${PYSITELIB}/beetsplug/random.pyc
${PYSITELIB}/beetsplug/random.pyo
+${PYSITELIB}/beetsplug/replace.py
+${PYSITELIB}/beetsplug/replace.pyc
+${PYSITELIB}/beetsplug/replace.pyo
${PYSITELIB}/beetsplug/replaygain.py
${PYSITELIB}/beetsplug/replaygain.pyc
${PYSITELIB}/beetsplug/replaygain.pyo
Index: pkgsrc/audio/py-beets/distinfo
diff -u pkgsrc/audio/py-beets/distinfo:1.23 pkgsrc/audio/py-beets/distinfo:1.24
--- pkgsrc/audio/py-beets/distinfo:1.23 Wed May 14 13:33:05 2025
+++ pkgsrc/audio/py-beets/distinfo Sun Sep 21 15:17:23 2025
@@ -1,5 +1,5 @@
-$NetBSD: distinfo,v 1.23 2025/05/14 13:33:05 adam Exp $
+$NetBSD: distinfo,v 1.24 2025/09/21 15:17:23 wiz Exp $
-BLAKE2s (beets-2.3.1.tar.gz) = 16198c080d7e219873d4133822726325351684a9ab2011c78b61af196130fb08
-SHA512 (beets-2.3.1.tar.gz) = b065dd9f1ce5dd63779b085d44510e5158d23046fdc9ecaa1ce9a10d5f8fa660e1ad130c68fed4ddac323453fcbf6d1ea2dc2a9897931c486da099b87dcfc047
-Size (beets-2.3.1.tar.gz) = 2133246 bytes
+BLAKE2s (beets-2.4.0.tar.gz) = 98edb65c8713b046886b166e40d86ab1e876856a4057451677c456c11279b4b4
+SHA512 (beets-2.4.0.tar.gz) = 630cac17141d235332dcb661301b0a94a085812f8cbf5839c56c9991698cbc165b537a8f8bf286ad70a945b288e8535e8aad4f1a97541389193134704fd95715
+Size (beets-2.4.0.tar.gz) = 2134935 bytes
Home |
Main Index |
Thread Index |
Old Index