soulsync/core/playlists/sources
Broque Thomas 65d7756da2 Resolve pre-existing ruff lint errors blocking CI
Five pre-existing lint errors on dev baseline (all introduced May 25-26
before this branch was cut) were blocking CI on this PR. Cleared as
courtesy fixes so the merge isn't gated on unrelated tech debt:

- web_server.py:22613 — F811 duplicate `urlparse` import inside
  `_parse_itunes_link_url` (already imported at module top, line 20).
  Removed from the inline `from urllib.parse import parse_qs, urlparse`;
  kept `parse_qs` since that one is only used here.
- core/listenbrainz_manager.py:746 — S110 silenced with
  `# noqa: S110 — best-effort lookup, delete proceeds either way`.
  Matches the existing project convention used in web_server.py:1693,
  core/watchlist/auto_scan.py:463, core/library_reorganize.py:548.
- core/playlists/sources/listenbrainz.py:236 — B905 `zip()` without
  explicit `strict=`. Added `strict=False` — preserves existing
  behaviour where `matched` can legitimately be shorter than
  `match_indices` on partial discover failure.
- core/playlists/sources/listenbrainz.py:273 — S110 silenced with
  `# noqa: S110 — caller falls back to last cached playlist on
  refresh failure`.
- core/playlists/sources/soulsync_discovery.py:105 — S110 silenced
  with `# noqa: S110 — manager persists last_generation_error on
  failure; surface existing snapshot`. The existing multi-line
  comment that already explained the swallow was rolled into the
  noqa justification so the rule + reason live on one line.

Ruff `python -m ruff check .` now passes; 664 discovery + metadata
tests still pass.
2026-05-27 08:33:36 -07:00
..
__init__.py Refactor refresh_mirrored to use unified PlaylistSource registry 2026-05-26 12:52:39 -07:00
base.py Fold provider-matching into PlaylistSource contract (Phase 1b) 2026-05-26 13:07:01 -07:00
bootstrap.py Fold provider-matching into PlaylistSource contract (Phase 1b) 2026-05-26 13:07:01 -07:00
deezer.py Refactor refresh_mirrored to use unified PlaylistSource registry 2026-05-26 12:52:39 -07:00
itunes_link.py Refactor refresh_mirrored to use unified PlaylistSource registry 2026-05-26 12:52:39 -07:00
lastfm.py Fold provider-matching into PlaylistSource contract (Phase 1b) 2026-05-26 13:07:01 -07:00
listenbrainz.py Resolve pre-existing ruff lint errors blocking CI 2026-05-27 08:33:36 -07:00
qobuz.py Refactor refresh_mirrored to use unified PlaylistSource registry 2026-05-26 12:52:39 -07:00
registry.py Add unified PlaylistSource adapter layer (Phase 0) 2026-05-26 12:22:09 -07:00
soulsync_discovery.py Resolve pre-existing ruff lint errors blocking CI 2026-05-27 08:33:36 -07:00
spotify.py Refactor refresh_mirrored to use unified PlaylistSource registry 2026-05-26 12:52:39 -07:00
spotify_public.py Refactor refresh_mirrored to use unified PlaylistSource registry 2026-05-26 12:52:39 -07:00
tidal.py Refactor refresh_mirrored to use unified PlaylistSource registry 2026-05-26 12:52:39 -07:00
youtube.py Refactor refresh_mirrored to use unified PlaylistSource registry 2026-05-26 12:52:39 -07:00