blob: 07c50edabce357a4c652f5f1767fe7eb75c94f49 [file] [log] [blame]
# 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.")