mirror of
https://github.com/aykhans/AzSuicideDataVisualization.git
synced 2025-04-22 02:23:48 +00:00
62 lines
1.5 KiB
Python
62 lines
1.5 KiB
Python
from .extremes import Max, Min
|
|
from .utils import validator
|
|
|
|
|
|
@validator
|
|
def between(value, min=None, max=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`_.
|
|
|
|
.. _WTForms NumberRange validator:
|
|
https://github.com/wtforms/wtforms/blob/master/wtforms/validators.py
|
|
|
|
Examples::
|
|
|
|
>>> from datetime import datetime
|
|
|
|
>>> between(5, min=2)
|
|
True
|
|
|
|
>>> between(13.2, min=13, max=14)
|
|
True
|
|
|
|
>>> between(500, max=400)
|
|
ValidationFailure(func=between, args=...)
|
|
|
|
>>> between(
|
|
... datetime(2000, 11, 11),
|
|
... min=datetime(1999, 11, 11)
|
|
... )
|
|
True
|
|
|
|
:param min:
|
|
The minimum required value of the number. If not provided, minimum
|
|
value will not be checked.
|
|
:param max:
|
|
The maximum value of the number. If not provided, maximum value
|
|
will not be checked.
|
|
|
|
.. versionadded:: 0.2
|
|
"""
|
|
if min is None and max is None:
|
|
raise AssertionError(
|
|
'At least one of `min` or `max` must be specified.'
|
|
)
|
|
if min is None:
|
|
min = Min
|
|
if max is None:
|
|
max = Max
|
|
try:
|
|
min_gt_max = min > max
|
|
except TypeError:
|
|
min_gt_max = max < min
|
|
if min_gt_max:
|
|
raise AssertionError('`min` cannot be more than `max`.')
|
|
|
|
return min <= value and max >= value
|