<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def obtain_all_bond_lengths(sp1, sp2, default_bl=None):
 """ Obtain bond lengths for all bond orders from bond length database Args: sp1 (Specie):
 First specie. sp2 (Specie):
 Second specie. default_bl: If a particular type of bond does not exist, use this bond length as a default value (bond order = 1). If None, a ValueError will be thrown. Return: A dict mapping bond order to bond length in angstrom """

    if isinstance(sp1, Element):
        sp1 = sp1.symbol
    if isinstance(sp2, Element):
        sp2 = sp2.symbol
    syms = tuple(sorted([sp1, sp2]))
    if syms in bond_lengths:
        return bond_lengths[syms].copy()
    elif default_bl is not None:
        return {1: default_bl}
    else:
        raise ValueError("No bond data for elements {} - {}".format(*syms))