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

1from __future__ import annotations 

2 

3from collections.abc import Iterable 

4 

5 

6class ScoreNormalizer: 

7 """Basic min-max style normalization with guard rails.""" 

8 

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]