Index: django/db/models/options.py
===================================================================
--- django/db/models/options.py	(revision 3103)
+++ django/db/models/options.py	(working copy)
@@ -15,7 +15,7 @@
                  'unique_together', 'permissions', 'get_latest_by',
                  'order_with_respect_to', 'app_label')
 
-class Options:
+class Options(object):
     def __init__(self, meta):
         self.fields, self.many_to_many = [], []
         self.module_name, self.verbose_name = None, None
@@ -195,7 +195,7 @@
                 self._field_types[field_type] = False
         return self._field_types[field_type]
 
-class AdminOptions:
+class AdminOptions(object):
     def __init__(self, fields=None, js=None, list_display=None, list_filter=None,
         date_hierarchy=None, save_as=False, ordering=None, search_fields=None,
         save_on_top=False, list_select_related=False, manager=None, list_per_page=100):
Index: django/db/models/fields/__init__.py
===================================================================
--- django/db/models/fields/__init__.py	(revision 3103)
+++ django/db/models/fields/__init__.py	(working copy)
@@ -9,7 +9,7 @@
 from django.utils.translation import gettext, gettext_lazy, ngettext
 import datetime, os, time
 
-class NOT_PROVIDED:
+class NOT_PROVIDED(object):
     pass
 
 # Values for filter_interface.
@@ -535,7 +535,7 @@
         if not self.blank:
             if rel:
                 # This validator makes sure FileFields work in a related context.
-                class RequiredFileField:
+                class RequiredFileField(object):
                     def __init__(self, other_field_names, other_file_field_name):
                         self.other_field_names = other_field_names
                         self.other_file_field_name = other_file_field_name
Index: django/db/models/fields/related.py
===================================================================
--- django/db/models/fields/related.py	(revision 3103)
+++ django/db/models/fields/related.py	(working copy)
@@ -667,7 +667,7 @@
     def set_attributes_from_rel(self):
         pass
 
-class ManyToOneRel:
+class ManyToOneRel(object):
     def __init__(self, to, field_name, num_in_admin=3, min_num_in_admin=None,
         max_num_in_admin=None, num_extra_on_change=1, edit_inline=False,
         related_name=None, limit_choices_to=None, lookup_overrides=None, raw_id_admin=False):
@@ -704,7 +704,7 @@
         self.raw_id_admin = raw_id_admin
         self.multiple = False
 
-class ManyToManyRel:
+class ManyToManyRel(object):
     def __init__(self, to, num_in_admin=0, related_name=None,
         filter_interface=None, limit_choices_to=None, raw_id_admin=False, symmetrical=True):
         self.to = to
Index: django/db/models/__init__.py
===================================================================
--- django/db/models/__init__.py	(revision 3103)
+++ django/db/models/__init__.py	(working copy)
@@ -15,7 +15,7 @@
 # Admin stages.
 ADD, CHANGE, BOTH = 1, 2, 3
 
