summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Gaynor <alex.gaynor@gmail.com>2013-11-02 10:18:46 -0700
committerAlex Gaynor <alex.gaynor@gmail.com>2013-11-02 10:18:46 -0700
commit19256f300e44b0a682f76fc1dda673862bae49d1 (patch)
tree0a2a00bf15ea0649ba8150aeec22da4023c43cc1
parent8b3d9d96ed8304d749c9056c42be89084d9b34aa (diff)
Continue to attack E302 violations
-rw-r--r--django/contrib/formtools/tests/wizard/namedwizardtests/forms.py6
-rw-r--r--django/contrib/formtools/tests/wizard/namedwizardtests/urls.py2
-rw-r--r--django/contrib/formtools/tests/wizard/test_forms.py2
-rw-r--r--django/contrib/formtools/tests/wizard/wizardtests/forms.py7
-rw-r--r--django/contrib/formtools/wizard/forms.py1
-rw-r--r--django/contrib/formtools/wizard/storage/exceptions.py2
-rw-r--r--django/contrib/formtools/wizard/views.py1
-rw-r--r--django/contrib/gis/admin/options.py1
-rw-r--r--django/contrib/gis/db/backends/base.py1
-rw-r--r--django/contrib/gis/db/backends/mysql/compiler.py6
-rw-r--r--django/contrib/gis/db/backends/mysql/creation.py2
-rw-r--r--django/contrib/gis/db/backends/mysql/introspection.py1
-rw-r--r--django/contrib/gis/db/backends/oracle/adapter.py1
-rw-r--r--django/contrib/gis/db/backends/oracle/compiler.py7
-rw-r--r--django/contrib/gis/db/backends/oracle/creation.py1
-rw-r--r--django/contrib/gis/db/backends/oracle/introspection.py1
-rw-r--r--django/contrib/gis/db/backends/oracle/models.py2
-rw-r--r--django/contrib/gis/db/backends/oracle/operations.py5
-rw-r--r--django/contrib/gis/db/backends/postgis/adapter.py1
-rw-r--r--django/contrib/gis/db/backends/postgis/introspection.py2
-rw-r--r--django/contrib/gis/db/backends/postgis/models.py2
-rw-r--r--django/contrib/gis/db/backends/postgis/operations.py6
-rw-r--r--django/contrib/gis/db/backends/spatialite/adapter.py1
-rw-r--r--django/contrib/gis/db/backends/spatialite/base.py1
-rw-r--r--django/contrib/gis/db/backends/spatialite/client.py1
-rw-r--r--django/contrib/gis/db/backends/spatialite/introspection.py2
-rw-r--r--django/contrib/gis/db/backends/spatialite/models.py2
-rw-r--r--django/contrib/gis/db/backends/spatialite/operations.py6
-rw-r--r--django/contrib/gis/db/backends/utils.py2
-rw-r--r--django/contrib/gis/db/models/aggregates.py5
-rw-r--r--django/contrib/gis/db/models/fields.py9
-rw-r--r--django/contrib/gis/db/models/manager.py1
-rw-r--r--django/contrib/gis/db/models/proxy.py1
-rw-r--r--django/contrib/gis/db/models/query.py2
-rw-r--r--django/contrib/gis/db/models/sql/aggregates.py6
-rw-r--r--django/contrib/gis/db/models/sql/compiler.py7
-rw-r--r--django/contrib/gis/db/models/sql/conversion.py4
-rw-r--r--django/contrib/gis/db/models/sql/query.py1
-rw-r--r--django/contrib/gis/db/models/sql/where.py2
-rw-r--r--django/contrib/gis/feeds.py5
-rw-r--r--django/contrib/gis/gdal/base.py1
-rw-r--r--django/contrib/gis/gdal/datasource.py1
-rw-r--r--django/contrib/gis/gdal/driver.py1
-rw-r--r--django/contrib/gis/gdal/envelope.py2
-rw-r--r--django/contrib/gis/gdal/error.py5
-rw-r--r--django/contrib/gis/gdal/feature.py1
-rw-r--r--django/contrib/gis/gdal/field.py12
-rw-r--r--django/contrib/gis/gdal/geometries.py2
-rw-r--r--django/contrib/gis/gdal/layer.py1
-rw-r--r--django/contrib/gis/gdal/srs.py1
-rw-r--r--django/contrib/gis/geoip/base.py2
-rw-r--r--django/contrib/gis/geos/base.py1
-rw-r--r--django/contrib/gis/geos/io.py2
-rw-r--r--django/contrib/gis/geos/mutable_list.py1
-rw-r--r--django/contrib/gis/geos/polygon.py1
-rw-r--r--django/contrib/gis/geos/prepared.py1
-rw-r--r--django/contrib/gis/measure.py2
-rw-r--r--django/contrib/gis/shortcuts.py4
-rw-r--r--django/contrib/gis/sitemaps/georss.py1
-rw-r--r--django/contrib/gis/sitemaps/kml.py3
-rw-r--r--django/contrib/gis/sitemaps/views.py1
-rw-r--r--django/contrib/gis/tests/test_measure.py1
-rw-r--r--django/contrib/gis/tests/utils.py4
-rw-r--r--django/contrib/gis/views.py1
-rw-r--r--django/contrib/sites/management.py1
-rw-r--r--django/contrib/staticfiles/handlers.py1
-rw-r--r--django/contrib/staticfiles/urls.py1
67 files changed, 171 insertions, 2 deletions
diff --git a/django/contrib/formtools/tests/wizard/namedwizardtests/forms.py b/django/contrib/formtools/tests/wizard/namedwizardtests/forms.py
index c89f51e179..fa9071d9db 100644
--- a/django/contrib/formtools/tests/wizard/namedwizardtests/forms.py
+++ b/django/contrib/formtools/tests/wizard/namedwizardtests/forms.py
@@ -14,21 +14,25 @@ from django.contrib.formtools.wizard.views import NamedUrlWizardView
temp_storage_location = tempfile.mkdtemp(dir=os.environ.get('DJANGO_TEST_TEMP_DIR'))
temp_storage = FileSystemStorage(location=temp_storage_location)
+
class Page1(forms.Form):
name = forms.CharField(max_length=100)
user = forms.ModelChoiceField(queryset=User.objects.all())
thirsty = forms.NullBooleanField()
+
class Page2(forms.Form):
address1 = forms.CharField(max_length=100)
address2 = forms.CharField(max_length=100)
file1 = forms.FileField()
+
class Page3(forms.Form):
random_crap = forms.CharField(max_length=100)
Page4 = formset_factory(Page3, extra=2)
+
class ContactWizard(NamedUrlWizardView):
file_storage = temp_storage
@@ -44,8 +48,10 @@ class ContactWizard(NamedUrlWizardView):
c['this_will_fail'] = self.get_cleaned_data_for_step('this_will_fail')
return HttpResponse(Template('').render(c))
+
class SessionContactWizard(ContactWizard):
storage_name = 'django.contrib.formtools.wizard.storage.session.SessionStorage'
+
class CookieContactWizard(ContactWizard):
storage_name = 'django.contrib.formtools.wizard.storage.cookie.CookieStorage'
diff --git a/django/contrib/formtools/tests/wizard/namedwizardtests/urls.py b/django/contrib/formtools/tests/wizard/namedwizardtests/urls.py
index ac2cadc321..a88e711720 100644
--- a/django/contrib/formtools/tests/wizard/namedwizardtests/urls.py
+++ b/django/contrib/formtools/tests/wizard/namedwizardtests/urls.py
@@ -2,6 +2,7 @@ from django.conf.urls import patterns, url
from django.contrib.formtools.tests.wizard.namedwizardtests.forms import (
SessionContactWizard, CookieContactWizard, Page1, Page2, Page3, Page4)
+
def get_named_session_wizard():
return SessionContactWizard.as_view(
[('form1', Page1), ('form2', Page2), ('form3', Page3), ('form4', Page4)],
@@ -9,6 +10,7 @@ def get_named_session_wizard():
done_step_name='nwiz_session_done'
)
+
def get_named_cookie_wizard():
return CookieContactWizard.as_view(
[('form1', Page1), ('form2', Page2), ('form3', Page3), ('form4', Page4)],
diff --git a/django/contrib/formtools/tests/wizard/test_forms.py b/django/contrib/formtools/tests/wizard/test_forms.py
index ba3fbfdd48..386e448485 100644
--- a/django/contrib/formtools/tests/wizard/test_forms.py
+++ b/django/contrib/formtools/tests/wizard/test_forms.py
@@ -81,12 +81,14 @@ class TestWizard(WizardView):
kwargs['test'] = True
return kwargs
+
class TestWizardWithInitAttrs(TestWizard):
form_list = [Step1, Step2]
condition_dict = {'step2': True}
initial_dict = {'start': {'name': 'value1'}}
instance_dict = {'start': User()}
+
class FormTests(TestCase):
def test_form_init(self):
testform = TestWizard.get_initkwargs([Step1, Step2])
diff --git a/django/contrib/formtools/tests/wizard/wizardtests/forms.py b/django/contrib/formtools/tests/wizard/wizardtests/forms.py
index ad565478d1..5e4617c1cd 100644
--- a/django/contrib/formtools/tests/wizard/wizardtests/forms.py
+++ b/django/contrib/formtools/tests/wizard/wizardtests/forms.py
@@ -15,21 +15,25 @@ from django.contrib.formtools.wizard.views import WizardView
temp_storage_location = tempfile.mkdtemp(dir=os.environ.get('DJANGO_TEST_TEMP_DIR'))
temp_storage = FileSystemStorage(location=temp_storage_location)
+
class Page1(forms.Form):
name = forms.CharField(max_length=100)
user = forms.ModelChoiceField(queryset=User.objects.all())
thirsty = forms.NullBooleanField()
+
class Page2(forms.Form):
address1 = forms.CharField(max_length=100)
address2 = forms.CharField(max_length=100)
file1 = forms.FileField()
+
class Page3(forms.Form):
random_crap = forms.CharField(max_length=100)
Page4 = formset_factory(Page3, extra=2)
+
class ContactWizard(WizardView):
file_storage = temp_storage
@@ -51,6 +55,7 @@ class ContactWizard(WizardView):
context.update({'another_var': True})
return context
+
class UserForm(forms.ModelForm):
class Meta:
model = User
@@ -58,8 +63,10 @@ class UserForm(forms.ModelForm):
UserFormSet = modelformset_factory(User, form=UserForm)
+
class SessionContactWizard(ContactWizard):
storage_name = 'django.contrib.formtools.wizard.storage.session.SessionStorage'
+
class CookieContactWizard(ContactWizard):
storage_name = 'django.contrib.formtools.wizard.storage.cookie.CookieStorage'
diff --git a/django/contrib/formtools/wizard/forms.py b/django/contrib/formtools/wizard/forms.py
index bf46c5c992..cd00517fa3 100644
--- a/django/contrib/formtools/wizard/forms.py
+++ b/django/contrib/formtools/wizard/forms.py
@@ -1,5 +1,6 @@
from django import forms
+
class ManagementForm(forms.Form):
"""
``ManagementForm`` is used to keep track of the current wizard step.
diff --git a/django/contrib/formtools/wizard/storage/exceptions.py b/django/contrib/formtools/wizard/storage/exceptions.py
index e273a8654b..31cea93ba8 100644
--- a/django/contrib/formtools/wizard/storage/exceptions.py
+++ b/django/contrib/formtools/wizard/storage/exceptions.py
@@ -1,7 +1,9 @@
from django.core.exceptions import ImproperlyConfigured
+
class MissingStorage(ImproperlyConfigured):
pass
+
class NoFileStorageConfigured(ImproperlyConfigured):
pass
diff --git a/django/contrib/formtools/wizard/views.py b/django/contrib/formtools/wizard/views.py
index f1c54f5df4..f19cfc76f3 100644
--- a/django/contrib/formtools/wizard/views.py
+++ b/django/contrib/formtools/wizard/views.py
@@ -28,6 +28,7 @@ def normalize_name(name):
new = re.sub('(((?<=[a-z])[A-Z])|([A-Z](?![A-Z]|$)))', '_\\1', name)
return new.lower().strip('_')
+
class StepsHelper(object):
def __init__(self, wizard):
diff --git a/django/contrib/gis/admin/options.py b/django/contrib/gis/admin/options.py
index 6ec6a23ffd..53a043c8f1 100644
--- a/django/contrib/gis/admin/options.py
+++ b/django/contrib/gis/admin/options.py
@@ -3,6 +3,7 @@ from django.contrib.gis.admin.widgets import OpenLayersWidget
from django.contrib.gis.gdal import OGRGeomType
from django.contrib.gis.db import models
+
class GeoModelAdmin(ModelAdmin):
"""
The administration options class for Geographic models. Map settings
diff --git a/django/contrib/gis/db/backends/base.py b/django/contrib/gis/db/backends/base.py
index 3162ed3d00..4da0af0d27 100644
--- a/django/contrib/gis/db/backends/base.py
+++ b/django/contrib/gis/db/backends/base.py
@@ -143,6 +143,7 @@ class BaseSpatialOperations(object):
def spatial_ref_sys(self):
raise NotImplementedError('subclasses of BaseSpatialOperations must a provide spatial_ref_sys() method')
+
@python_2_unicode_compatible
class SpatialRefSysMixin(object):
"""
diff --git a/django/contrib/gis/db/backends/mysql/compiler.py b/django/contrib/gis/db/backends/mysql/compiler.py
index f4654eff84..74e666c165 100644
--- a/django/contrib/gis/db/backends/mysql/compiler.py
+++ b/django/contrib/gis/db/backends/mysql/compiler.py
@@ -3,6 +3,7 @@ from django.db.backends.mysql import compiler
SQLCompiler = compiler.SQLCompiler
+
class GeoSQLCompiler(BaseGeoSQLCompiler, SQLCompiler):
def resolve_columns(self, row, fields=()):
"""
@@ -19,17 +20,22 @@ class GeoSQLCompiler(BaseGeoSQLCompiler, SQLCompiler):
class SQLInsertCompiler(compiler.SQLInsertCompiler, GeoSQLCompiler):
pass
+
class SQLDeleteCompiler(compiler.SQLDeleteCompiler, GeoSQLCompiler):
pass
+
class SQLUpdateCompiler(compiler.SQLUpdateCompiler, GeoSQLCompiler):
pass
+
class SQLAggregateCompiler(compiler.SQLAggregateCompiler, GeoSQLCompiler):
pass
+
class SQLDateCompiler(compiler.SQLDateCompiler, GeoSQLCompiler):
pass
+
class SQLDateTimeCompiler(compiler.SQLDateTimeCompiler, GeoSQLCompiler):
pass
diff --git a/django/contrib/gis/db/backends/mysql/creation.py b/django/contrib/gis/db/backends/mysql/creation.py
index dda77ea6ab..303b8aef53 100644
--- a/django/contrib/gis/db/backends/mysql/creation.py
+++ b/django/contrib/gis/db/backends/mysql/creation.py
@@ -1,7 +1,7 @@
from django.db.backends.mysql.creation import DatabaseCreation
-class MySQLCreation(DatabaseCreation):
+class MySQLCreation(DatabaseCreation):
def sql_indexes_for_field(self, model, f, style):
from django.contrib.gis.db.models.fields import GeometryField
output = super(MySQLCreation, self).sql_indexes_for_field(model, f, style)
diff --git a/django/contrib/gis/db/backends/mysql/introspection.py b/django/contrib/gis/db/backends/mysql/introspection.py
index 59d0f627ee..aae1c1460c 100644
--- a/django/contrib/gis/db/backends/mysql/introspection.py
+++ b/django/contrib/gis/db/backends/mysql/introspection.py
@@ -3,6 +3,7 @@ from MySQLdb.constants import FIELD_TYPE
from django.contrib.gis.gdal import OGRGeomType
from django.db.backends.mysql.introspection import DatabaseIntrospection
+
class MySQLIntrospection(DatabaseIntrospection):
# Updating the data_types_reverse dictionary with the appropriate
# type for Geometry fields.
diff --git a/django/contrib/gis/db/backends/oracle/adapter.py b/django/contrib/gis/db/backends/oracle/adapter.py
index ea340d93d9..ca627bd37d 100644
--- a/django/contrib/gis/db/backends/oracle/adapter.py
+++ b/django/contrib/gis/db/backends/oracle/adapter.py
@@ -1,5 +1,6 @@
from cx_Oracle import CLOB
from django.contrib.gis.db.backends.adapter import WKTAdapter
+
class OracleSpatialAdapter(WKTAdapter):
input_size = CLOB
diff --git a/django/contrib/gis/db/backends/oracle/compiler.py b/django/contrib/gis/db/backends/oracle/compiler.py
index d00af7fa71..4fe65bce28 100644
--- a/django/contrib/gis/db/backends/oracle/compiler.py
+++ b/django/contrib/gis/db/backends/oracle/compiler.py
@@ -3,23 +3,30 @@ from django.db.backends.oracle import compiler
SQLCompiler = compiler.SQLCompiler
+
class GeoSQLCompiler(BaseGeoSQLCompiler, SQLCompiler):
pass
+
class SQLInsertCompiler(compiler.SQLInsertCompiler, GeoSQLCompiler):
pass
+
class SQLDeleteCompiler(compiler.SQLDeleteCompiler, GeoSQLCompiler):
pass
+
class SQLUpdateCompiler(compiler.SQLUpdateCompiler, GeoSQLCompiler):
pass
+
class SQLAggregateCompiler(compiler.SQLAggregateCompiler, GeoSQLCompiler):
pass
+
class SQLDateCompiler(compiler.SQLDateCompiler, GeoSQLCompiler):
pass
+
class SQLDateTimeCompiler(compiler.SQLDateTimeCompiler, GeoSQLCompiler):
pass
diff --git a/django/contrib/gis/db/backends/oracle/creation.py b/django/contrib/gis/db/backends/oracle/creation.py
index 14f8d4d150..4aa031220b 100644
--- a/django/contrib/gis/db/backends/oracle/creation.py
+++ b/django/contrib/gis/db/backends/oracle/creation.py
@@ -1,6 +1,7 @@
from django.db.backends.oracle.creation import DatabaseCreation
from django.db.backends.utils import truncate_name
+
class OracleCreation(DatabaseCreation):
def sql_indexes_for_field(self, model, f, style):
diff --git a/django/contrib/gis/db/backends/oracle/introspection.py b/django/contrib/gis/db/backends/oracle/introspection.py
index d6c8f452df..fbac2287e8 100644
--- a/django/contrib/gis/db/backends/oracle/introspection.py
+++ b/django/contrib/gis/db/backends/oracle/introspection.py
@@ -3,6 +3,7 @@ import sys
from django.db.backends.oracle.introspection import DatabaseIntrospection
from django.utils import six
+
class OracleIntrospection(DatabaseIntrospection):
# Associating any OBJECTVAR instances with GeometryField. Of course,
# this won't work right on Oracle objects that aren't MDSYS.SDO_GEOMETRY,
diff --git a/django/contrib/gis/db/backends/oracle/models.py b/django/contrib/gis/db/backends/oracle/models.py
index dda698481e..c907b8280d 100644
--- a/django/contrib/gis/db/backends/oracle/models.py
+++ b/django/contrib/gis/db/backends/oracle/models.py
@@ -11,6 +11,7 @@ from django.contrib.gis.db import models
from django.contrib.gis.db.backends.base import SpatialRefSysMixin
from django.utils.encoding import python_2_unicode_compatible
+
@python_2_unicode_compatible
class GeometryColumns(models.Model):
"Maps to the Oracle USER_SDO_GEOM_METADATA table."
@@ -42,6 +43,7 @@ class GeometryColumns(models.Model):
def __str__(self):
return '%s - %s (SRID: %s)' % (self.table_name, self.column_name, self.srid)
+
class SpatialRefSys(models.Model, SpatialRefSysMixin):
"Maps to the Oracle MDSYS.CS_SRS table."
cs_name = models.CharField(max_length=68)
diff --git a/django/contrib/gis/db/backends/oracle/operations.py b/django/contrib/gis/db/backends/oracle/operations.py
index 5fced474c8..14df0ff1d3 100644
--- a/django/contrib/gis/db/backends/oracle/operations.py
+++ b/django/contrib/gis/db/backends/oracle/operations.py
@@ -28,6 +28,7 @@ class SDOOperation(SpatialFunction):
kwargs.setdefault('result', 'TRUE')
super(SDOOperation, self).__init__(func, **kwargs)
+
class SDODistance(SpatialFunction):
"Class for Distance queries."
sql_template = ('%(function)s(%(geo_col)s, %(geometry)s, %(tolerance)s) '
@@ -39,6 +40,7 @@ class SDODistance(SpatialFunction):
tolerance=tolerance,
operator=op, result='%s')
+
class SDODWithin(SpatialFunction):
dwithin_func = 'SDO_WITHIN_DISTANCE'
sql_template = "%(function)s(%(geo_col)s, %(geometry)s, %%s) = 'TRUE'"
@@ -46,6 +48,7 @@ class SDODWithin(SpatialFunction):
def __init__(self):
super(SDODWithin, self).__init__(self.dwithin_func)
+
class SDOGeomRelate(SpatialFunction):
"Class for using SDO_GEOM.RELATE."
relate_func = 'SDO_GEOM.RELATE'
@@ -58,6 +61,7 @@ class SDOGeomRelate(SpatialFunction):
super(SDOGeomRelate, self).__init__(self.relate_func, operator='=',
mask=mask, tolerance=tolerance)
+
class SDORelate(SpatialFunction):
"Class for using SDO_RELATE."
masks = 'TOUCH|OVERLAPBDYDISJOINT|OVERLAPBDYINTERSECT|EQUAL|INSIDE|COVEREDBY|CONTAINS|COVERS|ANYINTERACT|ON'
@@ -73,6 +77,7 @@ class SDORelate(SpatialFunction):
# Valid distance types and substitutions
dtypes = (Decimal, Distance, float) + six.integer_types
+
class OracleOperations(DatabaseOperations, BaseSpatialOperations):
compiler_module = "django.contrib.gis.db.backends.oracle.compiler"
diff --git a/django/contrib/gis/db/backends/postgis/adapter.py b/django/contrib/gis/db/backends/postgis/adapter.py
index 8bb514d760..172133693b 100644
--- a/django/contrib/gis/db/backends/postgis/adapter.py
+++ b/django/contrib/gis/db/backends/postgis/adapter.py
@@ -6,6 +6,7 @@ from __future__ import unicode_literals
from psycopg2 import Binary
from psycopg2.extensions import ISQLQuote
+
class PostGISAdapter(object):
def __init__(self, geom):
"Initializes on the geometry."
diff --git a/django/contrib/gis/db/backends/postgis/introspection.py b/django/contrib/gis/db/backends/postgis/introspection.py
index d9e1dd350e..8edc13387d 100644
--- a/django/contrib/gis/db/backends/postgis/introspection.py
+++ b/django/contrib/gis/db/backends/postgis/introspection.py
@@ -1,9 +1,11 @@
from django.db.backends.postgresql_psycopg2.introspection import DatabaseIntrospection
from django.contrib.gis.gdal import OGRGeomType
+
class GeoIntrospectionError(Exception):
pass
+
class PostGISIntrospection(DatabaseIntrospection):
# Reverse dictionary for PostGIS geometry types not populated until
# introspection is actually performed.
diff --git a/django/contrib/gis/db/backends/postgis/models.py b/django/contrib/gis/db/backends/postgis/models.py
index e8052594c6..058d440b50 100644
--- a/django/contrib/gis/db/backends/postgis/models.py
+++ b/django/contrib/gis/db/backends/postgis/models.py
@@ -5,6 +5,7 @@ from django.db import models
from django.contrib.gis.db.backends.base import SpatialRefSysMixin
from django.utils.encoding import python_2_unicode_compatible
+
@python_2_unicode_compatible
class GeometryColumns(models.Model):
"""
@@ -44,6 +45,7 @@ class GeometryColumns(models.Model):
(self.f_table_name, self.f_geometry_column,
self.coord_dimension, self.type, self.srid)
+
class SpatialRefSys(models.Model, SpatialRefSysMixin):
"""
The 'spatial_ref_sys' table from PostGIS. See the PostGIS
diff --git a/django/contrib/gis/db/backends/postgis/operations.py b/django/contrib/gis/db/backends/postgis/operations.py
index 92e5323d36..eae08479df 100644
--- a/django/contrib/gis/db/backends/postgis/operations.py
+++ b/django/contrib/gis/db/backends/postgis/operations.py
@@ -22,15 +22,18 @@ class PostGISOperator(SpatialOperation):
def __init__(self, operator):
super(PostGISOperator, self).__init__(operator=operator)
+
class PostGISFunction(SpatialFunction):
"For PostGIS function calls (e.g., `ST_Contains(table, geom)`)."
def __init__(self, prefix, function, **kwargs):
super(PostGISFunction, self).__init__(prefix + function, **kwargs)
+
class PostGISFunctionParam(PostGISFunction):
"For PostGIS functions that take another parameter (e.g. DWithin, Relate)."
sql_template = '%(function)s(%(geo_col)s, %(geometry)s, %%s)'
+
class PostGISDistance(PostGISFunction):
"For PostGIS distance operations."
dist_func = 'Distance'
@@ -40,6 +43,7 @@ class PostGISDistance(PostGISFunction):
super(PostGISDistance, self).__init__(prefix, self.dist_func,
operator=operator)
+
class PostGISSpheroidDistance(PostGISFunction):
"For PostGIS spherical distance operations (using the spheroid)."
dist_func = 'distance_spheroid'
@@ -50,10 +54,12 @@ class PostGISSpheroidDistance(PostGISFunction):
super(PostGISSpheroidDistance, self).__init__(prefix, self.dist_func,
operator=operator)
+
class PostGISSphereDistance(PostGISDistance):
"For PostGIS spherical distance operations."
dist_func = 'distance_sphere'
+
class PostGISRelate(PostGISFunctionParam):
"For PostGIS Relate(<geom>, <pattern>) calls."
pattern_regex = re.compile(r'^[012TF\*]{9}$')
diff --git a/django/contrib/gis/db/backends/spatialite/adapter.py b/django/contrib/gis/db/backends/spatialite/adapter.py
index d8fefbadd8..8a5c2d88bf 100644
--- a/django/contrib/gis/db/backends/spatialite/adapter.py
+++ b/django/contrib/gis/db/backends/spatialite/adapter.py
@@ -1,6 +1,7 @@
from django.db.backends.sqlite3.base import Database
from django.contrib.gis.db.backends.adapter import WKTAdapter
+
class SpatiaLiteAdapter(WKTAdapter):
"SQLite adaptor for geometry objects."
def __conform__(self, protocol):
diff --git a/django/contrib/gis/db/backends/spatialite/base.py b/django/contrib/gis/db/backends/spatialite/base.py
index 7b49d71a61..2efc274106 100644
--- a/django/contrib/gis/db/backends/spatialite/base.py
+++ b/django/contrib/gis/db/backends/spatialite/base.py
@@ -11,6 +11,7 @@ from django.contrib.gis.db.backends.spatialite.introspection import SpatiaLiteIn
from django.contrib.gis.db.backends.spatialite.operations import SpatiaLiteOperations
from django.utils import six
+
class DatabaseWrapper(SQLiteDatabaseWrapper):
def __init__(self, *args, **kwargs):
# Before we get too far, make sure pysqlite 2.5+ is installed.
diff --git a/django/contrib/gis/db/backends/spatialite/client.py b/django/contrib/gis/db/backends/spatialite/client.py
index f9684877c5..c9dfd1a527 100644
--- a/django/contrib/gis/db/backends/spatialite/client.py
+++ b/django/contrib/gis/db/backends/spatialite/client.py
@@ -1,4 +1,5 @@
from django.db.backends.sqlite3.client import DatabaseClient
+
class SpatiaLiteClient(DatabaseClient):
executable_name = 'spatialite'
diff --git a/django/contrib/gis/db/backends/spatialite/introspection.py b/django/contrib/gis/db/backends/spatialite/introspection.py
index c841d1ae6a..9e1616c514 100644
--- a/django/contrib/gis/db/backends/spatialite/introspection.py
+++ b/django/contrib/gis/db/backends/spatialite/introspection.py
@@ -2,6 +2,7 @@ from django.contrib.gis.gdal import OGRGeomType
from django.db.backends.sqlite3.introspection import DatabaseIntrospection, FlexibleFieldLookupDict
from django.utils import six
+
class GeoFlexibleFieldLookupDict(FlexibleFieldLookupDict):
"""
Sublcass that includes updates the `base_data_types_reverse` dict
@@ -18,6 +19,7 @@ class GeoFlexibleFieldLookupDict(FlexibleFieldLookupDict):
'geometrycollection': 'GeometryField',
})
+
class SpatiaLiteIntrospection(DatabaseIntrospection):
data_types_reverse = GeoFlexibleFieldLookupDict()
diff --git a/django/contrib/gis/db/backends/spatialite/models.py b/django/contrib/gis/db/backends/spatialite/models.py
index b281f0bc62..9860779647 100644
--- a/django/contrib/gis/db/backends/spatialite/models.py
+++ b/django/contrib/gis/db/backends/spatialite/models.py
@@ -5,6 +5,7 @@ from django.db import models
from django.contrib.gis.db.backends.base import SpatialRefSysMixin
from django.utils.encoding import python_2_unicode_compatible
+
@python_2_unicode_compatible
class GeometryColumns(models.Model):
"""
@@ -42,6 +43,7 @@ class GeometryColumns(models.Model):
(self.f_table_name, self.f_geometry_column,
self.coord_dimension, self.type, self.srid)
+
class SpatialRefSys(models.Model, SpatialRefSysMixin):
"""
The 'spatial_ref_sys' table from SpatiaLite.
diff --git a/django/contrib/gis/db/backends/spatialite/operations.py b/django/contrib/gis/db/backends/spatialite/operations.py
index 4954ba5210..8d8435f824 100644
--- a/django/contrib/gis/db/backends/spatialite/operations.py
+++ b/django/contrib/gis/db/backends/spatialite/operations.py
@@ -19,15 +19,18 @@ class SpatiaLiteOperator(SpatialOperation):
def __init__(self, operator):
super(SpatiaLiteOperator, self).__init__(operator=operator)
+
class SpatiaLiteFunction(SpatialFunction):
"For SpatiaLite function calls."
def __init__(self, function, **kwargs):
super(SpatiaLiteFunction, self).__init__(function, **kwargs)
+
class SpatiaLiteFunctionParam(SpatiaLiteFunction):
"For SpatiaLite functions that take another parameter."
sql_template = '%(function)s(%(geo_col)s, %(geometry)s, %%s)'
+
class SpatiaLiteDistance(SpatiaLiteFunction):
"For SpatiaLite distance operations."
dist_func = 'Distance'
@@ -37,6 +40,7 @@ class SpatiaLiteDistance(SpatiaLiteFunction):
super(SpatiaLiteDistance, self).__init__(self.dist_func,
operator=operator)
+
class SpatiaLiteRelate(SpatiaLiteFunctionParam):
"For SpatiaLite Relate(<geom>, <pattern>) calls."
pattern_regex = re.compile(r'^[012TF\*]{9}$')
@@ -46,12 +50,14 @@ class SpatiaLiteRelate(SpatiaLiteFunctionParam):
raise ValueError('Invalid intersection matrix pattern "%s".' % pattern)
super(SpatiaLiteRelate, self).__init__('Relate')
+
# Valid distance types and substitutions
dtypes = (Decimal, Distance, float) + six.integer_types
def get_dist_ops(operator):
"Returns operations for regular distances; spherical distances are not currently supported."
return (SpatiaLiteDistance(operator),)
+
class SpatiaLiteOperations(DatabaseOperations, BaseSpatialOperations):
compiler_module = 'django.contrib.gis.db.models.sql.compiler'
name = 'spatialite'
diff --git a/django/contrib/gis/db/backends/utils.py b/django/contrib/gis/db/backends/utils.py
index 53f1e1b6a4..b8b5b9525f 100644
--- a/django/contrib/gis/db/backends/utils.py
+++ b/django/contrib/gis/db/backends/utils.py
@@ -3,6 +3,7 @@ A collection of utility routines and classes used by the spatial
backends.
"""
+
class SpatialOperation(object):
"""
Base class for generating spatial SQL.
@@ -28,6 +29,7 @@ class SpatialOperation(object):
params.update(self.extra)
return params
+
class SpatialFunction(SpatialOperation):
"""
Base class for generating spatial SQL related to a function.
diff --git a/django/contrib/gis/db/models/aggregates.py b/django/contrib/gis/db/models/aggregates.py
index d0fc6d319d..fbfabe0a1d 100644
--- a/django/contrib/gis/db/models/aggregates.py
+++ b/django/contrib/gis/db/models/aggregates.py
@@ -1,16 +1,21 @@
from django.db.models import Aggregate
+
class Collect(Aggregate):
name = 'Collect'
+
class Extent(Aggregate):
name = 'Extent'
+
class Extent3D(Aggregate):
name = 'Extent3D'
+
class MakeLine(Aggregate):
name = 'MakeLine'
+
class Union(Aggregate):
name = 'Union'
diff --git a/django/contrib/gis/db/models/fields.py b/django/contrib/gis/db/models/fields.py
index e137ddffb5..662b20ae79 100644
--- a/django/contrib/gis/db/models/fields.py
+++ b/django/contrib/gis/db/models/fields.py
@@ -11,6 +11,7 @@ from django.utils import six
# for SRID info each time a distance query is constructed.
_srid_cache = {}
+
def get_srid_info(srid, connection):
"""
Returns the units, unit name, and spheroid WKT associated with the
@@ -39,6 +40,7 @@ def get_srid_info(srid, connection):
return _srid_cache[connection.alias][srid]
+
class GeometryField(Field):
"The base GIS field -- maps to the OpenGIS Specification Geometry type."
@@ -269,37 +271,44 @@ class GeometryField(Field):
"""
return connection.ops.get_geom_placeholder(self, value)
+
# The OpenGIS Geometry Type Fields
class PointField(GeometryField):
geom_type = 'POINT'
form_class = forms.PointField
description = _("Point")
+
class LineStringField(GeometryField):
geom_type = 'LINESTRING'
form_class = forms.LineStringField
description = _("Line string")
+
class PolygonField(GeometryField):
geom_type = 'POLYGON'
form_class = forms.PolygonField
description = _("Polygon")
+
class MultiPointField(GeometryField):
geom_type = 'MULTIPOINT'
form_class = forms.MultiPointField
description = _("Multi-point")
+
class MultiLineStringField(GeometryField):
geom_type = 'MULTILINESTRING'
form_class = forms.MultiLineStringField
description = _("Multi-line string")
+
class MultiPolygonField(GeometryField):
geom_type = 'MULTIPOLYGON'
form_class = forms.MultiPolygonField
description = _("Multi polygon")
+
class GeometryCollectionField(GeometryField):
geom_type = 'GEOMETRYCOLLECTION'
form_class = forms.GeometryCollectionField
diff --git a/django/contrib/gis/db/models/manager.py b/django/contrib/gis/db/models/manager.py
index aa57e3a507..bbcbb579fa 100644
--- a/django/contrib/gis/db/models/manager.py
+++ b/django/contrib/gis/db/models/manager.py
@@ -1,6 +1,7 @@
from django.db.models.manager import Manager
from django.contrib.gis.db.models.query import GeoQuerySet
+
class GeoManager(Manager):
"Overrides Manager to return Geographic QuerySets."
diff --git a/django/contrib/gis/db/models/proxy.py b/django/contrib/gis/db/models/proxy.py
index 513bf921bd..91ded31dc0 100644
--- a/django/contrib/gis/db/models/proxy.py
+++ b/django/contrib/gis/db/models/proxy.py
@@ -8,6 +8,7 @@ Thanks to Robert Coup for providing this functionality (see #4322).
from django.contrib.gis import memoryview
from django.utils import six
+
class GeometryProxy(object):
def __init__(self, klass, field):
"""
diff --git a/django/contrib/gis/db/models/query.py b/django/contrib/gis/db/models/query.py
index 2d13cbecc0..5f1d4623ab 100644
--- a/django/contrib/gis/db/models/query.py
+++ b/django/contrib/gis/db/models/query.py
@@ -782,6 +782,7 @@ class GeoQuerySet(QuerySet):
else:
return self.query.get_compiler(self.db)._field_column(geo_field)
+
class GeoValuesQuerySet(ValuesQuerySet):
def __init__(self, *args, **kwargs):
super(GeoValuesQuerySet, self).__init__(*args, **kwargs)
@@ -790,5 +791,6 @@ class GeoValuesQuerySet(ValuesQuerySet):
# of string values are returned with `values()` or `values_list()`.
self.query.geo_values = True
+
class GeoValuesListQuerySet(GeoValuesQuerySet, ValuesListQuerySet):
pass
diff --git a/django/contrib/gis/db/models/sql/aggregates.py b/django/contrib/gis/db/models/sql/aggregates.py
index a3a8f1258d..07c3ddd2e5 100644
--- a/django/contrib/gis/db/models/sql/aggregates.py
+++ b/django/contrib/gis/db/models/sql/aggregates.py
@@ -1,6 +1,7 @@
from django.db.models.sql.aggregates import *
from django.contrib.gis.db.models.fields import GeometryField
+
class GeoAggregate(Aggregate):
# Default SQL template for spatial aggregates.
sql_template = '%(function)s(%(field)s)'
@@ -46,17 +47,22 @@ class GeoAggregate(Aggregate):
return sql_template % substitutions, params
+
class Collect(GeoAggregate):
pass
+
class Extent(GeoAggregate):
is_extent = '2D'
+
class Extent3D(GeoAggregate):
is_extent = '3D'
+
class MakeLine(GeoAggregate):
pass
+
class Union(GeoAggregate):
pass
diff --git a/django/contrib/gis/db/models/sql/compiler.py b/django/contrib/gis/db/models/sql/compiler.py
index 4cf52207f3..21fb57a417 100644
--- a/django/contrib/gis/db/models/sql/compiler.py
+++ b/django/contrib/gis/db/models/sql/compiler.py
@@ -10,6 +10,7 @@ from django.utils import timezone
SQLCompiler = compiler.SQLCompiler
+
class GeoSQLCompiler(compiler.SQLCompiler):
def get_columns(self, with_aliases=False):
@@ -249,18 +250,23 @@ class GeoSQLCompiler(compiler.SQLCompiler):
return "%s.%s" % (self.quote_name_unless_alias(table_alias),
self.connection.ops.quote_name(column or field.column))
+
class SQLInsertCompiler(compiler.SQLInsertCompiler, GeoSQLCompiler):
pass
+
class SQLDeleteCompiler(compiler.SQLDeleteCompiler, GeoSQLCompiler):
pass
+
class SQLUpdateCompiler(compiler.SQLUpdateCompiler, GeoSQLCompiler):
pass
+
class SQLAggregateCompiler(compiler.SQLAggregateCompiler, GeoSQLCompiler):
pass
+
class SQLDateCompiler(compiler.SQLDateCompiler, GeoSQLCompiler):
"""
This is overridden for GeoDjango to properly cast date columns, since
@@ -286,6 +292,7 @@ class SQLDateCompiler(compiler.SQLDateCompiler, GeoSQLCompiler):
date = date.date()
yield date
+
class SQLDateTimeCompiler(compiler.SQLDateTimeCompiler, GeoSQLCompiler):
"""
This is overridden for GeoDjango to properly cast date columns, since
diff --git a/django/contrib/gis/db/models/sql/conversion.py b/django/contrib/gis/db/models/sql/conversion.py
index 7f1b914baa..ee4f0e9e33 100644
--- a/django/contrib/gis/db/models/sql/conversion.py
+++ b/django/contrib/gis/db/models/sql/conversion.py
@@ -3,6 +3,7 @@ This module holds simple classes used by GeoQuery.convert_values
to convert geospatial values from the database.
"""
+
class BaseField(object):
empty_strings_allowed = True
@@ -10,16 +11,19 @@ class BaseField(object):
"Overloaded method so OracleQuery.convert_values doesn't balk."
return None
+
class AreaField(BaseField):
"Wrapper for Area values."
def __init__(self, area_att):
self.area_att = area_att
+
class DistanceField(BaseField):
"Wrapper for Distance values."
def __init__(self, distance_att):
self.distance_att = distance_att
+
class GeomField(BaseField):
"""
Wrapper for Geometry values. It is a lightweight alternative to
diff --git a/django/contrib/gis/db/models/sql/query.py b/django/contrib/gis/db/models/sql/query.py
index b789174525..3923bf460e 100644
--- a/django/contrib/gis/db/models/sql/query.py
+++ b/django/contrib/gis/db/models/sql/query.py
@@ -21,6 +21,7 @@ ALL_TERMS = set([
])
ALL_TERMS.update(sql.constants.QUERY_TERMS)
+
class GeoQuery(sql.Query):
"""
A single spatial SQL query.
diff --git a/django/contrib/gis/db/models/sql/where.py b/django/contrib/gis/db/models/sql/where.py
index 7a9e098b91..3a504274b6 100644
--- a/django/contrib/gis/db/models/sql/where.py
+++ b/django/contrib/gis/db/models/sql/where.py
@@ -4,6 +4,7 @@ from django.db.models.sql.expressions import SQLEvaluator
from django.db.models.sql.where import Constraint, WhereNode
from django.contrib.gis.db.models.fields import GeometryField
+
class GeoConstraint(Constraint):
"""
This subclass overrides `process` to better handle geographic SQL
@@ -27,6 +28,7 @@ class GeoConstraint(Constraint):
params = self.field.get_db_prep_lookup(lookup_type, value, connection=connection)
return (self.alias, self.col, db_type), params
+
class GeoWhereNode(WhereNode):
"""
Used to represent the SQL where-clause for spatial databases --
diff --git a/django/contrib/gis/feeds.py b/django/contrib/gis/feeds.py
index 1482064fe2..7e7b872df6 100644
--- a/django/contrib/gis/feeds.py
+++ b/django/contrib/gis/feeds.py
@@ -3,6 +3,7 @@ from __future__ import unicode_literals
from django.contrib.syndication.views import Feed as BaseFeed
from django.utils.feedgenerator import Atom1Feed, Rss201rev2Feed
+
class GeoFeedMixin(object):
"""
This mixin provides the necessary routines for SyndicationFeed subclasses
@@ -79,6 +80,7 @@ class GeoFeedMixin(object):
else:
raise ValueError('Geometry type "%s" not supported.' % geom.geom_type)
+
### SyndicationFeed subclasses ###
class GeoRSSFeed(Rss201rev2Feed, GeoFeedMixin):
def rss_attributes(self):
@@ -94,6 +96,7 @@ class GeoRSSFeed(Rss201rev2Feed, GeoFeedMixin):
super(GeoRSSFeed, self).add_root_elements(handler)
self.add_georss_element(handler, self.feed)
+
class GeoAtom1Feed(Atom1Feed, GeoFeedMixin):
def root_attributes(self):
attrs = super(GeoAtom1Feed, self).root_attributes()
@@ -108,6 +111,7 @@ class GeoAtom1Feed(Atom1Feed, GeoFeedMixin):
super(GeoAtom1Feed, self).add_root_elements(handler)
self.add_georss_element(handler, self.feed)
+
class W3CGeoFeed(Rss201rev2Feed, GeoFeedMixin):
def rss_attributes(self):
attrs = super(W3CGeoFeed, self).rss_attributes()
@@ -122,6 +126,7 @@ class W3CGeoFeed(Rss201rev2Feed, GeoFeedMixin):
super(W3CGeoFeed, self).add_root_elements(handler)
self.add_georss_element(handler, self.feed, w3c_geo=True)
+
### Feed subclass ###
class Feed(BaseFeed):
"""
diff --git a/django/contrib/gis/gdal/base.py b/django/contrib/gis/gdal/base.py
index ac9b8c0a2a..7405810496 100644
--- a/django/contrib/gis/gdal/base.py
+++ b/django/contrib/gis/gdal/base.py
@@ -3,6 +3,7 @@ from ctypes import c_void_p
from django.contrib.gis.gdal.error import GDALException
from django.utils import six
+
class GDALBase(object):
"""
Base object for GDAL objects that has a pointer access property
diff --git a/django/contrib/gis/gdal/datasource.py b/django/contrib/gis/gdal/datasource.py
index 0d7f78a735..864f50af52 100644
--- a/django/contrib/gis/gdal/datasource.py
+++ b/django/contrib/gis/gdal/datasource.py
@@ -49,6 +49,7 @@ from django.utils.encoding import force_bytes, force_text
from django.utils import six
from django.utils.six.moves import xrange
+
# For more information, see the OGR C API source code:
# http://www.gdal.org/ogr/ogr__api_8h.html
#
diff --git a/django/contrib/gis/gdal/driver.py b/django/contrib/gis/gdal/driver.py
index 015785b8d1..58f736b1a3 100644
--- a/django/contrib/gis/gdal/driver.py
+++ b/django/contrib/gis/gdal/driver.py
@@ -7,6 +7,7 @@ from django.contrib.gis.gdal.prototypes import ds as capi
from django.utils import six
from django.utils.encoding import force_bytes
+
# For more information, see the OGR C API source code:
# http://www.gdal.org/ogr/ogr__api_8h.html
#
diff --git a/django/contrib/gis/gdal/envelope.py b/django/contrib/gis/gdal/envelope.py
index 9774f686e7..30da4a7c82 100644
--- a/django/contrib/gis/gdal/envelope.py
+++ b/django/contrib/gis/gdal/envelope.py
@@ -13,6 +13,7 @@
from ctypes import Structure, c_double
from django.contrib.gis.gdal.error import OGRException
+
# The OGR definition of an Envelope is a C structure containing four doubles.
# See the 'ogr_core.h' source file for more information:
# http://www.gdal.org/ogr/ogr__core_8h-source.html
@@ -24,6 +25,7 @@ class OGREnvelope(Structure):
("MaxY", c_double),
]
+
class Envelope(object):
"""
The Envelope object is a C structure that contains the minimum and
diff --git a/django/contrib/gis/gdal/error.py b/django/contrib/gis/gdal/error.py
index 968b7f74aa..5feef41873 100644
--- a/django/contrib/gis/gdal/error.py
+++ b/django/contrib/gis/gdal/error.py
@@ -3,16 +3,20 @@
check_err() routine which checks the status code returned by
OGR methods.
"""
+
#### OGR & SRS Exceptions ####
class GDALException(Exception):
pass
+
class OGRException(Exception):
pass
+
class SRSException(Exception):
pass
+
class OGRIndexError(OGRException, KeyError):
"""
This exception is raised when an invalid index is encountered, and has
@@ -37,6 +41,7 @@ OGRERR_DICT = {
}
OGRERR_NONE = 0
+
def check_err(code):
"Checks the given OGRERR, and raises an exception where appropriate."
diff --git a/django/contrib/gis/gdal/feature.py b/django/contrib/gis/gdal/feature.py
index a664be1598..d020b34488 100644
--- a/django/contrib/gis/gdal/feature.py
+++ b/django/contrib/gis/gdal/feature.py
@@ -11,6 +11,7 @@ from django.utils.encoding import force_bytes, force_text
from django.utils import six
from django.utils.six.moves import xrange
+
# For more information, see the OGR C API source code:
# http://www.gdal.org/ogr/ogr__api_8h.html
#
diff --git a/django/contrib/gis/gdal/field.py b/django/contrib/gis/gdal/field.py
index 7c46226ad6..dd60f3b953 100644
--- a/django/contrib/gis/gdal/field.py
+++ b/django/contrib/gis/gdal/field.py
@@ -102,6 +102,7 @@ class Field(GDALBase):
"Returns the width of this Field."
return capi.get_field_width(self.ptr)
+
### The Field sub-classes for each OGR Field type. ###
class OFTInteger(Field):
_double = False
@@ -125,22 +126,27 @@ class OFTInteger(Field):
"""
return 0
+
class OFTReal(Field):
@property
def value(self):
"Returns a float contained in this field."
return self.as_double()
+
# String & Binary fields, just subclasses
class OFTString(Field):
pass
+
class OFTWideString(Field):
pass
+
class OFTBinary(Field):
pass
+
# OFTDate, OFTTime, OFTDateTime fields.
class OFTDate(Field):
@property
@@ -152,6 +158,7 @@ class OFTDate(Field):
except (ValueError, OGRException):
return None
+
class OFTDateTime(Field):
@property
def value(self):
@@ -166,6 +173,7 @@ class OFTDateTime(Field):
except (ValueError, OGRException):
return None
+
class OFTTime(Field):
@property
def value(self):
@@ -176,16 +184,20 @@ class OFTTime(Field):
except (ValueError, OGRException):
return None
+
# List fields are also just subclasses
class OFTIntegerList(Field):
pass
+
class OFTRealList(Field):
pass
+
class OFTStringList(Field):
pass
+
class OFTWideStringList(Field):
pass
diff --git a/django/contrib/gis/gdal/geometries.py b/django/contrib/gis/gdal/geometries.py
index 74a4e94450..98ae5a1108 100644
--- a/django/contrib/gis/gdal/geometries.py
+++ b/django/contrib/gis/gdal/geometries.py
@@ -67,7 +67,7 @@ from django.utils.six.moves import xrange
#
# The OGR_G_* routines are relevant here.
-#### OGRGeometry Class ####
+
class OGRGeometry(GDALBase):
"Generally encapsulates an OGR geometry."
diff --git a/django/contrib/gis/gdal/layer.py b/django/contrib/gis/gdal/layer.py
index 226013540c..1fe5f52fb5 100644
--- a/django/contrib/gis/gdal/layer.py
+++ b/django/contrib/gis/gdal/layer.py
@@ -18,6 +18,7 @@ from django.utils.encoding import force_bytes, force_text
from django.utils import six
from django.utils.six.moves import xrange
+
# For more information, see the OGR C API source code:
# http://www.gdal.org/ogr/ogr__api_8h.html
#
diff --git a/django/contrib/gis/gdal/srs.py b/django/contrib/gis/gdal/srs.py
index 0e5767967a..2c05bfb943 100644
--- a/django/contrib/gis/gdal/srs.py
+++ b/django/contrib/gis/gdal/srs.py
@@ -328,6 +328,7 @@ class SpatialReference(GDALBase):
"Returns the XML representation of this Spatial Reference."
return capi.to_xml(self.ptr, byref(c_char_p()), dialect)
+
class CoordTransform(GDALBase):
"The coordinate system transformation object."
diff --git a/django/contrib/gis/geoip/base.py b/django/contrib/gis/geoip/base.py
index c4188d8819..05e3b5c268 100644
--- a/django/contrib/gis/geoip/base.py
+++ b/django/contrib/gis/geoip/base.py
@@ -17,10 +17,12 @@ from django.utils.encoding import force_bytes
free_regex = re.compile(r'^GEO-\d{3}FREE')
lite_regex = re.compile(r'^GEO-\d{3}LITE')
+
#### GeoIP classes ####
class GeoIPException(Exception):
pass
+
class GeoIP(object):
# The flags for GeoIP memory caching.
# GEOIP_STANDARD - read database from filesystem, uses least memory.
diff --git a/django/contrib/gis/geos/base.py b/django/contrib/gis/geos/base.py
index 1d44e0a8b6..ff54fe6695 100644
--- a/django/contrib/gis/geos/base.py
+++ b/django/contrib/gis/geos/base.py
@@ -18,6 +18,7 @@ try:
except ImportError:
numpy = False
+
class GEOSBase(object):
"""
Base object for GEOS objects that has a pointer access property
diff --git a/django/contrib/gis/geos/io.py b/django/contrib/gis/geos/io.py
index 1c13d365f7..97c4016865 100644
--- a/django/contrib/gis/geos/io.py
+++ b/django/contrib/gis/geos/io.py
@@ -6,12 +6,14 @@ reader and writer classes.
from django.contrib.gis.geos.geometry import GEOSGeometry
from django.contrib.gis.geos.prototypes.io import _WKTReader, _WKBReader, WKBWriter, WKTWriter
+
# Public classes for (WKB|WKT)Reader, which return GEOSGeometry
class WKBReader(_WKBReader):
def read(self, wkb):
"Returns a GEOSGeometry for the given WKB buffer."
return GEOSGeometry(super(WKBReader, self).read(wkb))
+
class WKTReader(_WKTReader):
def read(self, wkt):
"Returns a GEOSGeometry for the given WKT string."
diff --git a/django/contrib/gis/geos/mutable_list.py b/django/contrib/gis/geos/mutable_list.py
index 87ae6dd8f3..08ebb0a8e7 100644
--- a/django/contrib/gis/geos/mutable_list.py
+++ b/django/contrib/gis/geos/mutable_list.py
@@ -12,6 +12,7 @@ from django.utils.functional import total_ordering
from django.utils import six
from django.utils.six.moves import xrange
+
@total_ordering
class ListMixin(object):
"""
diff --git a/django/contrib/gis/geos/polygon.py b/django/contrib/gis/geos/polygon.py
index 0da90e3a19..ef8eb27de5 100644
--- a/django/contrib/gis/geos/polygon.py
+++ b/django/contrib/gis/geos/polygon.py
@@ -6,6 +6,7 @@ from django.contrib.gis.geos import prototypes as capi
from django.utils import six
from django.utils.six.moves import xrange
+
class Polygon(GEOSGeometry):
_minlength = 1
diff --git a/django/contrib/gis/geos/prepared.py b/django/contrib/gis/geos/prepared.py
index d414d8ddf6..a6a205da5e 100644
--- a/django/contrib/gis/geos/prepared.py
+++ b/django/contrib/gis/geos/prepared.py
@@ -2,6 +2,7 @@ from django.contrib.gis.geos.base import GEOSBase
from django.contrib.gis.geos.geometry import GEOSGeometry
from django.contrib.gis.geos.prototypes import prepared as capi
+
class PreparedGeometry(GEOSBase):
"""
A geometry that is prepared for performing certain operations.
diff --git a/django/contrib/gis/measure.py b/django/contrib/gis/measure.py
index 82d75e0cef..0343211495 100644
--- a/django/contrib/gis/measure.py
+++ b/django/contrib/gis/measure.py
@@ -44,6 +44,7 @@ from django.utils import six
NUMERIC_TYPES = six.integer_types + (float, Decimal)
AREA_PREFIX = "sq_"
+
def pretty_name(obj):
return obj.__name__ if obj.__class__ == type else obj.__class__.__name__
@@ -218,6 +219,7 @@ class MeasureBase(object):
else:
raise Exception('Could not find a unit keyword associated with "%s"' % unit_str)
+
class Distance(MeasureBase):
STANDARD_UNIT = "m"
UNITS = {
diff --git a/django/contrib/gis/shortcuts.py b/django/contrib/gis/shortcuts.py
index 85f9bfd0c0..a530228e84 100644
--- a/django/contrib/gis/shortcuts.py
+++ b/django/contrib/gis/shortcuts.py
@@ -5,6 +5,7 @@ from django.conf import settings
from django.http import HttpResponse
from django.template import loader
+
def compress_kml(kml):
"Returns compressed KMZ from the given KML string."
kmz = BytesIO()
@@ -14,11 +15,13 @@ def compress_kml(kml):
kmz.seek(0)
return kmz.read()
+
def render_to_kml(*args, **kwargs):
"Renders the response as KML (using the correct MIME type)."
return HttpResponse(loader.render_to_string(*args, **kwargs),
content_type='application/vnd.google-earth.kml+xml')
+
def render_to_kmz(*args, **kwargs):
"""
Compresses the KML content and returns as KMZ (using the correct
@@ -27,6 +30,7 @@ def render_to_kmz(*args, **kwargs):
return HttpResponse(compress_kml(loader.render_to_string(*args, **kwargs)),
content_type='application/vnd.google-earth.kmz')
+
def render_to_text(*args, **kwargs):
"Renders the response using the MIME type for plain text."
return HttpResponse(loader.render_to_string(*args, **kwargs),
diff --git a/django/contrib/gis/sitemaps/georss.py b/django/contrib/gis/sitemaps/georss.py
index 5201de913b..effa06f98e 100644
--- a/django/contrib/gis/sitemaps/georss.py
+++ b/django/contrib/gis/sitemaps/georss.py
@@ -1,6 +1,7 @@
from django.core import urlresolvers
from django.contrib.sitemaps import Sitemap
+
class GeoRSSSitemap(Sitemap):
"""
A minimal hook to produce sitemaps for GeoRSS feeds.
diff --git a/django/contrib/gis/sitemaps/kml.py b/django/contrib/gis/sitemaps/kml.py
index 68e2ffd7d9..5e74c6c47d 100644
--- a/django/contrib/gis/sitemaps/kml.py
+++ b/django/contrib/gis/sitemaps/kml.py
@@ -3,6 +3,7 @@ from django.contrib.sitemaps import Sitemap
from django.contrib.gis.db.models.fields import GeometryField
from django.db import models
+
class KMLSitemap(Sitemap):
"""
A minimal hook to produce KML sitemaps.
@@ -60,5 +61,7 @@ class KMLSitemap(Sitemap):
'field_name': obj[2],
}
)
+
+
class KMZSitemap(KMLSitemap):
geo_format = 'kmz'
diff --git a/django/contrib/gis/sitemaps/views.py b/django/contrib/gis/sitemaps/views.py
index dac63658e6..5dc3bc9273 100644
--- a/django/contrib/gis/sitemaps/views.py
+++ b/django/contrib/gis/sitemaps/views.py
@@ -14,6 +14,7 @@ from django.utils.translation import ugettext as _
from django.contrib.gis.shortcuts import render_to_kml, render_to_kmz
+
def index(request, sitemaps):
"""
This view generates a sitemap index that uses the proper view
diff --git a/django/contrib/gis/tests/test_measure.py b/django/contrib/gis/tests/test_measure.py
index 5e0db3f913..58a1af0bf1 100644
--- a/django/contrib/gis/tests/test_measure.py
+++ b/django/contrib/gis/tests/test_measure.py
@@ -144,6 +144,7 @@ class DistanceTest(unittest.TestCase):
for nm, att in unit_tuple:
self.assertEqual(att, D.unit_attname(nm))
+
class AreaTest(unittest.TestCase):
"Testing the Area object"
diff --git a/django/contrib/gis/tests/utils.py b/django/contrib/gis/tests/utils.py
index e6433e6489..a53b9a3564 100644
--- a/django/contrib/gis/tests/utils.py
+++ b/django/contrib/gis/tests/utils.py
@@ -14,17 +14,21 @@ def no_backend(test_func, backend):
else:
return test_func
+
# Decorators to disable entire test functions for specific
# spatial backends.
def no_oracle(func):
return no_backend(func, 'oracle')
+
def no_postgis(func):
return no_backend(func, 'postgis')
+
def no_mysql(func):
return no_backend(func, 'mysql')
+
def no_spatialite(func):
return no_backend(func, 'spatialite')
diff --git a/django/contrib/gis/views.py b/django/contrib/gis/views.py
index 3fa8f044de..cc6844ba48 100644
--- a/django/contrib/gis/views.py
+++ b/django/contrib/gis/views.py
@@ -3,6 +3,7 @@ from __future__ import unicode_literals
from django.http import Http404
from django.utils.translation import ugettext as _
+
def feed(request, url, feed_dict=None):
"""Provided for backwards compatibility."""
if not feed_dict:
diff --git a/django/contrib/sites/management.py b/django/contrib/sites/management.py
index a4a0090dab..7dec568fa4 100644
--- a/django/contrib/sites/management.py
+++ b/django/contrib/sites/management.py
@@ -9,6 +9,7 @@ from django.contrib.sites.models import Site
from django.contrib.sites import models as site_app
from django.core.management.color import no_style
+
def create_default_site(app, created_models, verbosity, db, **kwargs):
# Only create the default sites in databases where Django created the table
if Site in created_models and router.allow_migrate(db, Site):
diff --git a/django/contrib/staticfiles/handlers.py b/django/contrib/staticfiles/handlers.py
index e036f6b141..3fe0c9da26 100644
--- a/django/contrib/staticfiles/handlers.py
+++ b/django/contrib/staticfiles/handlers.py
@@ -6,6 +6,7 @@ from django.utils.six.moves.urllib.request import url2pathname
from django.contrib.staticfiles import utils
from django.contrib.staticfiles.views import serve
+
class StaticFilesHandler(WSGIHandler):
"""
WSGI middleware that intercepts calls to the static files directory, as
diff --git a/django/contrib/staticfiles/urls.py b/django/contrib/staticfiles/urls.py
index 04062c1162..4a0feeaaf8 100644
--- a/django/contrib/staticfiles/urls.py
+++ b/django/contrib/staticfiles/urls.py
@@ -3,6 +3,7 @@ from django.conf.urls.static import static
urlpatterns = []
+
def staticfiles_urlpatterns(prefix=None):
"""
Helper function to return a URL pattern for serving static files.