Add support for extra_tags in discogs plugin#6416
Closed
jdoe29103 wants to merge 63 commits intobeetbox:masterfrom
Closed
Add support for extra_tags in discogs plugin#6416jdoe29103 wants to merge 63 commits intobeetbox:masterfrom
jdoe29103 wants to merge 63 commits intobeetbox:masterfrom
Conversation
discogs extra_tags functionality
… # UICY-75129) directory
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## master #6416 +/- ##
==========================================
+ Coverage 69.39% 69.44% +0.04%
==========================================
Files 141 141
Lines 18816 18485 -331
Branches 3068 3025 -43
==========================================
- Hits 13057 12836 -221
+ Misses 5112 5010 -102
+ Partials 647 639 -8
🚀 New features to boost your workflow:
|
## Documentation Link Maintenance This PR audits and fixes all hyperlinks across the beets documentation. No functional code changes — purely doc hygiene. ### What changed - **HTTP → HTTPS**: Upgrades all `http://` links to `https://` where supported. - **Broken/outdated URLs**: Replaces dead or redirected links with their current canonical targets. Key examples: - `codecov.io` → `app.codecov.io` - Python docs from `docs.python.org/library/` → `docs.python.org/3/library/` - PEP links from `python.org/dev/peps/` → `peps.python.org/` - SourceForge project links updated to current project page URLs - Spotify, Plex, Sonos, Discogs, IPFS, and other service URLs updated to their current domains/paths - Archived URLs wrapped in `web.archive.org` where the original is gone (e.g. `echonest`, `albumart.org`, `phash`) - **`docs/conf.py`**: Adds link-check exclusions for domains known to block automated requests (SourceForge, fanart.tv, Imgur, Discogs settings). ### Impact No user-facing behaviour changes. Fixes broken links that would frustrate contributors and users reading the docs, and unblocks the Sphinx `linkcheck` builder from false positives.
See <img width="1029" height="1235" alt="image" src="https://github.com/user-attachments/assets/979fbc1b-385c-4ba5-b48a-d7658d6e7a0d" />
Add a `requires_import` pytest marker and `is_importable` fixture to conditionally skip or adjust assertions based on whether optional dependencies are available. Apply this to `langdetect`-dependent language detection tests in lyrics and migration test suites.
Replace static marker declarations in setup.cfg with dynamic registration via pytest_configure hook in conftest.py.
Add force_ci kwarg to requires_import pytest marker to allow tests to run unconditionally in CI (GitHub Actions), even if the module is not detected locally. Refactor autobpm test to use this instead of manual env-checking at module level.
## Skip `langdetect`-dependent tests when package is unavailable Fixes #6421. ### What changed - Adds a `requires_import(module)` pytest marker to `conftest.py` that skips tests when an optional dependency is not installed - Adds an `is_importable` fixture for conditional assertions within a test body - Marks `TestTranslation` and other `langdetect`-dependent tests/assertions with the new marker or fixture - Extends `requires_import` with a `force_ci=True` kwarg — tests marked this way are **never** skipped in `beetbox/beets` CI, ensuring coverage where all deps are installed - Moves marker declarations from `setup.cfg` into `pytest_configure` in `conftest.py`
Move search orchestration into SearchApiMetadataSourcePlugin. Migrate Deezer, Spotify, and Discogs to provider hooks. Keep query handling, logging, and limits centralized.
Move MusicBrainzPlugin to SearchApiMetadataSourcePlugin hooks. Keep entity mapping and criteria in provider-specific hooks. Update typing and tests for the candidate search path.
Replace recursive 401 handling with a single retry loop. This prevents unbounded recursion when authentication keeps failing.
Add developer guidance for SearchApiMetadataSourcePlugin and its hooks. Clarify migration advice for API-backed metadata source plugins.
Add a unified search abstraction across metadata source plugins. Summary: - Introduces `SearchApiMetadataSourcePlugin` with `SearchParams`, `get_search_query_with_filters`, and `get_search_response` hooks to standardize album/track searches. - Replaces ad-hoc `_search_api` and query construction logic in Deezer, Spotify, MusicBrainz, and Discogs plugins with the new shared implementation. - Refactors Discogs and MusicBrainz plugins to use the new abstraction and move provider-specific criteria/query construction into hook methods. - Centralizes error handling and logging in the shared search flow; Spotify now retries authentication once on `401`, and failures cleanly fall back to empty results at the shared layer.
Beatport has retired the API these plugins rely on, making them non-functional. Add deprecation warnings and update documentation to reflect the current state. Fixes #3862
As agreed in the comments: #4477 (comment) Deprecation notices reference those for additional context: - #3862 - #4477 Beatport retired the API (v3) that the built-in `beatport` plugin relies on, making it non-functional. This PR soft-deprecates both the `beatport` and `bpsync` plugins following the same pattern used for `acousticbrainz` — adding deprecation warnings in `__init__()` while keeping all existing code intact. The `bpsync` plugin is deprecated alongside `beatport` since it imports and depends on `BeatportPlugin` directly. ### Changes - **`beetsplug/beatport.py`**: Add deprecation warning in `BeatportPlugin.__init__()` - **`beetsplug/bpsync.py`**: Add deprecation warning in `BPSyncPlugin.__init__()` - **`docs/plugins/beatport.rst`**: Add `.. deprecated::` directive - **`docs/plugins/bpsync.rst`**: Add `.. deprecated::` directive - **`docs/changelog.rst`**: Add changelog entry under Unreleased → Other changes ### What's NOT changed (and why) - **`pyproject.toml`** (beatport extra): Kept so the plugin loads and shows the deprecation warning instead of crashing with an `ImportError` - **`test/plugins/test_beatport.py`**: Tests cover data models which still exist — all 15 tests pass - **`docs/plugins/index.rst`**: `beatport` stays in the toctree since the page still exists - **`beets/util/id_extractors.py`**: Core utility, not plugin-specific
discogs extra_tags functionality
… # UICY-75129) directory
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Fixes #6412.
Discogs plugin now supports the
extra_tagsconfiguration option.To Do