between

validators.between.between(value: PossibleValueTypes, /, *, min_val: PossibleValueTypes | AbsMin | None = None, max_val: PossibleValueTypes | AbsMax | None = None)

Validate that a number is between minimum and/or maximum value.

This will work with any comparable type, such as floats, decimals and dates not just integers. This validator is originally based on [WTForms-NumberRange-Validator][1].

[1]: https://github.com/wtforms/wtforms/blob/master/src/wtforms/validators.py#L166-L220

Examples

>>> from datetime import datetime
>>> between(5, min_val=2)
True
>>> between(13.2, min_val=13, max_val=14)
True
>>> between(500, max_val=400)
ValidationError(func=between, args={'value': 500, 'max_val': 400})
>>> between(
...     datetime(2000, 11, 11),
...     min_val=datetime(1999, 11, 11)
... )
True
Parameters:
  • value – Value which is to be compared.

  • min_val – The minimum required value of the number. If not provided, minimum value will not be checked.

  • max_val – The maximum value of the number. If not provided, maximum value will not be checked.

Returns:

If value is in between the given conditions. (ValidationError): If value is not in between the given conditions.

Return type:

(Literal[True])

Raises:
  • (ValueError) – If min_val is greater than max_val.

  • (TypeError) – If there’s a type mismatch during comparison.

Note

  • PossibleValueTypes = TypeVar(“PossibleValueTypes”, int, float, str, datetime)

  • If neither min_val nor max_val is provided, result will always be True.