From 14fc2e97036fc9d7acb55ada4f16f1aa3bdc5ec7 Mon Sep 17 00:00:00 2001 From: David Smith Date: Fri, 8 Nov 2024 08:00:05 +0000 Subject: [PATCH] Improved consistency of GEOS error messages. --- django/contrib/gis/geos/coordseq.py | 4 ++-- django/contrib/gis/geos/geometry.py | 6 ++++-- django/contrib/gis/geos/polygon.py | 2 +- tests/gis_tests/geos_tests/test_coordseq.py | 2 +- tests/gis_tests/geos_tests/test_geos.py | 6 +++--- 5 files changed, 11 insertions(+), 9 deletions(-) diff --git a/django/contrib/gis/geos/coordseq.py b/django/contrib/gis/geos/coordseq.py index 484b53ab5f..a9ec4d2bf0 100644 --- a/django/contrib/gis/geos/coordseq.py +++ b/django/contrib/gis/geos/coordseq.py @@ -70,12 +70,12 @@ class GEOSCoordSeq(GEOSBase): def _checkindex(self, index): "Check the given index." if not (0 <= index < self.size): - raise IndexError("invalid GEOS Geometry index: %s" % index) + raise IndexError(f"Invalid GEOS Geometry index: {index}") def _checkdim(self, dim): "Check the given dimension." if dim < 0 or dim > 2: - raise GEOSException('invalid ordinate dimension "%d"' % dim) + raise GEOSException(f'Invalid ordinate dimension: "{dim:d}"') def _get_x(self, index): return capi.cs_getx(self.ptr, index, byref(c_double())) diff --git a/django/contrib/gis/geos/geometry.py b/django/contrib/gis/geos/geometry.py index 564b0be16e..477b7afa5e 100644 --- a/django/contrib/gis/geos/geometry.py +++ b/django/contrib/gis/geos/geometry.py @@ -353,7 +353,7 @@ class GEOSGeometryBase(GEOSBase): two Geometries match the elements in pattern. """ if not isinstance(pattern, str) or len(pattern) > 9: - raise GEOSException("invalid intersection matrix pattern") + raise GEOSException("Invalid intersection matrix pattern.") return capi.geos_relatepattern(self.ptr, other.ptr, force_bytes(pattern)) def touches(self, other): @@ -506,7 +506,9 @@ class GEOSGeometryBase(GEOSBase): # source SRS. srid = None elif srid is None or srid < 0: - raise GEOSException("Calling transform() with no SRID set is not supported") + raise GEOSException( + "Calling transform() with no SRID set is not supported." + ) # Creating an OGR Geometry, which is then transformed. g = gdal.OGRGeometry(self._ogr_ptr(), srid) diff --git a/django/contrib/gis/geos/polygon.py b/django/contrib/gis/geos/polygon.py index 6f76b57005..9e8d30647b 100644 --- a/django/contrib/gis/geos/polygon.py +++ b/django/contrib/gis/geos/polygon.py @@ -103,7 +103,7 @@ class Polygon(GEOSGeometry): param, msg=( "Parameter must be a sequence of LinearRings or objects that can " - "initialize to LinearRings" + "initialize to LinearRings." ), ): "Try to construct a ring from the given parameter." diff --git a/tests/gis_tests/geos_tests/test_coordseq.py b/tests/gis_tests/geos_tests/test_coordseq.py index 507a22d1a0..b6f5136dd1 100644 --- a/tests/gis_tests/geos_tests/test_coordseq.py +++ b/tests/gis_tests/geos_tests/test_coordseq.py @@ -9,7 +9,7 @@ class GEOSCoordSeqTest(SimpleTestCase): with self.subTest(i): self.assertEqual(coord_seq[i], (i, i)) for i in (-3, 10): - msg = "invalid GEOS Geometry index: %s" % i + msg = f"Invalid GEOS Geometry index: {i}" with self.subTest(i): with self.assertRaisesMessage(IndexError, msg): coord_seq[i] diff --git a/tests/gis_tests/geos_tests/test_geos.py b/tests/gis_tests/geos_tests/test_geos.py index 86ea2227fb..ac67d6ccad 100644 --- a/tests/gis_tests/geos_tests/test_geos.py +++ b/tests/gis_tests/geos_tests/test_geos.py @@ -679,7 +679,7 @@ class GEOSTest(SimpleTestCase, TestDataMixin): # Testing polygon construction. msg = ( "Parameter must be a sequence of LinearRings or " - "objects that can initialize to LinearRings" + "objects that can initialize to LinearRings." ) with self.assertRaisesMessage(TypeError, msg): Polygon(0, [1, 2, 3]) @@ -804,7 +804,7 @@ class GEOSTest(SimpleTestCase, TestDataMixin): def test_relate_pattern(self): "Testing relate() and relate_pattern()." g = fromstr("POINT (0 0)") - msg = "invalid intersection matrix pattern" + msg = "Invalid intersection matrix pattern." with self.assertRaisesMessage(GEOSException, msg): g.relate_pattern(0, "invalid pattern, yo") for rg in self.geometries.relate_geoms: @@ -1289,7 +1289,7 @@ class GEOSTest(SimpleTestCase, TestDataMixin): if isinstance(g, Point): # IndexError is not raised in GEOS 3.8.0. if geos_version_tuple() != (3, 8, 0): - msg = "invalid GEOS Geometry index:" + msg = "Invalid GEOS Geometry index:" with self.assertRaisesMessage(IndexError, msg): g.x elif isinstance(g, Polygon):