refactor: make adapter .tier the single source of truth for ranking
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,14 +1,17 @@
|
||||
from lyra_worker.quality import quality_class, source_tier, rank_key
|
||||
from lyra_worker.quality import quality_class, rank_key
|
||||
from lyra_worker.types import Candidate, Quality
|
||||
|
||||
HIRES = Quality(fmt="FLAC", lossless=True, bit_depth=24, sample_rate=96000)
|
||||
CD = Quality(fmt="FLAC", lossless=True, bit_depth=16, sample_rate=44100)
|
||||
MP3 = Quality(fmt="MP3", lossless=False, bitrate_kbps=320)
|
||||
|
||||
_TIERS = {"qobuz": 0, "soulseek": 1, "youtube": 2}
|
||||
|
||||
|
||||
def _cand(source, quality):
|
||||
return Candidate(source=source, source_ref="x", matched_artist="A",
|
||||
matched_album="B", quality=quality, track_count=10)
|
||||
matched_album="B", quality=quality, track_count=10,
|
||||
source_tier=_TIERS[source])
|
||||
|
||||
|
||||
def test_quality_class_tiers():
|
||||
@@ -17,12 +20,6 @@ def test_quality_class_tiers():
|
||||
assert quality_class(MP3) == 1
|
||||
|
||||
|
||||
def test_source_tier_order():
|
||||
assert source_tier("qobuz") == 0
|
||||
assert source_tier("soulseek") == 1
|
||||
assert source_tier("youtube") == 2
|
||||
|
||||
|
||||
def test_design_ranking_order():
|
||||
# Qobuz hi-res > Qobuz lossless > Soulseek FLAC > Soulseek MP3 > YouTube
|
||||
ordered = [
|
||||
|
||||
@@ -6,11 +6,14 @@ CD = Quality(fmt="FLAC", lossless=True, bit_depth=16, sample_rate=44100)
|
||||
MP3 = Quality(fmt="MP3", lossless=False, bitrate_kbps=320)
|
||||
TARGET = MBTarget(artist="Radiohead", album="In Rainbows", track_count=10)
|
||||
|
||||
_TIERS = {"qobuz": 0, "soulseek": 1, "youtube": 2}
|
||||
|
||||
|
||||
def _cand(source, quality, artist="Radiohead", album="In Rainbows", tracks=10):
|
||||
return Candidate(source=source, source_ref=f"{source}:{quality.fmt}",
|
||||
matched_artist=artist, matched_album=album,
|
||||
quality=quality, track_count=tracks)
|
||||
quality=quality, track_count=tracks,
|
||||
source_tier=_TIERS[source])
|
||||
|
||||
|
||||
def test_returns_empty_for_no_candidates():
|
||||
|
||||
Reference in New Issue
Block a user