From 2c534dc2208191dc1ae1a6f51554fa5022cbfa0a Mon Sep 17 00:00:00 2001 From: Stephen Rosen Date: Thu, 25 Aug 2022 09:25:15 -0400 Subject: [PATCH] Improve annotation of jsonschema.validators.create (#8608) --- stubs/jsonschema/jsonschema/validators.pyi | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/stubs/jsonschema/jsonschema/validators.pyi b/stubs/jsonschema/jsonschema/validators.pyi index 33ddc0bdc..c95dc0bef 100644 --- a/stubs/jsonschema/jsonschema/validators.pyi +++ b/stubs/jsonschema/jsonschema/validators.pyi @@ -1,9 +1,17 @@ from _typeshed import SupportsKeysAndGetItem -from collections.abc import Callable, Generator, Iterable, Mapping +from collections.abc import Callable, Generator, Iterable, Iterator, Mapping from typing import Any, ClassVar from typing_extensions import TypeAlias +from ._format import FormatChecker +from ._types import TypeChecker from ._utils import URIDict +from .exceptions import ValidationError + +# these type aliases do not exist at runtime, they're only defined here in the stub +_JsonObject: TypeAlias = Mapping[str, Any] +_JsonValue: TypeAlias = _JsonObject | list[Any] | str | int | float | bool | None +_ValidatorCallback: TypeAlias = Callable[[Any, Any, _JsonValue, _JsonObject], Iterator[ValidationError]] _Schema: TypeAlias = Mapping[str, Any] @@ -33,13 +41,13 @@ class _Validator: def validates(version: str) -> Callable[..., Any]: ... def create( - meta_schema, - validators=..., + meta_schema: _Schema, + validators: Mapping[str, _ValidatorCallback] | tuple[()] = ..., version: Any | None = ..., - type_checker=..., - format_checker=..., - id_of=..., - applicable_validators=..., + type_checker: TypeChecker = ..., + format_checker: FormatChecker = ..., + id_of: Callable[[_Schema], str] = ..., + applicable_validators: Callable[[_Schema], Iterable[tuple[str, _ValidatorCallback]]] = ..., ) -> type[_Validator]: ... def extend( validator, validators=..., version: Any | None = ..., type_checker: Any | None = ..., format_checker: Any | None = ...