Subject: CVS commit: pkgsrc/audio/py-beets
From: Sevan Janiyan
Date: 2019-12-29 16:57:24
Message id: 20191229155724.9D962FA97@cvs.NetBSD.org

Log Message:
Update py-beets to 1.4.9

Beets 1.4.9
This small update is part of our attempt to release new versions more often! \ 
There are a few important fixes, and we're clearing the deck for a change to \ 
beets' dependencies in the next version.

The new feature is:

    You can use the NO_COLOR environment variable to disable terminal colors. #3273

There are some fixes in this release:

    Fix a regression in the last release that made the image resizer fail to \ 
detect older versions of ImageMagick. #3269
    gmusic: The oauth_file config option now supports more flexible path values, \ 
including ~ for the home directory. #3270
    gmusic: Fix a crash when using version 12.0.0 or later of the gmusicapi \ 
module. #3270
    Fix an incompatibility with Python 3.8's AST changes. #3278

Here's a note for packagers:

    pathlib is now an optional test dependency on Python 3.4+, removing the need \ 
for a Debian patch. #3275

Beets 1.4.8
This release is far too long in coming, but it's a good one. There is the usual \ 
torrent of new features and a ridiculously long line of fixes, but there are \ 
also some crucial maintenance changes. We officially support Python 3.7 and 3.8, \ 
and some performance optimizations can (anecdotally) make listing your library \ 
more than three times faster than in the previous version.

The new core features are:

    A new config-aunique configuration option allows setting default options for \ 
the aunique template function.
    The albumdisambig field no longer includes the MusicBrainz release group \ 
disambiguation comment. A new releasegroupdisambig field has been added. #3024
    The modify command now allows resetting fixed attributes. For example, beet \ 
modify -a artist:beatles artpath! resets artpath attribute from matching albums \ 
back to the default value. #2497
    A new importer option, ignore_data_tracks, lets you skip audio tracks \ 
contained in data files. #3021

There are some new plugins:

    The playlist can query the beets library using M3U playlists. Thanks to \ 
@Holzhaus and @Xenopathic. #123 #3145
    The loadext allows loading of SQLite extensions, primarily for use with the \ 
ICU SQLite extension for internationalization. #3160 #3226
    The subsonicupdate can automatically update your Subsonic library. Thanks to \ 
@maffo999. #3001

And many improvements to existing plugins:

    lastgenre: Added option -A to match individual tracks and singletons. #3220 #3219
    play: The plugin can now emit a UTF-8 BOM, fixing some issues with \ 
foobar2000 and Winamp. Thanks to @mz2212. #2944
    gmusic:
        Add a new option to automatically upload to Google Play Music library on \ 
track import. Thanks to @shuaiscott.
        Add new options for Google Play Music authentication. Thanks to \ 
@thetarkus. #3002
    replaygain: albumpeak on large collections is calculated as the average, not \ 
the maximum. #3008 #3009
    chroma:
        Now optionally has a bias toward looking up more relevant releases \ 
according to the preferred configuration options. Thanks to @Archer4499. #3017
        Fingerprint values are now properly stored as strings, which prevents \ 
strange repeated output when running beet write. Thanks to @Holzhaus. #3097 \ 
#2942
    convert: The plugin now has an id3v23 option that allows you to override the \ 
global id3v23 option. Thanks to @Holzhaus. #3104
    spotify:
        The plugin now uses OAuth for authentication to the Spotify API. Thanks \ 
to @rhlahuja. #2694 #3123
        The plugin now works as an import metadata provider: you can match \ 
tracks and albums using the Spotify database. Thanks to @rhlahuja. #3123
    ipfs: The plugin now supports a nocopy option which passes that flag to \ 
ipfs. Thanks to @wildthyme.
    discogs: The plugin now has rate limiting for the Discogs API. #3081
    mpdstats, mpdupdate: These plugins now use the MPD_PORT environment variable \ 
if no port is specified in the configuration file. #3223
    bpd:
        MPD protocol commands consume and single are now supported along with \ 
updated semantics for repeat and previous and new fields for status. The bpd \ 
server now understands and ignores some additional commands. #3200 #800
        MPD protocol command idle is now supported, allowing the MPD version to \ 
be bumped to 0.14. #3205 #800
        MPD protocol command decoders is now supported. #3222
        The plugin now uses the main beets logging system. The special-purpose \ 
--debug flag has been removed. Thanks to @arcresu. #3196
    mbsync: The plugin no longer queries MusicBrainz when either the mb_albumid \ 
or mb_trackid field is invalid. See also the discussion on Google Groups Thanks \ 
to @arogl.
    export: The plugin now also exports path field if the user explicitly \ 
specifies it with -i parameter. This only works when exporting library fields. \ 
#3084
    acousticbrainz: The plugin now declares types for all its fields, which \ 
enables easier querying and avoids a problem where very small numbers would be \ 
stored as strings. Thanks to @rain0r. #2790 #3238

Some improvements have been focused on improving beets' performance:

    Querying the library is now faster:
        We only convert fields that need to be displayed. Thanks to @pprkut. #3089
        We now compile templates once and reuse them instead of recompiling them \ 
to print out each matching object. Thanks to @SimonPersson. #3258
        Querying the library for items is now faster, for all queries that do \ 
