Broque Thomas
aa54bed818
Surface silent exceptions across remaining modules — ~70 sites
...
Final sweep. Covers:
- Downloads: candidates / lifecycle / master / monitor / wishlist_failed
- Metadata: source / registry / cache / common / artwork (+ plex_client)
- Imports: pipeline / resolution / file_ops / paths / guards
- Library: path_resolver / retag / duplicate_cleaner
- Stats / playlists / wishlist / discovery / automation / enrichment
- Misc: hydrabase_client, soulsync_client, tag_writer, debug_info,
api_call_tracker, album_consistency, beatport_unified_scraper,
reorganize_runner, seasonal_discovery, lidarr_download_client,
services/sync_service.py, automation_engine, automation/progress
Two `_e` renames in imports/file_ops.py (outer scope binding `e`).
A few finally-block sites in metadata/album_mbid_cache.py,
library/track_identity.py, listening_stats_worker.py, watchlist/
auto_scan.py left silent — same reason as the rest of the sweep
(logger calls during cleanup paths can themselves raise).
Refs #369
3 weeks ago
Broque Thomas
8299dc211e
Lift _run_duplicate_cleaner to core/library/duplicate_cleaner.py
...
Body byte-identical to the original. The shared state dict, lock,
docker_resolve_path helper, and automation engine are injected via
init() at the lift point, where all four originals are already defined.
web_server.py: 37015 → 36833 (-182 lines).
4 weeks ago