13 lines
300 B
Python
13 lines
300 B
Python
"""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
|