Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Changed a whole bunch of places to raise exception instances instead …

…of old-style raising exception classes plus a comma. Good for the future Python 3 conversion

git-svn-id: http://code.djangoproject.com/svn/django/trunk@12180 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit 5ceed0a05388079118319940acdb2abe4ee01de6 1 parent bef8913
Adrian Holovaty adrianholovaty authored
Showing with 120 additions and 124 deletions.
  1. +2 −2 django/conf/__init__.py
  2. +4 −4 django/contrib/admin/templatetags/log.py
  3. +1 −1  django/contrib/admin/views/template.py
  4. +3 −3 django/contrib/admindocs/views.py
  5. +3 −3 django/contrib/auth/__init__.py
  6. +3 −3 django/contrib/contenttypes/generic.py
  7. +1 −1  django/contrib/gis/db/backends/spatialite/base.py
  8. +1 −1  django/contrib/gis/geos/collections.py
  9. +1 −1  django/contrib/gis/tests/geometries.py
  10. +1 −1  django/contrib/gis/utils/ogrinfo.py
  11. +5 −5 django/contrib/localflavor/es/forms.py
  12. +3 −3 django/contrib/markup/templatetags/markup.py
  13. +1 −1  django/contrib/sessions/models.py
  14. +2 −2 django/contrib/sites/managers.py
  15. +1 −1  django/contrib/syndication/feeds.py
  16. +3 −3 django/contrib/syndication/views.py
  17. +2 −2 django/core/cache/__init__.py
  18. +1 −1  django/core/cache/backends/base.py
  19. +1 −1  django/core/cache/backends/filebased.py
  20. +4 −4 django/core/handlers/base.py
  21. +1 −1  django/core/management/__init__.py
  22. +1 −1  django/core/servers/basehttp.py
  23. +6 −7 django/core/urlresolvers.py
  24. +1 −1  django/db/backends/dummy/base.py
  25. +2 −2 django/db/backends/sqlite3/base.py
  26. +4 −6 django/db/models/base.py
  27. +12 −12 django/db/models/fields/related.py
  28. +1 −1  django/db/models/loading.py
  29. +2 −2 django/db/models/manager.py
  30. +2 −2 django/db/models/options.py
  31. +1 −1  django/db/models/query.py
  32. +1 −1  django/forms/widgets.py
  33. +7 −8 django/template/defaulttags.py
  34. +2 −2 django/template/loader.py
  35. +7 −7 django/template/loader_tags.py
  36. +2 −2 django/template/loaders/app_directories.py
  37. +1 −1  django/template/loaders/cached.py
  38. +1 −1  django/template/loaders/eggs.py
  39. +1 −1  django/template/loaders/filesystem.py
  40. +9 −9 django/templatetags/i18n.py
  41. +4 −4 django/utils/datastructures.py
  42. +1 −1  django/utils/text.py
  43. +3 −3 django/views/generic/date_based.py
  44. +2 −2 django/views/generic/list_detail.py
  45. +1 −1  django/views/i18n.py
  46. +2 −2 django/views/static.py
