Deprecated django.contrib.gis.geoip2.GeoIP2.open().

This commit is contained in:
Nick Pope 2021-04-05 01:24:52 +01:00 committed by Mariusz Felisiak
parent 464af0975c
commit 07f9f9960c
5 changed files with 24 additions and 4 deletions

View File

@ -230,4 +230,9 @@ class GeoIP2:
@classmethod @classmethod
def open(cls, full_path, cache): def open(cls, full_path, cache):
warnings.warn(
"GeoIP2.open() is deprecated. Use GeoIP2() instead.",
RemovedInDjango60Warning,
stacklevel=2,
)
return GeoIP2(full_path, cache) return GeoIP2(full_path, cache)

View File

@ -66,6 +66,8 @@ details on these changes.
* The ``django.contrib.gis.geoip2.GeoIP2.coords()`` method will be removed. * The ``django.contrib.gis.geoip2.GeoIP2.coords()`` method will be removed.
* The ``django.contrib.gis.geoip2.GeoIP2.open()`` method will be removed.
.. _deprecation-removed-in-5.1: .. _deprecation-removed-in-5.1:
5.1 5.1

View File

@ -100,6 +100,10 @@ Instantiating
This classmethod instantiates the GeoIP object from the given database path This classmethod instantiates the GeoIP object from the given database path
and given cache setting. and given cache setting.
.. deprecated:: 5.1
Use the :class:`GeoIP2()` constructor instead.
Querying Querying
-------- --------

View File

@ -310,6 +310,9 @@ Miscellaneous
* The ``django.contrib.gis.geoip2.GeoIP2.coords()`` method is deprecated. Use * The ``django.contrib.gis.geoip2.GeoIP2.coords()`` method is deprecated. Use
``django.contrib.gis.geoip2.GeoIP2.lon_lat()`` instead. ``django.contrib.gis.geoip2.GeoIP2.lon_lat()`` instead.
* The ``django.contrib.gis.geoip2.GeoIP2.open()`` method is deprecated. Use the
:class:`~django.contrib.gis.geoip2.GeoIP2` constructor instead.
Features removed in 5.1 Features removed in 5.1
======================= =======================

View File

@ -29,14 +29,13 @@ class GeoIPTest(SimpleTestCase):
g1 = GeoIP2() # Everything inferred from GeoIP path g1 = GeoIP2() # Everything inferred from GeoIP path
path = settings.GEOIP_PATH path = settings.GEOIP_PATH
g2 = GeoIP2(path, 0) # Passing in data path explicitly. g2 = GeoIP2(path, 0) # Passing in data path explicitly.
g3 = GeoIP2.open(path, 0) # MaxMind Python API syntax.
# path accepts str and pathlib.Path. # path accepts str and pathlib.Path.
if isinstance(path, str): if isinstance(path, str):
g4 = GeoIP2(pathlib.Path(path)) g3 = GeoIP2(pathlib.Path(path))
else: else:
g4 = GeoIP2(str(path)) g3 = GeoIP2(str(path))
for g in (g1, g2, g3, g4): for g in (g1, g2, g3):
self.assertTrue(g._country) self.assertTrue(g._country)
self.assertTrue(g._city) self.assertTrue(g._city)
@ -198,3 +197,10 @@ class GeoIPTest(SimpleTestCase):
e1, e2 = g.coords(self.fqdn) e1, e2 = g.coords(self.fqdn)
self.assertIsInstance(e1, float) self.assertIsInstance(e1, float)
self.assertIsInstance(e2, float) self.assertIsInstance(e2, float)
def test_open_deprecation_warning(self):
msg = "GeoIP2.open() is deprecated. Use GeoIP2() instead."
with self.assertWarnsMessage(RemovedInDjango60Warning, msg):
g = GeoIP2.open(settings.GEOIP_PATH, 0)
self.assertTrue(g._country)
self.assertTrue(g._city)