def get_date_from_pair(d1, d2, ret='earliest'):
    """
    Returns either the earliest or latest of two dates.  This handles either ordering
    and when either or both are None.
    """
    if d1 is None and d2 is None:
        return None
    if ret == 'earliest':
        if d1 is None:
            return d2
        elif d2 is None:
            return d1
        else:
            return d1 if d1 < d2 else d2
    elif ret == 'latest':
        if d1 is None:
            return d1
        elif d2 is None:
            return d2
        else:
            return d1 if d1 > d2 else d2
    else:
        raise ValueError("Must supply earliest/latest.")