beets/docs
Claude 11f38e8c87
Add native support for multiple genres per album/track
Implements native multi-value genre support following the same pattern
as multi-value artists. Adds a 'genres' field that stores genres as a
list and writes them as multiple individual genre tags to files.

Features:
- New 'genres' field (MULTI_VALUE_DSV) for albums and tracks
- Bidirectional sync between 'genre' (string) and 'genres' (list)
- Config option 'multi_value_genres' (default: yes) to enable/disable
- Config option 'genre_separator' (default: ', ') for joining genres
  into the single 'genre' field - matches lastgenre's default separator
- Updated MusicBrainz, Beatport, and LastGenre plugins to populate
  'genres' field
- LastGenre plugin now uses global genre_separator when
  multi_value_genres is enabled for consistency
- Comprehensive test coverage (10 tests for sync logic)
- Full documentation in changelog and reference/config.rst

Backward Compatibility:
- When multi_value_genres=yes: 'genre' field maintained as joined
  string for backward compatibility, 'genres' is the authoritative list
- When multi_value_genres=no: Preserves old behavior (only first genre)
- Default separator matches lastgenre's default for seamless migration

Migration:
- Most users (using lastgenre's default) need no configuration changes
- Users with custom lastgenre separator should set genre_separator to
  match their existing data
- Users can opt-out entirely with multi_value_genres: no

Code Review Feedback Addressed:
- Extracted genre separator into configurable option (not hardcoded)
- Fixed Beatport plugin to always populate genres field consistently
- Added tests for None values and edge cases
- Handle None values gracefully in sync logic
- Added migration documentation for smooth user experience
- Made separator user-configurable instead of constant
- Changed default to ', ' for seamless migration (matches lastgenre)
2025-11-16 18:13:26 +00:00
..
_static Transparent background logo for docs 2023-10-29 10:30:33 +01:00
_templates/autosummary A number of smaller additions. 2025-09-04 12:49:43 +01:00
api Add index for API Reference 2025-09-04 12:49:48 +01:00
dev Update docs for mbpseudo plugin 2025-11-01 13:52:11 +01:00
extensions Add Sphinx extension for configuration value documentation 2025-10-19 01:34:32 +01:00
guides Update python version references 2025-11-08 12:09:52 +00:00
plugins Apply suggestions from code review 2025-11-11 13:18:51 -08:00
reference Add native support for multiple genres per album/track 2025-11-16 18:13:26 +00:00
.gitignore Streamlined auto api referencing for documentation (#5795) 2025-05-22 11:35:40 +02:00
changelog.rst Add native support for multiple genres per album/track 2025-11-16 18:13:26 +00:00
code_of_conduct.rst Update docstrfmt 2025-09-04 12:49:44 +01:00
conf.py Add Sphinx extension for configuration value documentation 2025-10-19 01:34:32 +01:00
contributing.rst Update docstrfmt 2025-09-04 12:49:44 +01:00
faq.rst Run formatter. 2025-10-11 13:52:35 +02:00
index.rst Re-added macport instructions. Removed mailing list ref. Added section 2025-10-11 13:52:35 +02:00
Makefile Streamlined auto api referencing for documentation (#5795) 2025-05-22 11:35:40 +02:00
modd.conf Switch to modd for live docs build 2017-12-21 11:39:08 -05:00
team.rst Reformat all docs using docstrfmt 2025-08-10 16:25:05 +01:00