beet modify uses an object string representation instead of the user-defined value when using the 'select' option
- Dominant language
- Python
- Stars
- 15.7k
- Forks
- 2.1k
- Avg merge
- 4d 21h
- Merged PRs (30d)
- 31
Description
Hi! New to beets. Tried renaming a bunch of album artists at once, the search results were too broad however. Using the 'select' option after to narrow down the albums resulted in a stringified object being used as the album artist name. I can't re-do this command since I accepted the changes thinking it was just a bug on the UI side, but it did in fact change the artist in the data as well.
### Problem
```sh
$ beet modify -a 'Ye' albumartist='Kanye West'
```
Led to this problem:
```
[...]
Ye - 808s & Heartbreak
albumartist: Ye -> Kanye West
[...]
Really modify, move and write tags? (Yes/no/select) select
[...]
Ye - 808s & Heartbreak
albumartist: Ye -> ModifyOperation(operator=None, value='Kanye West')
```
### Setup
* OS: macOS Tahoe
* Python version: 3.14.7
* beets version: 2.13.1
* Turning off plugins made problem go away (yes/no): no
My configuration (output of `beet config`) is:
```yaml
directory: ~/music-beets
# --------------- Main ---------------
library: ~/beets-data/musiclibrary.db
import:
move: yes
# --------------- Plugins ---------------
plugins:
- musicbrainz
- chroma
- autobpm
- fromfilename
- lyrics
disabled_plugins: []
musicbrainz:
search_limit: 5
data_source_mismatch_penalty: 0.5
search_query_ascii: no
genres: no
genres_tag: genre
external_ids:
discogs: no
bandcamp: no
spotify: no
deezer: no
tidal: no
extra_tags: []
aliases_as_credits: no
chroma:
search_limit: 5
data_source_mismatch_penalty: 0.5
auto: yes
autobpm:
auto: yes
force: no
quiet: no
beat_track_kwargs: {}
lyrics:
auto: yes
auto_ignore:
translate:
api_key: REDACTED
from_languages: []
to_language:
dist_thresh: 0.11
google_API_key: REDACTED
google_engine_ID: REDACTED
genius_api_key: REDACTED
lrcmux:
url: https://api.lrcmux.dev
sources: []
fallback:
force: no
keep_synced: no
local: no
print: no
rest_directory:
synced: no
sources:
- lrclib
- google
- genius
- lrcmux
```
Contributor guide
Research direction
Reproduce the issue with `beet modify -a 'Ye' albumartist='Kanye West'`, then choose `select` and inspect the `beet modify` path that handles the selection. Done means the selected album shows and stores `Kanye West`, rather than the `ModifyOperation` string representation.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- cli
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 68/100