def _py_single_source_complete_paths(source, N, paths):
	"""
	From the dict of node parent paths, recursively return the complete path from the source to all targets
	
	Args:
		source (int/string): the source node.
		N (dict): the set of nodes in the network.
		paths (dict): a dict of nodes and their distance to the parent node.
	
	Returns:
		path (dict): the complete path between source and all other nodes, including source and target in the list.
	
	"""
	def __py__get_path_recursive(plist, n, source):
		if n != source:
			plist.append(n)
			try:
				n = paths[n][1]
			except:
				pass
			else:
				__py__get_path_recursive(plist, n, source)
		return plist

	complete_paths = {}
	for n in N:
		plist = __py__get_path_recursive([], n, source)
		plist.append(source)
		plist.reverse()
		complete_paths[n] = plist

	return complete_paths