(libpaths: T.List[str], refpaths: T.List[str])
return sorted(libpaths, key=key_func)
Sort <libpaths> according to <refpaths>

    It is intended to be used to sort -L flags returned by pkg-config.
    Pkg-config returns flags in random order which cannot be relied on.
Sort <libpaths> according to <refpaths>
Sort <libpaths > according to <refpaths >
def sort_libpaths(libpaths: T.List[str], refpaths: T.List[str]) -> T.List[str]:
    """Sort <libpaths> according to <refpaths>

    It is intended to be used to sort -L flags returned by pkg-config.
    Pkg-config returns flags in random order which cannot be relied on.
    """
    if len(refpaths) == 0:
        return list(libpaths)

    def key_func(libpath: str) -> T.Tuple[int, int]:
        common_lengths: T.List[int] = []
        for refpath in refpaths:
            try:
                common_path: str = os.path.commonpath([libpath, refpath])
            except ValueError:
                common_path = ''
            common_lengths.append(len(common_path))
        max_length = max(common_lengths)
        max_index = common_lengths.index(max_length)
        reversed_max_length = len(refpaths[max_index]) - max_length
        return (max_index, reversed_max_length)
    return sorted(libpaths, key=key_func)
def sort_libpaths ( libpaths : T . List [ str ] , refpaths : T . List [ str ] ) -> T . List [ str ] : if len ( refpaths ) == 0 : return list ( libpaths ) def key_func ( libpath : str ) -> T . Tuple [ int , int ] : common_lengths : T . List [ int ] = [ ] for refpath in refpaths : try : common_path : str = os . path . commonpath ( [ libpath , refpath ] ) except ValueError : common_path = '' common_lengths . append ( len ( common_path ) ) max_length = max ( common_lengths ) max_index = common_lengths . index ( max_length ) reversed_max_length = len ( refpaths [ max_index ] ) - max_length return ( max_index , reversed_max_length ) return sorted ( libpaths , key = key_func )