def has_parent(basepath, obj):
    """
    Checks if `basepath` is somewhere in `obj`s parent tree.

    Args:
        basepath (str): Python dotpath to compare against obj path.
        obj (any): Object whose path is to be checked.

    Returns:
        has_parent (bool): If the check was successful or not.

    """
    try:
        return any(cls for cls in obj.__class__.mro()
                   if basepath == "%s.%s" % (cls.__module__, cls.__name__))
    except (TypeError, __HOLE__):
        # this can occur if we tried to store a class object, not an
        # instance. Not sure if one should defend against this.
        return False
dataset/ETHPy150Open evennia/evennia/evennia/utils/utils.py/has_parent