Skip to content

Commit

Permalink
[soc2009/multidb] Merged up to trunk r11901.
Browse files Browse the repository at this point in the history
git-svn-id: http://code.djangoproject.com/svn/django/branches/soc2009/multidb@11904 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information
alex committed Dec 17, 2009
1 parent 2269813 commit 601db0d
Show file tree
Hide file tree
Showing 24 changed files with 54 additions and 48 deletions.
2 changes: 1 addition & 1 deletion django/contrib/admin/widgets.py
Expand Up @@ -2,7 +2,7 @@
Form Widget classes specific to the Django admin site.
"""

import copy
import django.utils.copycompat as copy

from django import forms
from django.forms.widgets import RadioFieldRenderer
Expand Down
2 changes: 1 addition & 1 deletion django/contrib/gis/geos/tests/test_geos.py
Expand Up @@ -821,7 +821,7 @@ def test21_test_gdal(self):

def test22_copy(self):
"Testing use with the Python `copy` module."
import copy
import django.utils.copycompat as copy
poly = GEOSGeometry('POLYGON((0 0, 0 23, 23 23, 23 0, 0 0), (5 5, 5 10, 10 10, 10 5, 5 5))')
cpy1 = copy.copy(poly)
cpy2 = copy.deepcopy(poly)
Expand Down
4 changes: 3 additions & 1 deletion django/contrib/gis/geos/tests/test_geos_mutation.py
Expand Up @@ -2,9 +2,11 @@
# Modified from original contribution by Aryeh Leib Taurog, which was
# released under the New BSD license.
import unittest

import django.utils.copycompat as copy

from django.contrib.gis.geos import *
from django.contrib.gis.geos.error import GEOSIndexError
import copy

def getItem(o,i): return o[i]
def delItem(o,i): del o[i]
Expand Down
12 changes: 8 additions & 4 deletions django/contrib/gis/tests/layermap/tests.py
@@ -1,10 +1,14 @@
import os, unittest
from copy import copy
import os
import unittest
from decimal import Decimal
from models import City, County, CountyFeat, Interstate, ICity1, ICity2, State, city_mapping, co_mapping, cofeat_mapping, inter_mapping
from django.contrib.gis.utils.layermapping import LayerMapping, LayerMapError, InvalidDecimal, MissingForeignKey

from django.utils.copycompat import copy

from django.contrib.gis.gdal import DataSource
from django.contrib.gis.tests.utils import mysql
from django.contrib.gis.utils.layermapping import LayerMapping, LayerMapError, InvalidDecimal, MissingForeignKey

from models import City, County, CountyFeat, Interstate, ICity1, ICity2, State, city_mapping, co_mapping, cofeat_mapping, inter_mapping

shp_path = os.path.realpath(os.path.join(os.path.dirname(__file__), '..', 'data'))
city_shp = os.path.join(shp_path, 'cities', 'cities.shp')
Expand Down
2 changes: 1 addition & 1 deletion django/db/models/base.py
@@ -1,4 +1,3 @@
import copy
import types
import sys
import os
Expand All @@ -13,6 +12,7 @@
from django.db import connections, transaction, DatabaseError, DEFAULT_DB_ALIAS
from django.db.models import signals
from django.db.models.loading import register_models, get_model
import django.utils.copycompat as copy
from django.utils.functional import curry
from django.utils.encoding import smart_str, force_unicode, smart_unicode
from django.conf import settings
Expand Down
2 changes: 1 addition & 1 deletion django/db/models/expressions.py
@@ -1,7 +1,7 @@
from copy import deepcopy
from datetime import datetime

from django.utils import tree
from django.utils.copycompat import deepcopy

class ExpressionNode(tree.Node):
"""
Expand Down
3 changes: 2 additions & 1 deletion django/db/models/fields/__init__.py
@@ -1,10 +1,11 @@
import copy
import datetime
import decimal
import os
import re
import time

import django.utils.copycompat as copy

from django.db import connection
from django.db.models import signals
from django.db.models.fields.subclassing import LegacyConnection
Expand Down
3 changes: 2 additions & 1 deletion django/db/models/fields/files.py
@@ -1,7 +1,8 @@
import copy
import datetime
import os

import django.utils.copycompat as copy

from django.conf import settings
from django.db.models.fields import Field
from django.core.files.base import File, ContentFile
Expand Down
2 changes: 1 addition & 1 deletion django/db/models/manager.py
@@ -1,4 +1,4 @@
import copy
import django.utils.copycompat as copy
from django.db.models.query import QuerySet, EmptyQuerySet, insert_query
from django.db.models import signals
from django.db.models.fields import FieldDoesNotExist
Expand Down
1 change: 1 addition & 0 deletions django/db/models/query.py
Expand Up @@ -9,6 +9,7 @@
from django.db.models.fields import DateField
from django.db.models.query_utils import Q, select_related_descend, CollectedObjects, CyclicDependency, deferred_class_factory
from django.db.models import signals, sql
from django.utils.copycompat import deepcopy

