From ea87a85fad9994dbb0748df25bc9c2d99b24809b Mon Sep 17 00:00:00 2001
From: Tim Graham <timograham@gmail.com>
Date: Sat, 9 Feb 2019 08:40:55 -0500
Subject: [PATCH] Dropped support for GEOS 3.4.

---
 django/contrib/gis/geos/collections.py   | 9 +--------
 docs/ref/contrib/gis/install/geolibs.txt | 3 +--
 docs/releases/3.0.txt                    | 2 +-
 tests/gis_tests/geos_tests/test_geos.py  | 8 --------
 4 files changed, 3 insertions(+), 19 deletions(-)

diff --git a/django/contrib/gis/geos/collections.py b/django/contrib/gis/geos/collections.py
index 9c3a2407d1..bf584c9021 100644
--- a/django/contrib/gis/geos/collections.py
+++ b/django/contrib/gis/geos/collections.py
@@ -5,9 +5,8 @@
 from ctypes import byref, c_int, c_uint
 
 from django.contrib.gis.geos import prototypes as capi
-from django.contrib.gis.geos.error import GEOSException
 from django.contrib.gis.geos.geometry import GEOSGeometry, LinearGeometryMixin
-from django.contrib.gis.geos.libgeos import GEOM_PTR, geos_version_tuple
+from django.contrib.gis.geos.libgeos import GEOM_PTR
 from django.contrib.gis.geos.linestring import LinearRing, LineString
 from django.contrib.gis.geos.point import Point
 from django.contrib.gis.geos.polygon import Polygon
@@ -98,12 +97,6 @@ class MultiLineString(LinearGeometryMixin, GeometryCollection):
     _allowed = (LineString, LinearRing)
     _typeid = 5
 
-    @property
-    def closed(self):
-        if geos_version_tuple() < (3, 5):
-            raise GEOSException("MultiLineString.closed requires GEOS >= 3.5.0.")
-        return super().closed
-
 
 class MultiPolygon(GeometryCollection):
     _allowed = Polygon
diff --git a/docs/ref/contrib/gis/install/geolibs.txt b/docs/ref/contrib/gis/install/geolibs.txt
index ea826da525..a0b341104d 100644
--- a/docs/ref/contrib/gis/install/geolibs.txt
+++ b/docs/ref/contrib/gis/install/geolibs.txt
@@ -8,7 +8,7 @@ geospatial libraries:
 ========================  ====================================  ================================  ===================================
 Program                   Description                           Required                          Supported Versions
 ========================  ====================================  ================================  ===================================
-:doc:`GEOS <../geos>`     Geometry Engine Open Source           Yes                               3.7, 3.6, 3.5, 3.4
+:doc:`GEOS <../geos>`     Geometry Engine Open Source           Yes                               3.7, 3.6, 3.5
 `PROJ.4`_                 Cartographic Projections library      Yes (PostgreSQL and SQLite only)  5.2, 5.1, 5.0, 4.x
 :doc:`GDAL <../gdal>`     Geospatial Data Abstraction Library   Yes                               2.4, 2.3, 2.2, 2.1, 2.0
 :doc:`GeoIP <../geoip2>`  IP-based geolocation library          No                                2
@@ -21,7 +21,6 @@ totally fine with GeoDjango. Your mileage may vary.
 
 ..
     Libs release dates:
-    GEOS 3.4.0 2013-08-11
     GEOS 3.5.0 2015-08-15
     GEOS 3.6.0 2016-10-25
     GEOS 3.7.0 2018-09-10
diff --git a/docs/releases/3.0.txt b/docs/releases/3.0.txt
index 7d88d4d9ef..7f2d167497 100644
--- a/docs/releases/3.0.txt
+++ b/docs/releases/3.0.txt
@@ -229,7 +229,7 @@ backends.
 
 * Support for SpatiaLite 4.1 and 4.2 is removed.
 
-* Support for GDAL 1.11 is removed.
+* Support for GDAL 1.11 and GEOS 3.4 is removed.
 
 Dropped support for PostgreSQL 9.4
 ----------------------------------
diff --git a/tests/gis_tests/geos_tests/test_geos.py b/tests/gis_tests/geos_tests/test_geos.py
index 6818339a9b..e2facb879d 100644
--- a/tests/gis_tests/geos_tests/test_geos.py
+++ b/tests/gis_tests/geos_tests/test_geos.py
@@ -725,14 +725,6 @@ class GEOSTest(SimpleTestCase, TestDataMixin):
         self.assertFalse(ls_not_closed.closed)
         self.assertTrue(ls_closed.closed)
 
-        if geos_version_tuple() >= (3, 5):
-            self.assertFalse(MultiLineString(ls_closed, ls_not_closed).closed)
-            self.assertTrue(MultiLineString(ls_closed, ls_closed).closed)
-
-        with mock.patch('django.contrib.gis.geos.libgeos.geos_version', lambda: b'3.4.9'):
-            with self.assertRaisesMessage(GEOSException, "MultiLineString.closed requires GEOS >= 3.5.0."):
-                MultiLineString().closed
-
     def test_srid(self):
         "Testing the SRID property and keyword."
         # Testing SRID keyword on Point