summaryrefslogtreecommitdiff
path: root/dev-python/south/files/south-1.0-3753b49c-Replace-dict.iteritems-with-six.patch
blob: 07c50edabce357a4c652f5f1767fe7eb75c94f49 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# HG changeset patch
# User Gary Wilson Jr. <gary@thegarywilson.com>
# Date 1397849538 18000
# Branch python3-iteritems
# Node ID 3753b49ca9f3d34c94156622b380def245d88e80
# Parent  0e17add9b5e0f30f7cf5acf47961eea6a7f4032c
Fixed a Python 3 incompatibility by replacing dict.iteritems() usage with an iteritems py3 util function from six.

diff --git a/south/migration/migrators.py b/south/migration/migrators.py
--- a/south/migration/migrators.py
+++ b/south/migration/migrators.py
@@ -16,7 +16,7 @@
 from south.db import DEFAULT_DB_ALIAS
 from south.models import MigrationHistory
 from south.signals import ran_migration
-from south.utils.py3 import StringIO
+from south.utils.py3 import StringIO, iteritems
 
 
 class Migrator(object):
@@ -161,7 +161,7 @@
             if self.verbosity:
                 print(" - Migration '%s' is marked for no-dry-run." % migration)
             return
-        for name, db in south.db.dbs.iteritems():
+        for name, db in iteritems(south.db.dbs):
             south.db.dbs[name].dry_run = True
         # preserve the constraint cache as it can be mutated by the dry run
         constraint_cache = deepcopy(south.db.db._constraint_cache)
@@ -181,7 +181,7 @@
             if self._ignore_fail:
                 south.db.db.debug = old_debug
             south.db.db.clear_run_data(pending_creates)
-            for name, db in south.db.dbs.iteritems():
+            for name, db in iteritems(south.db.dbs):
                 south.db.dbs[name].dry_run = False
             # restore the preserved constraint cache from before dry run was
             # executed
diff --git a/south/utils/py3.py b/south/utils/py3.py
--- a/south/utils/py3.py
+++ b/south/utils/py3.py
@@ -26,3 +26,18 @@
 def with_metaclass(meta, base=object):
     """Create a base class with a metaclass."""
     return meta("NewBase", (base,), {})
+
+
+def _add_doc(func, doc):
+    """Add documentation to a function."""
+    func.__doc__ = doc
+
+if PY3:
+    def iteritems(d, **kw):
+        return iter(d.items(**kw))
+else:
+    def iteritems(d, **kw):
+        return iter(d.iteritems(**kw))
+
+_add_doc(iteritems,
+         "Return an iterator over the (key, value) pairs of a dictionary.")