Merge pull request #334 from yozachar/workshop · python-validators/validators@2fb85bb
@@ -57,42 +57,25 @@ def between(
5757 If `value` is not in between the given conditions.
58585959 Raises:
60- ValueError: If both `min_val` and `max_val` are `None`,
61- or if `min_val` is greater than `max_val`.
62- TypeError: If there's a type mismatch before comparison.
60+ (ValueError): If `min_val` is greater than `max_val`.
61+ (TypeError): If there's a type mismatch during comparison.
63626463 Note:
6564 - `PossibleValueTypes` = `TypeVar("PossibleValueTypes", int, float, str, datetime)`
66- - Either one of `min_val` or `max_val` must be provided.
67-68- > *New in version 0.2.0*.
65+ - If neither `min_val` nor `max_val` is provided, result will always be `True`.
6966 """
7067if value is None:
7168return False
726973-if min_val is max_val is None:
74-raise ValueError("At least one of either `min_val` or `max_val` must be specified")
75-7670if max_val is None:
7771max_val = AbsMax()
7872if min_val is None:
7973min_val = AbsMin()
807481-if isinstance(min_val, AbsMin):
82-if type(value) is type(max_val):
83-return min_val <= value <= max_val
84-raise TypeError("`value` and `max_val` must be of same type")
85-86-if isinstance(max_val, AbsMax):
87-if type(value) is type(min_val):
88-return min_val <= value <= max_val
89-raise TypeError("`value` and `min_val` must be of same type")
90-91-if type(min_val) is type(max_val):
75+try:
9276if min_val > max_val:
93-raise ValueError("`min_val` cannot be more than `max_val`")
94-if type(value) is type(min_val): # or is type(max_val)
95-return min_val <= value <= max_val
96-raise TypeError("`value` and (`min_val` or `max_val`) must be of same type")
77+raise ValueError("`min_val` cannot be greater than `max_val`")
78+except TypeError as err:
79+raise TypeError("Comparison type mismatch") from err
978098-raise TypeError("`value` and `min_val` and `max_val` must be of same type")
81+return min_val <= value <= max_val