@lru_cache(maxsize=128)
def ceil_to_step(value: float | int, step: int) -> int:
+ if not isinstance(value, (int, float)):
+ raise ValueError("value must be an integer or float")
if not isinstance(step, int) or step <= 0:
raise ValueError("step must be a positive integer")
if isinstance(value, (int, np.integer)):
@lru_cache(maxsize=128)
def floor_to_step(value: float | int, step: int) -> int:
+ if not isinstance(value, (int, float)):
+ raise ValueError("value must be an integer or float")
if not isinstance(step, int) or step <= 0:
raise ValueError("step must be a positive integer")
if isinstance(value, (int, np.integer)):