issubclase de secuencia de clase base abstracta

Esta lista muestra qué métodos necesita implementar para que su clase sea "considerada" como Secuencia:__getitem__, __len__, __contains__, __iter__, __reversed__, indexycount. Entonces, ¿por qué esta implementación mínima no funciona?issubclass(S, Sequence) is False?

from collections import *


class S(object):
    def __getitem__(self, item):
        raise IndexError

    def __len__(self):
        return 0

    def __contains__(self, item):
        return False

    def __iter__(self):
        return iter(())

    def __reversed__(self):
        return self

    def index(self, item):
        raise IndexError

    def count(self, item):
        return 0


issubclass(S, Iterable)   # True  :-)
issubclass(S, Sized)      # True  :-)
issubclass(S, Container)  # True  :-)
issubclass(S, Sequence)   # False :-(

¿Hay algún método adicional que deba implementar que haya pasado por alto? ¿Entendí mal las clases base abstractas? SubclasesSequence haceissubclass regresoTrue por supuesto, pero eso frustra un poco la idea detrás de abc, ¿no?

Respuestas a la pregunta(1)

Su respuesta a la pregunta