summaryrefslogtreecommitdiff
path: root/jsonschema
diff options
context:
space:
mode:
authorJulian Berman <Julian@GrayVines.com>2023-03-05 08:26:30 +0200
committerJulian Berman <Julian@GrayVines.com>2023-03-06 07:50:56 +0200
commiteb004479645a4e1f0d842e4434b909f476569dcc (patch)
treedde7c42f3b86b949a3671bc15f6164a1e6ca1b8b /jsonschema
parent84199e984aba5f2c6bf5b121eb95faedc53951fc (diff)
downloadjsonschema-eb004479645a4e1f0d842e4434b909f476569dcc.tar.gz
Replace the other usages of pyrsistent with rpds.
Diffstat (limited to 'jsonschema')
-rw-r--r--jsonschema/_types.py26
-rw-r--r--jsonschema/tests/test_cli.py6
-rw-r--r--jsonschema/validators.py4
3 files changed, 15 insertions, 21 deletions
diff --git a/jsonschema/_types.py b/jsonschema/_types.py
index 5b543f7..9f8dfa0 100644
--- a/jsonschema/_types.py
+++ b/jsonschema/_types.py
@@ -1,26 +1,22 @@
from __future__ import annotations
+from typing import Any, Callable, Mapping
import numbers
-import typing
-from pyrsistent import pmap
-from pyrsistent.typing import PMap
+from rpds import HashTrieMap
import attr
from jsonschema.exceptions import UndefinedTypeCheck
-# unfortunately, the type of pmap is generic, and if used as the attr.ib
+# unfortunately, the type of HashTrieMap is generic, and if used as the attr.ib
# converter, the generic type is presented to mypy, which then fails to match
# the concrete type of a type checker mapping
# this "do nothing" wrapper presents the correct information to mypy
-def _typed_pmap_converter(
- init_val: typing.Mapping[
- str,
- typing.Callable[["TypeChecker", typing.Any], bool],
- ],
-) -> PMap[str, typing.Callable[["TypeChecker", typing.Any], bool]]:
- return pmap(init_val)
+def _typed_map_converter(
+ init_val: Mapping[str, Callable[["TypeChecker", Any], bool]],
+) -> HashTrieMap[str, Callable[["TypeChecker", Any], bool]]:
+ return HashTrieMap.convert(init_val)
def is_array(checker, instance):
@@ -82,11 +78,11 @@ class TypeChecker:
The initial mapping of types to their checking functions.
"""
- _type_checkers: PMap[
- str, typing.Callable[["TypeChecker", typing.Any], bool],
+ _type_checkers: HashTrieMap[
+ str, Callable[["TypeChecker", Any], bool],
] = attr.ib(
- default=pmap(),
- converter=_typed_pmap_converter,
+ default=HashTrieMap(),
+ converter=_typed_map_converter,
)
def __repr__(self):
diff --git a/jsonschema/tests/test_cli.py b/jsonschema/tests/test_cli.py
index 6d5873a..c5b0b2e 100644
--- a/jsonschema/tests/test_cli.py
+++ b/jsonschema/tests/test_cli.py
@@ -16,8 +16,6 @@ try: # pragma: no cover
except ImportError: # pragma: no cover
import importlib_metadata as metadata # type: ignore
-from pyrsistent import m
-
from jsonschema import Draft4Validator, Draft202012Validator
from jsonschema.exceptions import (
SchemaError,
@@ -70,13 +68,13 @@ def _message_for(non_json):
class TestCLI(TestCase):
def run_cli(
- self, argv, files=m(), stdin=StringIO(), exit_code=0, **override,
+ self, argv, files=None, stdin=StringIO(), exit_code=0, **override,
):
arguments = cli.parse_args(argv)
arguments.update(override)
self.assertFalse(hasattr(cli, "open"))
- cli.open = fake_open(files)
+ cli.open = fake_open(files or {})
try:
stdout, stderr = StringIO(), StringIO()
actual_exit_code = cli.run(
diff --git a/jsonschema/validators.py b/jsonschema/validators.py
index bd13544..3182d13 100644
--- a/jsonschema/validators.py
+++ b/jsonschema/validators.py
@@ -16,8 +16,8 @@ import reprlib
import warnings
from jsonschema_specifications import REGISTRY as SPECIFICATIONS
-from pyrsistent import m
from referencing import Specification
+from rpds import HashTrieMap
import attr
import referencing.jsonschema
@@ -802,7 +802,7 @@ class _RefResolver:
self,
base_uri,
referrer,
- store=m(),
+ store=HashTrieMap(),
cache_remote=True,
handlers=(),
urljoin_cache=None,