def get_possible_moves(current_state: State, env_config: EnvironmentConfiguration) -> List[Edge]:
     current_vertex_name = current_state.get_current_vertex_name()
     vertexes_dict = env_config.get_vertexes()
     edges_dict = {k: v for k, v in env_config.get_edges().items() if k not in env_config.get_blocked_edges()}
     current_vertex = vertexes_dict[current_vertex_name]
     names_of_edges = [edge for edge in current_vertex.get_edges() if edge not in env_config.get_blocked_edges()]
     possible_edges = []
     for edge_name in names_of_edges:
         possible_edges.append(edges_dict[edge_name])
     return possible_edges
    def print_environment(env_config: EnvironmentConfiguration):
        num_of_vertex = env_config.get_vertices_num()
        deadline = env_config.get_deadline()
        edges_dict = env_config.get_edges()
        vertexes_dict = env_config.get_vertexes()

        print(EnvironmentUtils._NUMBER_OF_VERTICES_PREFIX + EnvironmentUtils._SPACE_SEPARATOR + str(
            num_of_vertex))
        print(EnvironmentUtils._DEADLINE_PREFIX + EnvironmentUtils._SPACE_SEPARATOR + str(deadline))

        for vertex in vertexes_dict.values():
            EnvironmentUtils.__print_vertex(vertex)
        for edge in edges_dict.values():
            EnvironmentUtils.__print_edge(edge)
        print("Blocked edges: ", env_config.get_blocked_edges())