Fixed #12164 -- Removed the Python 2.3 compatibility imports and workarounds. Thanks to timo and claudep for the patch.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@13094 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
7202eb8e31
commit
5211f48ae3
|
@ -12,10 +12,6 @@ from django.utils.html import escape
|
||||||
from django.utils.safestring import mark_safe
|
from django.utils.safestring import mark_safe
|
||||||
from django.utils.text import capfirst
|
from django.utils.text import capfirst
|
||||||
from django.utils.translation import ugettext_lazy, ugettext as _
|
from django.utils.translation import ugettext_lazy, ugettext as _
|
||||||
try:
|
|
||||||
set
|
|
||||||
except NameError:
|
|
||||||
from sets import Set as set # Python 2.3 fallback
|
|
||||||
|
|
||||||
def delete_selected(modeladmin, request, queryset):
|
def delete_selected(modeladmin, request, queryset):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -23,10 +23,6 @@ from django.utils.text import capfirst, get_text_list
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import ugettext as _
|
||||||
from django.utils.translation import ungettext, ugettext_lazy
|
from django.utils.translation import ungettext, ugettext_lazy
|
||||||
from django.utils.encoding import force_unicode
|
from django.utils.encoding import force_unicode
|
||||||
try:
|
|
||||||
set
|
|
||||||
except NameError:
|
|
||||||
from sets import Set as set # Python 2.3 fallback
|
|
||||||
|
|
||||||
HORIZONTAL, VERTICAL = 1, 2
|
HORIZONTAL, VERTICAL = 1, 2
|
||||||
# returns the <ul> class for a given radio_admin field
|
# returns the <ul> class for a given radio_admin field
|
||||||
|
|
|
@ -14,10 +14,6 @@ from django.utils.text import capfirst
|
||||||
from django.utils.translation import ugettext_lazy, ugettext as _
|
from django.utils.translation import ugettext_lazy, ugettext as _
|
||||||
from django.views.decorators.cache import never_cache
|
from django.views.decorators.cache import never_cache
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
try:
|
|
||||||
set
|
|
||||||
except NameError:
|
|
||||||
from sets import Set as set # Python 2.3 fallback
|
|
||||||
|
|
||||||
ERROR_MESSAGE = ugettext_lazy("Please enter a correct username and password. Note that both fields are case-sensitive.")
|
ERROR_MESSAGE = ugettext_lazy("Please enter a correct username and password. Note that both fields are case-sensitive.")
|
||||||
LOGIN_FORM_KEY = 'this_is_the_login_form'
|
LOGIN_FORM_KEY = 'this_is_the_login_form'
|
||||||
|
|
|
@ -2,7 +2,7 @@ import base64
|
||||||
try:
|
try:
|
||||||
from functools import wraps
|
from functools import wraps
|
||||||
except ImportError:
|
except ImportError:
|
||||||
from django.utils.functional import wraps # Python 2.3, 2.4 fallback.
|
from django.utils.functional import wraps # Python 2.4 fallback.
|
||||||
|
|
||||||
from django import http, template
|
from django import http, template
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
|
|
@ -9,11 +9,6 @@ from django.utils.translation import ugettext
|
||||||
from django.utils.http import urlencode
|
from django.utils.http import urlencode
|
||||||
import operator
|
import operator
|
||||||
|
|
||||||
try:
|
|
||||||
set
|
|
||||||
except NameError:
|
|
||||||
from sets import Set as set # Python 2.3 fallback
|
|
||||||
|
|
||||||
# The system will display a "Show all" link on the change list only if the
|
# The system will display a "Show all" link on the change list only if the
|
||||||
# total result count is less than or equal to this setting.
|
# total result count is less than or equal to this setting.
|
||||||
MAX_SHOW_ALL_ALLOWED = 200
|
MAX_SHOW_ALL_ALLOWED = 200
|
||||||
|
|
|
@ -1,8 +1,3 @@
|
||||||
try:
|
|
||||||
set
|
|
||||||
except NameError:
|
|
||||||
from sets import Set as set # Python 2.3 fallback
|
|
||||||
|
|
||||||
from django.db import connection
|
from django.db import connection
|
||||||
from django.contrib.auth.models import User, Permission
|
from django.contrib.auth.models import User, Permission
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
try:
|
try:
|
||||||
from functools import update_wrapper, wraps
|
from functools import update_wrapper, wraps
|
||||||
except ImportError:
|
except ImportError:
|
||||||
from django.utils.functional import update_wrapper, wraps # Python 2.3, 2.4 fallback.
|
from django.utils.functional import update_wrapper, wraps # Python 2.4 fallback.
|
||||||
|
|
||||||
from django.contrib.auth import REDIRECT_FIELD_NAME
|
from django.contrib.auth import REDIRECT_FIELD_NAME
|
||||||
from django.http import HttpResponseRedirect
|
from django.http import HttpResponseRedirect
|
||||||
|
|
|
@ -32,7 +32,7 @@ def security_hash(request, form, *args):
|
||||||
data.append(settings.SECRET_KEY)
|
data.append(settings.SECRET_KEY)
|
||||||
|
|
||||||
# Use HIGHEST_PROTOCOL because it's the most efficient. It requires
|
# Use HIGHEST_PROTOCOL because it's the most efficient. It requires
|
||||||
# Python 2.3, but Django requires 2.3 anyway, so that's OK.
|
# Python 2.3, but Django requires 2.4 anyway, so that's OK.
|
||||||
pickled = pickle.dumps(data, pickle.HIGHEST_PROTOCOL)
|
pickled = pickle.dumps(data, pickle.HIGHEST_PROTOCOL)
|
||||||
|
|
||||||
return md5_constructor(pickled).hexdigest()
|
return md5_constructor(pickled).hexdigest()
|
||||||
|
|
|
@ -10,11 +10,6 @@ from django.utils.encoding import smart_unicode
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
import re
|
import re
|
||||||
|
|
||||||
try:
|
|
||||||
set
|
|
||||||
except NameError:
|
|
||||||
from sets import Set as set # For Python 2.3
|
|
||||||
|
|
||||||
phone_digits_re = re.compile(r'^(\d{2})[-\.]?(\d{4})[-\.]?(\d{4})$')
|
phone_digits_re = re.compile(r'^(\d{2})[-\.]?(\d{4})[-\.]?(\d{4})$')
|
||||||
|
|
||||||
class BRZipCodeField(RegexField):
|
class BRZipCodeField(RegexField):
|
||||||
|
|
|
@ -1,11 +1,6 @@
|
||||||
from django.contrib.messages.storage.base import BaseStorage
|
from django.contrib.messages.storage.base import BaseStorage
|
||||||
from django.contrib.messages.storage.cookie import CookieStorage
|
from django.contrib.messages.storage.cookie import CookieStorage
|
||||||
from django.contrib.messages.storage.session import SessionStorage
|
from django.contrib.messages.storage.session import SessionStorage
|
||||||
try:
|
|
||||||
set
|
|
||||||
except NameError:
|
|
||||||
from sets import Set as set # Python 2.3
|
|
||||||
|
|
||||||
|
|
||||||
class FallbackStorage(BaseStorage):
|
class FallbackStorage(BaseStorage):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -77,7 +77,7 @@ class CacheClass(BaseCache):
|
||||||
|
|
||||||
def set(self, key, value, timeout=None):
|
def set(self, key, value, timeout=None):
|
||||||
self._lock.writer_enters()
|
self._lock.writer_enters()
|
||||||
# Python 2.3 and 2.4 don't allow combined try-except-finally blocks.
|
# Python 2.4 doesn't allow combined try-except-finally blocks.
|
||||||
try:
|
try:
|
||||||
try:
|
try:
|
||||||
self._set(key, pickle.dumps(value), timeout)
|
self._set(key, pickle.dumps(value), timeout)
|
||||||
|
|
|
@ -13,11 +13,6 @@ from django.core.exceptions import ImproperlyConfigured
|
||||||
from django.core.management.color import color_style
|
from django.core.management.color import color_style
|
||||||
from django.utils.encoding import smart_str
|
from django.utils.encoding import smart_str
|
||||||
|
|
||||||
try:
|
|
||||||
set
|
|
||||||
except NameError:
|
|
||||||
from sets import Set as set # For Python 2.3
|
|
||||||
|
|
||||||
class CommandError(Exception):
|
class CommandError(Exception):
|
||||||
"""
|
"""
|
||||||
Exception class indicating a problem while executing a management
|
Exception class indicating a problem while executing a management
|
||||||
|
|
|
@ -9,11 +9,6 @@ from django.db import models
|
||||||
from django.db.models import get_models
|
from django.db.models import get_models
|
||||||
from django.db.backends.util import truncate_name
|
from django.db.backends.util import truncate_name
|
||||||
|
|
||||||
try:
|
|
||||||
set
|
|
||||||
except NameError:
|
|
||||||
from sets import Set as set # Python 2.3 fallback
|
|
||||||
|
|
||||||
def sql_create(app, style, connection):
|
def sql_create(app, style, connection):
|
||||||
"Returns a list of the CREATE TABLE SQL statements for the given app."
|
"Returns a list of the CREATE TABLE SQL statements for the given app."
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@ Serialize data to/from JSON
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
|
import decimal
|
||||||
from StringIO import StringIO
|
from StringIO import StringIO
|
||||||
|
|
||||||
from django.core.serializers.python import Serializer as PythonSerializer
|
from django.core.serializers.python import Serializer as PythonSerializer
|
||||||
|
@ -10,11 +11,6 @@ from django.core.serializers.python import Deserializer as PythonDeserializer
|
||||||
from django.utils import datetime_safe
|
from django.utils import datetime_safe
|
||||||
from django.utils import simplejson
|
from django.utils import simplejson
|
||||||
|
|
||||||
try:
|
|
||||||
import decimal
|
|
||||||
except ImportError:
|
|
||||||
from django.utils import _decimal as decimal # Python 2.3 fallback
|
|
||||||
|
|
||||||
class Serializer(PythonSerializer):
|
class Serializer(PythonSerializer):
|
||||||
"""
|
"""
|
||||||
Convert a queryset to JSON.
|
Convert a queryset to JSON.
|
||||||
|
|
|
@ -19,12 +19,6 @@ from django.utils.importlib import import_module
|
||||||
from django.utils.regex_helper import normalize
|
from django.utils.regex_helper import normalize
|
||||||
from django.utils.thread_support import currentThread
|
from django.utils.thread_support import currentThread
|
||||||
|
|
||||||
try:
|
|
||||||
reversed
|
|
||||||
except NameError:
|
|
||||||
from django.utils.itercompat import reversed # Python 2.3 fallback
|
|
||||||
from sets import Set as set
|
|
||||||
|
|
||||||
_resolver_cache = {} # Maps URLconf modules to RegexURLResolver instances.
|
_resolver_cache = {} # Maps URLconf modules to RegexURLResolver instances.
|
||||||
_callable_cache = {} # Maps view and url pattern names to their view functions.
|
_callable_cache = {} # Maps view and url pattern names to their view functions.
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,5 @@
|
||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
try:
|
|
||||||
set
|
|
||||||
except NameError:
|
|
||||||
# Python 2.3 compat
|
|
||||||
from sets import Set as set
|
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.core.management import call_command
|
from django.core.management import call_command
|
||||||
|
|
|
@ -9,10 +9,7 @@ import datetime
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
try:
|
from decimal import Decimal
|
||||||
from decimal import Decimal
|
|
||||||
except ImportError:
|
|
||||||
from django.utils._decimal import Decimal
|
|
||||||
|
|
||||||
# Oracle takes client-side character set encoding from the environment.
|
# Oracle takes client-side character set encoding from the environment.
|
||||||
os.environ['NLS_LANG'] = '.UTF8'
|
os.environ['NLS_LANG'] = '.UTF8'
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
"""
|
"""
|
||||||
SQLite3 backend for django.
|
SQLite3 backend for django.
|
||||||
|
|
||||||
Python 2.3 and 2.4 require pysqlite2 (http://pysqlite.org/).
|
Python 2.4 requires pysqlite2 (http://pysqlite.org/).
|
||||||
|
|
||||||
Python 2.5 and later can use a pysqlite2 module or the sqlite3 module in the
|
Python 2.5 and later can use a pysqlite2 module or the sqlite3 module in the
|
||||||
standard library.
|
standard library.
|
||||||
|
|
|
@ -1,13 +1,9 @@
|
||||||
import datetime
|
import datetime
|
||||||
|
import decimal
|
||||||
from time import time
|
from time import time
|
||||||
|
|
||||||
from django.utils.hashcompat import md5_constructor
|
from django.utils.hashcompat import md5_constructor
|
||||||
|
|
||||||
try:
|
|
||||||
import decimal
|
|
||||||
except ImportError:
|
|
||||||
from django.utils import _decimal as decimal # for Python 2.3
|
|
||||||
|
|
||||||
class CursorDebugWrapper(object):
|
class CursorDebugWrapper(object):
|
||||||
def __init__(self, cursor, db):
|
def __init__(self, cursor, db):
|
||||||
self.cursor = cursor
|
self.cursor = cursor
|
||||||
|
|
|
@ -3,6 +3,7 @@ import decimal
|
||||||
import re
|
import re
|
||||||
import time
|
import time
|
||||||
import math
|
import math
|
||||||
|
from itertools import tee
|
||||||
|
|
||||||
import django.utils.copycompat as copy
|
import django.utils.copycompat as copy
|
||||||
|
|
||||||
|
@ -14,7 +15,6 @@ from django import forms
|
||||||
from django.core import exceptions, validators
|
from django.core import exceptions, validators
|
||||||
from django.utils.datastructures import DictWrapper
|
from django.utils.datastructures import DictWrapper
|
||||||
from django.utils.functional import curry
|
from django.utils.functional import curry
|
||||||
from django.utils.itercompat import tee
|
|
||||||
from django.utils.text import capfirst
|
from django.utils.text import capfirst
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
from django.utils.encoding import smart_unicode, force_unicode, smart_str
|
from django.utils.encoding import smart_unicode, force_unicode, smart_str
|
||||||
|
|
|
@ -1,9 +1,5 @@
|
||||||
import re
|
import re
|
||||||
from bisect import bisect
|
from bisect import bisect
|
||||||
try:
|
|
||||||
set
|
|
||||||
except NameError:
|
|
||||||
from sets import Set as set # Python 2.3 fallback
|
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.db.models.related import RelatedObject
|
from django.db.models.related import RelatedObject
|
||||||
|
|
|
@ -19,7 +19,7 @@ except ImportError:
|
||||||
try:
|
try:
|
||||||
from functools import wraps
|
from functools import wraps
|
||||||
except ImportError:
|
except ImportError:
|
||||||
from django.utils.functional import wraps # Python 2.3, 2.4 fallback.
|
from django.utils.functional import wraps # Python 2.4 fallback.
|
||||||
from django.db import connections, DEFAULT_DB_ALIAS
|
from django.db import connections, DEFAULT_DB_ALIAS
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,4 @@
|
||||||
import weakref
|
import weakref
|
||||||
try:
|
|
||||||
set
|
|
||||||
except NameError:
|
|
||||||
from sets import Set as set # Python 2.3 fallback
|
|
||||||
|
|
||||||
from django.dispatch import saferef
|
from django.dispatch import saferef
|
||||||
|
|
||||||
|
|
|
@ -18,11 +18,6 @@ from widgets import SelectMultiple, HiddenInput, MultipleHiddenInput
|
||||||
from widgets import media_property
|
from widgets import media_property
|
||||||
from formsets import BaseFormSet, formset_factory, DELETION_FIELD_NAME
|
from formsets import BaseFormSet, formset_factory, DELETION_FIELD_NAME
|
||||||
|
|
||||||
try:
|
|
||||||
set
|
|
||||||
except NameError:
|
|
||||||
from sets import Set as set # Python 2.3 fallback
|
|
||||||
|
|
||||||
__all__ = (
|
__all__ = (
|
||||||
'ModelForm', 'BaseModelForm', 'model_to_dict', 'fields_for_model',
|
'ModelForm', 'BaseModelForm', 'model_to_dict', 'fields_for_model',
|
||||||
'save_instance', 'form_for_fields', 'ModelChoiceField',
|
'save_instance', 'form_for_fields', 'ModelChoiceField',
|
||||||
|
|
|
@ -1,17 +1,12 @@
|
||||||
"""Default variable filters."""
|
"""Default variable filters."""
|
||||||
|
|
||||||
import re
|
import re
|
||||||
|
from decimal import Decimal, InvalidOperation, ROUND_HALF_UP
|
||||||
try:
|
|
||||||
from decimal import Decimal, InvalidOperation, ROUND_HALF_UP
|
|
||||||
except ImportError:
|
|
||||||
from django.utils._decimal import Decimal, InvalidOperation, ROUND_HALF_UP
|
|
||||||
|
|
||||||
import random as random_module
|
import random as random_module
|
||||||
try:
|
try:
|
||||||
from functools import wraps
|
from functools import wraps
|
||||||
except ImportError:
|
except ImportError:
|
||||||
from django.utils.functional import wraps # Python 2.3, 2.4 fallback.
|
from django.utils.functional import wraps # Python 2.4 fallback.
|
||||||
|
|
||||||
from django.template import Variable, Library
|
from django.template import Variable, Library
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
import re
|
import re
|
||||||
from itertools import cycle as itertools_cycle
|
from itertools import groupby, cycle as itertools_cycle
|
||||||
|
|
||||||
from django.template import Node, NodeList, Template, Context, Variable
|
from django.template import Node, NodeList, Template, Context, Variable
|
||||||
from django.template import TemplateSyntaxError, VariableDoesNotExist, BLOCK_TAG_START, BLOCK_TAG_END, VARIABLE_TAG_START, VARIABLE_TAG_END, SINGLE_BRACE_START, SINGLE_BRACE_END, COMMENT_TAG_START, COMMENT_TAG_END
|
from django.template import TemplateSyntaxError, VariableDoesNotExist, BLOCK_TAG_START, BLOCK_TAG_END, VARIABLE_TAG_START, VARIABLE_TAG_END, SINGLE_BRACE_START, SINGLE_BRACE_END, COMMENT_TAG_START, COMMENT_TAG_END
|
||||||
|
@ -10,7 +10,6 @@ from django.template import get_library, Library, InvalidTemplateLibrary
|
||||||
from django.template.smartif import IfParser, Literal
|
from django.template.smartif import IfParser, Literal
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.utils.encoding import smart_str, smart_unicode
|
from django.utils.encoding import smart_str, smart_unicode
|
||||||
from django.utils.itercompat import groupby
|
|
||||||
from django.utils.safestring import mark_safe
|
from django.utils.safestring import mark_safe
|
||||||
|
|
||||||
register = Library()
|
register = Library()
|
||||||
|
|
|
@ -185,14 +185,6 @@ def build_test(label):
|
||||||
# Construct a suite out of the tests that matched.
|
# Construct a suite out of the tests that matched.
|
||||||
return unittest.TestSuite(tests)
|
return unittest.TestSuite(tests)
|
||||||
|
|
||||||
# Python 2.3 compatibility: TestSuites were made iterable in 2.4.
|
|
||||||
# We need to iterate over them, so we add the missing method when
|
|
||||||
# necessary.
|
|
||||||
try:
|
|
||||||
getattr(unittest.TestSuite, '__iter__')
|
|
||||||
except AttributeError:
|
|
||||||
setattr(unittest.TestSuite, '__iter__', lambda s: iter(s._tests))
|
|
||||||
|
|
||||||
def partition_suite(suite, classes, bins):
|
def partition_suite(suite, classes, bins):
|
||||||
"""
|
"""
|
||||||
Partitions a test suite by test type.
|
Partitions a test suite by test type.
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -4,7 +4,7 @@ import types
|
||||||
try:
|
try:
|
||||||
from functools import wraps, update_wrapper, WRAPPER_ASSIGNMENTS
|
from functools import wraps, update_wrapper, WRAPPER_ASSIGNMENTS
|
||||||
except ImportError:
|
except ImportError:
|
||||||
from django.utils.functional import wraps, update_wrapper, WRAPPER_ASSIGNMENTS # Python 2.3, 2.4 fallback.
|
from django.utils.functional import wraps, update_wrapper, WRAPPER_ASSIGNMENTS # Python 2.4 fallback.
|
||||||
|
|
||||||
|
|
||||||
def method_decorator(decorator):
|
def method_decorator(decorator):
|
||||||
|
|
|
@ -3,15 +3,10 @@ import urllib
|
||||||
import locale
|
import locale
|
||||||
import datetime
|
import datetime
|
||||||
import codecs
|
import codecs
|
||||||
|
from decimal import Decimal
|
||||||
|
|
||||||
from django.utils.functional import Promise
|
from django.utils.functional import Promise
|
||||||
|
|
||||||
try:
|
|
||||||
from decimal import Decimal
|
|
||||||
except ImportError:
|
|
||||||
from django.utils._decimal import Decimal # Python 2.3 fallback
|
|
||||||
|
|
||||||
|
|
||||||
class DjangoUnicodeDecodeError(UnicodeDecodeError):
|
class DjangoUnicodeDecodeError(UnicodeDecodeError):
|
||||||
def __init__(self, obj, *args):
|
def __init__(self, obj, *args):
|
||||||
self.obj = obj
|
self.obj = obj
|
||||||
|
|
|
@ -60,9 +60,6 @@ def curry(_curried_func, *args, **kwargs):
|
||||||
# Summary of changes made to the Python 2.5 code below:
|
# Summary of changes made to the Python 2.5 code below:
|
||||||
# * swapped ``partial`` for ``curry`` to maintain backwards-compatibility
|
# * swapped ``partial`` for ``curry`` to maintain backwards-compatibility
|
||||||
# in Django.
|
# in Django.
|
||||||
# * Wrapped the ``setattr`` call in ``update_wrapper`` with a try-except
|
|
||||||
# block to make it compatible with Python 2.3, which doesn't allow
|
|
||||||
# assigning to ``__name__``.
|
|
||||||
|
|
||||||
# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007 Python Software Foundation.
|
# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007 Python Software Foundation.
|
||||||
# All Rights Reserved.
|
# All Rights Reserved.
|
||||||
|
@ -90,10 +87,7 @@ def update_wrapper(wrapper,
|
||||||
function (defaults to functools.WRAPPER_UPDATES)
|
function (defaults to functools.WRAPPER_UPDATES)
|
||||||
"""
|
"""
|
||||||
for attr in assigned:
|
for attr in assigned:
|
||||||
try:
|
|
||||||
setattr(wrapper, attr, getattr(wrapped, attr))
|
setattr(wrapper, attr, getattr(wrapped, attr))
|
||||||
except TypeError: # Python 2.3 doesn't allow assigning to __name__.
|
|
||||||
pass
|
|
||||||
for attr in updated:
|
for attr in updated:
|
||||||
getattr(wrapper, attr).update(getattr(wrapped, attr))
|
getattr(wrapper, attr).update(getattr(wrapped, attr))
|
||||||
# Return the wrapper so this can be used as a decorator via curry()
|
# Return the wrapper so this can be used as a decorator via curry()
|
||||||
|
|
|
@ -6,45 +6,7 @@ these implementations if necessary.
|
||||||
|
|
||||||
import itertools
|
import itertools
|
||||||
|
|
||||||
def compat_tee(iterable):
|
# Fallback for Python 2.4, Python 2.5
|
||||||
"""
|
|
||||||
Return two independent iterators from a single iterable.
|
|
||||||
|
|
||||||
Based on http://www.python.org/doc/2.3.5/lib/itertools-example.html
|
|
||||||
"""
|
|
||||||
# Note: Using a dictionary and a list as the default arguments here is
|
|
||||||
# deliberate and safe in this instance.
|
|
||||||
def gen(next, data={}, cnt=[0]):
|
|
||||||
dpop = data.pop
|
|
||||||
for i in itertools.count():
|
|
||||||
if i == cnt[0]:
|
|
||||||
item = data[i] = next()
|
|
||||||
cnt[0] += 1
|
|
||||||
else:
|
|
||||||
item = dpop(i)
|
|
||||||
yield item
|
|
||||||
next = iter(iterable).next
|
|
||||||
return gen(next), gen(next)
|
|
||||||
|
|
||||||
def groupby(iterable, keyfunc=None):
|
|
||||||
"""
|
|
||||||
Taken from http://docs.python.org/lib/itertools-functions.html
|
|
||||||
"""
|
|
||||||
if keyfunc is None:
|
|
||||||
keyfunc = lambda x:x
|
|
||||||
iterable = iter(iterable)
|
|
||||||
l = [iterable.next()]
|
|
||||||
lastkey = keyfunc(l[0])
|
|
||||||
for item in iterable:
|
|
||||||
key = keyfunc(item)
|
|
||||||
if key != lastkey:
|
|
||||||
yield lastkey, l
|
|
||||||
lastkey = key
|
|
||||||
l = [item]
|
|
||||||
else:
|
|
||||||
l.append(item)
|
|
||||||
yield lastkey, l
|
|
||||||
|
|
||||||
def product(*args, **kwds):
|
def product(*args, **kwds):
|
||||||
"""
|
"""
|
||||||
Taken from http://docs.python.org/library/itertools.html#itertools.product
|
Taken from http://docs.python.org/library/itertools.html#itertools.product
|
||||||
|
@ -58,18 +20,6 @@ def product(*args, **kwds):
|
||||||
for prod in result:
|
for prod in result:
|
||||||
yield tuple(prod)
|
yield tuple(prod)
|
||||||
|
|
||||||
# Not really in itertools, since it's a builtin in Python 2.4 and later, but it
|
|
||||||
# does operate as an iterator.
|
|
||||||
def reversed(data):
|
|
||||||
for index in xrange(len(data)-1, -1, -1):
|
|
||||||
yield data[index]
|
|
||||||
|
|
||||||
if hasattr(itertools, 'tee'):
|
|
||||||
tee = itertools.tee
|
|
||||||
else:
|
|
||||||
tee = compat_tee
|
|
||||||
if hasattr(itertools, 'groupby'):
|
|
||||||
groupby = itertools.groupby
|
|
||||||
if hasattr(itertools, 'product'):
|
if hasattr(itertools, 'product'):
|
||||||
product = itertools.product
|
product = itertools.product
|
||||||
|
|
||||||
|
@ -82,12 +32,6 @@ def is_iterable(x):
|
||||||
else:
|
else:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def sorted(in_value):
|
|
||||||
"A naive implementation of sorted"
|
|
||||||
out_value = in_value[:]
|
|
||||||
out_value.sort()
|
|
||||||
return out_value
|
|
||||||
|
|
||||||
def all(iterable):
|
def all(iterable):
|
||||||
for item in iterable:
|
for item in iterable:
|
||||||
if not item:
|
if not item:
|
||||||
|
|
|
@ -14,7 +14,7 @@ account on caching -- just like the middleware does.
|
||||||
try:
|
try:
|
||||||
from functools import wraps
|
from functools import wraps
|
||||||
except ImportError:
|
except ImportError:
|
||||||
from django.utils.functional import wraps # Python 2.3, 2.4 fallback.
|
from django.utils.functional import wraps # Python 2.4 fallback.
|
||||||
|
|
||||||
from django.utils.decorators import decorator_from_middleware_with_args, available_attrs
|
from django.utils.decorators import decorator_from_middleware_with_args, available_attrs
|
||||||
from django.utils.cache import patch_cache_control, add_never_cache_headers
|
from django.utils.cache import patch_cache_control, add_never_cache_headers
|
||||||
|
|
|
@ -4,7 +4,7 @@ from django.utils.decorators import decorator_from_middleware, available_attrs
|
||||||
try:
|
try:
|
||||||
from functools import wraps
|
from functools import wraps
|
||||||
except ImportError:
|
except ImportError:
|
||||||
from django.utils.functional import wraps # Python 2.3, 2.4 fallback.
|
from django.utils.functional import wraps # Python 2.4 fallback.
|
||||||
|
|
||||||
csrf_protect = decorator_from_middleware(CsrfViewMiddleware)
|
csrf_protect = decorator_from_middleware(CsrfViewMiddleware)
|
||||||
csrf_protect.__name__ = "csrf_protect"
|
csrf_protect.__name__ = "csrf_protect"
|
||||||
|
|
|
@ -5,7 +5,7 @@ Decorators for views based on HTTP headers.
|
||||||
try:
|
try:
|
||||||
from functools import wraps
|
from functools import wraps
|
||||||
except ImportError:
|
except ImportError:
|
||||||
from django.utils.functional import wraps # Python 2.3, 2.4 fallback.
|
from django.utils.functional import wraps # Python 2.4 fallback.
|
||||||
|
|
||||||
from calendar import timegm
|
from calendar import timegm
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
try:
|
try:
|
||||||
from functools import wraps
|
from functools import wraps
|
||||||
except ImportError:
|
except ImportError:
|
||||||
from django.utils.functional import wraps # Python 2.3, 2.4 fallback.
|
from django.utils.functional import wraps # Python 2.4 fallback.
|
||||||
|
|
||||||
from django.utils.cache import patch_vary_headers
|
from django.utils.cache import patch_vary_headers
|
||||||
from django.utils.decorators import available_attrs
|
from django.utils.decorators import available_attrs
|
||||||
|
|
|
@ -1,11 +1,6 @@
|
||||||
# coding: utf-8
|
# coding: utf-8
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
|
||||||
try:
|
|
||||||
sorted
|
|
||||||
except NameError:
|
|
||||||
from django.utils.itercompat import sorted # For Python 2.3
|
|
||||||
|
|
||||||
class Author(models.Model):
|
class Author(models.Model):
|
||||||
name = models.CharField(max_length=100)
|
name = models.CharField(max_length=100)
|
||||||
age = models.IntegerField()
|
age = models.IntegerField()
|
||||||
|
@ -48,10 +43,7 @@ class Store(models.Model):
|
||||||
# Different backends and numbers.
|
# Different backends and numbers.
|
||||||
__test__ = {'API_TESTS': """
|
__test__ = {'API_TESTS': """
|
||||||
>>> from django.core import management
|
>>> from django.core import management
|
||||||
>>> try:
|
>>> from decimal import Decimal
|
||||||
... from decimal import Decimal
|
|
||||||
... except:
|
|
||||||
... from django.utils._decimal import Decimal
|
|
||||||
>>> from datetime import date
|
>>> from datetime import date
|
||||||
|
|
||||||
# Reset the database representation of this app.
|
# Reset the database representation of this app.
|
||||||
|
|
|
@ -4,18 +4,6 @@
|
||||||
|
|
||||||
This is a basic model with only two non-primary-key fields.
|
This is a basic model with only two non-primary-key fields.
|
||||||
"""
|
"""
|
||||||
# Python 2.3 doesn't have set as a builtin
|
|
||||||
try:
|
|
||||||
set
|
|
||||||
except NameError:
|
|
||||||
from sets import Set as set
|
|
||||||
|
|
||||||
# Python 2.3 doesn't have sorted()
|
|
||||||
try:
|
|
||||||
sorted
|
|
||||||
except NameError:
|
|
||||||
from django.utils.itercompat import sorted
|
|
||||||
|
|
||||||
from django.db import models, DEFAULT_DB_ALIAS
|
from django.db import models, DEFAULT_DB_ALIAS
|
||||||
|
|
||||||
class Article(models.Model):
|
class Article(models.Model):
|
||||||
|
|
|
@ -2,11 +2,6 @@ import datetime
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
|
||||||
try:
|
|
||||||
sorted
|
|
||||||
except NameError:
|
|
||||||
from django.utils.itercompat import sorted
|
|
||||||
|
|
||||||
class Author(models.Model):
|
class Author(models.Model):
|
||||||
name = models.CharField(max_length=100)
|
name = models.CharField(max_length=100)
|
||||||
|
|
||||||
|
|
|
@ -8,11 +8,6 @@ Alternatively, use positional arguments, and pass one or more expressions of
|
||||||
clauses using the variable ``django.db.models.Q`` (or any object with an
|
clauses using the variable ``django.db.models.Q`` (or any object with an
|
||||||
``add_to_query`` method).
|
``add_to_query`` method).
|
||||||
"""
|
"""
|
||||||
# Python 2.3 doesn't have sorted()
|
|
||||||
try:
|
|
||||||
sorted
|
|
||||||
except NameError:
|
|
||||||
from django.utils.itercompat import sorted
|
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
|
||||||
|
|
|
@ -6,11 +6,7 @@
|
||||||
``QuerySet`` objects to and from "flat" data (i.e. strings).
|
``QuerySet`` objects to and from "flat" data (i.e. strings).
|
||||||
"""
|
"""
|
||||||
|
|
||||||
try:
|
from decimal import Decimal
|
||||||
from decimal import Decimal
|
|
||||||
except ImportError:
|
|
||||||
from django.utils._decimal import Decimal # Python 2.3 fallback
|
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
|
||||||
class Category(models.Model):
|
class Category(models.Model):
|
||||||
|
|
|
@ -1,9 +1,4 @@
|
||||||
from django.core.management.base import AppCommand
|
from django.core.management.base import AppCommand
|
||||||
# Python 2.3 doesn't have sorted()
|
|
||||||
try:
|
|
||||||
sorted
|
|
||||||
except NameError:
|
|
||||||
from django.utils.itercompat import sorted
|
|
||||||
|
|
||||||
class Command(AppCommand):
|
class Command(AppCommand):
|
||||||
help = 'Test Application-based commands'
|
help = 'Test Application-based commands'
|
||||||
|
|
|
@ -1,10 +1,5 @@
|
||||||
from django.core.management.base import BaseCommand
|
from django.core.management.base import BaseCommand
|
||||||
from optparse import make_option
|
from optparse import make_option
|
||||||
# Python 2.3 doesn't have sorted()
|
|
||||||
try:
|
|
||||||
sorted
|
|
||||||
except NameError:
|
|
||||||
from django.utils.itercompat import sorted
|
|
||||||
|
|
||||||
class Command(BaseCommand):
|
class Command(BaseCommand):
|
||||||
option_list = BaseCommand.option_list + (
|
option_list = BaseCommand.option_list + (
|
||||||
|
|
|
@ -1,9 +1,4 @@
|
||||||
from django.core.management.base import LabelCommand
|
from django.core.management.base import LabelCommand
|
||||||
# Python 2.3 doesn't have sorted()
|
|
||||||
try:
|
|
||||||
sorted
|
|
||||||
except NameError:
|
|
||||||
from django.utils.itercompat import sorted
|
|
||||||
|
|
||||||
class Command(LabelCommand):
|
class Command(LabelCommand):
|
||||||
help = "Test Label-based commands"
|
help = "Test Label-based commands"
|
||||||
|
|
|
@ -1,9 +1,4 @@
|
||||||
from django.core.management.base import NoArgsCommand
|
from django.core.management.base import NoArgsCommand
|
||||||
# Python 2.3 doesn't have sorted()
|
|
||||||
try:
|
|
||||||
sorted
|
|
||||||
except NameError:
|
|
||||||
from django.utils.itercompat import sorted
|
|
||||||
|
|
||||||
class Command(NoArgsCommand):
|
class Command(NoArgsCommand):
|
||||||
help = "Test No-args commands"
|
help = "Test No-args commands"
|
||||||
|
|
|
@ -4,11 +4,6 @@ import pickle
|
||||||
from django.db import connection, models, DEFAULT_DB_ALIAS
|
from django.db import connection, models, DEFAULT_DB_ALIAS
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
|
||||||
try:
|
|
||||||
sorted
|
|
||||||
except NameError:
|
|
||||||
from django.utils.itercompat import sorted # For Python 2.3
|
|
||||||
|
|
||||||
class Author(models.Model):
|
class Author(models.Model):
|
||||||
name = models.CharField(max_length=100)
|
name = models.CharField(max_length=100)
|
||||||
age = models.IntegerField()
|
age = models.IntegerField()
|
||||||
|
|
|
@ -3,7 +3,7 @@ from sys import version_info
|
||||||
try:
|
try:
|
||||||
from functools import wraps
|
from functools import wraps
|
||||||
except ImportError:
|
except ImportError:
|
||||||
from django.utils.functional import wraps # Python 2.3, 2.4 fallback.
|
from django.utils.functional import wraps # Python 2.4 fallback.
|
||||||
|
|
||||||
from django.http import HttpResponse, HttpRequest
|
from django.http import HttpResponse, HttpRequest
|
||||||
from django.utils.functional import allow_lazy, lazy, memoize
|
from django.utils.functional import allow_lazy, lazy, memoize
|
||||||
|
|
|
@ -580,12 +580,6 @@ u'123'
|
||||||
from django.template.defaultfilters import *
|
from django.template.defaultfilters import *
|
||||||
import datetime
|
import datetime
|
||||||
|
|
||||||
# Python 2.3 doesn't have sorted()
|
|
||||||
try:
|
|
||||||
sorted
|
|
||||||
except NameError:
|
|
||||||
from django.utils.itercompat import sorted
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
import doctest
|
import doctest
|
||||||
doctest.testmod()
|
doctest.testmod()
|
||||||
|
|
|
@ -5,10 +5,7 @@ tests = r"""
|
||||||
>>> import datetime
|
>>> import datetime
|
||||||
>>> import time
|
>>> import time
|
||||||
>>> import re
|
>>> import re
|
||||||
>>> try:
|
>>> from decimal import Decimal
|
||||||
... from decimal import Decimal
|
|
||||||
... except ImportError:
|
|
||||||
... from django.utils._decimal import Decimal
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# Extra stuff #
|
# Extra stuff #
|
||||||
|
|
|
@ -28,6 +28,7 @@ import datetime
|
||||||
import time
|
import time
|
||||||
import re
|
import re
|
||||||
import os
|
import os
|
||||||
|
from decimal import Decimal
|
||||||
|
|
||||||
from unittest import TestCase
|
from unittest import TestCase
|
||||||
|
|
||||||
|
@ -35,11 +36,6 @@ from django.core.files.uploadedfile import SimpleUploadedFile
|
||||||
from django.forms import *
|
from django.forms import *
|
||||||
from django.forms.widgets import RadioFieldRenderer
|
from django.forms.widgets import RadioFieldRenderer
|
||||||
|
|
||||||
try:
|
|
||||||
from decimal import Decimal
|
|
||||||
except ImportError:
|
|
||||||
from django.utils._decimal import Decimal
|
|
||||||
|
|
||||||
|
|
||||||
def fix_os_paths(x):
|
def fix_os_paths(x):
|
||||||
if isinstance(x, basestring):
|
if isinstance(x, basestring):
|
||||||
|
|
|
@ -5,10 +5,7 @@ tests = r"""
|
||||||
>>> import datetime
|
>>> import datetime
|
||||||
>>> import time
|
>>> import time
|
||||||
>>> import re
|
>>> import re
|
||||||
>>> try:
|
>>> from decimal import Decimal
|
||||||
... from decimal import Decimal
|
|
||||||
... except ImportError:
|
|
||||||
... from django.utils._decimal import Decimal
|
|
||||||
|
|
||||||
#########
|
#########
|
||||||
# Forms #
|
# Forms #
|
||||||
|
|
|
@ -7,10 +7,7 @@ tests = r"""
|
||||||
>>> import datetime
|
>>> import datetime
|
||||||
>>> import time
|
>>> import time
|
||||||
>>> import re
|
>>> import re
|
||||||
>>> try:
|
>>> from decimal import Decimal
|
||||||
... from decimal import Decimal
|
|
||||||
... except ImportError:
|
|
||||||
... from django.utils._decimal import Decimal
|
|
||||||
>>> from django.utils.translation import activate, deactivate
|
>>> from django.utils.translation import activate, deactivate
|
||||||
>>> from django.conf import settings
|
>>> from django.conf import settings
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,6 @@
|
||||||
import os
|
import os
|
||||||
import tempfile
|
import tempfile
|
||||||
|
|
||||||
try:
|
|
||||||
import decimal
|
|
||||||
except ImportError:
|
|
||||||
from django.utils import _decimal as decimal # Python 2.3 fallback
|
|
||||||
|
|
||||||
# Try to import PIL in either of the two ways it can end up installed.
|
# Try to import PIL in either of the two ways it can end up installed.
|
||||||
# Checking for the existence of Image is enough for CPython, but for PyPy,
|
# Checking for the existence of Image is enough for CPython, but for PyPy,
|
||||||
# you need to check for the underlying modules.
|
# you need to check for the underlying modules.
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import datetime
|
import datetime
|
||||||
import unittest
|
import unittest
|
||||||
|
from decimal import Decimal
|
||||||
|
|
||||||
import django.test
|
import django.test
|
||||||
from django import forms
|
from django import forms
|
||||||
|
@ -8,12 +9,6 @@ from django.core.exceptions import ValidationError
|
||||||
|
|
||||||
from models import Foo, Bar, Whiz, BigD, BigS, Image, BigInt, Post, NullBooleanModel, BooleanModel
|
from models import Foo, Bar, Whiz, BigD, BigS, Image, BigInt, Post, NullBooleanModel, BooleanModel
|
||||||
|
|
||||||
try:
|
|
||||||
from decimal import Decimal
|
|
||||||
except ImportError:
|
|
||||||
from django.utils._decimal import Decimal
|
|
||||||
|
|
||||||
|
|
||||||
# If PIL available, do these tests.
|
# If PIL available, do these tests.
|
||||||
if Image:
|
if Image:
|
||||||
from imagefield import \
|
from imagefield import \
|
||||||
|
|
|
@ -6,12 +6,6 @@ import datetime
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
|
||||||
# Python 2.3 doesn't have sorted()
|
|
||||||
try:
|
|
||||||
sorted
|
|
||||||
except NameError:
|
|
||||||
from django.utils.itercompat import sorted
|
|
||||||
|
|
||||||
class Place(models.Model):
|
class Place(models.Model):
|
||||||
name = models.CharField(max_length=50)
|
name = models.CharField(max_length=50)
|
||||||
address = models.CharField(max_length=80)
|
address = models.CharField(max_length=80)
|
||||||
|
|
|
@ -12,12 +12,6 @@ from django.db import models, DEFAULT_DB_ALIAS
|
||||||
from django.db.models import Count
|
from django.db.models import Count
|
||||||
from django.db.models.query import Q, ITER_CHUNK_SIZE, EmptyQuerySet
|
from django.db.models.query import Q, ITER_CHUNK_SIZE, EmptyQuerySet
|
||||||
|
|
||||||
# Python 2.3 doesn't have sorted()
|
|
||||||
try:
|
|
||||||
sorted
|
|
||||||
except NameError:
|
|
||||||
from django.utils.itercompat import sorted
|
|
||||||
|
|
||||||
class DumbCategory(models.Model):
|
class DumbCategory(models.Model):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@ -1279,12 +1273,12 @@ True
|
||||||
|
|
||||||
"""}
|
"""}
|
||||||
|
|
||||||
# In Python 2.3 and the Python 2.6 beta releases, exceptions raised in __len__
|
# In Python 2.6 beta releases, exceptions raised in __len__
|
||||||
# are swallowed (Python issue 1242657), so these cases return an empty list,
|
# are swallowed (Python issue 1242657), so these cases return an empty list,
|
||||||
# rather than raising an exception. Not a lot we can do about that,
|
# rather than raising an exception. Not a lot we can do about that,
|
||||||
# unfortunately, due to the way Python handles list() calls internally. Thus,
|
# unfortunately, due to the way Python handles list() calls internally. Thus,
|
||||||
# we skip the tests for Python 2.3 and 2.6.
|
# we skip the tests for Python 2.6.
|
||||||
if (2, 4) <= sys.version_info < (2, 6):
|
if sys.version_info < (2, 6):
|
||||||
__test__["API_TESTS"] += """
|
__test__["API_TESTS"] += """
|
||||||
# If you're not careful, it's possible to introduce infinite loops via default
|
# If you're not careful, it's possible to introduce infinite loops via default
|
||||||
# ordering on foreign keys in a cycle. We detect that.
|
# ordering on foreign keys in a cycle. We detect that.
|
||||||
|
|
|
@ -1,15 +0,0 @@
|
||||||
"""
|
|
||||||
# Tests of the utils itercompat library.
|
|
||||||
|
|
||||||
>>> from django.utils.itercompat import sorted as compat_sorted
|
|
||||||
|
|
||||||
# Check the replacement version of sorted
|
|
||||||
>>> x = [5,1,4,2,3]
|
|
||||||
>>> y = compat_sorted(x)
|
|
||||||
>>> print y
|
|
||||||
[1, 2, 3, 4, 5]
|
|
||||||
|
|
||||||
>>> print x
|
|
||||||
[5, 1, 4, 2, 3]
|
|
||||||
|
|
||||||
"""
|
|
|
@ -10,25 +10,16 @@ from django.utils.functional import SimpleLazyObject
|
||||||
import timesince
|
import timesince
|
||||||
import datastructures
|
import datastructures
|
||||||
import datetime_safe
|
import datetime_safe
|
||||||
import itercompat
|
|
||||||
import tzinfo
|
import tzinfo
|
||||||
|
|
||||||
from decorators import DecoratorFromMiddlewareTests
|
from decorators import DecoratorFromMiddlewareTests
|
||||||
from functional import FunctionalTestCase
|
from functional import FunctionalTestCase
|
||||||
|
|
||||||
# We need this because "datastructures" uses sorted() and the tests are run in
|
|
||||||
# the scope of this module.
|
|
||||||
try:
|
|
||||||
sorted
|
|
||||||
except NameError:
|
|
||||||
from django.utils.itercompat import sorted # For Python 2.3
|
|
||||||
|
|
||||||
# Extra tests
|
# Extra tests
|
||||||
__test__ = {
|
__test__ = {
|
||||||
'timesince': timesince,
|
'timesince': timesince,
|
||||||
'datastructures': datastructures,
|
'datastructures': datastructures,
|
||||||
'datetime_safe': datetime_safe,
|
'datetime_safe': datetime_safe,
|
||||||
'itercompat': itercompat,
|
|
||||||
'tzinfo': tzinfo,
|
'tzinfo': tzinfo,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,12 +5,6 @@ import unittest
|
||||||
|
|
||||||
import django.contrib as contrib
|
import django.contrib as contrib
|
||||||
|
|
||||||
try:
|
|
||||||
set
|
|
||||||
except NameError:
|
|
||||||
from sets import Set as set # For Python 2.3
|
|
||||||
|
|
||||||
|
|
||||||
CONTRIB_DIR_NAME = 'django.contrib'
|
CONTRIB_DIR_NAME = 'django.contrib'
|
||||||
MODEL_TESTS_DIR_NAME = 'modeltests'
|
MODEL_TESTS_DIR_NAME = 'modeltests'
|
||||||
REGRESSION_TESTS_DIR_NAME = 'regressiontests'
|
REGRESSION_TESTS_DIR_NAME = 'regressiontests'
|
||||||
|
|
Loading…
Reference in New Issue