What I do in Lepl is use two stages. The first calls the type/metaclass directly and the second subclasses that. This avoids using the "sugar" that changes between 2 and 3.
So, for example, in http://code.google.com/p/lepl/source/browse/src/lepl/matchers/matcher.py#40 I have _Matcher = ABCMeta('_Matcher', (object, ), {}) and then class Matcher(_Matcher): ... Andrew -- http://mail.python.org/mailman/listinfo/python-list