-class LazyDate:
+class LazyDate(object):
     """
     Use in limit_choices_to to compare the field to dates calculated at run time
     instead of when the model is loaded.  For example::
Index: django/db/models/query.py
===================================================================
--- django/db/models/query.py	(revision 3103)
+++ django/db/models/query.py	(working copy)
@@ -546,7 +546,7 @@
         c._order = self._order
         return c
 
-class QOperator:
+class QOperator(object):
     "Base class for QAnd and QOr"
     def __init__(self, *args):
         self.args = args
Index: django/db/backends/sqlite3/introspection.py
===================================================================
--- django/db/backends/sqlite3/introspection.py	(revision 3103)
+++ django/db/backends/sqlite3/introspection.py	(working copy)
@@ -35,7 +35,7 @@
 # This light wrapper "fakes" a dictionary interface, because some SQLite data
 # types include variables in them -- e.g. "varchar(30)" -- and can't be matched
 # as a simple dictionary lookup.
-class FlexibleFieldLookupDict:
+class FlexibleFieldLookupDict(object):
     def __getitem__(self, key):
         key = key.lower()
         try:
Index: django/db/backends/util.py
===================================================================
--- django/db/backends/util.py	(revision 3103)
+++ django/db/backends/util.py	(working copy)
@@ -1,7 +1,7 @@
 import datetime
 from time import time
 
-class CursorDebugWrapper:
+class CursorDebugWrapper(object):
     def __init__(self, cursor, db):
         self.cursor = cursor
         self.db = db
Index: django/db/backends/mysql/base.py
===================================================================
--- django/db/backends/mysql/base.py	(revision 3103)
+++ django/db/backends/mysql/base.py	(working copy)
@@ -26,7 +26,7 @@
 
 # This is an extra debug layer over MySQL queries, to display warnings.
 # It's only used when DEBUG=True.
-class MysqlDebugWrapper:
+class MysqlDebugWrapper(object):
     def __init__(self, cursor):
         self.cursor = cursor
 
Index: django/db/backends/dummy/base.py
===================================================================
--- django/db/backends/dummy/base.py	(revision 3103)
+++ django/db/backends/dummy/base.py	(working copy)
@@ -15,7 +15,7 @@
 class DatabaseError(Exception):
     pass
 
-class DatabaseWrapper:
+class DatabaseWrapper(object):
     cursor = complain
     _commit = complain
     _rollback = complain
Index: django/conf/__init__.py
===================================================================
--- django/conf/__init__.py	(revision 3103)
+++ django/conf/__init__.py	(working copy)
@@ -12,7 +12,7 @@
 
 ENVIRONMENT_VARIABLE = "DJANGO_SETTINGS_MODULE"
 
-class LazySettings:
+class LazySettings(object):
     """
     A lazy proxy for either global Django settings or a custom settings object.
     The user can manually configure settings prior to using them. Otherwise,
@@ -67,7 +67,7 @@
             setattr(holder, name, value)
         self._target = holder
 
-class Settings:
+class Settings(object):
     def __init__(self, settings_module):
         # update this dict from global settings (but only for ALL_CAPS settings)
         for setting in dir(global_settings):
@@ -112,7 +112,7 @@
     def get_all_members(self):
         return dir(self)
 
-class UserSettingsHolder:
+class UserSettingsHolder(object):
     """
     Holder for user configured settings.
     """
Index: django/forms/__init__.py
===================================================================
--- django/forms/__init__.py	(revision 3103)
+++ django/forms/__init__.py	(working copy)
@@ -101,7 +101,7 @@
         for field in self.fields:
             field.convert_post_data(new_data)
 
-class FormWrapper:
+class FormWrapper(object):
     """
     A wrapper linking a Manipulator to the template system.
     This allows dictionary-style lookups of formfields. It also handles feeding
@@ -150,7 +150,7 @@
 
     fields = property(_get_fields)
 
-class FormFieldWrapper:
+class FormFieldWrapper(object):
     "A bridge between the template system and an individual form field. Used by FormWrapper."
     def __init__(self, formfield, data, error_list):
         self.formfield, self.data, self.error_list = formfield, data, error_list
@@ -211,7 +211,7 @@
     def html_combined_error_list(self):
         return ''.join([field.html_error_list() for field in self.formfield_dict.values() if hasattr(field, 'errors')])
 
-class InlineObjectCollection:
+class InlineObjectCollection(object):
     "An object that acts like a sparse list of form field collections."
     def __init__(self, parent_manipulator, rel_obj, data, errors):
         self.parent_manipulator = parent_manipulator
@@ -269,7 +269,7 @@
             self._collections = collections
 
 
-class FormField:
+class FormField(object):
     """Abstract class representing a form field.
 
     Classes that extend FormField should define the following attributes:
@@ -521,7 +521,7 @@
                 {{ option.field }} {{ option.label }}<br />
             {% endfor %}
         """
-        class RadioFieldRenderer:
+        class RadioFieldRenderer(object):
             def __init__(self, datalist, ul_class):
                 self.datalist, self.ul_class = datalist, ul_class
             def __str__(self):
Index: django/core/servers/basehttp.py
===================================================================
--- django/core/servers/basehttp.py	(revision 3103)
+++ django/core/servers/basehttp.py	(working copy)
@@ -21,7 +21,7 @@
 class WSGIServerException(Exception):
     pass
 
-class FileWrapper:
+class FileWrapper(object):
     """Wrapper to convert file-like objects to iterables"""
 
     def __init__(self, filelike, blksize=8192):
@@ -63,7 +63,7 @@
     else:
         return param
 
-class Headers:
+class Headers(object):
     """Manage a collection of HTTP response headers"""
     def __init__(self,headers):
         if type(headers) is not ListType:
@@ -218,7 +218,7 @@
     """Return true if 'header_name' is an HTTP/1.1 "Hop-by-Hop" header"""
     return _hoppish(header_name.lower())
 
-class ServerHandler:
+class ServerHandler(object):
     """Manage the invocation of a WSGI application"""
 
     # Configuration parameters; can override per-subclass or per-instance
@@ -591,7 +591,7 @@
             return
         sys.stderr.write("[%s] %s\n" % (self.log_date_time_string(), format % args))
 
-class AdminMediaHandler:
+class AdminMediaHandler(object):
     """
     WSGI middleware that intercepts calls to the admin media directory, as
     defined by the ADMIN_MEDIA_PREFIX setting, and serves those images.
