Spaces:
Build error
Build error
# Copyright (c) Meta Platforms, Inc. and affiliates. | |
# All rights reserved. | |
# | |
# This source code is licensed under the license found in the | |
# LICENSE file in the root directory of this source tree. | |
from dataclasses import dataclass | |
from typing import Any, Dict, Optional | |
from llm_transparency_tool.routes.graph_node import GraphNode, NodeType | |
class UiGraphNode(GraphNode): | |
def from_json(json: Dict[str, Any]) -> Optional["UiGraphNode"]: | |
try: | |
layer = json["cell"]["layer"] | |
token = json["cell"]["token"] | |
type = NodeType(json["item"]) | |
return UiGraphNode(layer, token, type) | |
except (TypeError, KeyError): | |
return None | |
class UiGraphEdge: | |
source: UiGraphNode | |
target: UiGraphNode | |
weight: float | |
def from_json(json: Dict[str, Any]) -> Optional["UiGraphEdge"]: | |
try: | |
source = UiGraphNode.from_json(json["from"]) | |
target = UiGraphNode.from_json(json["to"]) | |
if source is None or target is None: | |
return None | |
weight = float(json["weight"]) | |
return UiGraphEdge(source, target, weight) | |
except (TypeError, KeyError): | |
return None | |
class GraphSelection: | |
node: Optional[UiGraphNode] | |
edge: Optional[UiGraphEdge] | |
def from_json(json: Dict[str, Any]) -> Optional["GraphSelection"]: | |
try: | |
node = UiGraphNode.from_json(json["node"]) | |
edge = UiGraphEdge.from_json(json["edge"]) | |
return GraphSelection(node, edge) | |
except (TypeError, KeyError): | |
return None | |