michael@0: import sys michael@0: michael@0: info = sys.version_info michael@0: if info[:3] >= (3, 2, 0): michael@0: # for Python 3.2 ordinary unittest is fine michael@0: import unittest as unittest2 michael@0: else: michael@0: import unittest2 michael@0: michael@0: michael@0: try: michael@0: callable = callable michael@0: except NameError: michael@0: def callable(obj): michael@0: return hasattr(obj, '__call__') michael@0: michael@0: michael@0: inPy3k = sys.version_info[0] == 3 michael@0: with_available = sys.version_info[:2] >= (2, 5) michael@0: michael@0: michael@0: def is_instance(obj, klass): michael@0: """Version of is_instance that doesn't access __class__""" michael@0: return issubclass(type(obj), klass) michael@0: michael@0: michael@0: class SomeClass(object): michael@0: class_attribute = None michael@0: michael@0: def wibble(self): michael@0: pass michael@0: michael@0: michael@0: class X(object): michael@0: pass michael@0: michael@0: try: michael@0: next = next michael@0: except NameError: michael@0: def next(obj): michael@0: return obj.next()