Index: django/core/context_processors.py
===================================================================
--- django/core/context_processors.py	(revision 3103)
+++ django/core/context_processors.py	(working copy)
@@ -48,7 +48,7 @@
 # PermWrapper and PermLookupDict proxy the permissions system into objects that
 # the template system can understand.
 
-class PermLookupDict:
+class PermLookupDict(object):
     def __init__(self, user, module_name):
         self.user, self.module_name = user, module_name
     def __repr__(self):
@@ -58,7 +58,7 @@
     def __nonzero__(self):
         return self.user.has_module_perms(self.module_name)
 
-class PermWrapper:
+class PermWrapper(object):
     def __init__(self, user):
         self.user = user
     def __getitem__(self, module_name):
Index: django/core/urlresolvers.py
===================================================================
--- django/core/urlresolvers.py	(revision 3103)
+++ django/core/urlresolvers.py	(working copy)
@@ -83,7 +83,7 @@
             raise NoReverseMatch("Value %r didn't match regular expression %r" % (value, test_regex))
         return str(value) # TODO: Unicode?
 
-class RegexURLPattern:
+class RegexURLPattern(object):
     def __init__(self, regex, callback, default_args=None):
         # regex is a string representing a regular expression.
         # callback is something like 'foo.views.news.stories.story_detail',
Index: django/core/validators.py
===================================================================
--- django/core/validators.py	(revision 3103)
+++ django/core/validators.py	(working copy)
@@ -237,7 +237,7 @@
             "Watch your mouth! The words %s are not allowed here.", plural) % \
             get_text_list(['"%s%s%s"' % (i[0], '-'*(len(i)-2), i[-1]) for i in words_seen], 'and')
 
-class AlwaysMatchesOtherField:
+class AlwaysMatchesOtherField(object):
     def __init__(self, other_field_name, error_message=None):
         self.other = other_field_name
         self.error_message = error_message or lazy_inter(gettext_lazy("This field must match the '%s' field."), self.other)
@@ -247,7 +247,7 @@
         if field_data != all_data[self.other]:
             raise ValidationError, self.error_message
 
-class ValidateIfOtherFieldEquals:
+class ValidateIfOtherFieldEquals(object):
     def __init__(self, other_field, other_value, validator_list):
         self.other_field, self.other_value = other_field, other_value
         self.validator_list = validator_list
@@ -258,7 +258,7 @@
             for v in self.validator_list:
                 v(field_data, all_data)
 
-class RequiredIfOtherFieldNotGiven:
+class RequiredIfOtherFieldNotGiven(object):
     def __init__(self, other_field_name, error_message=gettext_lazy("Please enter something for at least one field.")):
         self.other, self.error_message = other_field_name, error_message
         self.always_test = True
@@ -267,7 +267,7 @@
         if not all_data.get(self.other, False) and not field_data:
             raise ValidationError, self.error_message
 
-class RequiredIfOtherFieldsGiven:
+class RequiredIfOtherFieldsGiven(object):
     def __init__(self, other_field_names, error_message=gettext_lazy("Please enter both fields or leave them both empty.")):
         self.other, self.error_message = other_field_names, error_message
         self.always_test = True
@@ -282,7 +282,7 @@
     def __init__(self, other_field_name, error_message=gettext_lazy("Please enter both fields or leave them both empty.")):
         RequiredIfOtherFieldsGiven.__init__(self, [other_field_name], error_message)
 
-class RequiredIfOtherFieldEquals:
+class RequiredIfOtherFieldEquals(object):
     def __init__(self, other_field, other_value, error_message=None):
         self.other_field = other_field
         self.other_value = other_value
