Coverage for src/qdrant_loader_mcp_server/search/hybrid/components/normalization.py: 100%
12 statements
« prev ^ index » next coverage.py v7.10.6, created at 2025-09-08 06:06 +0000
« prev ^ index » next coverage.py v7.10.6, created at 2025-09-08 06:06 +0000
1from __future__ import annotations
3from collections.abc import Iterable
6class ScoreNormalizer:
7 """Basic min-max style normalization with guard rails."""
9 def scale(self, values: Iterable[float]) -> list[float]:
10 data = list(values)
11 if not data:
12 return []
13 min_v = min(data)
14 max_v = max(data)
15 if max_v - min_v <= 0:
16 return [0.0 for _ in data]
17 return [(v - min_v) / (max_v - min_v) for v in data]