diff --git a/geojson/geometry.py b/geojson/geometry.py index 30facc3..fd312c4 100644 --- a/geojson/geometry.py +++ b/geojson/geometry.py @@ -1,6 +1,7 @@ from decimal import Decimal from geojson.base import GeoJSON +import sys class Geometry(GeoJSON): @@ -8,6 +9,12 @@ class Geometry(GeoJSON): Represents an abstract base class for a WGS84 geometry. """ + if (sys.version_info[0] == 3): + # Python 3.x has no long type + JSON_compliant_types = (float, int, Decimal) + else: + JSON_compliant_types = (float, int, Decimal, long) # noqa + def __init__(self, coordinates=None, crs=None, **extra): """ Initialises a Geometry object. @@ -29,7 +36,7 @@ def clean_coordinates(cls, coords): for coord in coords: if isinstance(coord, (list, tuple)): cls.clean_coordinates(coord) - elif not isinstance(coord, (float, int, Decimal)): + elif not isinstance(coord, cls.JSON_compliant_types): raise ValueError("%r is not JSON compliant number" % coord)