@@ -294,7 +294,7 @@
         if all_data.has_key(self.other_field) and all_data[self.other_field] == self.other_value and not field_data:
             raise ValidationError(self.error_message)
 
-class RequiredIfOtherFieldDoesNotEqual:
+class RequiredIfOtherFieldDoesNotEqual(object):
     def __init__(self, other_field, other_value, error_message=None):
         self.other_field = other_field
         self.other_value = other_value
@@ -306,7 +306,7 @@
         if all_data.has_key(self.other_field) and all_data[self.other_field] != self.other_value and not field_data:
             raise ValidationError(self.error_message)
 
-class IsLessThanOtherField:
+class IsLessThanOtherField(object):
     def __init__(self, other_field_name, error_message):
         self.other, self.error_message = other_field_name, error_message
 
@@ -314,7 +314,7 @@
         if field_data > all_data[self.other]:
             raise ValidationError, self.error_message
 
-class UniqueAmongstFieldsWithPrefix:
+class UniqueAmongstFieldsWithPrefix(object):
     def __init__(self, field_name, prefix, error_message):
         self.field_name, self.prefix = field_name, prefix
         self.error_message = error_message or gettext_lazy("Duplicate values are not allowed.")
@@ -324,7 +324,7 @@
             if field_name != self.field_name and value == field_data:
                 raise ValidationError, self.error_message
 
-class IsAPowerOf:
+class IsAPowerOf(object):
     """
     >>> v = IsAPowerOf(2)
     >>> v(4, None)
@@ -342,7 +342,7 @@
         if val != int(val):
             raise ValidationError, gettext("This value must be a power of %s.") % self.power_of
 
-class IsValidFloat:
+class IsValidFloat(object):
     def __init__(self, max_digits, decimal_places):
         self.max_digits, self.decimal_places = max_digits, decimal_places
 
@@ -359,7 +359,7 @@
             raise ValidationError, ngettext("Please enter a valid decimal number with at most %s decimal place.",
                 "Please enter a valid decimal number with at most %s decimal places.", self.decimal_places) % self.decimal_places
 
-class HasAllowableSize:
+class HasAllowableSize(object):
     """
     Checks that the file-upload field data is a certain size. min_size and
     max_size are measurements in bytes.
@@ -379,7 +379,7 @@
         if self.max_size is not None and len(content) > self.max_size:
             raise ValidationError, self.max_error_message
 
-class MatchesRegularExpression:
+class MatchesRegularExpression(object):
     """
     Checks that the field matches the given regular-expression. The regex
     should be in string format, not already compiled.
@@ -392,7 +392,7 @@
         if not self.regexp.search(field_data):
             raise ValidationError(self.error_message)
 
-class AnyValidator:
+class AnyValidator(object):
     """
     This validator tries all given validators. If any one of them succeeds,
     validation passes. If none of them succeeds, the given message is thrown
@@ -416,7 +416,7 @@
                 pass
         raise ValidationError(self.error_message)
 
-class URLMimeTypeCheck:
+class URLMimeTypeCheck(object):
     "Checks that the provided URL points to a document with a listed mime type"
     class CouldNotRetrieve(ValidationError):
         pass
@@ -441,7 +441,7 @@
             raise URLMimeTypeCheck.InvalidContentType, gettext("The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'.") % {
                 'url': field_data, 'contenttype': content_type}
 
-class RelaxNGCompact:
+class RelaxNGCompact(object):
     "Validate against a Relax NG compact schema"
     def __init__(self, schema_path, additional_root_element=None):
         self.schema_path = schema_path
Index: django/core/handlers/base.py
===================================================================
--- django/core/handlers/base.py	(revision 3103)
+++ django/core/handlers/base.py	(working copy)
@@ -3,7 +3,7 @@
 from django import http
 import sys
 
-class BaseHandler:
+class BaseHandler(object):
     def __init__(self):
         self._request_middleware = self._view_middleware = self._response_middleware = self._exception_middleware = None
 
Index: django/core/management.py
===================================================================
--- django/core/management.py	(revision 3103)
+++ django/core/management.py	(working copy)
@@ -28,7 +28,7 @@
 INVALID_PROJECT_NAMES = ('django', 'test')
 
 # Set up the terminal color scheme.
