summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@redhat.com>2015-07-28 12:55:39 +0200
committerVictor Stinner <vstinner@redhat.com>2015-07-28 12:56:52 +0200
commit1384e901b00ab8c802c47a3db7ddeb1df5604457 (patch)
tree92ff66a19ea0b51ddb1a3b4c4a328b364fef3f3d
parent8252703f56d394743199e702c38f1ecc1db590e5 (diff)
downloadsqlalchemy-migrate-1384e901b00ab8c802c47a3db7ddeb1df5604457.tar.gz
Add VerNum.__index__() for Python 3 support
On Python 3, some functions like range() don't try to call the __int__() method to cast an object to integer, but try instead the __index__() method. Add an __index__() method to mimick correctly the int type on Python 3. Change-Id: I8df116d80e201778714a59367600eaef644266ed
-rw-r--r--migrate/tests/versioning/test_version.py7
-rw-r--r--migrate/versioning/version.py3
2 files changed, 10 insertions, 0 deletions
diff --git a/migrate/tests/versioning/test_version.py b/migrate/tests/versioning/test_version.py
index 00ce695..df50072 100644
--- a/migrate/tests/versioning/test_version.py
+++ b/migrate/tests/versioning/test_version.py
@@ -69,6 +69,13 @@ class TestVerNum(fixture.Base):
self.assertTrue(VerNum(2) >= 1)
self.assertFalse(VerNum(1) >= 2)
+ def test_int_cast(self):
+ ver = VerNum(3)
+ # test __int__
+ self.assertEqual(int(ver), 3)
+ # test __index__: range() doesn't call __int__
+ self.assertEqual(list(range(ver, ver)), [])
+
class TestVersion(fixture.Pathed):
diff --git a/migrate/versioning/version.py b/migrate/versioning/version.py
index de7008f..3ab814c 100644
--- a/migrate/versioning/version.py
+++ b/migrate/versioning/version.py
@@ -65,6 +65,9 @@ class VerNum(object):
def __int__(self):
return int(self.value)
+ def __index__(self):
+ return int(self.value)
+
if six.PY3:
def __hash__(self):
return hash(self.value)