50295fb39e
H305: Imports not grouped correctly H307: Like imports should be grouped together Change-Id: Ic63d253e015298c7b952121a4b3634d2b1bdaf92 Implements: blueprint new-hacking-style-rules
80 lines
2.8 KiB
Python
80 lines
2.8 KiB
Python
# Copyright 2013 Hewlett-Packard Development Company, L.P.
|
|
#
|
|
# Author: Kiall Mac Innes <kiall@hp.com>
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
import datetime
|
|
|
|
import jsonschema
|
|
from jsonschema import _utils
|
|
|
|
|
|
def type_draft3(validator, types, instance, schema):
|
|
types = _utils.ensure_list(types)
|
|
|
|
# NOTE(kiall): A datetime object is not a string, but is still valid.
|
|
if ('format' in schema and schema['format'] == 'date-time'
|
|
and isinstance(instance, datetime.datetime)):
|
|
return
|
|
|
|
all_errors = []
|
|
for index, type in enumerate(types):
|
|
if type == "any":
|
|
return
|
|
if validator.is_type(type, "object"):
|
|
errors = list(validator.descend(instance, type, schema_path=index))
|
|
if not errors:
|
|
return
|
|
all_errors.extend(errors)
|
|
else:
|
|
if validator.is_type(instance, type):
|
|
return
|
|
else:
|
|
yield jsonschema.ValidationError(
|
|
_utils.types_msg(instance, types), context=all_errors,
|
|
)
|
|
|
|
|
|
def oneOf_draft3(validator, oneOf, instance, schema):
|
|
# Backported from Draft4 to Draft3
|
|
subschemas = iter(oneOf)
|
|
first_valid = next(
|
|
(s for s in subschemas if validator.is_valid(instance, s)), None,
|
|
)
|
|
|
|
if first_valid is None:
|
|
yield jsonschema.ValidationError(
|
|
"%r is not valid under any of the given schemas." % (instance,)
|
|
)
|
|
else:
|
|
more_valid = [s for s in subschemas
|
|
if validator.is_valid(instance, s)]
|
|
if more_valid:
|
|
more_valid.append(first_valid)
|
|
reprs = ", ".join(repr(schema) for schema in more_valid)
|
|
yield jsonschema.ValidationError(
|
|
"%r is valid under each of %s" % (instance, reprs)
|
|
)
|
|
|
|
|
|
def type_draft4(validator, types, instance, schema):
|
|
types = _utils.ensure_list(types)
|
|
|
|
# NOTE(kiall): A datetime object is not a string, but is still valid.
|
|
if ('format' in schema and schema['format'] == 'date-time'
|
|
and isinstance(instance, datetime.datetime)):
|
|
return
|
|
|
|
if not any(validator.is_type(instance, type) for type in types):
|
|
yield jsonschema.ValidationError(_utils.types_msg(instance, types))
|