-class dummy: pass
+class dummy(object): pass
 style = dummy()
 style.ERROR = termcolors.make_style(fg='red', opts=('bold',))
 style.ERROR_OUTPUT = termcolors.make_style(fg='red', opts=('bold',))
@@ -39,7 +39,7 @@
 del dummy
 
 def disable_termcolors():
-    class dummy:
+    class dummy(object):
         def __getattr__(self, attr):
             return lambda x: x
     global style
@@ -791,7 +791,7 @@
 inspectdb.help_doc = "Introspects the database tables in the given database and outputs a Django model module."
 inspectdb.args = ""
 
-class ModelErrorCollection:
+class ModelErrorCollection(object):
     def __init__(self, outfile=sys.stdout):
         self.errors = []
         self.outfile = outfile
Index: django/core/cache/backends/base.py
===================================================================
--- django/core/cache/backends/base.py	(revision 3103)
+++ django/core/cache/backends/base.py	(working copy)
@@ -5,7 +5,7 @@
 class InvalidCacheBackendError(ImproperlyConfigured):
     pass
 
-class BaseCache:
+class BaseCache(object):
     def __init__(self, params):
         timeout = params.get('timeout', 300)
         try:
Index: django/core/paginator.py
===================================================================
--- django/core/paginator.py	(revision 3103)
+++ django/core/paginator.py	(working copy)
@@ -4,7 +4,7 @@
 class InvalidPage(Exception):
     pass
 
-class ObjectPaginator:
+class ObjectPaginator(object):
     """
     This class makes pagination easy. Feed it a QuerySet, plus the number of
     objects you want on each page. Then read the hits and pages properties to
Index: django/dispatch/saferef.py
===================================================================
--- django/dispatch/saferef.py	(revision 3103)
+++ django/dispatch/saferef.py	(working copy)
@@ -50,7 +50,7 @@
 		weakSelf -- weak reference to the target object
 		weakFunc -- weak reference to the target function
 
-	Class Attributes:
+	Class Attributes(object):
 		_allInstances -- class attribute pointing to all live
 			BoundMethodWeakref objects indexed by the class's
 			calculateKey(target) method applied to the target
Index: django/dispatch/dispatcher.py
===================================================================
--- django/dispatch/dispatcher.py	(revision 3103)
+++ django/dispatch/dispatcher.py	(working copy)
@@ -39,7 +39,7 @@
 	True = 1==1
 	False = 1==0
 
-class _Parameter:
+class _Parameter(object):
 	"""Used to represent default parameter values."""
 	def __repr__(self):
 		return self.__class__.__name__
Index: django/utils/feedgenerator.py
===================================================================
--- django/utils/feedgenerator.py	(revision 3103)
+++ django/utils/feedgenerator.py	(working copy)
@@ -36,7 +36,7 @@
     tag = re.sub('#', '/', tag)
     return 'tag:' + tag
 
-class SyndicationFeed:
+class SyndicationFeed(object):
     "Base class for all syndication feeds. Subclasses should provide write()"
     def __init__(self, title, link, description, language=None, author_email=None,
             author_name=None, author_link=None, subtitle=None, categories=None,
@@ -108,7 +108,7 @@
         else:
             return datetime.datetime.now()
 
-class Enclosure:
+class Enclosure(object):
     "Represents an RSS enclosure"
     def __init__(self, url, length, mime_type):
         "All args are expected to be Python Unicode objects"
Index: django/utils/datastructures.py
===================================================================
--- django/utils/datastructures.py	(revision 3103)
+++ django/utils/datastructures.py	(working copy)
@@ -1,4 +1,4 @@
-class MergeDict:
+class MergeDict(object):
     """
     A simple class for creating new "virtual" dictionaries that actualy look
     up values in more than one dictionary, passed in the constructor.
Index: django/utils/synch.py
===================================================================
--- django/utils/synch.py	(revision 3103)
+++ django/utils/synch.py	(working copy)
@@ -8,7 +8,7 @@
 
 import threading
 
