def __make_id(receiver):
    """Generate an identifier for a callable signal receiver.

    This is used when disconnecting receivers, where we need to correctly
    establish equivalence between the input receiver and the receivers assigned
    to a signal.

    Args:
        receiver: A callable object.

    Returns:
        An identifier for the receiver.
    """
    if __is_bound_method(receiver):
        return (id(receiver.__func__), id(receiver.__self__))
    return id(receiver)
Generate an identifier for a callable signal receiver.

    This is used when disconnecting receivers, where we need to correctly
    establish equivalence between the input receiver and the receivers assigned
    to a signal.

    Args:
        receiver: A callable object.

    Returns:
        An identifier for the receiver.