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'))
```