not need to access album level properties. This was implemented by lazily \ 
fetching the album only when needed. Thanks to @SimonPersson. #3260
    absubmit, badfiles: Analysis now works in parallel (on Python 3 only). \ 
Thanks to @bemeurer. #2442 #3003
    mpdstats: Use the currentsong MPD command instead of playlist to get the \ 
current song, improving performance when the playlist is long. Thanks to @ray66. \ 
#3207 #2752

Several improvements are related to usability:

    The disambiguation string for identifying albums in the importer now shows \ 
the catalog number. Thanks to @8h2a. #2951
    Added whitespace padding to missing tracks dialog to improve readability. \ 
Thanks to @jams2. #2962
    The move command now lists the number of items already in-place. Thanks to \ 
@RollingStar. #3117
    Modify selection can now be applied early without selecting every item. #3083
    Beets now emits more useful messages during startup if SQLite returns an \ 
error. The SQLite error message is now attached to the beets message. #3005
    Fixed a confusing typo when the convert plugin copies the art covers. #3063

Many fixes have been focused on issues where beets would previously crash:

    Avoid a crash when archive extraction fails during import. #3041
    Missing album art file during an update no longer causes a fatal exception \ 
(instead, an error is logged and the missing file path is removed from the \ 
library). #3030
    When updating the database, beets no longer tries to move album art twice. #3189
    Fix an unhandled exception when pruning empty directories. #1996 #3209
    fetchart: Added network connection error handling to backends so that beets \ 
won't crash if a request fails. Thanks to @Holzhaus. #1579
    badfiles: Avoid a crash when the underlying tool emits undecodable output. #3165
    beatport: Avoid a crash when the server produces an error. #3184
    bpd: Fix crashes in the bpd server during exception handling. #3200
    bpd: Fix a crash triggered when certain clients tried to list the albums \ 
belonging to a particular artist. #3007 #3215
    replaygain: Avoid a crash when the bs1770gain tool emits malformed XML. \ 
#2983 #3247

There are many fixes related to compatibility with our dependencies including \ 
addressing changes interfaces:

    On Python 2, pin the jellyfish requirement to version 0.6.0 for compatibility.
    Fix compatibility with Python 3.7 and its change to a name in the re module. \ 
#2978
    Fix several uses of deprecated standard-library features on Python 3.7. \ 
Thanks to @arcresu. #3197
    Fix compatibility with pre-release versions of Python 3.8. #3201 #3202
    web: Fix an error when using more recent versions of Flask with CORS \ 
enabled. Thanks to @rveachkc. #2979: #2980
    Avoid some deprecation warnings with certain versions of the MusicBrainz \ 
library. Thanks to @zhelezov. #2826 #3092
    Restore iTunes Store album art source, and remove the dependency on \ 
python-itunes, which had gone unmaintained and was not Python-3-compatible. \ 
Thanks to @ocelma for creating python-itunes in the first place. Thanks to \ 
@nathdwek. #2371 #2551 #2718
    lastgenre, edit: Avoid a deprecation warnings from the PyYAML library by \ 
switching to the safe loader. Thanks to @translit and @sbraz. #3192 #3225
    Fix a problem when resizing images with PIL/pillow on Python 3. Thanks to \ 
@architek. #2504 #3029

And there are many other fixes:

    R128 normalization tags are now properly deleted from files when the values \ 
are missing. Thanks to @autrimpo. #2757
    Display the artist credit when matching albums if the artist_credit \ 
configuration option is set. #2953
    With the from_scratch configuration option set, only writable fields are \ 
cleared. Beets now no longer ignores the format your music is saved in. #2972
    The %aunique template function now works correctly with the -f/--format \ 
option. #3043
    Fixed the ordering of items when manually selecting changes while updating \ 
tags Thanks to @TaizoSimpson. #3501
    The %title template function now works correctly with apostrophes. Thanks to \ 
@GuilhermeHideki. #3033
    lastgenre: It's now possible to set the prefer_specific option without also \ 
setting canonical. #2973
    fetchart: The plugin now respects the ignore and ignore_hidden settings. #1632
    hook: Fix byte string interpolation in hook commands. #2967 #3167
    the: Log a message when something has changed, not when it hasn't. Thanks to \ 
@arcresu. #3195
    lastgenre: The force config option now actually works. #2704 #3054
    Resizing image files with ImageMagick now avoids problems on systems where \ 
there is a convert command that is not ImageMagick's by using the magick \ 
executable when it is available. Thanks to @ababyduck. #2093 #3236

There is one new thing for plugin developers to know about:

    In addition to prefix-based field queries, plugins can now define named \ 
queries that are not associated with any specific field. For example, the new \ 
playlist supports queries like playlist:name although there is no field named \ 
playlist. See extend-query for details.

And some messages for packagers:

    Note the changes to the dependencies on jellyfish and munkres.
    The optional python-itunes dependency has been removed.
    Python versions 3.7 and 3.8 are now supported.

Files:
RevisionActionfile
1.24modifypkgsrc/audio/py-beets/Makefile
1.13modifypkgsrc/audio/py-beets/PLIST
1.16modifypkgsrc/audio/py-beets/distinfo