summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
Diffstat (limited to 'django')
-rw-r--r--django/contrib/auth/base_user.py9
-rw-r--r--django/contrib/auth/hashers.py5
-rw-r--r--django/contrib/gis/utils/srs.py5
-rw-r--r--django/contrib/staticfiles/utils.py10
-rw-r--r--django/core/management/base.py4
-rw-r--r--django/db/backends/mysql/base.py3
-rw-r--r--django/db/backends/mysql/introspection.py36
-rw-r--r--django/db/backends/mysql/operations.py5
-rw-r--r--django/db/backends/oracle/introspection.py42
-rw-r--r--django/db/backends/oracle/operations.py14
-rw-r--r--django/db/backends/oracle/schema.py14
-rw-r--r--django/db/migrations/utils.py3
-rw-r--r--django/db/models/constraints.py3
-rw-r--r--django/db/models/fields/__init__.py3
-rw-r--r--django/db/models/indexes.py3
-rw-r--r--django/db/models/lookups.py3
-rw-r--r--django/db/models/query.py6
-rw-r--r--django/db/models/sql/query.py8
-rw-r--r--django/forms/models.py10
-rw-r--r--django/template/backends/base.py8
-rw-r--r--django/template/base.py12
-rw-r--r--django/template/defaulttags.py20
-rw-r--r--django/template/loader_tags.py10
-rw-r--r--django/template/response.py5
-rw-r--r--django/templatetags/i18n.py10
-rw-r--r--django/templatetags/tz.py5
-rw-r--r--django/test/client.py3
27 files changed, 158 insertions, 101 deletions
diff --git a/django/contrib/auth/base_user.py b/django/contrib/auth/base_user.py
index 945a7a3d8a..cbfe5d686a 100644
--- a/django/contrib/auth/base_user.py
+++ b/django/contrib/auth/base_user.py
@@ -29,10 +29,11 @@ class BaseUserManager(models.Manager):
email = email_name + '@' + domain_part.lower()
return email
- def make_random_password(self, length=10,
- allowed_chars='abcdefghjkmnpqrstuvwxyz'
- 'ABCDEFGHJKLMNPQRSTUVWXYZ'
- '23456789'):
+ def make_random_password(
+ self,
+ length=10,
+ allowed_chars='abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789',
+ ):
"""
Generate a random password with the given length and given
allowed_chars. The default value of allowed_chars does not have "I" or
diff --git a/django/contrib/auth/hashers.py b/django/contrib/auth/hashers.py
index cac11dfd4c..d020734e0d 100644
--- a/django/contrib/auth/hashers.py
+++ b/django/contrib/auth/hashers.py
@@ -90,8 +90,9 @@ def get_hashers():
hasher_cls = import_string(hasher_path)
hasher = hasher_cls()
if not getattr(hasher, 'algorithm'):
- raise ImproperlyConfigured("hasher doesn't specify an "
- "algorithm name: %s" % hasher_path)
+ raise ImproperlyConfigured(
+ "hasher doesn't specify an algorithm name: %s" % hasher_path
+ )
hashers.append(hasher)
return hashers
diff --git a/django/contrib/gis/utils/srs.py b/django/contrib/gis/utils/srs.py
index b10cf263b3..d44d340383 100644
--- a/django/contrib/gis/utils/srs.py
+++ b/django/contrib/gis/utils/srs.py
@@ -36,8 +36,9 @@ def add_srs_entry(srs, auth_name='EPSG', auth_srid=None, ref_sys_name=None,
connection = connections[database]
if not hasattr(connection.ops, 'spatial_version'):
- raise Exception('The `add_srs_entry` utility only works '
- 'with spatial backends.')
+ raise Exception(
+ 'The `add_srs_entry` utility only works with spatial backends.'
+ )
if not connection.features.supports_add_srs_entry:
raise Exception('This utility does not support your database backend.')
SpatialRefSys = connection.ops.spatial_ref_sys()
diff --git a/django/contrib/staticfiles/utils.py b/django/contrib/staticfiles/utils.py
index 5c0a85a451..e4297aff2b 100644
--- a/django/contrib/staticfiles/utils.py
+++ b/django/contrib/staticfiles/utils.py
@@ -50,8 +50,9 @@ def check_settings(base_url=None):
"You're using the staticfiles app "
"without having set the required STATIC_URL setting.")
if settings.MEDIA_URL == base_url:
- raise ImproperlyConfigured("The MEDIA_URL and STATIC_URL "
- "settings must have different values")
+ raise ImproperlyConfigured(
+ "The MEDIA_URL and STATIC_URL settings must have different values"
+ )
if (settings.DEBUG and settings.MEDIA_URL and settings.STATIC_URL and
settings.MEDIA_URL.startswith(settings.STATIC_URL)):
raise ImproperlyConfigured(
@@ -59,5 +60,6 @@ def check_settings(base_url=None):
)
if ((settings.MEDIA_ROOT and settings.STATIC_ROOT) and
(settings.MEDIA_ROOT == settings.STATIC_ROOT)):
- raise ImproperlyConfigured("The MEDIA_ROOT and STATIC_ROOT "
- "settings must have different values")
+ raise ImproperlyConfigured(
+ "The MEDIA_ROOT and STATIC_ROOT settings must have different values"
+ )
diff --git a/django/core/management/base.py b/django/core/management/base.py
index 2044b85754..551c481359 100644
--- a/django/core/management/base.py
+++ b/django/core/management/base.py
@@ -562,8 +562,8 @@ class AppCommand(BaseCommand):
corresponding to an application label given on the command line.
"""
raise NotImplementedError(
- "Subclasses of AppCommand must provide"
- "a handle_app_config() method.")
+ "Subclasses of AppCommand must provide a handle_app_config() method."
+ )
class LabelCommand(BaseCommand):
diff --git a/django/db/backends/mysql/base.py b/django/db/backends/mysql/base.py
index 8b28a60485..e4c7313123 100644
--- a/django/db/backends/mysql/base.py
+++ b/django/db/backends/mysql/base.py
@@ -15,8 +15,7 @@ try:
import MySQLdb as Database
except ImportError as err:
raise ImproperlyConfigured(
- 'Error loading MySQLdb module.\n'
- 'Did you install mysqlclient?'
+ 'Error loading MySQLdb module.\nDid you install mysqlclient?'
) from err
from MySQLdb.constants import CLIENT, FIELD_TYPE
diff --git a/django/db/backends/mysql/introspection.py b/django/db/backends/mysql/introspection.py
index 2383c9ca1b..1e15fae383 100644
--- a/django/db/backends/mysql/introspection.py
+++ b/django/db/backends/mysql/introspection.py
@@ -79,22 +79,28 @@ class DatabaseIntrospection(BaseDatabaseIntrospection):
if self.connection.mysql_is_mariadb and self.connection.features.can_introspect_json_field:
# JSON data type is an alias for LONGTEXT in MariaDB, select
# JSON_VALID() constraints to introspect JSONField.
- cursor.execute("""
+ cursor.execute(
+ """
SELECT c.constraint_name AS column_name
FROM information_schema.check_constraints AS c
WHERE
c.table_name = %s AND
LOWER(c.check_clause) = 'json_valid(`' + LOWER(c.constraint_name) + '`)' AND
c.constraint_schema = DATABASE()
- """, [table_name])
+ """,
+ [table_name],
+ )
json_constraints = {row[0] for row in cursor.fetchall()}
# A default collation for the given table.
- cursor.execute("""
+ cursor.execute(
+ """
SELECT table_collation
FROM information_schema.tables
WHERE table_schema = DATABASE()
AND table_name = %s
- """, [table_name])
+ """,
+ [table_name],
+ )
row = cursor.fetchone()
default_column_collation = row[0] if row else ''
# information_schema database gives more accurate results for some figures:
@@ -102,7 +108,8 @@ class DatabaseIntrospection(BaseDatabaseIntrospection):
# not visible length (#5725)
# - precision and scale (for decimal fields) (#5014)
# - auto_increment is not available in cursor.description
- cursor.execute("""
+ cursor.execute(
+ """
SELECT
column_name, data_type, character_maximum_length,
numeric_precision, numeric_scale, extra, column_default,
@@ -116,7 +123,9 @@ class DatabaseIntrospection(BaseDatabaseIntrospection):
END AS is_unsigned
FROM information_schema.columns
WHERE table_name = %s AND table_schema = DATABASE()
- """, [default_column_collation, table_name])
+ """,
+ [default_column_collation, table_name],
+ )
field_info = {line[0]: InfoLine(*line) for line in cursor.fetchall()}
cursor.execute("SELECT * FROM %s LIMIT 1" % self.connection.ops.quote_name(table_name))
@@ -165,13 +174,17 @@ class DatabaseIntrospection(BaseDatabaseIntrospection):
for all key columns in the given table.
"""
key_columns = []
- cursor.execute("""
+ cursor.execute(
+ """
SELECT column_name, referenced_table_name, referenced_column_name
FROM information_schema.key_column_usage
WHERE table_name = %s
AND table_schema = DATABASE()
AND referenced_table_name IS NOT NULL
- AND referenced_column_name IS NOT NULL""", [table_name])
+ AND referenced_column_name IS NOT NULL
+ """,
+ [table_name],
+ )
key_columns.extend(cursor.fetchall())
return key_columns
@@ -180,13 +193,16 @@ class DatabaseIntrospection(BaseDatabaseIntrospection):
Retrieve the storage engine for a given table. Return the default
storage engine if the table doesn't exist.
"""
- cursor.execute("""
+ cursor.execute(
+ """
SELECT engine
FROM information_schema.tables
WHERE
table_name = %s AND
table_schema = DATABASE()
- """, [table_name])
+ """,
+ [table_name],
+ )
result = cursor.fetchone()
if not result:
return self.connection.features._mysql_storage_engine
diff --git a/django/db/backends/mysql/operations.py b/django/db/backends/mysql/operations.py
index 3e1faad41b..5eede7cc84 100644
--- a/django/db/backends/mysql/operations.py
+++ b/django/db/backends/mysql/operations.py
@@ -231,8 +231,9 @@ class DatabaseOperations(BaseDatabaseOperations):
# Zero in AUTO_INCREMENT field does not work without the
# NO_AUTO_VALUE_ON_ZERO SQL mode.
if value == 0 and not self.connection.features.allows_auto_pk_0:
- raise ValueError('The database backend does not accept 0 as a '
- 'value for AutoField.')
+ raise ValueError(
+ 'The database backend does not accept 0 as a value for AutoField.'
+ )
return value
def adapt_datetimefield_value(self, value):
diff --git a/django/db/backends/oracle/introspection.py b/django/db/backends/oracle/introspection.py
index fa7a34ed0a..4ea8162a63 100644
--- a/django/db/backends/oracle/introspection.py
+++ b/django/db/backends/oracle/introspection.py
@@ -93,7 +93,8 @@ class DatabaseIntrospection(BaseDatabaseIntrospection):
interface.
"""
# user_tab_columns gives data default for columns
- cursor.execute("""
+ cursor.execute(
+ """
SELECT
user_tab_cols.column_name,
user_tab_cols.data_default,
@@ -126,7 +127,9 @@ class DatabaseIntrospection(BaseDatabaseIntrospection):
LEFT OUTER JOIN
user_tables ON user_tables.table_name = user_tab_cols.table_name
WHERE user_tab_cols.table_name = UPPER(%s)
- """, [table_name])
+ """,
+ [table_name],
+ )
field_map = {
column: (internal_size, default if default != 'NULL' else None, collation, is_autofield, is_json)
for column, default, collation, internal_size, is_autofield, is_json in cursor.fetchall()
@@ -151,7 +154,8 @@ class DatabaseIntrospection(BaseDatabaseIntrospection):
return name.lower()
def get_sequences(self, cursor, table_name, table_fields=()):
- cursor.execute("""
+ cursor.execute(
+ """
SELECT
user_tab_identity_cols.sequence_name,
user_tab_identity_cols.column_name
@@ -165,7 +169,9 @@ class DatabaseIntrospection(BaseDatabaseIntrospection):
AND cols.column_name = user_tab_identity_cols.column_name
AND user_constraints.constraint_type = 'P'
AND user_tab_identity_cols.table_name = UPPER(%s)
- """, [table_name])
+ """,
+ [table_name],
+ )
# Oracle allows only one identity column per table.
row = cursor.fetchone()
if row:
@@ -217,7 +223,8 @@ class DatabaseIntrospection(BaseDatabaseIntrospection):
]
def get_primary_key_column(self, cursor, table_name):
- cursor.execute("""
+ cursor.execute(
+ """
SELECT
cols.column_name
FROM
@@ -228,7 +235,9 @@ class DatabaseIntrospection(BaseDatabaseIntrospection):
user_constraints.constraint_type = 'P' AND
user_constraints.table_name = UPPER(%s) AND
cols.position = 1
- """, [table_name])
+ """,
+ [table_name],
+ )
row = cursor.fetchone()
return self.identifier_converter(row[0]) if row else None
@@ -239,7 +248,8 @@ class DatabaseIntrospection(BaseDatabaseIntrospection):
"""
constraints = {}
# Loop over the constraints, getting PKs, uniques, and checks
- cursor.execute("""
+ cursor.execute(
+ """
SELECT
user_constraints.constraint_name,
LISTAGG(LOWER(cols.column_name), ',') WITHIN GROUP (ORDER BY cols.position),
@@ -263,7 +273,9 @@ class DatabaseIntrospection(BaseDatabaseIntrospection):
user_constraints.constraint_type = ANY('P', 'U', 'C')
AND user_constraints.table_name = UPPER(%s)
GROUP BY user_constraints.constraint_name, user_constraints.constraint_type
- """, [table_name])
+ """,
+ [table_name],
+ )
for constraint, columns, pk, unique, check in cursor.fetchall():
constraint = self.identifier_converter(constraint)
constraints[constraint] = {
@@ -275,7 +287,8 @@ class DatabaseIntrospection(BaseDatabaseIntrospection):
'index': unique, # All uniques come with an index
}
# Foreign key constraints
- cursor.execute("""
+ cursor.execute(
+ """
SELECT
cons.constraint_name,
LISTAGG(LOWER(cols.column_name), ',') WITHIN GROUP (ORDER BY cols.position),
@@ -291,7 +304,9 @@ class DatabaseIntrospection(BaseDatabaseIntrospection):
cons.constraint_type = 'R' AND
cons.table_name = UPPER(%s)
GROUP BY cons.constraint_name, rcols.table_name, rcols.column_name
- """, [table_name])
+ """,
+ [table_name],
+ )
for constraint, columns, other_table, other_column in cursor.fetchall():
constraint = self.identifier_converter(constraint)
constraints[constraint] = {
@@ -303,7 +318,8 @@ class DatabaseIntrospection(BaseDatabaseIntrospection):
'columns': columns.split(','),
}
# Now get indexes
- cursor.execute("""
+ cursor.execute(
+ """
SELECT
ind.index_name,
LOWER(ind.index_type),
@@ -320,7 +336,9 @@ class DatabaseIntrospection(BaseDatabaseIntrospection):
WHERE ind.index_name = cons.index_name
) AND cols.index_name = ind.index_name
GROUP BY ind.index_name, ind.index_type, ind.uniqueness
- """, [table_name])
+ """,
+ [table_name],
+ )
for constraint, type_, unique, columns, orders in cursor.fetchall():
constraint = self.identifier_converter(constraint)
constraints[constraint] = {
diff --git a/django/db/backends/oracle/operations.py b/django/db/backends/oracle/operations.py
index f497390bea..e530028cbf 100644
--- a/django/db/backends/oracle/operations.py
+++ b/django/db/backends/oracle/operations.py
@@ -372,7 +372,8 @@ END;
def __foreign_key_constraints(self, table_name, recursive):
with self.connection.cursor() as cursor:
if recursive:
- cursor.execute("""
+ cursor.execute(
+ """
SELECT
user_tables.table_name, rcons.constraint_name
FROM
@@ -389,9 +390,12 @@ END;
user_tables.table_name, rcons.constraint_name
HAVING user_tables.table_name != UPPER(%s)
ORDER BY MAX(level) DESC
- """, (table_name, table_name))
+ """,
+ (table_name, table_name),
+ )
else:
- cursor.execute("""
+ cursor.execute(
+ """
SELECT
cons.table_name, cons.constraint_name
FROM
@@ -399,7 +403,9 @@ END;
WHERE
cons.constraint_type = 'R'
AND cons.table_name = UPPER(%s)
- """, (table_name,))
+ """,
+ (table_name,),
+ )
return cursor.fetchall()
@cached_property
diff --git a/django/db/backends/oracle/schema.py b/django/db/backends/oracle/schema.py
index 0d1c7f5d4b..da64fc31a5 100644
--- a/django/db/backends/oracle/schema.py
+++ b/django/db/backends/oracle/schema.py
@@ -182,13 +182,16 @@ class DatabaseSchemaEditor(BaseDatabaseSchemaEditor):
def _is_identity_column(self, table_name, column_name):
with self.connection.cursor() as cursor:
- cursor.execute("""
+ cursor.execute(
+ """
SELECT
CASE WHEN identity_column = 'YES' THEN 1 ELSE 0 END
FROM user_tab_cols
WHERE table_name = %s AND
column_name = %s
- """, [self.normalize_name(table_name), self.normalize_name(column_name)])
+ """,
+ [self.normalize_name(table_name), self.normalize_name(column_name)],
+ )
row = cursor.fetchone()
return row[0] if row else False
@@ -200,9 +203,12 @@ class DatabaseSchemaEditor(BaseDatabaseSchemaEditor):
def _get_default_collation(self, table_name):
with self.connection.cursor() as cursor:
- cursor.execute("""
+ cursor.execute(
+ """
SELECT default_collation FROM user_tables WHERE table_name = %s
- """, [self.normalize_name(table_name)])
+ """,
+ [self.normalize_name(table_name)],
+ )
return cursor.fetchone()[0]
def _alter_column_collation_sql(self, model, new_field, new_type, new_collation):
diff --git a/django/db/migrations/utils.py b/django/db/migrations/utils.py
index 97bd96a90a..42a4d90340 100644
--- a/django/db/migrations/utils.py
+++ b/django/db/migrations/utils.py
@@ -42,8 +42,7 @@ def resolve_relation(model, app_label=None, model_name=None):
return app_label, model_name.lower()
if app_label is None:
raise TypeError(
- 'app_label must be provided to resolve unscoped model '
- 'relationships.'
+ 'app_label must be provided to resolve unscoped model relationships.'
)
return app_label, model.lower()
return model._meta.app_label, model._meta.model_name
diff --git a/django/db/models/constraints.py b/django/db/models/constraints.py
index d36d076346..5abedaf3d1 100644
--- a/django/db/models/constraints.py
+++ b/django/db/models/constraints.py
@@ -40,8 +40,7 @@ class CheckConstraint(BaseConstraint):
self.check = check
if not getattr(check, 'conditional', False):
raise TypeError(
- 'CheckConstraint.check must be a Q instance or boolean '
- 'expression.'
+ 'CheckConstraint.check must be a Q instance or boolean expression.'
)
super().__init__(name)
diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py
index 0e72a09e59..4d2ac900f8 100644
--- a/django/db/models/fields/__init__.py
+++ b/django/db/models/fields/__init__.py
@@ -101,8 +101,7 @@ class Field(RegisterLookupMixin):
'invalid_choice': _('Value %(value)r is not a valid choice.'),
'null': _('This field cannot be null.'),
'blank': _('This field cannot be blank.'),
- 'unique': _('%(model_name)s with this %(field_label)s '
- 'already exists.'),
+ 'unique': _('%(model_name)s with this %(field_label)s already exists.'),
# Translators: The 'lookup_type' is one of 'date', 'year' or 'month'.
# Eg: "Title must be unique for pub_date year"
'unique_for_date': _("%(field_label)s must be unique for "
diff --git a/django/db/models/indexes.py b/django/db/models/indexes.py
index 9c393ca2c0..e843f9a8cb 100644
--- a/django/db/models/indexes.py
+++ b/django/db/models/indexes.py
@@ -36,8 +36,7 @@ class Index:
raise ValueError('Index.opclasses must be a list or tuple.')
if not expressions and not fields:
raise ValueError(
- 'At least one field or expression is required to define an '
- 'index.'
+ 'At least one field or expression is required to define an index.'
)
if expressions and fields:
raise ValueError(
diff --git a/django/db/models/lookups.py b/django/db/models/lookups.py
index 0f104416de..04c4a4863c 100644
--- a/django/db/models/lookups.py
+++ b/django/db/models/lookups.py
@@ -541,8 +541,7 @@ class IsNull(BuiltinLookup):
def as_sql(self, compiler, connection):
if not isinstance(self.rhs, bool):
raise ValueError(
- 'The QuerySet value for an isnull lookup must be True or '
- 'False.'
+ 'The QuerySet value for an isnull lookup must be True or False.'
)
sql, params = compiler.compile(self.lhs)
if self.rhs:
diff --git a/django/db/models/query.py b/django/db/models/query.py
index 1bc8e2ed2a..b3b81c22f2 100644
--- a/django/db/models/query.py
+++ b/django/db/models/query.py
@@ -820,8 +820,7 @@ class QuerySet:
self._not_support_combined_queries('contains')
if self._fields is not None:
raise TypeError(
- 'Cannot call QuerySet.contains() after .values() or '
- '.values_list().'
+ 'Cannot call QuerySet.contains() after .values() or .values_list().'
)
try:
if obj._meta.concrete_model != self.model._meta.concrete_model:
@@ -1611,8 +1610,7 @@ class Prefetch:
)
):
raise ValueError(
- 'Prefetch querysets cannot use raw(), values(), and '
- 'values_list().'
+ 'Prefetch querysets cannot use raw(), values(), and values_list().'
)
if to_attr:
self.prefetch_to = LOOKUP_SEP.join(lookup.split(LOOKUP_SEP)[:-1] + [to_attr])
diff --git a/django/db/models/sql/query.py b/django/db/models/sql/query.py
index 6436b25bae..3c18fcb4c7 100644
--- a/django/db/models/sql/query.py
+++ b/django/db/models/sql/query.py
@@ -1706,8 +1706,7 @@ class Query(BaseExpression):
for alias in self._gen_col_aliases([annotation]):
if isinstance(self.alias_map[alias], Join):
raise FieldError(
- 'Joined field references are not permitted in '
- 'this query'
+ 'Joined field references are not permitted in this query'
)
if summarize:
# Summarize currently means we are doing an aggregate() query
@@ -1734,8 +1733,9 @@ class Query(BaseExpression):
if not allow_joins and len(join_list) > 1:
raise FieldError('Joined field references are not permitted in this query')
if len(targets) > 1:
- raise FieldError("Referencing multicolumn fields with F() objects "
- "isn't supported")
+ raise FieldError(
+ "Referencing multicolumn fields with F() objects isn't supported"
+ )
# Verify that the last lookup in name is a field or a transform:
# transform_function() raises FieldError if not.
transform = join_info.transform_function(targets[0], final_alias)
diff --git a/django/forms/models.py b/django/forms/models.py
index 7effb202e3..5a40cdb5cb 100644
--- a/django/forms/models.py
+++ b/django/forms/models.py
@@ -1211,8 +1211,9 @@ class ModelChoiceField(ChoiceField):
# This class is a subclass of ChoiceField for purity, but it doesn't
# actually use any of ChoiceField's implementation.
default_error_messages = {
- 'invalid_choice': _('Select a valid choice. That choice is not one of'
- ' the available choices.'),
+ 'invalid_choice': _(
+ 'Select a valid choice. That choice is not one of the available choices.'
+ ),
}
iterator = ModelChoiceIterator
@@ -1331,8 +1332,9 @@ class ModelMultipleChoiceField(ModelChoiceField):
hidden_widget = MultipleHiddenInput
default_error_messages = {
'invalid_list': _('Enter a list of values.'),
- 'invalid_choice': _('Select a valid choice. %(value)s is not one of the'
- ' available choices.'),
+ 'invalid_choice': _(
+ 'Select a valid choice. %(value)s is not one of the available choices.'
+ ),
'invalid_pk_value': _('ā€œ%(pk)sā€ is not a valid value.')
}
diff --git a/django/template/backends/base.py b/django/template/backends/base.py
index 22628c6355..f1fa142362 100644
--- a/django/template/backends/base.py
+++ b/django/template/backends/base.py
@@ -38,8 +38,8 @@ class BaseEngine:
This method is optional.
"""
raise NotImplementedError(
- "subclasses of BaseEngine should provide "
- "a from_string() method")
+ "subclasses of BaseEngine should provide a from_string() method"
+ )
def get_template(self, template_name):
"""
@@ -48,8 +48,8 @@ class BaseEngine:
Raise TemplateDoesNotExist if no such template exists.
"""
raise NotImplementedError(
- "subclasses of BaseEngine must provide "
- "a get_template() method")
+ "subclasses of BaseEngine must provide a get_template() method"
+ )
# Utility methods: they are provided to minimize code duplication and
# security issues in third-party backends.
diff --git a/django/template/base.py b/django/template/base.py
index 0dec9940ab..31f6981420 100644
--- a/django/template/base.py
+++ b/django/template/base.py
@@ -672,8 +672,9 @@ class FilterExpression:
except VariableDoesNotExist:
var_obj = None
elif var is None:
- raise TemplateSyntaxError("Could not find variable at "
- "start of %s." % token)
+ raise TemplateSyntaxError(
+ "Could not find variable at start of %s." % token
+ )
else:
var_obj = Variable(var)
else:
@@ -878,9 +879,10 @@ class Variable:
ValueError, # invalid literal for int()
KeyError, # current is a dict without `int(bit)` key
TypeError): # unsubscriptable object
- raise VariableDoesNotExist("Failed lookup for key "
- "[%s] in %r",
- (bit, current)) # missing attribute
+ raise VariableDoesNotExist(
+ "Failed lookup for key [%s] in %r",
+ (bit, current),
+ ) # missing attribute
if callable(current):
if getattr(current, 'do_not_call_in_templates', False):
pass
diff --git a/django/template/defaulttags.py b/django/template/defaulttags.py
index 99c09a483a..9090b14e40 100644
--- a/django/template/defaulttags.py
+++ b/django/template/defaulttags.py
@@ -793,8 +793,9 @@ def do_for(parser, token):
"""
bits = token.split_contents()
if len(bits) < 4:
- raise TemplateSyntaxError("'for' statements should have at least four"
- " words: %s" % token.contents)
+ raise TemplateSyntaxError(
+ "'for' statements should have at least four words: %s" % token.contents
+ )
is_reversed = bits[-1] == 'reversed'
in_index = -3 if is_reversed else -2
@@ -806,8 +807,9 @@ def do_for(parser, token):
loopvars = re.split(r' *, *', ' '.join(bits[1:in_index]))
for var in loopvars:
if not var or not invalid_chars.isdisjoint(var):
- raise TemplateSyntaxError("'for' tag received an invalid argument:"
- " %s" % token.contents)
+ raise TemplateSyntaxError(
+ "'for' tag received an invalid argument: %s" % token.contents
+ )
sequence = parser.compile_filter(bits[in_index + 1])
nodelist_loop = parser.parse(('empty', 'endfor',))
@@ -1160,8 +1162,9 @@ def regroup(parser, token):
if bits[2] != 'by':
raise TemplateSyntaxError("second argument to 'regroup' tag must be 'by'")
if bits[4] != 'as':
- raise TemplateSyntaxError("next-to-last argument to 'regroup' tag must"
- " be 'as'")
+ raise TemplateSyntaxError(
+ "next-to-last argument to 'regroup' tag must be 'as'"
+ )
var_name = bits[5]
# RegroupNode will take each item in 'target', put it in the context under
# 'var_name', evaluate 'var_name'.'expression' in the current context, and
@@ -1420,8 +1423,9 @@ def do_with(parser, token):
remaining_bits = bits[1:]
extra_context = token_kwargs(remaining_bits, parser, support_legacy=True)
if not extra_context:
- raise TemplateSyntaxError("%r expected at least one variable "
- "assignment" % bits[0])
+ raise TemplateSyntaxError(
+ "%r expected at least one variable assignment" % bits[0]
+ )
if remaining_bits:
raise TemplateSyntaxError("%r received an invalid token: %r" %
(bits[0], remaining_bits[0]))
diff --git a/django/template/loader_tags.py b/django/template/loader_tags.py
index e0ab7b6bdd..02d0a09ee6 100644
--- a/django/template/loader_tags.py
+++ b/django/template/loader_tags.py
@@ -315,13 +315,15 @@ def do_include(parser, token):
while remaining_bits:
option = remaining_bits.pop(0)
if option in options:
- raise TemplateSyntaxError('The %r option was specified more '
- 'than once.' % option)
+ raise TemplateSyntaxError(
+ 'The %r option was specified more than once.' % option
+ )
if option == 'with':
value = token_kwargs(remaining_bits, parser, support_legacy=False)
if not value:
- raise TemplateSyntaxError('"with" in %r tag needs at least '
- 'one keyword argument.' % bits[0])
+ raise TemplateSyntaxError(
+ '"with" in %r tag needs at least one keyword argument.' % bits[0]
+ )
elif option == 'only':
value = True
else:
diff --git a/django/template/response.py b/django/template/response.py
index 9efadcd726..63d2f4a577 100644
--- a/django/template/response.py
+++ b/django/template/response.py
@@ -49,8 +49,9 @@ class SimpleTemplateResponse(HttpResponse):
"""
obj_dict = self.__dict__.copy()
if not self._is_rendered:
- raise ContentNotRenderedError('The response content must be '
- 'rendered before it can be pickled.')
+ raise ContentNotRenderedError(
+ 'The response content must be rendered before it can be pickled.'
+ )
for attr in self.rendering_attrs:
if attr in obj_dict:
del obj_dict[attr]
diff --git a/django/templatetags/i18n.py b/django/templatetags/i18n.py
index 8c123c7dd5..58736d5a7f 100644
--- a/django/templatetags/i18n.py
+++ b/django/templatetags/i18n.py
@@ -476,13 +476,15 @@ def do_block_translate(parser, token):
while remaining_bits:
option = remaining_bits.pop(0)
if option in options:
- raise TemplateSyntaxError('The %r option was specified more '
- 'than once.' % option)
+ raise TemplateSyntaxError(
+ 'The %r option was specified more than once.' % option
+ )
if option == 'with':
value = token_kwargs(remaining_bits, parser, support_legacy=True)
if not value:
- raise TemplateSyntaxError('"with" in %r tag needs at least '
- 'one keyword argument.' % bits[0])
+ raise TemplateSyntaxError(
+ '"with" in %r tag needs at least one keyword argument.' % bits[0]
+ )
elif option == 'count':
value = token_kwargs(remaining_bits, parser, support_legacy=True)
if len(value) != 1:
diff --git a/django/templatetags/tz.py b/django/templatetags/tz.py
index 455c2ed389..489391a267 100644
--- a/django/templatetags/tz.py
+++ b/django/templatetags/tz.py
@@ -209,6 +209,7 @@ def get_current_timezone_tag(parser, token):
# token.split_contents() isn't useful here because this tag doesn't accept variable as arguments
args = token.contents.split()
if len(args) != 3 or args[1] != 'as':
- raise TemplateSyntaxError("'get_current_timezone' requires "
- "'as variable' (got %r)" % args)
+ raise TemplateSyntaxError(
+ "'get_current_timezone' requires 'as variable' (got %r)" % args
+ )
return GetCurrentTimezoneNode(args[2])
diff --git a/django/test/client.py b/django/test/client.py
index 560f994876..93f9f973d2 100644
--- a/django/test/client.py
+++ b/django/test/client.py
@@ -894,8 +894,7 @@ class AsyncClient(ClientMixin, AsyncRequestFactory):
"""
if 'follow' in request:
raise NotImplementedError(
- 'AsyncClient request methods do not accept the follow '
- 'parameter.'
+ 'AsyncClient request methods do not accept the follow parameter.'
)
scope = self._base_scope(**request)
# Curry a data dictionary into an instance of the template renderer