I have a class1 that needs to inherit from 2 different metaclasses which is Meta1 and abc.ABCMeta
Current implementation:
Implementation of Meta1:
class Meta1(type):
    def __new__(cls, classname, parent, attr):
        new_class = type.__new__(cls, classname, parent, attr)
        return super(Meta1, cls).__new__(cls, classname, parent, attr)
implementation of class1Abstract
class class1Abstract(object):
    __metaclass__ = Meta1
    __metaclass__ = abc.ABCMeta
implementation of mainclass
class mainClass(class1Abstract):
    # do abstract method stuff
I know this is wrong to implement 2 different meta twice.
I change the way metclass is loaded (a few tries) and I get this TypeError: Error when calling the metaclass bases
metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases
I ran out of ideas...
EDITED 1
I tried this solution it works but the mainClass is not an instance of class1Abstract
print issubclass(mainClass, class1Abstract) # true
print isinstance(mainClass, class1Abstract) # false
Implementation of class1Abstract
class TestMeta(Meta1):
    pass
class AbcMeta(object):
    __metaclass__ = abc.ABCMeta
    pass
class CombineMeta(AbcMeta, TestMeta):
    pass
class class1Abstract(object):
    __metaclass__ = CombineMeta
    @abc.abstractmethod
    def do_shared_stuff(self):
        pass
    @abc.abstractmethod
    def test_method(self):
        ''' test method '''
Implementation of mainClass
class mainClass(class1Abstract):
    def do_shared_stuff(self):
        print issubclass(mainClass, class1Abstract) # True
        print isinstance(mainClass, class1Abstract) # False
Since mainClass inherits from an abstract class python should complain about test_method not being implemented in mainClass. But it doesn't complain anything because print isinstance(mainClass, class1Abstract) # False
dir(mainClass)
doesn't have 
['__abstractmethods__', '_abc_cache', '_abc_negative_cache', '_abc_negative_cache_version', '_abc_registry']
HELP!
EDITED 2
Implementation of class1Abstract
CombineMeta = type("CombineMeta", (abc.ABCMeta, Meta1), {})
class class1Abstract(object):
    __metaclass__ = abc.ABCMeta
    @abc.abstractmethod
    def do_shared_stuff(self):
        pass
    @abc.abstractmethod
    def test_method(self):
        ''' test method '''
Implementation of mainClass
class mainClass(class1Abstract):
    __metaclass__ = CombineMeta
    def do_shared_stuff(self):
        print issubclass(mainClass, class1Abstract) # True
        print isinstance(mainClass, class1Abstract) # False
dir(mainClass) now have abstractmethod's magic methods
['__abstractmethods__', '__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__metaclass__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_abc_cache', '_abc_negative_cache', '_abc_negative_cache_version', '_abc_registry', 'do_shared_stuff', 'test_method']
But python doesn't warn about test_method not being instantiated
HELP!
 
     
     
     
     
    