summaryrefslogtreecommitdiff
path: root/jsonschema/_types.py
diff options
context:
space:
mode:
authorBen Smithers <ben.smithers@bristol.ac.uk>2017-11-27 20:30:05 +0000
committerBen Smithers <ben.smithers@bristol.ac.uk>2017-11-27 20:30:05 +0000
commit7c41d0ba8352dbe6b9a8ffabf9a0e8fadf9717d1 (patch)
treebef46626546a8d69ace5d6b9c2df353950fbee86 /jsonschema/_types.py
parent644259b1ebf862baeedd88871330cbee648ac0e3 (diff)
downloadjsonschema-7c41d0ba8352dbe6b9a8ffabf9a0e8fadf9717d1.tar.gz
Updated docs with new TypeChecker interface
- Included description of the new TypeChecker class and autodocs, added new exception, marked old interface as deprecated, updated example on how to provide a custom type check. Couple of code changes from writing docs: - Renamed type_ -> type in TypeChecker method params as Sphinx isn't happy with these names - Marked the type_checkers attribute as private
Diffstat (limited to 'jsonschema/_types.py')
-rw-r--r--jsonschema/_types.py45
1 files changed, 24 insertions, 21 deletions
diff --git a/jsonschema/_types.py b/jsonschema/_types.py
index 26c8aa9..989c1df 100644
--- a/jsonschema/_types.py
+++ b/jsonschema/_types.py
@@ -52,18 +52,21 @@ class TypeChecker(object):
A :class:`TypeChecker` performs type checking for an instance of
:class:`Validator`. Type checks to perform are set using
- :meth:`TypeChecker.redefine or :meth:`TypeChecker.redefine_many` and
+ :meth:`TypeChecker.redefine` or :meth:`TypeChecker.redefine_many` and
removed via :meth:`TypeChecker.remove` or
:meth:`TypeChecker.remove_many`. Each of these return a new
:class:`TypeChecker` object.
Arguments:
- None
+ type_checkers (pyrsistent.pmap):
+
+ It is recommend to set type checkers through
+ :meth:`TypeChecker.redefine` or :meth:`TypeChecker.redefine_many`
"""
- type_checkers = attr.ib(default=pyrsistent.pmap({}))
+ _type_checkers = attr.ib(default=pyrsistent.pmap({}))
- def is_type(self, instance, type_):
+ def is_type(self, instance, type):
"""
Check if the instance is of the appropriate type.
@@ -73,7 +76,7 @@ class TypeChecker(object):
The instance to check
- type_ (str):
+ type (str):
The name of the type that is expected.
@@ -84,21 +87,21 @@ class TypeChecker(object):
Raises:
- :exc:`UndefinedTypeCheck` if type_ is unknown to this object.
-
+ :exc:`jsonschema.exceptions.UndefinedTypeCheck`:
+ if type is unknown to this object.
"""
try:
- return self.type_checkers[type_](instance)
+ return self._type_checkers[type](instance)
except KeyError:
raise UndefinedTypeCheck
- def redefine(self, type_, fn):
+ def redefine(self, type, fn):
"""
- Redefine the checker for type_ to the function fn.
+ Redefine the checker for type to the function fn.
Arguments:
- type_ (str):
+ type (str):
The name of the type to check.
@@ -112,7 +115,7 @@ class TypeChecker(object):
A new :class:`TypeChecker` instance.
"""
- return self.redefine_many({type_:fn})
+ return self.redefine_many({type:fn})
def redefine_many(self, definitions=()):
"""
@@ -130,20 +133,20 @@ class TypeChecker(object):
"""
definitions = dict(definitions)
- evolver = self.type_checkers.evolver()
+ evolver = self._type_checkers.evolver()
for type_, checker in iteritems(definitions):
evolver[type_] = checker
return attr.evolve(self, type_checkers=evolver.persistent())
- def remove(self, type_):
+ def remove(self, type):
"""
Remove the type from the checkers that this object understands.
Arguments:
- type_ (str):
+ type (str):
The name of the type to remove.
@@ -153,10 +156,11 @@ class TypeChecker(object):
Raises:
- :exc:`UndefinedTypeCheck` if type_ is unknown to this object
+ :exc:`jsonschema.exceptions.UndefinedTypeCheck`:
+ if type is unknown to this object
"""
- return self.remove_many((type_,))
+ return self.remove_many((type,))
def remove_many(self, types):
"""
@@ -174,11 +178,10 @@ class TypeChecker(object):
Raises:
- :exc:`UndefinedTypeCheck` if any of the types are unknown to
- this object
-
+ :exc:`jsonschema.exceptions.UndefinedTypeCheck`:
+ if any of the types are unknown to this object
"""
- evolver = self.type_checkers.evolver()
+ evolver = self._type_checkers.evolver()
for type_ in types:
try: