Python jsonschema.exceptions() Examples

The following are 20 code examples of jsonschema.exceptions(). You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may also want to check out all available functions/classes of the module jsonschema , or try the search function .
Example #1
Source File: core.py    From notifiers with MIT License 6 votes vote down vote up
def _validate_data(self, data: dict):
        """
        Validates data against provider schema. Raises :class:`~notifiers.exceptions.BadArguments` if relevant

        :param data: Data to validate
        :raises: :class:`~notifiers.exceptions.BadArguments`
        """
        log.debug("validating provided data")
        e = best_match(self.validator.iter_errors(data))
        if e:
            custom_error_key = f"error_{e.validator}"
            msg = (
                e.schema[custom_error_key]
                if e.schema.get(custom_error_key)
                else e.message
            )
            raise BadArguments(validation_error=msg, provider=self.name, data=data) 
Example #2
Source File: data_objects.py    From loom with GNU Affero General Public License v3.0 6 votes vote down vote up
def update(self, instance, validated_data):
        # The only time a DataObject should be updated by the client
        # is to change upload_status of a file.
        value_data = validated_data.get('_value_info')
        if value_data:
            if not instance.type == 'file':
                raise serializers.ValidationError(
                    'Updating value is not allowed on DataObject '\
                    'with type "%s"' % instance.type)
            if not instance.value:
                raise serializers.ValidationError(
                    "Failed to update DataObject because FileResource is missing")
            try:
                instance.value.setattrs_and_save_with_retries({
                    'upload_status': value_data.get('upload_status')})
            except django.core.exceptions.ValidationError as e:
                raise serializers.ValidationError(e.messages)
        return instance 
Example #3
Source File: core.py    From notifiers with MIT License 6 votes vote down vote up
def notify(self, raise_on_errors: bool = False, **kwargs) -> Response:
        """
        The main method to send notifications. Prepares the data via the
        :meth:`~notifiers.core.SchemaResource._prepare_data` method and then sends the notification
        via the :meth:`~notifiers.core.Provider._send_notification` method

        :param kwargs: Notification data
        :param raise_on_errors: Should the :meth:`~notifiers.core.Response.raise_on_errors` be invoked immediately
        :return: A :class:`~notifiers.core.Response` object
        :raises: :class:`~notifiers.exceptions.NotificationError` if ``raise_on_errors`` is set to True and response
         contained errors
        """
        data = self._process_data(**kwargs)
        rsp = self._send_notification(data)
        if raise_on_errors:
            rsp.raise_on_errors()
        return rsp 
Example #4
Source File: data_objects.py    From loom with GNU Affero General Public License v3.0 6 votes vote down vote up
def _create_file(self, validated_data):
        value = validated_data.pop('_value_info')
        try:
            self._cached_data_object.save()
            # If file belongs to TaskAttemptLogFile, make the connection
            log_file = self.context.get('task_attempt_log_file')
            if log_file:
                log_file.setattrs_and_save_with_retries({
                    'data_object': self._cached_data_object})
            resource_init_args = copy.copy(value)
            if self.context.get('task_attempt'):
                resource_init_args['task_attempt'] = self.context.get(
                    'task_attempt')
            resource_init_args['data_object'] = self._cached_data_object
            file_resource = FileResource.initialize(**resource_init_args)
            try:
                file_resource.full_clean()
            except django.core.exceptions.ValidationError as e:
                raise serializers.ValidationError(e.message_dict)
            file_resource.save()
            return self._cached_data_object
        except Exception as e:
            self._cleanup(self._cached_data_object)
            raise 
Example #5
Source File: data_objects.py    From loom with GNU Affero General Public License v3.0 6 votes vote down vote up
def _validate_and_cache_nonfile(self, data):
        value = data.get('_value_info')
        type = data.get('type')
        try:
            self._cached_data_object = DataObject.objects.get(
                uuid=data.get('uuid'))
            self._do_create_new_data_object=False
            self._verify_data_object_matches_data(self._cached_data_object, data)
            return data
        except DataObject.DoesNotExist:
            pass
        self._cached_data_object = DataObjectSerializer\
            .Meta.model.get_by_value(value, type)
        self._do_create_new_data_object=False # already saved
        try:
            self._cached_data_object.full_clean()
        except django.core.exceptions.ValidationError as e:
            raise serializers.ValidationError(e.message_dict)
        return data 
Example #6
Source File: validators.py    From loom with GNU Affero General Public License v3.0 6 votes vote down vote up
def validate_output_parser(cls, value):
        OPTIONS_VALIDATORS = {
            'delimited': cls._validate_delimited_output_parser_options
        }

        schema = {
            "type": "object",
            "properties": {"type": {"type": "string",
                                    "enum": ["delimited"]},
                           "options": {"type": "object"}
            },
            "required": ["type"]
        }
        try:
            jsonschema.validate(value, schema)
        except jsonschema.exceptions.ValidationError as e:
            raise ValidationError(e.message)
    
        # Validate options specific to parser_type
        if value.get('options'):
            validate_options = OPTIONS_VALIDATORS[value.get('type')]
            validate_options(value.get('options')) 
Example #7
Source File: validators.py    From loom with GNU Affero General Public License v3.0 5 votes vote down vote up
def validate_environment(value):
    schema = {
        "type": "object",
        "properties": {"docker_image": {"type": "string"}},
        "required": ["docker_image"]
    }

    try:
        jsonschema.validate(value, schema)
    except jsonschema.exceptions.ValidationError as e:
        raise ValidationError(e.message) 
Example #8
Source File: test_jsonify_with_None_value_attribute.py    From alchemyjsonschema with MIT License 5 votes vote down vote up
def test_it__validation_failure__when_verbose_is_True():
    UserKey = _makeModel()
    schema = _makeSchema(UserKey)

    uk = UserKey(key=1, keytype="*keytype*")
    d = _callFUT(uk, schema, verbose=True)

    assert d["deactivated_at"] is None

    import jsonschema
    from jsonschema.exceptions import ValidationError

    with pytest.raises(ValidationError):
        jsonschema.validate(d, schema) 
Example #9
Source File: data_objects.py    From loom with GNU Affero General Public License v3.0 5 votes vote down vote up
def _cleanup(self, data_object):
        try:
            log_file = data_object.task_attempt_log_file
            log_file.setattrs_and_save_with_retries({
                'data_object': None})
        except django.core.exceptions.ObjectDoesNotExist:
            pass
        data_object.delete() 
Example #10
Source File: validators.py    From loom with GNU Affero General Public License v3.0 5 votes vote down vote up
def validate_data_path(value):
    schema = {
        "type": "array",
        "items": {
            "type": "array",
            "items": [{"type": "integer"},
                      {"type": "integer"}]
        }
    }
    try:
        jsonschema.validate(value, schema)
    except jsonschema.exceptions.ValidationError as e:
        raise ValidationError(e.message) 
Example #11
Source File: validators.py    From loom with GNU Affero General Public License v3.0 5 votes vote down vote up
def validate_notification_context(value):
    schema = {
        "type": "object",
        "properties": {"server_name": {"type": "string"},
                       "server_url": {"type": "string"}},
        "required": ["server_name"]
    }
    try:
        jsonschema.validate(value, schema)
    except jsonschema.exceptions.ValidationError as e:
        raise ValidationError(e.message) 
Example #12
Source File: core.py    From notifiers with MIT License 5 votes vote down vote up
def raise_on_errors(self):
        """
        Raises a :class:`~notifiers.exceptions.NotificationError` if response hold errors

        :raises: :class:`~notifiers.exceptions.NotificationError`: If response has errors
        """
        if self.errors:
            raise NotificationError(
                provider=self.provider,
                data=self.data,
                errors=self.errors,
                response=self.response,
            ) 
Example #13
Source File: validators.py    From loom with GNU Affero General Public License v3.0 5 votes vote down vote up
def _validate_string_data(cls, value):
        schema = {"type": "object",
                  "properties": {"value": {"type": "string"}},
                  "required": ["value"]}
        try:
            jsonschema.validate(value, schema)
        except jsonschema.exceptions.ValidationError as e:
            raise ValidationError(e.message) 
Example #14
Source File: validators.py    From loom with GNU Affero General Public License v3.0 5 votes vote down vote up
def _validate_integer_data(cls, value):
        schema = {"type": "object",
                  "properties": {"value": {"type": "number"}},
                  "required": ["value"]}
        try:
            jsonschema.validate(value, schema)
        except jsonschema.exceptions.ValidationError as e:
            raise ValidationError(e.message) 
Example #15
Source File: validators.py    From loom with GNU Affero General Public License v3.0 5 votes vote down vote up
def _validate_float_data(cls, value):
        schema = {"type": "object",
                  "properties": {"value": {"type": "number"}},
                  "required": ["value"]}
        try:
            jsonschema.validate(value, schema)
        except jsonschema.exceptions.ValidationError as e:
            raise ValidationError(e.message) 
Example #16
Source File: validators.py    From loom with GNU Affero General Public License v3.0 5 votes vote down vote up
def _validate_boolean_data(cls, value):
        schema = {"type": "object",
                  "properties": {"value": {"type": "boolean"}},
                  "required": ["value"]}
        try:
            jsonschema.validate(value, schema)
        except jsonschema.exceptions.ValidationError as e:
            raise ValidationError(e.message) 
Example #17
Source File: test_json_schema.py    From indra with BSD 2-Clause "Simplified" License 5 votes vote down vote up
def test_valid_modification():
    # Calls to validate() in this function should not raise exceptions
    mod_types = ['Phosphorylation', 'Dephosphorylation', 'Ubiquitination',
                 'Deubiquitination', 'Sumoylation', 'Desumoylation',
                 'Hydroxylation', 'Dehydroxylation', 'Acetylation',
                 'Deacetylation', 'Glycosylation', 'Deglycosylation',
                 'Farnesylation', 'Defarnesylation', 'Geranylgeranylation',
                 'Degeranylgeranylation', 'Palmitoylation', 'Depalmitoylation',
                 'Myristoylation', 'Demyristoylation', 'Ribosylation',
                 'Deribosylation', 'Methylation', 'Demethylation',
                 'Activation', 'Inhibition', 'IncreaseAmount',
                 'DecreaseAmount']

    for mod_type in mod_types:
        s = {'enz': valid_agent1, 'sub': valid_agent2,
             'type': mod_type, 'id': '5'}
        jsonschema.validate([s], schema)

        s['enz'] = agent_mod
        jsonschema.validate([s], schema)

        s['enz'] = agent_mut
        jsonschema.validate([s], schema)

        s['enz'] = agent_act
        jsonschema.validate([s], schema)

        if mod_type not in ['Activation', 'Inhibition', 'IncreaseAmount',
                            'DecreaseAmount']:
            s['residue'] = 'S'
            jsonschema.validate([s], schema)

            s['position'] = '10'
            jsonschema.validate([s], schema) 
Example #18
Source File: core.py    From notifiers with MIT License 5 votes vote down vote up
def _validate_data_dependencies(self, data: dict) -> dict:
        """
        Validates specific dependencies based on the content of the data, as opposed to its structure which can be
        verified on the schema level

        :param data: Data to validate
        :return: Return data if its valid
        :raises: :class:`~notifiers.exceptions.NotifierException`
        """
        return data 
Example #19
Source File: core.py    From notifiers with MIT License 5 votes vote down vote up
def _validate_schema(self):
        """
        Validates provider schema for syntax issues. Raises :class:`~notifiers.exceptions.SchemaError` if relevant

        :raises: :class:`~notifiers.exceptions.SchemaError`
        """
        try:
            log.debug("validating provider schema")
            self.validator.check_schema(self.schema)
        except jsonschema.SchemaError as e:
            raise SchemaError(
                schema_error=e.message, provider=self.name, data=self.schema
            ) 
Example #20
Source File: validators.py    From loom with GNU Affero General Public License v3.0 4 votes vote down vote up
def validate_outputs(cls, value):
        schema = {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "channel": {"type": "string"},
                    "as_channel": {"type": "string"},
                    "type": {
                        "type": "string",
                        "enum": ["file", "boolean", "string", "float", "integer"]},
                    "mode": {"type": "string"},
                    "source": {
                        "type": "object",
                        "properties": {
                            "stream": {"type": "string",
                                       "enum": ["stdout", "stderr"]},
                            "filename": {"type": "string"},
                            "filenames": {
                                "oneOf": [
                                    {"type": "string"},
                                    {"type": "array",
                                     "items": {"type": "string"}}
                                ]},
                            "glob": {"type": "string"}
                        }
                    },
                    "parser": {
                        "type": "object",
                        "properties": {
                            "type": {"type": "string"},
                            "options": {"type": "object"}
                        }
                    }
                },
                "required" : ["type", "channel"]
            }
        }
        try:
            jsonschema.validate(value, schema)
	except jsonschema.exceptions.ValidationError as e:
            raise ValidationError(e.message)