OXIESEC PANEL
- Current Dir:
/
/
opt
/
alt
/
python37
/
lib
/
python3.7
/
site-packages
/
jsons
Server IP: 2a02:4780:11:1084:0:327f:3464:10
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
09/05/2025 09:36:16 AM
rwxr-xr-x
📄
__init__.py
11.57 KB
03/16/2023 12:57:19 PM
rw-r--r--
📁
__pycache__
-
03/16/2023 12:57:19 PM
rwxr-xr-x
📄
_cache.py
1.23 KB
03/16/2023 12:57:19 PM
rw-r--r--
📄
_common_impl.py
5.89 KB
03/16/2023 12:57:19 PM
rw-r--r--
📄
_compatibility_impl.py
3.06 KB
03/16/2023 12:57:19 PM
rw-r--r--
📄
_datetime_impl.py
4.98 KB
03/16/2023 12:57:19 PM
rw-r--r--
📄
_dump_impl.py
4.01 KB
03/16/2023 12:57:19 PM
rw-r--r--
📄
_extra_impl.py
1.7 KB
03/16/2023 12:57:19 PM
rw-r--r--
📄
_fork_impl.py
1.39 KB
03/16/2023 12:57:19 PM
rw-r--r--
📄
_key_transformers.py
1.32 KB
03/16/2023 12:57:19 PM
rw-r--r--
📄
_lizers_impl.py
5.73 KB
03/16/2023 12:57:19 PM
rw-r--r--
📄
_load_impl.py
8.16 KB
03/16/2023 12:57:19 PM
rw-r--r--
📄
_multitasking.py
2.34 KB
03/16/2023 12:57:19 PM
rw-r--r--
📄
_package_info.py
376 bytes
03/16/2023 12:57:19 PM
rw-r--r--
📄
_transform_impl.py
1.48 KB
03/16/2023 12:57:19 PM
rw-r--r--
📄
_validation.py
2.64 KB
03/16/2023 12:57:19 PM
rw-r--r--
📁
classes
-
03/16/2023 12:57:19 PM
rwxr-xr-x
📄
decorators.py
6.62 KB
03/16/2023 12:57:19 PM
rw-r--r--
📁
deserializers
-
03/16/2023 12:57:19 PM
rwxr-xr-x
📄
exceptions.py
6.02 KB
03/16/2023 12:57:19 PM
rw-r--r--
📁
serializers
-
03/16/2023 12:57:19 PM
rwxr-xr-x
Editing: _validation.py
Close
""" PRIVATE MODULE: do not import (from) it directly. This module contains functionality for validating objects. """ from typing import Union, Sequence, Callable from jsons._cache import cached from jsons._common_impl import StateHolder, get_class_name from jsons._lizers_impl import _get_lizer from jsons.exceptions import ValidationError def set_validator( func: Callable[[object], bool], cls: Union[type, Sequence[type]], *, fork_inst: type = StateHolder) -> None: """ Set a validator function for the given ``cls``. The function should accept an instance of the type it should validate and must return ``False`` or raise any exception in case of a validation failure. :param func: the function that takes an instance of type ``cls`` and returns a bool (``True`` if the validation was successful). :param cls: the type or types that ``func`` is able to validate. :param fork_inst: if given, it uses this fork of ``JsonSerializable``. :return: None. """ if isinstance(cls, Sequence): for cls_ in cls: set_validator(func, cls=cls_, fork_inst=fork_inst) else: cls_name = get_class_name(cls, fully_qualified=True) fork_inst._validators[cls_name.lower()] = func fork_inst._classes_validators.append(cls) @cached def get_validator( cls: type, fork_inst: type = StateHolder) -> callable: """ Return the validator function that would be used for the given ``cls``. :param cls: the type for which a deserializer is to be returned. :param fork_inst: if given, it uses this fork of ``JsonSerializable``. :return: a validator function. """ return _get_lizer(cls, fork_inst._validators, fork_inst._classes_validators, fork_inst) def validate( obj: object, cls: type, fork_inst: type = StateHolder) -> None: """ Validate the given ``obj`` with the validator that was registered for ``cls``. Raises a ``ValidationError`` if the validation failed. :param obj: the object that is to be validated. :param cls: the type of which the validator function was registered. :param fork_inst: if given, it uses this fork of ``JsonSerializable``. :return: None. """ validator = get_validator(cls, fork_inst) result = True msg = 'Validation failed.' if validator: try: result = validator(obj) except Exception as err: if err.args: msg = err.args[0] result = False if not result: raise ValidationError(msg)