diff --git a/voluptuous/validators.py b/voluptuous/validators.py index 9951738..89eed0f 100644 --- a/voluptuous/validators.py +++ b/voluptuous/validators.py @@ -1,4 +1,6 @@ # fmt: off +from __future__ import annotations + import datetime import os import re @@ -18,6 +20,9 @@ # F401: flake8 complains about 'raises' not being used, but it is used in doctests from voluptuous.schema_builder import Schema, Schemable, message, raises # noqa: F401 +if typing.TYPE_CHECKING: + from _typeshed import SupportsAllComparisons + # fmt: on @@ -610,9 +615,6 @@ def Maybe(validator: typing.Callable, msg: typing.Optional[str] = None): return Any(None, validator, msg=msg) -NullableNumber = typing.Union[int, float, None] - - class Range(object): """Limit a value to a range. @@ -636,8 +638,8 @@ class Range(object): def __init__( self, - min: NullableNumber = None, - max: NullableNumber = None, + min: SupportsAllComparisons | None = None, + max: SupportsAllComparisons | None = None, min_included: bool = True, max_included: bool = True, msg: typing.Optional[str] = None, @@ -705,8 +707,8 @@ class Clamp(object): def __init__( self, - min: NullableNumber = None, - max: NullableNumber = None, + min: SupportsAllComparisons | None = None, + max: SupportsAllComparisons | None = None, msg: typing.Optional[str] = None, ) -> None: self.min = min @@ -736,8 +738,8 @@ class Length(object): def __init__( self, - min: NullableNumber = None, - max: NullableNumber = None, + min: SupportsAllComparisons | None = None, + max: SupportsAllComparisons | None = None, msg: typing.Optional[str] = None, ) -> None: self.min = min