| 1234567891011121314151617 |
- import math
- import operator
- def _nonneg_int_or_fail(n, var_name, strict=True):
- try:
- if strict:
- # Raises an exception if float
- n = operator.index(n)
- elif n == math.floor(n):
- n = int(n)
- else:
- raise ValueError()
- if n < 0:
- raise ValueError()
- except (ValueError, TypeError) as err:
- raise err.__class__(f"{var_name} must be a non-negative integer") from err
- return n
|