Add Python < 3.3 support for pyabc.i
pyabc.i for abstract base classes now supports versions of Python prior to 3.3 by using the collection module for these older versions. Python-3.3 and later continue to use the collections.abc module. The -py3 option no longer has any effect on the %pythonabc feature.
This commit is contained in:
parent
9fd2356104
commit
f068f2c2d6
6 changed files with 51 additions and 36 deletions
|
|
@ -1,31 +1,36 @@
|
|||
import sys
|
||||
|
||||
# collections.abc requires Python 3.3+
|
||||
if sys.version_info[0:2] < (3, 3):
|
||||
exit(0)
|
||||
|
||||
from python_abstractbase import *
|
||||
import collections.abc
|
||||
if sys.version_info[0:2] >= (3, 3):
|
||||
import collections.abc
|
||||
else:
|
||||
import collections
|
||||
|
||||
# This is expected to fail with -builtin option
|
||||
# Builtin types can't inherit from pure-python abstract bases
|
||||
if is_python_builtin():
|
||||
exit(0)
|
||||
|
||||
# Python abc is only turned on when -py3 option is passed to SWIG
|
||||
if not is_swig_py3:
|
||||
exit(0)
|
||||
|
||||
def check_issubclass(derived, base):
|
||||
if not issubclass(derived, base):
|
||||
raise RuntimeError("{} is not a subclass of {}".format(derived, base))
|
||||
|
||||
check_issubclass(Mapii, collections.abc.MutableMapping)
|
||||
check_issubclass(Multimapii, collections.abc.MutableMapping)
|
||||
check_issubclass(IntSet, collections.abc.MutableSet)
|
||||
check_issubclass(IntMultiset, collections.abc.MutableSet)
|
||||
check_issubclass(IntVector, collections.abc.MutableSequence)
|
||||
check_issubclass(IntList, collections.abc.MutableSequence)
|
||||
if sys.version_info[0:2] >= (3, 3):
|
||||
check_issubclass(Mapii, collections.abc.MutableMapping)
|
||||
check_issubclass(Multimapii, collections.abc.MutableMapping)
|
||||
check_issubclass(IntSet, collections.abc.MutableSet)
|
||||
check_issubclass(IntMultiset, collections.abc.MutableSet)
|
||||
check_issubclass(IntVector, collections.abc.MutableSequence)
|
||||
check_issubclass(IntList, collections.abc.MutableSequence)
|
||||
else:
|
||||
check_issubclass(Mapii, collections.MutableMapping)
|
||||
check_issubclass(Multimapii, collections.MutableMapping)
|
||||
check_issubclass(IntSet, collections.MutableSet)
|
||||
check_issubclass(IntMultiset, collections.MutableSet)
|
||||
check_issubclass(IntVector, collections.MutableSequence)
|
||||
check_issubclass(IntList, collections.MutableSequence)
|
||||
|
||||
mapii = Mapii()
|
||||
multimapii = Multimapii()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue