Compatible with Python 2.6 and Python 3