human
I wrote the below code

    def get_asn(path_source):
        if (path_source is None):
            return local_asn
        else:
            return path_source.remote_as
    def get_router_id(path, local_bgp_id):
        path_source = path.source
        if (path_source is None):
            return local_bgp_id
        else:
            originator_id = path.get_pattr(BGP_ATTR_TYPE_ORIGINATOR_ID)
            if originator_id:
                return originator_id.value
            return path_source.protocol.recv_open_msg.bgp_identifier
    path_source1 = path1.source
    path_source2 = path2.source
    if ((path_source1 is None) and (path_source2 is None)):
        return None
    asn1 = get_asn(path_source1)
    asn2 = get_asn(path_source2)
    is_ebgp1 = (asn1 != local_asn)
    is_ebgp2 = (asn2 != local_asn)
    if (is_ebgp1 and is_ebgp2):
        return None
    if (((is_ebgp1 is True) and (is_ebgp2 is False)) or ((is_ebgp1 is False) and (is_ebgp2 is True))):
        raise ValueError('This    method    does    not    support    comparing    ebgp    with    ibgp    path')
    if (path_source1 is not None):
        local_bgp_id = path_source1.protocol.sent_open_msg.bgp_identifier
    else:
        local_bgp_id = path_source2.protocol.sent_open_msg.bgp_identifier
    router_id1 = get_router_id(path1, local_bgp_id)
    router_id2 = get_router_id(path2, local_bgp_id)
    if (router_id1 == router_id2):
        return None
    from ryu.services.protocols.bgp.utils.bgp import from_inet_ptoi
    if (from_inet_ptoi(router_id1) < from_inet_ptoi(router_id2)):
        return path1
    else:
        return path2

What's a good function header?

=====
Here's a good function header?
assistant
#Here's a good function header.

def _cmp_by_router_id(local_asn, path1, path2):