summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulian Berman <Julian@GrayVines.com>2022-08-20 12:00:08 +0300
committerJulian Berman <Julian@GrayVines.com>2022-08-20 12:00:08 +0300
commit229253cad55b2f573935259d72dd578c49288a7a (patch)
tree88cd615cfdc641da2686948662c7d96125d32012
parentedba224b2de94122d4009eef24163f3fd6e43ead (diff)
downloadjsonschema-229253cad55b2f573935259d72dd578c49288a7a.tar.gz
Type pmap using pyrsistent's typing.
Dealing with mypy is <insert 4 letter word here>.
-rw-r--r--jsonschema/_types.py24
1 files changed, 9 insertions, 15 deletions
diff --git a/jsonschema/_types.py b/jsonschema/_types.py
index 20ca418..9e31506 100644
--- a/jsonschema/_types.py
+++ b/jsonschema/_types.py
@@ -4,6 +4,7 @@ import numbers
import typing
from pyrsistent import pmap
+from pyrsistent.typing import PMap
import attr
from jsonschema.exceptions import UndefinedTypeCheck
@@ -18,14 +19,8 @@ def _typed_pmap_converter(
str,
typing.Callable[["TypeChecker", typing.Any], bool],
],
-) -> typing.Mapping[str, typing.Callable[["TypeChecker", typing.Any], bool]]:
- return typing.cast(
- typing.Mapping[
- str,
- typing.Callable[["TypeChecker", typing.Any], bool],
- ],
- pmap(init_val),
- )
+) -> PMap[str, typing.Callable[["TypeChecker", typing.Any], bool]]:
+ return pmap(init_val)
def is_array(checker, instance):
@@ -83,7 +78,7 @@ class TypeChecker:
The initial mapping of types to their checking functions.
"""
- _type_checkers: typing.Mapping[
+ _type_checkers: PMap[
str, typing.Callable[["TypeChecker", typing.Any], bool],
] = attr.ib(
default=pmap(),
@@ -159,9 +154,8 @@ class TypeChecker:
A new `TypeChecker` instance.
"""
- return attr.evolve(
- self, type_checkers=self._type_checkers.update(definitions),
- )
+ type_checkers = self._type_checkers.update(definitions)
+ return attr.evolve(self, type_checkers=type_checkers)
def remove(self, *types):
"""
@@ -184,13 +178,13 @@ class TypeChecker:
if any given type is unknown to this object
"""
- checkers = self._type_checkers
+ type_checkers = self._type_checkers
for each in types:
try:
- checkers = checkers.remove(each)
+ type_checkers = type_checkers.remove(each)
except KeyError:
raise UndefinedTypeCheck(each)
- return attr.evolve(self, type_checkers=checkers)
+ return attr.evolve(self, type_checkers=type_checkers)
draft3_type_checker = TypeChecker(