-class RWLock:
+class RWLock(object):
     """
     Classic implementation of reader-writer lock with preference to writers.
     
Index: django/utils/dateformat.py
===================================================================
--- django/utils/dateformat.py	(revision 3103)
+++ django/utils/dateformat.py	(working copy)
@@ -19,7 +19,7 @@
 re_formatchars = re.compile(r'(?<!\\)([aABdDfFgGhHiIjlLmMnNOPrsStTUwWyYzZ])')
 re_escaped = re.compile(r'\\(.)')
 
-class Formatter:
+class Formatter(object):
     def format(self, formatstr):
         pieces = []
         for i, piece in enumerate(re_formatchars.split(formatstr)):
Index: django/contrib/auth/middleware.py
===================================================================
--- django/contrib/auth/middleware.py	(revision 3103)
+++ django/contrib/auth/middleware.py	(working copy)
@@ -12,7 +12,7 @@
                 self._user = AnonymousUser()
         return self._user
 
-class AuthenticationMiddleware:
+class AuthenticationMiddleware(object):
     def process_request(self, request):
         assert hasattr(request, 'session'), "The Django authentication middleware requires session middleware to be installed. Edit your MIDDLEWARE_CLASSES setting to insert 'django.contrib.sessions.middleware.SessionMiddleware'."
         request.__class__.user = LazyUser()
Index: django/contrib/redirects/middleware.py
===================================================================
--- django/contrib/redirects/middleware.py	(revision 3103)
+++ django/contrib/redirects/middleware.py	(working copy)
@@ -2,7 +2,7 @@
 from django import http
 from django.conf import settings
 
-class RedirectFallbackMiddleware:
+class RedirectFallbackMiddleware(object):
     def process_response(self, request, response):
         if response.status_code != 404:
             return response # No need to check for a redirect for non-404 responses.
Index: django/contrib/syndication/feeds.py
===================================================================
--- django/contrib/syndication/feeds.py	(revision 3103)
+++ django/contrib/syndication/feeds.py	(working copy)
@@ -12,7 +12,7 @@
 class FeedDoesNotExist(ObjectDoesNotExist):
     pass
 
-class Feed:
+class Feed(object):
     item_pubdate = None
     item_enclosure_url = None
     feed_type = feedgenerator.DefaultFeed
Index: django/contrib/comments/templatetags/comments.py
===================================================================
--- django/contrib/comments/templatetags/comments.py	(revision 3103)
+++ django/contrib/comments/templatetags/comments.py	(working copy)
@@ -127,7 +127,7 @@
         context[self.var_name] = comment_list
         return ''
 
-class DoCommentForm:
+class DoCommentForm(object):
     """
     Displays a comment form for the given params.
 
@@ -201,7 +201,7 @@
                     raise template.TemplateSyntaxError, "%r tag got invalid parameter '%s'" % (tokens[0], option)
         return CommentFormNode(content_type, obj_id_lookup_var, obj_id, self.free, **kwargs)
 
-class DoCommentCount:
+class DoCommentCount(object):
     """
     Gets comment count for the given params and populates the template context
     with a variable containing that value, whose name is defined by the 'as'
@@ -251,7 +251,7 @@
             raise template.TemplateSyntaxError, "Fourth argument in %r must be 'as'" % tokens[0]
         return CommentCountNode(package, module, var_name, obj_id, tokens[5], self.free)
 
-class DoGetCommentList:
+class DoGetCommentList(object):
     """
     Gets comments for the given params and populates the template context with a
     special comment_package variable, whose name is defined by the ``as``
Index: django/contrib/flatpages/middleware.py
===================================================================
--- django/contrib/flatpages/middleware.py	(revision 3103)
+++ django/contrib/flatpages/middleware.py	(working copy)
@@ -2,7 +2,7 @@
 from django.http import Http404
 from django.conf import settings
 
-class FlatpageFallbackMiddleware:
+class FlatpageFallbackMiddleware(object):
     def process_response(self, request, response):
         if response.status_code != 404:
             return response # No need to check for a flatpage for non-404 responses.
Index: django/contrib/sessions/middleware.py
===================================================================
--- django/contrib/sessions/middleware.py	(revision 3103)
+++ django/contrib/sessions/middleware.py	(working copy)
@@ -64,7 +64,7 @@
 
     _session = property(_get_session)
 
-class SessionMiddleware:
+class SessionMiddleware(object):
     def process_request(self, request):
         request.session = SessionWrapper(request.COOKIES.get(settings.SESSION_COOKIE_NAME, None))
 