# Used to control how many objects are worked with at once in some cases (e.g.
# when deleting objects).
Expand Down
7 changes: 1 addition & 6 deletions django/db/models/query_utils.py
Expand Up @@ -7,16 +7,11 @@
"""

import weakref
from copy import deepcopy
from django.utils.copycompat import deepcopy

from django.utils import tree
from django.utils.datastructures import SortedDict

try:
sorted
except NameError:
from django.utils.itercompat import sorted # For Python 2.3.


class CyclicDependency(Exception):
"""
Expand Down
2 changes: 1 addition & 1 deletion django/db/models/sql/query.py
Expand Up @@ -7,7 +7,7 @@
all about the internals of models in order to get the information it needs.
"""

from copy import deepcopy
from django.utils.copycompat import deepcopy
from django.utils.tree import Node
from django.utils.datastructures import SortedDict
from django.utils.encoding import force_unicode
Expand Down
13 changes: 2 additions & 11 deletions django/forms/fields.py
Expand Up @@ -2,28 +2,19 @@
Field classes.
"""

import copy
import datetime
import os
import re
import time
import urlparse
from decimal import Decimal, DecimalException
try:
from cStringIO import StringIO
except ImportError:
from StringIO import StringIO

# Python 2.3 fallbacks
try:
from decimal import Decimal, DecimalException
except ImportError:
from django.utils._decimal import Decimal, DecimalException
try:
set
except NameError:
from sets import Set as set

import django.core.exceptions
import django.utils.copycompat as copy
from django.utils.translation import ugettext_lazy as _
from django.utils.encoding import smart_unicode, smart_str

Expand Down
3 changes: 1 addition & 2 deletions django/forms/forms.py
Expand Up @@ -2,8 +2,7 @@
Form classes
"""

from copy import deepcopy

from django.utils.copycompat import deepcopy
from django.utils.datastructures import SortedDict
from django.utils.html import conditional_escape
from django.utils.encoding import StrAndUnicode, smart_unicode, force_unicode
Expand Down
7 changes: 1 addition & 6 deletions django/forms/widgets.py
Expand Up @@ -2,12 +2,7 @@
HTML Widget classes
"""

try:
set
except NameError:
from sets import Set as set # Python 2.3 fallback

import copy
import django.utils.copycompat as copy
from itertools import chain
from django.conf import settings
from django.utils.datastructures import MultiValueDict, MergeDict
Expand Down
2 changes: 1 addition & 1 deletion django/http/__init__.py
Expand Up @@ -183,7 +183,7 @@ def __copy__(self):
return result

def __deepcopy__(self, memo):
import copy
import django.utils.copycompat as copy
result = self.__class__('', mutable=True)
memo[id(self)] = result
for key, value in dict.items(self):
Expand Down
2 changes: 1 addition & 1 deletion django/utils/_decimal.py
Expand Up @@ -134,7 +134,7 @@
'setcontext', 'getcontext'
]

import copy as _copy
import django.utils.copycompat as _copy

#Rounding
ROUND_DOWN = 'ROUND_DOWN'
Expand Down
14 changes: 14 additions & 0 deletions django/utils/copycompat.py
@@ -0,0 +1,14 @@
"""
Fixes Python 2.4's failure to deepcopy unbound functions.
"""

import copy
import types

# Monkeypatch copy's deepcopy registry to handle functions correctly.
if (hasattr(copy, '_deepcopy_dispatch') and types.FunctionType not in copy._deepcopy_dispatch):
copy._deepcopy_dispatch[types.FunctionType] = copy._deepcopy_atomic

# Pose as the copy module now.
del copy, types
from copy import *
4 changes: 2 additions & 2 deletions django/utils/datastructures.py
@@ -1,4 +1,4 @@
from copy import deepcopy
from django.utils.copycompat import deepcopy


class MergeDict(object):
Expand Down Expand Up @@ -214,7 +214,7 @@ def __copy__(self):
return self.__class__(super(MultiValueDict, self).items())

def __deepcopy__(self, memo=None):
import copy
import django.utils.copycompat as copy
if memo is None:
memo = {}
result = self.__class__()
Expand Down
6 changes: 4 additions & 2 deletions django/utils/functional.py
Expand Up @@ -335,8 +335,10 @@ def __deepcopy__(self, memo):
memo[id(self)] = result
return result
else:
import copy
return copy.deepcopy(self._wrapped, memo)
# Changed to use deepcopy from copycompat, instead of copy
# For Python 2.4.
from django.utils.copycompat import deepcopy
return deepcopy(self._wrapped, memo)

# Need to pretend to be the wrapped class, for the sake of objects that care
# about this (especially in equality tests)
Expand Down
2 changes: 1 addition & 1 deletion django/utils/tree.py
Expand Up @@ -3,7 +3,7 @@
ORM.
"""

from copy import deepcopy
from django.utils.copycompat import deepcopy

class Node(object):
"""
Expand Down
2 changes: 1 addition & 1 deletion tests/regressiontests/dispatch/tests/test_dispatcher.py
@@ -1,8 +1,8 @@
from django.dispatch import Signal
import unittest
import copy
import sys
import gc
import django.utils.copycompat as copy

if sys.platform.startswith('java'):
def garbage_collect():
Expand Down
3 changes: 2 additions & 1 deletion tests/regressiontests/extra_regress/models.py
@@ -1,6 +1,7 @@
import copy
import datetime

import django.utils.copycompat as copy

from django.contrib.auth.models import User
from django.db import models
from django.db.models.query import Q
Expand Down
2 changes: 1 addition & 1 deletion tests/regressiontests/utils/tests.py
Expand Up @@ -220,7 +220,7 @@ def test_class(self):
self.assertEqual(_ComplexObject, SimpleLazyObject(complex_object).__class__)

def test_deepcopy(self):
import copy
import django.utils.copycompat as copy
# Check that we *can* do deep copy, and that it returns the right
# objects.

Expand Down

0 comments on commit 601db0d

Please sign in to comment.