"""Clamp a value to [lo, hi]. Handles None by raising, preserves type.""" from __future__ import annotations def clamp(value, lo, hi): if lo > hi: raise ValueError("lo > hi: %r > %r" % (lo, hi)) if value < lo: return lo if value > hi: return hi return value