Index: django/contrib/admin/templatetags/log.py
===================================================================
--- django/contrib/admin/templatetags/log.py	(revision 3103)
+++ django/contrib/admin/templatetags/log.py	(working copy)
@@ -16,7 +16,7 @@
         context[self.varname] = LogEntry.objects.filter(user__id__exact=self.user).select_related()[:self.limit]
         return ''
 
-class DoGetAdminLog:
+class DoGetAdminLog(object):
     """
     Populates a template variable with the admin log for the given criteria.
 
Index: django/template/__init__.py
===================================================================
--- django/template/__init__.py	(revision 3103)
+++ django/template/__init__.py	(working copy)
@@ -133,7 +133,7 @@
     def reload(self):
         return self.source
 
-class Template:
+class Template(object):
     def __init__(self, template_string, origin=None):
         "Compilation stage"
         if settings.TEMPLATE_DEBUG and origin == None:
@@ -157,7 +157,7 @@
     parser = parser_factory(lexer.tokenize())
     return parser.parse()
 
-class Token:
+class Token(object):
     def __init__(self, token_type, contents):
         "The token_type must be TOKEN_TEXT, TOKEN_VAR or TOKEN_BLOCK"
         self.token_type, self.contents = token_type, contents
@@ -381,7 +381,7 @@
         return Parser(*args, **kwargs)
 
 
-class TokenParser:
+class TokenParser(object):
     """
     Subclass this and implement the top() method to parse a template line. When
     instantiating the parser, pass in the line from the Django template parser.
@@ -659,7 +659,7 @@
             del bits[0]
     return current
 
-class Node:
+class Node(object):
     def render(self, context):
         "Return the node rendered as a string"
         pass
Index: django/template/context.py
===================================================================
--- django/template/context.py	(revision 3103)
+++ django/template/context.py	(working copy)
@@ -7,7 +7,7 @@
     "pop() has been called more times than push()"
     pass
 
-class Context:
+class Context(object):
     "A stack container for variable context"
     def __init__(self, dict_=None):
         dict_ = dict_ or {}
Index: django/middleware/common.py
===================================================================
--- django/middleware/common.py	(revision 3103)
+++ django/middleware/common.py	(working copy)
@@ -3,7 +3,7 @@
 from django.core.mail import mail_managers
 import md5, os
 
-class CommonMiddleware:
+class CommonMiddleware(object):
     """
     "Common" middleware for taking care of some basic operations:
 
Index: django/middleware/gzip.py
===================================================================
--- django/middleware/gzip.py	(revision 3103)
+++ django/middleware/gzip.py	(working copy)
@@ -4,7 +4,7 @@
 
 re_accepts_gzip = re.compile(r'\bgzip\b')
 
-class GZipMiddleware:
+class GZipMiddleware(object):
     """
     This middleware compresses content if the browser allows gzip compression.
     It sets the Vary header accordingly, so that caches will base their storage
Index: django/middleware/http.py
===================================================================
--- django/middleware/http.py	(revision 3103)
+++ django/middleware/http.py	(working copy)
@@ -1,6 +1,6 @@
 import datetime
 
-class ConditionalGetMiddleware:
+class ConditionalGetMiddleware(object):
     """
     Handles conditional GET operations. If the response has a ETag or
     Last-Modified header, and the request has If-None-Match or
Index: django/middleware/locale.py
===================================================================
--- django/middleware/locale.py	(revision 3103)
+++ django/middleware/locale.py	(working copy)
@@ -3,7 +3,7 @@
 from django.utils.cache import patch_vary_headers
 from django.utils import translation
 
-class LocaleMiddleware:
+class LocaleMiddleware(object):
     """
     This is a very simple middleware that parses a request
     and decides what translation object to install in the current
Index: django/middleware/cache.py
===================================================================
--- django/middleware/cache.py	(revision 3103)
+++ django/middleware/cache.py	(working copy)
@@ -3,7 +3,7 @@
 from django.utils.cache import get_cache_key, learn_cache_key, patch_response_headers
 from django.http import HttpResponseNotModified
 
