Coverage for src / qdrant_loader_mcp_server / search / hybrid / components / normalization.py: 100%
12 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-18 04:51 +0000
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-18 04:51 +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]