From 3d999912e278f7dd7ff95a6a4dbc42ba017156ea Mon Sep 17 00:00:00 2001 From: Sebastian Rittau Date: Tue, 25 Jan 2022 10:33:29 +0100 Subject: [PATCH 1/4] Treat validators as classes --- stubs/jsonschema/jsonschema/validators.pyi | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/stubs/jsonschema/jsonschema/validators.pyi b/stubs/jsonschema/jsonschema/validators.pyi index 245e33118831..73848e978483 100644 --- a/stubs/jsonschema/jsonschema/validators.pyi +++ b/stubs/jsonschema/jsonschema/validators.pyi @@ -30,12 +30,13 @@ def create( ) -> type[_Validator]: ... def extend(validator, validators=..., version: Any | None = ..., type_checker: Any | None = ...): ... -Draft3Validator: type[_Validator] -Draft4Validator: type[_Validator] -Draft6Validator: type[_Validator] -Draft7Validator: type[_Validator] -Draft201909Validator: type[_Validator] -Draft202012Validator: type[_Validator] +# At runtime these are fields that are assigned the return values of create() calls. +class Draft3Validator(_Validator): ... +class Draft4Validator(_Validator): ... +class Draft6Validator(_Validator): ... +class Draft7Validator(_Validator): ... +class Draft201909Validator(_Validator): ... +class Draft202012Validator(_Validator): ... _Handler = Callable[[str], Any] From 38928398c8d1a7f3703a59d2a56db162f91a10e8 Mon Sep 17 00:00:00 2001 From: Sebastian Rittau Date: Tue, 25 Jan 2022 10:50:58 +0100 Subject: [PATCH 2/4] Add _Validator.__init__, fix ID_OF --- stubs/jsonschema/jsonschema/validators.pyi | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/stubs/jsonschema/jsonschema/validators.pyi b/stubs/jsonschema/jsonschema/validators.pyi index 73848e978483..0f71f3888bb8 100644 --- a/stubs/jsonschema/jsonschema/validators.pyi +++ b/stubs/jsonschema/jsonschema/validators.pyi @@ -4,6 +4,8 @@ from typing import Any, ClassVar from ._utils import URIDict +_Schema = Any + # This class does not exist at runtime. Compatible classes are created at # runtime by create(). class _Validator: @@ -11,11 +13,12 @@ class _Validator: META_SCHEMA: ClassVar[dict[Any, Any]] TYPE_CHECKER: Any @staticmethod - def ID_OF(): ... + def ID_OF(schema: _Schema) -> str: ... schema: Any resolver: Any format_checker: Any evolve: Any + def __init__(self, schema, resolver=None, format_checker=None) -> None: ... @classmethod def check_schema(cls, schema) -> None: ... def iter_errors(self, instance, _schema: Any | None = ...) -> Generator[Any, None, None]: ... From af263c1de899455eaafc480a3d9d75c5a5f2f3f2 Mon Sep 17 00:00:00 2001 From: Sebastian Rittau Date: Tue, 25 Jan 2022 11:01:21 +0100 Subject: [PATCH 3/4] Fix argument annotation --- stubs/jsonschema/jsonschema/validators.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stubs/jsonschema/jsonschema/validators.pyi b/stubs/jsonschema/jsonschema/validators.pyi index 0f71f3888bb8..e93b25764b24 100644 --- a/stubs/jsonschema/jsonschema/validators.pyi +++ b/stubs/jsonschema/jsonschema/validators.pyi @@ -18,7 +18,7 @@ class _Validator: resolver: Any format_checker: Any evolve: Any - def __init__(self, schema, resolver=None, format_checker=None) -> None: ... + def __init__(self, schema, resolver: Any | None = ..., format_checker: Any | None = ...) -> None: ... @classmethod def check_schema(cls, schema) -> None: ... def iter_errors(self, instance, _schema: Any | None = ...) -> Generator[Any, None, None]: ... From 88b8c4594aa5a3602e8835e738a6b5759bd05592 Mon Sep 17 00:00:00 2001 From: Sebastian Rittau Date: Tue, 25 Jan 2022 15:56:07 +0100 Subject: [PATCH 4/4] Update stubs/jsonschema/jsonschema/validators.pyi Co-authored-by: Akuli --- stubs/jsonschema/jsonschema/validators.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stubs/jsonschema/jsonschema/validators.pyi b/stubs/jsonschema/jsonschema/validators.pyi index e93b25764b24..656aa20bc093 100644 --- a/stubs/jsonschema/jsonschema/validators.pyi +++ b/stubs/jsonschema/jsonschema/validators.pyi @@ -18,7 +18,7 @@ class _Validator: resolver: Any format_checker: Any evolve: Any - def __init__(self, schema, resolver: Any | None = ..., format_checker: Any | None = ...) -> None: ... + def __init__(self, schema: _Schema, resolver: Any | None = ..., format_checker: Any | None = ...) -> None: ... @classmethod def check_schema(cls, schema) -> None: ... def iter_errors(self, instance, _schema: Any | None = ...) -> Generator[Any, None, None]: ...