algorithm – all possible paths in undirected graph using BFS without recursion (only iterative solution) thru python


could someone pls help reviewing below code?
code is supposed to find all possible paths of an undirected graph using BFS without recursion but it only prints one path (‘C’, ‘B’, ‘D’) instead of
((‘C’, ‘A’, ‘D’), (‘C’, ‘A’, ‘B’, ‘D’), (‘C’, ‘B’, ‘D’), (‘C’, ‘B’, ‘A’, ‘D’))

graph = {
        'A': ('B', 'D', 'C'),
         'B': ('A', 'C', 'D'),
         'C': ('B', 'A'),
         'D': ('B', 'A')
        }

def bfs(graph, start, end):
    # maintain a queue of paths
    queue = ()
    visited = {}
    level = {} # distance dictionary
    parent = {}
    for node in graph.keys():
        visited(node) = False
        parent(node) = None
        level(node) = -1 # inf
    # push the first path into the queue
    queue.append((start))
    all_paths = ()
    while len(queue) > 0:
        # get the first path from the queue
        path = queue.pop(0)
        # get the last node from the path
        node = path(-1)
        # path found
        if node == end:
            all_paths.append(path)
            print(all_paths)
            continue
        for adjacent in graph.get(node, ()):
            if not visited.get(adjacent, None):
                visited(adjacent) = True
                new_path = list(path)
                new_path.append(adjacent)
                queue.append(new_path)

    return all_paths

print (bfs(graph, 'C', 'D'))