4 django/conf/__init__.py
View
@@ -46,7 +46,7 @@ def configure(self, default_settings=global_settings, **options):
argument must support attribute access (__getattr__)).
"""
if self._wrapped != None:
- raise RuntimeError, 'Settings already configured.'
+ raise RuntimeError('Settings already configured.')
holder = UserSettingsHolder(default_settings)
for name, value in options.items():
setattr(holder, name, value)
@@ -72,7 +72,7 @@ def __init__(self, settings_module):
try:
mod = importlib.import_module(self.SETTINGS_MODULE)
except ImportError, e:
- raise ImportError, "Could not import settings '%s' (Is it on sys.path? Does it have syntax errors?): %s" % (self.SETTINGS_MODULE, e)
+ raise ImportError("Could not import settings '%s' (Is it on sys.path? Does it have syntax errors?): %s" % (self.SETTINGS_MODULE, e))
# Settings that should be converted into tuples if they're mistakenly entered
# as strings.
8 django/contrib/admin/templatetags/log.py
View
@@ -44,14 +44,14 @@ def __init__(self, tag_name):
def __call__(self, parser, token):
tokens = token.contents.split()
if len(tokens) < 4:
- raise template.TemplateSyntaxError, "'%s' statements require two arguments" % self.tag_name
+ raise template.TemplateSyntaxError("'%s' statements require two arguments" % self.tag_name)
if not tokens[1].isdigit():
- raise template.TemplateSyntaxError, "First argument in '%s' must be an integer" % self.tag_name
+ raise template.TemplateSyntaxError("First argument in '%s' must be an integer" % self.tag_name)
if tokens[2] != 'as':
- raise template.TemplateSyntaxError, "Second argument in '%s' must be 'as'" % self.tag_name
+ raise template.TemplateSyntaxError("Second argument in '%s' must be 'as'" % self.tag_name)
if len(tokens) > 4:
if tokens[4] != 'for_user':
- raise template.TemplateSyntaxError, "Fourth argument in '%s' must be 'for_user'" % self.tag_name
+ raise template.TemplateSyntaxError("Fourth argument in '%s' must be 'for_user'" % self.tag_name)
return AdminLogNode(limit=tokens[1], varname=tokens[3], user=(len(tokens) > 5 and tokens[5] or None))
register.tag('get_admin_log', DoGetAdminLog('get_admin_log'))
2  django/contrib/admin/views/template.py
View
@@ -76,4 +76,4 @@ def new_do_extends(parser, token):
error = e
template.builtins.remove(register)
if error:
- raise forms.ValidationError, e.args
+ raise forms.ValidationError(e.args)
6 django/contrib/admindocs/views.py
View
@@ -187,14 +187,14 @@ def model_detail(request, app_label, model_name):
try:
app_mod = models.get_app(app_label)
except ImproperlyConfigured:
- raise Http404, _("App %r not found") % app_label
+ raise Http404(_("App %r not found") % app_label)
model = None
for m in models.get_models(app_mod):
if m._meta.object_name.lower() == model_name:
model = m
break
if model is None:
- raise Http404, _("Model %(model_name)r not found in app %(app_label)r") % {'model_name': model_name, 'app_label': app_label}
+ raise Http404(_("Model %(model_name)r not found in app %(app_label)r") % {'model_name': model_name, 'app_label': app_label})
opts = model._meta
@@ -353,7 +353,7 @@ def extract_views_from_urlpatterns(urlpatterns, base=''):
continue
views.extend(extract_views_from_urlpatterns(patterns, base + p.regex.pattern))
else:
- raise TypeError, _("%s does not appear to be a urlpattern object") % p
+ raise TypeError(_("%s does not appear to be a urlpattern object") % p)
return views
named_group_matcher = re.compile(r'\(\?P(<\w+>).+?\)')
6 django/contrib/auth/__init__.py
View
@@ -13,13 +13,13 @@ def load_backend(path):
try:
mod = import_module(module)
except ImportError, e:
- raise ImproperlyConfigured, 'Error importing authentication backend %s: "%s"' % (module, e)
+ raise ImproperlyConfigured('Error importing authentication backend %s: "%s"' % (module, e))
except ValueError, e:
- raise ImproperlyConfigured, 'Error importing authentication backends. Is AUTHENTICATION_BACKENDS a correctly defined list or tuple?'
+ raise ImproperlyConfigured('Error importing authentication backends. Is AUTHENTICATION_BACKENDS a correctly defined list or tuple?')
try:
cls = getattr(mod, attr)
except AttributeError:
- raise ImproperlyConfigured, 'Module "%s" does not define a "%s" authentication backend' % (module, attr)
+ raise ImproperlyConfigured('Module "%s" does not define a "%s" authentication backend' % (module, attr))
try:
getattr(cls, 'supports_object_permissions')
except AttributeError:
6 django/contrib/contenttypes/generic.py
View
@@ -83,7 +83,7 @@ def __get__(self, instance, instance_type=None):
def __set__(self, instance, value):
if instance is None:
- raise AttributeError, u"%s must be accessed via instance" % self.related.opts.object_name
+ raise AttributeError(u"%s must be accessed via instance" % self.related.opts.object_name)
ct = None
fk = None
@@ -210,7 +210,7 @@ def __get__(self, instance, instance_type=None):
def __set__(self, instance, value):
if instance is None:
- raise AttributeError, "Manager must be accessed via instance"
+ raise AttributeError("Manager must be accessed via instance")
manager = self.__get__(instance)
manager.clear()
@@ -252,7 +252,7 @@ def get_query_set(self):
def add(self, *objs):
for obj in objs:
if not isinstance(obj, self.model):
- raise TypeError, "'%s' instance expected" % self.model._meta.object_name
+ raise TypeError("'%s' instance expected" % self.model._meta.object_name)
setattr(obj, self.content_type_field_name, self.content_type)
setattr(obj, self.object_id_field_name, self.pk_val)
obj.save(using=self.instance._state.db)
2  django/contrib/gis/db/backends/spatialite/base.py
View
@@ -39,7 +39,7 @@ def _cursor(self):
settings_dict = self.settings_dict
if not settings_dict['NAME']:
from django.core.exceptions import ImproperlyConfigured
- raise ImproperlyConfigured, "Please fill out the database NAME in the settings module before using the database."
+ raise ImproperlyConfigured("Please fill out the database NAME in the settings module before using the database.")
kwargs = {
'database': settings_dict['NAME'],
'detect_types': Database.PARSE_DECLTYPES | Database.PARSE_COLNAMES,
2  django/contrib/gis/geos/collections.py
View
@@ -19,7 +19,7 @@ def __init__(self, *args, **kwargs):
# Checking the arguments
if not args:
- raise TypeError, 'Must provide at least one Geometry to initialize %s.' % self.__class__.__name__
+ raise TypeError('Must provide at least one Geometry to initialize %s.' % self.__class__.__name__)
if len(args) == 1:
# If only one geometry provided or a list of geometries is provided
2  django/contrib/gis/tests/geometries.py
View
@@ -12,7 +12,7 @@ def __init__(self, wkt, **kwargs):
if not self.bad:
m = wkt_regex.match(wkt)
if not m:
- raise Exception, 'Improper WKT: "%s"' % wkt
+ raise Exception('Improper WKT: "%s"' % wkt)
self.geo_type = m.group('type')
for key, value in kwargs.items():
2  django/contrib/gis/utils/ogrinfo.py
View
@@ -19,7 +19,7 @@ def ogrinfo(data_source, num_features=10):
elif isinstance(data_source, DataSource):
pass
else:
- raise Exception, 'Data source parameter must be a string or a DataSource object.'
+ raise Exception('Data source parameter must be a string or a DataSource object.')
for i, layer in enumerate(data_source):
print "data source : %s" % data_source.name
10 django/contrib/localflavor/es/forms.py
View
@@ -97,13 +97,13 @@ def clean(self, value):
if letter2 == nif_get_checksum(number):
return value
else:
- raise ValidationError, self.error_messages['invalid_nif']
+ raise ValidationError(self.error_messages['invalid_nif'])
elif letter1 in self.nie_types and letter2:
# NIE
if letter2 == nif_get_checksum(number):
return value
else:
- raise ValidationError, self.error_messages['invalid_nie']
+ raise ValidationError(self.error_messages['invalid_nie'])
elif not self.only_nif and letter1 in self.cif_types and len(number) in [7, 8]:
# CIF
if not letter2:
@@ -112,9 +112,9 @@ def clean(self, value):
if letter2 in (checksum, self.cif_control[checksum]):
return value
else:
- raise ValidationError, self.error_messages['invalid_cif']
+ raise ValidationError(self.error_messages['invalid_cif'])
else:
- raise ValidationError, self.error_messages['invalid']
+ raise ValidationError(self.error_messages['invalid'])
class ESCCCField(RegexField):
"""
@@ -159,7 +159,7 @@ def clean(self, value):
if get_checksum('00' + entity + office) + get_checksum(account) == checksum:
return value
else:
- raise ValidationError, self.error_messages['checksum']
+ raise ValidationError(self.error_messages['checksum'])
class ESRegionSelect(Select):
"""
6 django/contrib/markup/templatetags/markup.py
View
@@ -26,7 +26,7 @@ def textile(value):
import textile
except ImportError:
if settings.DEBUG:
- raise template.TemplateSyntaxError, "Error in {% textile %} filter: The Python textile library isn't installed."
+ raise template.TemplateSyntaxError("Error in {% textile %} filter: The Python textile library isn't installed.")
return force_unicode(value)
else:
return mark_safe(force_unicode(textile.textile(smart_str(value), encoding='utf-8', output='utf-8')))
@@ -53,7 +53,7 @@ def markdown(value, arg=''):
import markdown
except ImportError:
if settings.DEBUG:
- raise template.TemplateSyntaxError, "Error in {% markdown %} filter: The Python markdown library isn't installed."
+ raise template.TemplateSyntaxError("Error in {% markdown %} filter: The Python markdown library isn't installed.")
return force_unicode(value)
else:
# markdown.version was first added in 1.6b. The only version of markdown
@@ -81,7 +81,7 @@ def restructuredtext(value):
from docutils.core import publish_parts
except ImportError:
if settings.DEBUG:
- raise template.TemplateSyntaxError, "Error in {% restructuredtext %} filter: The Python docutils library isn't installed."
+ raise template.TemplateSyntaxError("Error in {% restructuredtext %} filter: The Python docutils library isn't installed.")
return force_unicode(value)
else:
docutils_settings = getattr(settings, "RESTRUCTUREDTEXT_FILTER_SETTINGS", {})
2  django/contrib/sessions/models.py
View
@@ -58,7 +58,7 @@ def get_decoded(self):
pickled, tamper_check = encoded_data[:-32], encoded_data[-32:]
if md5_constructor(pickled + settings.SECRET_KEY).hexdigest() != tamper_check:
from django.core.exceptions import SuspiciousOperation
- raise SuspiciousOperation, "User tampered with session cookie."
+ raise SuspiciousOperation("User tampered with session cookie.")
try:
return pickle.loads(pickled)
# Unpickling can cause a variety of exceptions. If something happens,
4 django/contrib/sites/managers.py
View
@@ -14,7 +14,7 @@ def get_query_set(self):
try:
self.model._meta.get_field(self.__field_name)
except FieldDoesNotExist:
- raise ValueError, "%s couldn't find a field named %s in %s." % \
- (self.__class__.__name__, self.__field_name, self.model._meta.object_name)
+ raise ValueError("%s couldn't find a field named %s in %s." % \
+ (self.__class__.__name__, self.__field_name, self.model._meta.object_name))
self.__is_validated = True
return super(CurrentSiteManager, self).get_query_set().filter(**{self.__field_name + '__id__exact': settings.SITE_ID})
2  django/contrib/syndication/feeds.py
View
@@ -38,7 +38,7 @@ def item_link(self, item):
try:
return item.get_absolute_url()
except AttributeError:
- raise ImproperlyConfigured, "Give your %s class a get_absolute_url() method, or define an item_link() method in your Feed class." % item.__class__.__name__
+ raise ImproperlyConfigured("Give your %s class a get_absolute_url() method, or define an item_link() method in your Feed class." % item.__class__.__name__)
def __get_dynamic_attr(self, attname, obj, default=None):
try:
6 django/contrib/syndication/views.py
View
@@ -3,7 +3,7 @@
def feed(request, url, feed_dict=None):
if not feed_dict:
- raise Http404, "No feeds are registered."
+ raise Http404("No feeds are registered.")
try:
slug, param = url.split('/', 1)
@@ -13,12 +13,12 @@ def feed(request, url, feed_dict=None):
try:
f = feed_dict[slug]
except KeyError:
- raise Http404, "Slug %r isn't registered." % slug
+ raise Http404("Slug %r isn't registered." % slug)
try:
feedgen = f(slug, request).get_feed(param)
except feeds.FeedDoesNotExist:
- raise Http404, "Invalid feed parameters. Slug %r is valid, but other parameters, or lack thereof, are not." % slug
+ raise Http404("Invalid feed parameters. Slug %r is valid, but other parameters, or lack thereof, are not." % slug)
response = HttpResponse(mimetype=feedgen.mime_type)
feedgen.write(response, 'utf-8')
4 django/core/cache/__init__.py
View
@@ -39,10 +39,10 @@ def parse_backend_uri(backend_uri):
(scheme, host, params) tuple.
"""
if backend_uri.find(':') == -1:
- raise InvalidCacheBackendError, "Backend URI must start with scheme://"
+ raise InvalidCacheBackendError("Backend URI must start with scheme://")
scheme, rest = backend_uri.split(':', 1)
if not rest.startswith('//'):
- raise InvalidCacheBackendError, "Backend URI must start with scheme://"
+ raise InvalidCacheBackendError("Backend URI must start with scheme://")
host = rest[2:]
qpos = rest.find('?')
2  django/core/cache/backends/base.py
View
@@ -71,7 +71,7 @@ def incr(self, key, delta=1):
ValueError exception.
"""
if key not in self:
- raise ValueError, "Key '%s' not found" % key
+ raise ValueError("Key '%s' not found" % key)
new_value = self.get(key) + delta
self.set(key, new_value)
return new_value
2  django/core/cache/backends/filebased.py
View
@@ -129,7 +129,7 @@ def _createdir(self):
try:
os.makedirs(self._dir)
except OSError:
- raise EnvironmentError, "Cache directory '%s' does not exist and could not be created'" % self._dir
+ raise EnvironmentError("Cache directory '%s' does not exist and could not be created'" % self._dir)
def _key_to_file(self, key):
"""
8 django/core/handlers/base.py
View
@@ -34,16 +34,16 @@ def load_middleware(self):
try:
dot = middleware_path.rindex('.')
except ValueError:
- raise exceptions.ImproperlyConfigured, '%s isn\'t a middleware module' % middleware_path
+ raise exceptions.ImproperlyConfigured('%s isn\'t a middleware module' % middleware_path)
mw_module, mw_classname = middleware_path[:dot], middleware_path[dot+1:]
try:
mod = import_module(mw_module)
except ImportError, e:
- raise exceptions.ImproperlyConfigured, 'Error importing middleware %s: "%s"' % (mw_module, e)
+ raise exceptions.ImproperlyConfigured('Error importing middleware %s: "%s"' % (mw_module, e))
try:
mw_class = getattr(mod, mw_classname)
except AttributeError:
- raise exceptions.ImproperlyConfigured, 'Middleware module "%s" does not define a "%s" class' % (mw_module, mw_classname)
+ raise exceptions.ImproperlyConfigured('Middleware module "%s" does not define a "%s" class' % (mw_module, mw_classname))
try:
mw_instance = mw_class()
@@ -113,7 +113,7 @@ def get_response(self, request):
view_name = callback.func_name # If it's a function
except AttributeError:
view_name = callback.__class__.__name__ + '.__call__' # If it's a class
- raise ValueError, "The view %s.%s didn't return an HttpResponse object." % (callback.__module__, view_name)
+ raise ValueError("The view %s.%s didn't return an HttpResponse object." % (callback.__module__, view_name))
return response
except http.Http404, e:
2  django/core/management/__init__.py
View
@@ -152,7 +152,7 @@ def call_command(name, *args, **options):
else:
klass = load_command_class(app_name, name)
except KeyError:
- raise CommandError, "Unknown command: %r" % name
+ raise CommandError("Unknown command: %r" % name)
# Grab out a list of defaults from the options. optparse does this for us
# when the script runs from the command line, but since call_command can
2  django/core/servers/basehttp.py
View
@@ -530,7 +530,7 @@ def server_bind(self):
try:
HTTPServer.server_bind(self)
except Exception, e:
- raise WSGIServerException, e
+ raise WSGIServerException(e)
self.setup_environ()
def setup_environ(self):
13 django/core/urlresolvers.py
View
@@ -135,10 +135,10 @@ def _get_callback(self):
self._callback = get_callable(self._callback_str)
except ImportError, e:
mod_name, _ = get_mod_func(self._callback_str)
- raise ViewDoesNotExist, "Could not import %s. Error was: %s" % (mod_name, str(e))
+ raise ViewDoesNotExist("Could not import %s. Error was: %s" % (mod_name, str(e)))
except AttributeError, e:
mod_name, func_name = get_mod_func(self._callback_str)
- raise ViewDoesNotExist, "Tried %s in module %s. Error was: %s" % (func_name, mod_name, str(e))
+ raise ViewDoesNotExist("Tried %s in module %s. Error was: %s" % (func_name, mod_name, str(e)))
return self._callback
callback = property(_get_callback)
@@ -234,8 +234,8 @@ def resolve(self, path):
sub_match_dict[smart_str(k)] = v
return sub_match[0], sub_match[1], sub_match_dict
tried.append(pattern.regex.pattern)
- raise Resolver404, {'tried': tried, 'path': new_path}
- raise Resolver404, {'path' : path}
+ raise Resolver404({'tried': tried, 'path': new_path})
+ raise Resolver404({'path' : path})
def _get_urlconf_module(self):
try:
@@ -250,8 +250,7 @@ def _get_url_patterns(self):
try:
iter(patterns)
except TypeError:
- raise ImproperlyConfigured("The included urlconf %s doesn't have any "
- "patterns in it" % self.urlconf_name)
+ raise ImproperlyConfigured("The included urlconf %s doesn't have any patterns in it" % self.urlconf_name)
return patterns
url_patterns = property(_get_url_patterns)
@@ -260,7 +259,7 @@ def _resolve_special(self, view_type):
try:
return get_callable(callback), {}
except (ImportError, AttributeError), e:
- raise ViewDoesNotExist, "Tried %s. Error was: %s" % (callback, str(e))
+ raise ViewDoesNotExist("Tried %s. Error was: %s" % (callback, str(e)))
def resolve404(self):
return self._resolve_special('404')
2  django/db/backends/dummy/base.py
View
@@ -12,7 +12,7 @@
from django.db.backends.creation import BaseDatabaseCreation
def complain(*args, **kwargs):
- raise ImproperlyConfigured, "You haven't set the database ENGINE setting yet."
+ raise ImproperlyConfigured("You haven't set the database ENGINE setting yet.")
def ignore(*args, **kwargs):
pass
4 django/db/backends/sqlite3/base.py
View
@@ -27,7 +27,7 @@
exc = e1
else:
module = 'either pysqlite2 or sqlite3 modules (tried in that order)'
- raise ImproperlyConfigured, "Error loading %s: %s" % (module, exc)
+ raise ImproperlyConfigured("Error loading %s: %s" % (module, exc))
DatabaseError = Database.DatabaseError
@@ -157,7 +157,7 @@ def _cursor(self):
settings_dict = self.settings_dict
if not settings_dict['NAME']:
from django.core.exceptions import ImproperlyConfigured
- raise ImproperlyConfigured, "Please fill out the database NAME in the settings module before using the database."
+ raise ImproperlyConfigured("Please fill out the database NAME in the settings module before using the database.")
kwargs = {
'database': settings_dict['NAME'],
'detect_types': Database.PARSE_DECLTYPES | Database.PARSE_COLNAMES,
10 django/db/models/base.py
View
@@ -111,8 +111,7 @@ def __new__(cls, name, bases, attrs):
raise TypeError("Proxy model '%s' has no non-abstract model base class." % name)
if (new_class._meta.local_fields or
new_class._meta.local_many_to_many):
- raise FieldError("Proxy model '%s' contains model fields."
- % name)
+ raise FieldError("Proxy model '%s' contains model fields." % name)
while base._meta.proxy:
base = base._meta.proxy_for_model
new_class._meta.setup_proxy(base)
@@ -333,7 +332,7 @@ def __init__(self, *args, **kwargs):
except AttributeError:
pass
if kwargs:
- raise TypeError, "'%s' is an invalid keyword argument for this function" % kwargs.keys()[0]
+ raise TypeError("'%s' is an invalid keyword argument for this function" % kwargs.keys()[0])
signals.post_init.send(sender=self.__class__, instance=self)
def __repr__(self):
@@ -427,8 +426,7 @@ def save(self, force_insert=False, force_update=False, using=None):
non-SQL backends), respectively. Normally, they should not be set.
"""
if force_insert and force_update:
- raise ValueError("Cannot force both insert and updating in "
- "model saving.")
+ raise ValueError("Cannot force both insert and updating in model saving.")
self.save_base(using=using, force_insert=force_insert, force_update=force_update)
save.alters_data = True
@@ -621,7 +619,7 @@ def _get_next_or_previous_by_FIELD(self, field, is_next, **kwargs):
try:
return qs[0]
except IndexError:
- raise self.DoesNotExist, "%s matching query does not exist." % self.__class__._meta.object_name
+ raise self.DoesNotExist("%s matching query does not exist." % self.__class__._meta.object_name)
def _get_next_or_previous_in_order(self, is_next):
cachename = "__%s_order_cache" % is_next
24 django/db/models/fields/related.py
View
@@ -171,7 +171,7 @@ def pk_trace(value):
return [pk_trace(v) for v in value]
elif lookup_type == 'isnull':
return []
- raise TypeError, "Related Field has invalid lookup: %s" % lookup_type
+ raise TypeError("Related Field has invalid lookup: %s" % lookup_type)
def _get_related_query_name(self, opts):
# This method defines the name that can be used to identify this
@@ -203,7 +203,7 @@ def __get__(self, instance, instance_type=None):
def __set__(self, instance, value):
if instance is None:
- raise AttributeError, "%s must be accessed via instance" % self.related.opts.object_name
+ raise AttributeError("%s must be accessed via instance" % self.related.opts.object_name)
# The similarity of the code below to the code in
# ReverseSingleRelatedObjectDescriptor is annoying, but there's a bunch
@@ -270,7 +270,7 @@ def __get__(self, instance, instance_type=None):
def __set__(self, instance, value):
if instance is None:
- raise AttributeError, "%s must be accessed via instance" % self._field.name
+ raise AttributeError("%s must be accessed via instance" % self._field.name)
# If null=True, we can assign null here, but otherwise the value needs
# to be an instance of the related class.
@@ -343,7 +343,7 @@ def __get__(self, instance, instance_type=None):
def __set__(self, instance, value):
if instance is None:
- raise AttributeError, "Manager must be accessed via instance"
+ raise AttributeError("Manager must be accessed via instance")
manager = self.__get__(instance)
# If the foreign key can support nulls, then completely clear the related set.
@@ -376,7 +376,7 @@ def get_query_set(self):
def add(self, *objs):
for obj in objs:
if not isinstance(obj, self.model):
- raise TypeError, "'%s' instance expected" % self.model._meta.object_name
+ raise TypeError("'%s' instance expected" % self.model._meta.object_name)
setattr(obj, rel_field.name, instance)
obj.save(using=instance._state.db)
add.alters_data = True
@@ -404,7 +404,7 @@ def remove(self, *objs):
setattr(obj, rel_field.name, None)
obj.save(using=instance._state.db)
else:
- raise rel_field.rel.to.DoesNotExist, "%r is not related to %r." % (obj, instance)
+ raise rel_field.rel.to.DoesNotExist("%r is not related to %r." % (obj, instance))
remove.alters_data = True
def clear(self):
@@ -475,7 +475,7 @@ def create(self, **kwargs):
# from the method lookup table, as we do with add and remove.
if not rel.through._meta.auto_created:
opts = through._meta
- raise AttributeError, "Cannot use create() on a ManyToManyField which specifies an intermediary model. Use %s.%s's Manager instead." % (opts.app_label, opts.object_name)
+ raise AttributeError("Cannot use create() on a ManyToManyField which specifies an intermediary model. Use %s.%s's Manager instead." % (opts.app_label, opts.object_name))
new_obj = super(ManyRelatedManager, self).using(self.instance._state.db).create(**kwargs)
self.add(new_obj)
return new_obj
@@ -508,7 +508,7 @@ def _add_items(self, source_field_name, target_field_name, *objs):
# (obj, self.instance._state.db, obj._state.db))
new_ids.add(obj.pk)
elif isinstance(obj, Model):
- raise TypeError, "'%s' instance expected" % self.model._meta.object_name
+ raise TypeError("'%s' instance expected" % self.model._meta.object_name)
else:
new_ids.add(obj)
vals = self.through._default_manager.using(self.instance._state.db).values_list(target_field_name, flat=True)
@@ -586,11 +586,11 @@ def __get__(self, instance, instance_type=None):
def __set__(self, instance, value):
if instance is None:
- raise AttributeError, "Manager must be accessed via instance"
+ raise AttributeError("Manager must be accessed via instance")
if not self.related.field.rel.through._meta.auto_created:
opts = self.related.field.rel.through._meta
- raise AttributeError, "Cannot set values on a ManyToManyField which specifies an intermediary model. Use %s.%s's Manager instead." % (opts.app_label, opts.object_name)
+ raise AttributeError("Cannot set values on a ManyToManyField which specifies an intermediary model. Use %s.%s's Manager instead." % (opts.app_label, opts.object_name))
manager = self.__get__(instance)
manager.clear()
@@ -636,11 +636,11 @@ def __get__(self, instance, instance_type=None):
def __set__(self, instance, value):
if instance is None:
- raise AttributeError, "Manager must be accessed via instance"
+ raise AttributeError("Manager must be accessed via instance")
if not self.field.rel.through._meta.auto_created:
opts = self.field.rel.through._meta
- raise AttributeError, "Cannot set values on a ManyToManyField which specifies an intermediary model. Use %s.%s's Manager instead." % (opts.app_label, opts.object_name)
+ raise AttributeError("Cannot set values on a ManyToManyField which specifies an intermediary model. Use %s.%s's Manager instead." % (opts.app_label, opts.object_name))
manager = self.__get__(instance)
manager.clear()
2  django/db/models/loading.py
View
@@ -123,7 +123,7 @@ def get_app(self, app_label, emptyOK=False):
return None
else:
return mod
- raise ImproperlyConfigured, "App with label %s could not be found" % app_label
+ raise ImproperlyConfigured("App with label %s could not be found" % app_label)
finally:
self.write_lock.release()
4 django/db/models/manager.py
View
@@ -19,7 +19,7 @@ def ensure_default_manager(sender, **kwargs):
# Create the default manager, if needed.
try:
cls._meta.get_field('objects')
- raise ValueError, "Model %s must specify a custom Manager, because it has a field named 'objects'" % cls.__name__
+ raise ValueError("Model %s must specify a custom Manager, because it has a field named 'objects'" % cls.__name__)
except FieldDoesNotExist:
pass
cls.add_to_class('objects', Manager())
@@ -210,7 +210,7 @@ def __init__(self, manager):
def __get__(self, instance, type=None):
if instance != None:
- raise AttributeError, "Manager isn't accessible via %s instances" % type.__name__
+ raise AttributeError("Manager isn't accessible via %s instances" % type.__name__)
return self.manager
class EmptyManager(Manager):
4 django/db/models/options.py
View
@@ -94,7 +94,7 @@ def contribute_to_class(self, cls, name):
# Any leftover attributes must be invalid.
if meta_attrs != {}:
- raise TypeError, "'class Meta' got invalid attribute(s): %s" % ','.join(meta_attrs.keys())
+ raise TypeError("'class Meta' got invalid attribute(s): %s" % ','.join(meta_attrs.keys()))
else:
self.verbose_name_plural = string_concat(self.verbose_name, 's')
del self.meta
@@ -274,7 +274,7 @@ def get_field(self, name, many_to_many=True):
for f in to_search:
if f.name == name:
return f
- raise FieldDoesNotExist, '%s has no field named %r' % (self.object_name, name)
+ raise FieldDoesNotExist('%s has no field named %r' % (self.object_name, name))
def get_field_by_name(self, name):
"""
2  django/db/models/query.py
View
@@ -185,7 +185,7 @@ def __getitem__(self, k):
qs.query.set_limits(k, k + 1)
return list(qs)[0]
except self.model.DoesNotExist, e:
- raise IndexError, e.args
+ raise IndexError(e.args)
def __and__(self, other):
self._merge_sanity_check(other)
2  django/forms/widgets.py
View
@@ -41,7 +41,7 @@ def __init__(self, media=None, **kwargs):
# Any leftover attributes must be invalid.
# if media_attrs != {}:
- # raise TypeError, "'class Media' has invalid attribute(s): %s" % ','.join(media_attrs.keys())
+ # raise TypeError("'class Media' has invalid attribute(s): %s" % ','.join(media_attrs.keys()))
def __unicode__(self):
return self.render()
15 django/template/defaulttags.py
View
@@ -439,10 +439,10 @@ def autoescape(parser, token):
"""
args = token.contents.split()
if len(args) != 2:
- raise TemplateSyntaxError("'Autoescape' tag requires exactly one argument.")
+ raise TemplateSyntaxError("'autoescape' tag requires exactly one argument.")
arg = args[1]
if arg not in (u'on', u'off'):
- raise TemplateSyntaxError("'Autoescape' argument should be 'on' or 'off'")
+ raise TemplateSyntaxError("'autoescape' argument should be 'on' or 'off'")
nodelist = parser.parse(('endautoescape',))
parser.delete_first_token()
return AutoEscapeControlNode((arg == 'on'), nodelist)
@@ -604,8 +604,7 @@ def firstof(parser, token):
"""
bits = token.split_contents()[1:]
if len(bits) < 1:
- raise TemplateSyntaxError("'firstof' statement requires at least one"
- " argument")
+ raise TemplateSyntaxError("'firstof' statement requires at least one argument")
return FirstOfNode([parser.compile_filter(bit) for bit in bits])
firstof = register.tag(firstof)
@@ -704,7 +703,7 @@ def do_for(parser, token):
def do_ifequal(parser, token, negate):
bits = list(token.split_contents())
if len(bits) != 3:
- raise TemplateSyntaxError, "%r takes two arguments" % bits[0]
+ raise TemplateSyntaxError("%r takes two arguments" % bits[0])
end_tag = 'end' + bits[0]
nodelist_true = parser.parse(('else', end_tag))
token = parser.next_token()
@@ -943,7 +942,7 @@ def now(parser, token):
"""
bits = token.contents.split('"')
if len(bits) != 3:
- raise TemplateSyntaxError, "'now' statement takes one argument"
+ raise TemplateSyntaxError("'now' statement takes one argument")
format_string = bits[1]
return NowNode(format_string)
now = register.tag(now)
@@ -997,7 +996,7 @@ def regroup(parser, token):
"""
firstbits = token.contents.split(None, 3)
if len(firstbits) != 4:
- raise TemplateSyntaxError, "'regroup' tag takes five arguments"
+ raise TemplateSyntaxError("'regroup' tag takes five arguments")
target = parser.compile_filter(firstbits[1])
if firstbits[2] != 'by':
raise TemplateSyntaxError("second argument to 'regroup' tag must be 'by'")
@@ -1067,7 +1066,7 @@ def templatetag(parser, token):
"""
bits = token.contents.split()
if len(bits) != 2:
- raise TemplateSyntaxError, "'templatetag' statement takes one argument"
+ raise TemplateSyntaxError("'templatetag' statement takes one argument")
tag = bits[1]
if tag not in TemplateTagNode.mapping:
raise TemplateSyntaxError("Invalid templatetag argument: '%s'."
4 django/template/loader.py
View
@@ -122,7 +122,7 @@ def find_template(name, dirs=None):
return (source, make_origin(display_name, loader, name, dirs))
except TemplateDoesNotExist:
pass
- raise TemplateDoesNotExist, name
+ raise TemplateDoesNotExist(name)
def find_template_source(name, dirs=None):
# For backward compatibility
@@ -180,6 +180,6 @@ def select_template(template_name_list):
except TemplateDoesNotExist:
continue
# If we get here, none of the templates could be loaded
- raise TemplateDoesNotExist, ', '.join(template_name_list)
+ raise TemplateDoesNotExist(', '.join(template_name_list))
add_to_builtins('django.template.loader_tags')
14 django/template/loader_tags.py
View
@@ -94,13 +94,13 @@ def get_parent(self, context):
error_msg = "Invalid template name in 'extends' tag: %r." % parent
if self.parent_name_expr:
error_msg += " Got this from the '%s' variable." % self.parent_name_expr.token
- raise TemplateSyntaxError, error_msg
+ raise TemplateSyntaxError(error_msg)
if hasattr(parent, 'render'):
return parent # parent is a Template object
try:
return get_template(parent)
except TemplateDoesNotExist:
- raise TemplateSyntaxError, "Template %r cannot be extended, because it doesn't exist" % parent
+ raise TemplateSyntaxError("Template %r cannot be extended, because it doesn't exist" % parent)
def render(self, context):
compiled_parent = self.get_parent(context)
@@ -165,13 +165,13 @@ def do_block(parser, token):
"""
bits = token.contents.split()
if len(bits) != 2:
- raise TemplateSyntaxError, "'%s' tag takes only one argument" % bits[0]
+ raise TemplateSyntaxError("'%s' tag takes only one argument" % bits[0])
block_name = bits[1]
# Keep track of the names of BlockNodes found in this template, so we can
# check for duplication.
try:
if block_name in parser.__loaded_blocks:
- raise TemplateSyntaxError, "'%s' tag with name '%s' appears more than once" % (bits[0], block_name)
+ raise TemplateSyntaxError("'%s' tag with name '%s' appears more than once" % (bits[0], block_name))
parser.__loaded_blocks.append(block_name)
except AttributeError: # parser.__loaded_blocks isn't a list yet
parser.__loaded_blocks = [block_name]
@@ -191,7 +191,7 @@ def do_extends(parser, token):
"""
bits = token.split_contents()
if len(bits) != 2:
- raise TemplateSyntaxError, "'%s' takes one argument" % bits[0]
+ raise TemplateSyntaxError("'%s' takes one argument" % bits[0])
parent_name, parent_name_expr = None, None
if bits[1][0] in ('"', "'") and bits[1][-1] == bits[1][0]:
parent_name = bits[1][1:-1]
@@ -199,7 +199,7 @@ def do_extends(parser, token):
parent_name_expr = parser.compile_filter(bits[1])
nodelist = parser.parse()
if nodelist.get_nodes_by_type(ExtendsNode):
- raise TemplateSyntaxError, "'%s' cannot appear more than once in the same template" % bits[0]
+ raise TemplateSyntaxError("'%s' cannot appear more than once in the same template" % bits[0])
return ExtendsNode(nodelist, parent_name, parent_name_expr)
def do_include(parser, token):
@@ -212,7 +212,7 @@ def do_include(parser, token):
"""
bits = token.split_contents()
if len(bits) != 2:
- raise TemplateSyntaxError, "%r tag takes one argument: the name of the template to be included" % bits[0]
+ raise TemplateSyntaxError("%r tag takes one argument: the name of the template to be included" % bits[0])
path = bits[1]
if path[0] in ('"', "'") and path[-1] == path[0]:
return ConstantIncludeNode(path[1:-1])
4 django/template/loaders/app_directories.py
View
@@ -20,7 +20,7 @@
try:
mod = import_module(app)
except ImportError, e:
- raise ImproperlyConfigured, 'ImportError %s: %s' % (app, e.args[0])
+ raise ImproperlyConfigured('ImportError %s: %s' % (app, e.args[0]))
template_dir = os.path.join(os.path.dirname(mod.__file__), 'templates')
if os.path.isdir(template_dir):
app_template_dirs.append(template_dir.decode(fs_encoding))
@@ -59,7 +59,7 @@ def load_template_source(self, template_name, template_dirs=None):
file.close()
except IOError:
pass
- raise TemplateDoesNotExist, template_name
+ raise TemplateDoesNotExist(template_name)
_loader = Loader()
2  django/template/loaders/cached.py
View
@@ -31,7 +31,7 @@ def find_template(self, name, dirs=None):
return (template, make_origin(display_name, loader, name, dirs))
except TemplateDoesNotExist:
pass
- raise TemplateDoesNotExist, name
+ raise TemplateDoesNotExist(name)
def load_template(self, template_name, template_dirs=None):
if template_name not in self.template_cache:
2  django/template/loaders/eggs.py
View
@@ -25,7 +25,7 @@ def load_template_source(self, template_name, template_dirs=None):
return (resource_string(app, pkg_name).decode(settings.FILE_CHARSET), 'egg:%s:%s' % (app, pkg_name))
except:
pass
- raise TemplateDoesNotExist, template_name
+ raise TemplateDoesNotExist(template_name)
_loader = Loader()
2  django/template/loaders/filesystem.py
View
@@ -45,7 +45,7 @@ def load_template_source(self, template_name, template_dirs=None):
error_msg = "Tried %s" % tried
else:
error_msg = "Your TEMPLATE_DIRS setting is empty. Change it to point to at least one template directory."
- raise TemplateDoesNotExist, error_msg
+ raise TemplateDoesNotExist(error_msg)
load_template_source.is_usable = True
_loader = Loader()
18 django/templatetags/i18n.py
View
@@ -104,7 +104,7 @@ def do_get_available_languages(parser, token):
"""
args = token.contents.split()
if len(args) != 3 or args[1] != 'as':
- raise TemplateSyntaxError, "'get_available_languages' requires 'as variable' (got %r)" % args
+ raise TemplateSyntaxError("'get_available_languages' requires 'as variable' (got %r)" % args)
return GetAvailableLanguagesNode(args[2])
def do_get_current_language(parser, token):
@@ -121,7 +121,7 @@ def do_get_current_language(parser, token):
"""
args = token.contents.split()
if len(args) != 3 or args[1] != 'as':
- raise TemplateSyntaxError, "'get_current_language' requires 'as variable' (got %r)" % args
+ raise TemplateSyntaxError("'get_current_language' requires 'as variable' (got %r)" % args)
return GetCurrentLanguageNode(args[2])
def do_get_current_language_bidi(parser, token):
@@ -138,7 +138,7 @@ def do_get_current_language_bidi(parser, token):
"""
args = token.contents.split()
if len(args) != 3 or args[1] != 'as':
- raise TemplateSyntaxError, "'get_current_language_bidi' requires 'as variable' (got %r)" % args
+ raise TemplateSyntaxError("'get_current_language_bidi' requires 'as variable' (got %r)" % args)
return GetCurrentLanguageBidiNode(args[2])
def do_translate(parser, token):
@@ -178,7 +178,7 @@ def top(self):
if self.tag() == 'noop':
noop = True
else:
- raise TemplateSyntaxError, "only option for 'trans' is 'noop'"
+ raise TemplateSyntaxError("only option for 'trans' is 'noop'")
else:
noop = False
return (value, noop)
@@ -215,16 +215,16 @@ def top(self):
if tag == 'with' or tag == 'and':
value = self.value()
if self.tag() != 'as':
- raise TemplateSyntaxError, "variable bindings in 'blocktrans' must be 'with value as variable'"
+ raise TemplateSyntaxError("variable bindings in 'blocktrans' must be 'with value as variable'")
extra_context[self.tag()] = VariableNode(
parser.compile_filter(value))
elif tag == 'count':
counter = parser.compile_filter(self.value())
if self.tag() != 'as':
- raise TemplateSyntaxError, "counter specification in 'blocktrans' must be 'count value as variable'"
+ raise TemplateSyntaxError("counter specification in 'blocktrans' must be 'count value as variable'")
countervar = self.tag()
else:
- raise TemplateSyntaxError, "unknown subtag %s for 'blocktrans' found" % tag
+ raise TemplateSyntaxError("unknown subtag %s for 'blocktrans' found" % tag)
return (countervar, counter, extra_context)
countervar, counter, extra_context = BlockTranslateParser(token.contents).top()
@@ -239,7 +239,7 @@ def top(self):
break
if countervar and counter:
if token.contents.strip() != 'plural':
- raise TemplateSyntaxError, "'blocktrans' doesn't allow other block tags inside it"
+ raise TemplateSyntaxError("'blocktrans' doesn't allow other block tags inside it")
while parser.tokens:
token = parser.next_token()
if token.token_type in (TOKEN_VAR, TOKEN_TEXT):
@@ -247,7 +247,7 @@ def top(self):
else:
break
if token.contents.strip() != 'endblocktrans':
- raise TemplateSyntaxError, "'blocktrans' doesn't allow other block tags (seen %r) inside it" % token.contents
+ raise TemplateSyntaxError("'blocktrans' doesn't allow other block tags (seen %r) inside it" % token.contents)
return BlockTranslateNode(extra_context, singular, plural, countervar,
counter)
8 django/utils/datastructures.py
View
@@ -208,7 +208,7 @@ def __getitem__(self, key):
try:
list_ = super(MultiValueDict, self).__getitem__(key)
except KeyError:
- raise MultiValueDictKeyError, "Key %r not found in %r" % (key, self)
+ raise MultiValueDictKeyError("Key %r not found in %r" % (key, self))
try:
return list_[-1]
except IndexError:
@@ -325,7 +325,7 @@ def update(self, *args, **kwargs):
Also accepts keyword args.
"""
if len(args) > 1:
- raise TypeError, "update expected at most 1 arguments, got %d" % len(args)
+ raise TypeError("update expected at most 1 arguments, got %d" % len(args))
if args:
other_dict = args[0]
if isinstance(other_dict, MultiValueDict):
@@ -336,7 +336,7 @@ def update(self, *args, **kwargs):
for key, value in other_dict.items():
self.setlistdefault(key, []).append(value)
except TypeError:
- raise ValueError, "MultiValueDict.update() takes either a MultiValueDict or dictionary"
+ raise ValueError("MultiValueDict.update() takes either a MultiValueDict or dictionary")
for key, value in kwargs.iteritems():
self.setlistdefault(key, []).append(value)
@@ -400,7 +400,7 @@ def complain(self, *wargs, **kwargs):
if isinstance(self.warning, Exception):
raise self.warning
else:
- raise AttributeError, self.warning
+ raise AttributeError(self.warning)
# All list mutation functions complain.
__delitem__ = complain
2  django/utils/text.py
View
@@ -186,7 +186,7 @@ def fix(match):
if type(s) == str:
s = s.decode('utf-8')
elif type(s) != unicode:
- raise TypeError, s
+ raise TypeError(s)
s = s.replace('\\', '\\\\')
s = s.replace('\r', '\\r')
s = s.replace('\n', '\\n')
6 django/views/generic/date_based.py
View
@@ -27,7 +27,7 @@ def archive_index(request, queryset, date_field, num_latest=15,
queryset = queryset.filter(**{'%s__lte' % date_field: datetime.datetime.now()})
date_list = queryset.dates(date_field, 'year')[::-1]
if not date_list and not allow_empty:
- raise Http404, "No %s available" % model._meta.verbose_name
+ raise Http404("No %s available" % model._meta.verbose_name)
if date_list and num_latest:
latest = queryset.order_by('-'+date_field)[:num_latest]
@@ -339,11 +339,11 @@ def object_detail(request, year, month, day, queryset, date_field,
elif slug and slug_field:
lookup_kwargs['%s__exact' % slug_field] = slug
else:
- raise AttributeError, "Generic detail view must be called with either an object_id or a slug/slugfield"
+ raise AttributeError("Generic detail view must be called with either an object_id or a slug/slugfield")
try:
obj = queryset.get(**lookup_kwargs)
except ObjectDoesNotExist:
- raise Http404, "No %s found for" % model._meta.verbose_name
+ raise Http404("No %s found for" % model._meta.verbose_name)
if not template_name:
template_name = "%s/%s_detail.html" % (model._meta.app_label, model._meta.object_name.lower())
if template_name_field:
4 django/views/generic/list_detail.py
View
@@ -120,11 +120,11 @@ def object_detail(request, queryset, object_id=None, slug=None,
elif slug and slug_field:
queryset = queryset.filter(**{slug_field: slug})
else:
- raise AttributeError, "Generic detail view must be called with either an object_id or a slug/slug_field."
+ raise AttributeError("Generic detail view must be called with either an object_id or a slug/slug_field.")
try:
obj = queryset.get()
except ObjectDoesNotExist:
- raise Http404, "No %s found matching the query" % (model._meta.verbose_name)
+ raise Http404("No %s found matching the query" % (model._meta.verbose_name))
if not template_name:
template_name = "%s/%s_detail.html" % (model._meta.app_label, model._meta.object_name.lower())
if template_name_field:
2  django/views/i18n.py
View
@@ -233,7 +233,7 @@ def javascript_catalog(request, domain='djangojs', packages=None):
pdict[k[0]] = max(k[1], pdict[k[0]])
csrc.append("catalog['%s'][%d] = '%s';\n" % (javascript_quote(k[0]), k[1], javascript_quote(v)))
else:
- raise TypeError, k
+ raise TypeError(k)
csrc.sort()
for k, v in pdict.items():
src.append("catalog['%s'] = [%s];\n" % (javascript_quote(k), ','.join(["''"]*(v+1))))
4 django/views/static.py
View
@@ -51,9 +51,9 @@ def serve(request, path, document_root=None, show_indexes=False):
if os.path.isdir(fullpath):
if show_indexes:
return directory_index(newpath, fullpath)
- raise Http404, "Directory indexes are not allowed here."
+ raise Http404("Directory indexes are not allowed here.")
if not os.path.exists(fullpath):
- raise Http404, '"%s" does not exist' % fullpath
+ raise Http404('"%s" does not exist' % fullpath)
# Respect the If-Modified-Since header.
statobj = os.stat(fullpath)
mimetype = mimetypes.guess_type(fullpath)[0] or 'application/octet-stream'
Please sign in to comment.
Something went wrong with that request. Please try again.