diff --git a/src/validkit/__init__.py b/src/validkit/__init__.py index 61a5308..e3e7d40 100644 --- a/src/validkit/__init__.py +++ b/src/validkit/__init__.py @@ -1,5 +1,5 @@ from .v import v from .validator import validate, ValidationError, Schema -__version__ = "1.1.0" +__version__ = "1.1.1" __all__ = ["v", "validate", "ValidationError", "Schema"] diff --git a/src/validkit/validator.py b/src/validkit/validator.py index d5ca2bd..348ad65 100644 --- a/src/validkit/validator.py +++ b/src/validkit/validator.py @@ -1,4 +1,4 @@ -from typing import Any, Dict, Generic, List, Optional, TypeVar, overload +from typing import Any, Dict, Generic, List, Optional, TypeVar, overload, TYPE_CHECKING from .v import Validator, v T = TypeVar("T") @@ -156,26 +156,27 @@ def validate_internal( # 4. Literal / Pre-validated? return value -@overload -def validate( - data: Any, - schema: Schema[T], - partial: bool = ..., - base: Any = ..., - migrate: Optional[Dict[str, Any]] = ..., - collect_errors: bool = ..., -) -> T: ... - - -@overload -def validate( - data: Any, - schema: Any, - partial: bool = ..., - base: Any = ..., - migrate: Optional[Dict[str, Any]] = ..., - collect_errors: bool = ..., -) -> Any: ... +if TYPE_CHECKING: + # Overload definitions are used by type checkers only and skipped at runtime + @overload + def validate( + data: Any, + schema: Schema[T], + partial: bool = ..., + base: Any = ..., + migrate: Optional[Dict[str, Any]] = ..., + collect_errors: bool = ..., + ) -> T: ... + + @overload + def validate( + data: Any, + schema: Any, + partial: bool = ..., + base: Any = ..., + migrate: Optional[Dict[str, Any]] = ..., + collect_errors: bool = ..., + ) -> Any: ... def validate( diff --git a/tests/test_validkit.py b/tests/test_validkit.py index 2a4a453..8091b19 100644 --- a/tests/test_validkit.py +++ b/tests/test_validkit.py @@ -183,5 +183,6 @@ def test_schema_generic_optional_field(): def test_schema_exported(): """Schema is exported from the top-level package.""" - import validkit - assert hasattr(validkit, "Schema") + import importlib + pkg = importlib.import_module("validkit") + assert hasattr(pkg, "Schema")