def split_path(path, assumed_namespace="A", heuristic_split=True):
    """
    split a path into the namespace and a URL
    when a namespace is missing this function returns a configurable default namespace
    as desired this function can apply a heuristic split to distinguish between what is likely a namespace and/or url
    :param path: the path to split into a namespace and a url
    :param assumed_namespace: the default namespace to return if no namespace is found
    :param heuristic_split: use heuristics to identify what is a namespace and what is part of a url
    :return: a pair consisting of the namespace and the url
    """
    splits = path.split("/")
    if len(splits) == 0:
        return assumed_namespace, ""
    elif len(splits) == 1:
        return assumed_namespace, splits[0]
    else:
        if heuristic_split:
            if len(splits[0]) == 1:
                return splits[0], "/".join(splits[1:])
            else:
                return assumed_namespace, "/".join(splits[0:])
        else:
            return splits[0], "/".join(splits[1:])