'Register a virtual subclass of an ABC.'

def register(cls, subclass):

    if (not isinstance(subclass, (type, types.ClassType))):
        raise TypeError('Can    only    register    classes')
    if issubclass(subclass, cls):
        return
    if issubclass(cls, subclass):
        raise RuntimeError('Refusing    to    create    an    inheritance    cycle')
    cls._abc_registry.add(subclass)
    ABCMeta._abc_invalidation_counter += 1
