diff options
author | Victor Stinner <vstinner@redhat.com> | 2015-07-28 12:55:39 +0200 |
---|---|---|
committer | Victor Stinner <vstinner@redhat.com> | 2015-07-28 12:56:52 +0200 |
commit | 1384e901b00ab8c802c47a3db7ddeb1df5604457 (patch) | |
tree | 92ff66a19ea0b51ddb1a3b4c4a328b364fef3f3d | |
parent | 8252703f56d394743199e702c38f1ecc1db590e5 (diff) | |
download | sqlalchemy-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.py | 7 | ||||
-rw-r--r-- | migrate/versioning/version.py | 3 |
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) |