¿Cómo puedo lograr una relación autorreferenciada de muchos a muchos en el ORQ de SQLAlchemy que haga referencia al mismo atributo?

Estoy tratando de implementar una relación autorreferencial de muchos a muchos usando declarative on SQLAlchemy.

La relación representa la amistad entre dos usuarios. En línea, he encontrado (tanto en la documentación como en Google) cómo hacer una relación m2m autorreferencial donde de alguna manera los roles se diferencian. Esto significa que en estas relaciones de m2m, el usuario A es, por ejemplo, el jefe del usuario B, por lo que lo enumera bajo un atributo de 'subordinados' o lo que tenga. De la misma manera, el Usuario B enumera al Usuario A bajo 'superiores'.

Esto no constituye ningún problema, porque podemos declarar un reflujo a la misma tabla de esta manera:

subordinates = relationship('User', backref='superiors')

Así que, por supuesto, el atributo 'superiores' no es explícito dentro de la clase.

e todos modos, aquí está mi problema: ¿qué pasa si quiero volver a hacer referencia al mismo atributo donde estoy llamando a la referencia? Me gusta esto

friends = relationship('User',
                       secondary=friendship, #this is the table that breaks the m2m
                       primaryjoin=id==friendship.c.friend_a_id,
                       secondaryjoin=id==friendship.c.friend_b_id
                       backref=??????
                       )

Esto tiene sentido, porque si A se hace amigo de B, los roles de la relación son los mismos, y si invoco a los amigos de B, debería obtener una lista con A. Este es el código problemático completo:

friendship = Table(
    'friendships', Base.metadata,
    Column('friend_a_id', Integer, ForeignKey('users.id'), primary_key=True),
    Column('friend_b_id', Integer, ForeignKey('users.id'), primary_key=True)
)

class User(Base):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True)

    friends = relationship('User',
                           secondary=friendship,
                           primaryjoin=id==friendship.c.friend_a_id,
                           secondaryjoin=id==friendship.c.friend_b_id,
                           #HELP NEEDED HERE
                           )

Lo siento si esto es demasiado texto, solo quiero ser lo más explícito posible con esto. Parece que no puedo encontrar ningún material de referencia para esto en la web.