From 2b9a72273edeac33da7d7f9054f676b0e9f37750 Mon Sep 17 00:00:00 2001 From: Vincent Pelletier Date: Mon, 29 Dec 2014 16:21:42 +0100 Subject: Improve mutlipleOf validator with floating point value. Rely on system's built-in float tolerance by comparing quotient with cast quotient instead of checking distance to remainder. --- jsonschema/_validators.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/jsonschema/_validators.py b/jsonschema/_validators.py index 8999e6a..7e5956d 100644 --- a/jsonschema/_validators.py +++ b/jsonschema/_validators.py @@ -5,9 +5,6 @@ from jsonschema.exceptions import FormatError, ValidationError from jsonschema.compat import iteritems -FLOAT_TOLERANCE = 10 ** -15 - - def patternProperties(validator, patternProperties, instance, schema): if not validator.is_type(instance, "object"): return @@ -111,8 +108,8 @@ def multipleOf(validator, dB, instance, schema): return if isinstance(dB, float): - mod = instance % dB - failed = (mod > FLOAT_TOLERANCE) and (dB - mod) > FLOAT_TOLERANCE + quotient = instance / dB + failed = int(quotient) != quotient else: failed = instance % dB -- cgit v1.2.1