-class CacheMiddleware:
+class CacheMiddleware(object):
     """
     Cache middleware. If this is enabled, each Django-powered page will be
     cached for CACHE_MIDDLEWARE_SECONDS seconds. Cache is based on URLs.
Index: django/middleware/doc.py
===================================================================
--- django/middleware/doc.py	(revision 3103)
+++ django/middleware/doc.py	(working copy)
@@ -1,7 +1,7 @@
 from django.conf import settings
 from django import http
 
-class XViewMiddleware:
+class XViewMiddleware(object):
     """
     Adds an X-View header to internal HEAD requests -- used by the documentation system.
     """
Index: django/middleware/transaction.py
===================================================================
--- django/middleware/transaction.py	(revision 3103)
+++ django/middleware/transaction.py	(working copy)
@@ -1,7 +1,7 @@
 from django.conf import settings
 from django.db import transaction
 
-class TransactionMiddleware:
+class TransactionMiddleware(object):
     """
     Transaction middleware. If this is enabled, each view function will be run
     with commit_on_response activated - that way a save() doesn't do a direct
Index: tests/othertests/templates.py
===================================================================
--- tests/othertests/templates.py	(revision 3103)
+++ tests/othertests/templates.py	(working copy)
@@ -37,7 +37,7 @@
 class SomeOtherException(Exception):
     pass
 
-class SomeClass:
+class SomeClass(object):
     def __init__(self):
         self.otherclass = OtherClass()
 
@@ -53,7 +53,7 @@
     def method4(self):
         raise SomeOtherException
 
-class OtherClass:
+class OtherClass(object):
     def method(self):
         return "OtherClass.method"
 
Index: tests/othertests/cache.py
===================================================================
--- tests/othertests/cache.py	(revision 3103)
+++ tests/othertests/cache.py	(working copy)
@@ -7,7 +7,7 @@
 # functions/classes for complex data type tests        
 def f():
     return 42
-class C:
+class C(object):
     def m(n):
         return 24
 
Index: tests/doctest.py
===================================================================
--- tests/doctest.py	(revision 3103)
+++ tests/doctest.py	(working copy)
@@ -390,7 +390,7 @@
 ##   a string (such as an object's docstring).  The DocTest class also
 ##   includes information about where the string was extracted from.
 
-class Example:
+class Example(object):
     """
     A single doctest example, consisting of source code and expected
     output.  `Example` defines the following attributes:
@@ -443,7 +443,7 @@
         self.options = options
         self.exc_msg = exc_msg
 
-class DocTest:
+class DocTest(object):
     """
     A collection of doctest examples that should be run in a single
     namespace.  Each `DocTest` defines the following attributes:
@@ -503,7 +503,7 @@
 ## 3. DocTestParser
 ######################################################################
 
-class DocTestParser:
+class DocTestParser(object):
     """
     A class used to parse strings containing doctest examples.
     """
@@ -738,7 +738,7 @@
 ## 4. DocTest Finder
 ######################################################################
 
-class DocTestFinder:
+class DocTestFinder(object):
     """
     A class used to extract the DocTests that are relevant to a given
     object, from its docstring and the docstrings of its contained
@@ -1036,7 +1036,7 @@
 ## 5. DocTest Runner
 ######################################################################
 
-class DocTestRunner:
+class DocTestRunner(object):
     """
     A class used to run DocTest test cases, and accumulate statistics.
     The `run` method is used to process a single DocTest case.  It
@@ -1452,7 +1452,7 @@
                 t = t + t2
             d[name] = f, t
 
-class OutputChecker:
+class OutputChecker(object):
     """
     A class used to check the whether the actual output from a doctest
     example matches the expected output.  `OutputChecker` defines two
@@ -1998,7 +1998,7 @@
 # This is provided only for backwards compatibility.  It's not
 # actually used in any way.
 
-class Tester:
+class Tester(object):
     def __init__(self, mod=None, globs=None, verbose=None,
                  isprivate=None, optionflags=0):
 
@@ -2563,7 +2563,7 @@
 ######################################################################
 ## 10. Example Usage
 ######################################################################
-class _TestClass:
+class _TestClass(object):
     """
     A pointless class, for sanity-checking of docstring testing.
 
Index: tests/runtests.py
===================================================================
--- tests/runtests.py	(revision 3103)
+++ tests/runtests.py	(working copy)
@@ -72,7 +72,7 @@
             return normalize_long_ints(want) == normalize_long_ints(got)
         return ok
 
-class TestRunner:
+class TestRunner(object):
     def __init__(self, verbosity_level=0, which_tests=None):
         self.verbosity_level = verbosity_level
         self.which_tests = which_tests
