From 16aa9a5dd1d123d071caa44656efdc01a8ef514e Mon Sep 17 00:00:00 2001 From: Jaime Ferrer Date: Fri, 8 May 2020 07:06:08 +0100 Subject: [PATCH 1/2] Improve point validation --- geojson/geometry.py | 5 ++++- tests/test_validation.py | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/geojson/geometry.py b/geojson/geometry.py index 8f2d8ca..5c52773 100644 --- a/geojson/geometry.py +++ b/geojson/geometry.py @@ -1,5 +1,6 @@ import sys from decimal import Decimal +from numbers import Number from geojson.base import GeoJSON @@ -83,7 +84,9 @@ def check_point(coord): return 'each position must be a list' if len(coord) not in (2, 3): return 'a position must have exactly 2 or 3 values' - + for number in coord: + if not isinstance(number, Number): + return 'a position cannot have inner positions' class Point(Geometry): def errors(self): diff --git a/tests/test_validation.py b/tests/test_validation.py index d3abf4c..2e90911 100644 --- a/tests/test_validation.py +++ b/tests/test_validation.py @@ -54,6 +54,9 @@ def test_invalid_point(self): point = geojson.Point((10, 20, 30, 40)) self.assertEqual(point.is_valid, False) + point = geojson.Point([(10,20), (30,40)]) + self.assertEqual(point.is_valid, False) + def test_valid_point(self): point = geojson.Point((-3.68, 40.41)) self.assertEqual(point.is_valid, True) From 522bdec1dc6101c89f3a9ca767da3598a84eb78e Mon Sep 17 00:00:00 2001 From: Jaime Ferrer Date: Fri, 8 May 2020 07:23:18 +0100 Subject: [PATCH 2/2] Fix flake8 --- geojson/geometry.py | 3 ++- tests/test_validation.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/geojson/geometry.py b/geojson/geometry.py index 5c52773..d4df81d 100644 --- a/geojson/geometry.py +++ b/geojson/geometry.py @@ -86,7 +86,8 @@ def check_point(coord): return 'a position must have exactly 2 or 3 values' for number in coord: if not isinstance(number, Number): - return 'a position cannot have inner positions' + return 'a position cannot have inner positions' + class Point(Geometry): def errors(self): diff --git a/tests/test_validation.py b/tests/test_validation.py index 2e90911..f40d342 100644 --- a/tests/test_validation.py +++ b/tests/test_validation.py @@ -54,7 +54,7 @@ def test_invalid_point(self): point = geojson.Point((10, 20, 30, 40)) self.assertEqual(point.is_valid, False) - point = geojson.Point([(10,20), (30,40)]) + point = geojson.Point([(10, 20), (30, 40)]) self.assertEqual(point.is_valid, False) def test_valid_point(self):