<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_bond_order(sp1, sp2, dist, tol=0.2, default_bl=None):
 """ Calculate the bond order given the distance of 2 species Args: sp1 (Specie):
 First specie. sp2 (Specie):
 Second specie. dist: Their distance in angstrom tol (float):
 Relative tolerance to test. Basically, the code checks if the distance between the sites is larger than (1 + tol) * the longest bond distance or smaller than (1 - tol) * the shortest bond distance to determine if they are bonded or the distance is too short. Defaults to 0.2. default_bl: If a particular type of bond does not exist, use this bond length (bond order = 1). If None, a ValueError will be thrown. Returns: Float value of bond order. For example, for C-C bond in benzene, return 1.7. """

    all_lengths = obtain_all_bond_lengths(sp1, sp2, default_bl)
    # Transform bond lengths dict to list assuming bond data is successive
    # and add an imaginary bond 0 length
    lengths_list = [all_lengths[1] * (1 + tol)] + \
                   [all_lengths[idx+1] for idx in range(len(all_lengths))]
    trial_bond_order = 0
    while trial_bond_order < len(lengths_list):
        if lengths_list[trial_bond_order] < dist:
            if trial_bond_order == 0:
                return trial_bond_order
            else:
                low_bl = lengths_list[trial_bond_order]
                high_bl = lengths_list[trial_bond_order - 1]
                return trial_bond_order - (dist - low_bl) / (high_bl - low_bl)
        trial_bond_order += 1
    # Distance shorter than the shortest bond length stored,
    # check if the distance is too short
    if dist < lengths_list[-1] * (1 - tol):  # too short
        warnings.warn('%.2f angstrom distance is too short for %s and %s'
                      % (dist, sp1, sp2))
    # return the highest bond order
    return trial_bond_order - 1