Implements #3354, updates #6040. This PR also improves typehints for the discogs plugin.
The name variations provided by Discogs can now be used by the
auto-tagger through 3 config options.
By default, the plugin will write the variation to the tag
`artist_credit`, but through three config options can also write it
to the album artist tag, the track's artist tag, or any combination of
the three.
This PR contains a small addition on #6040, letting the string used to
join featured artists be customized.
The new configuration options available, and their defaults, are as
follows:
```yaml
discogs:
featured_string: "Feat."
anv:
artist_credit: True
album_artist: False
artist: False
```
Make it obvious when beets is installed from from a non
major version. When installed locally this adds a git hash suffix and
the distance to the last release.
closes#4448
This PR moves the `vfs.py` module, which is only used by plugins, to
avoid polluting the main beets namespace. Also exposes the `vfs` and
`art` module from beets with a deprecation warning.
This PR enhances `beets/logging.py` with improved typing and tests:
* `getLogger` now returns the precise logger type (`BeetsLogger` or
`RootLogger`).
* Tests use `pytest` and `parametrize` for more concise and readable
coverage.
Fixes#6033
This PR addresses a bug where plugin loading failed when plugins
imported other `BeetsPlugin` classes, namely `chroma` and `bpsync`.
- Add module path filtering to ensure only classes from the target
plugin module are considered, preventing conflicts when plugins import
other `BeetsPlugin` classes
Fixes#6038 - Appends featured artists in the extraartists field to the
artist tag, similar to the MusicBrainz plugin. Works well with ftintitle
for consistency as well.
## To Do
May need adjustment for common artist delimiters used - but appears to
match the MusicBrainz standard at the moment.
My usecase needs the `convert` to not write tags so I can write my own
APEv2 tags. This PR adds a write_metadata option to disable the
`convert` plugin writing metadata to the converted files.