Python 2/3 compatible metaclasses