Spaces:
Running
Running
from typing import Union | |
import fastapi | |
import pydantic | |
import networkx as nx | |
class Position(pydantic.BaseModel): | |
x: float | |
y: float | |
class WorkspaceNodeData(pydantic.BaseModel): | |
title: str | |
params: dict | |
class WorkspaceNode(pydantic.BaseModel): | |
id: str | |
type: str | |
data: WorkspaceNodeData | |
position: Position | |
class WorkspaceEdge(pydantic.BaseModel): | |
id: str | |
source: str | |
target: str | |
class Workspace(pydantic.BaseModel): | |
nodes: list[WorkspaceNode] | |
edges: list[WorkspaceEdge] | |
app = fastapi.FastAPI() | |
def read_root(): | |
return {"Hello": "World"} | |
def read_item(item_id: int, q: Union[str, None] = None): | |
return {"item_id": item_id, "q": q} | |
def save(ws: Workspace): | |
print(ws) | |
G = nx.scale_free_graph(4) | |
return {'graph':{ | |
'attributes': { | |
'name': 'My Graph' | |
}, | |
'options': { | |
'allowSelfLoops': True, | |
'multi': False, | |
'type': 'mixed' | |
}, | |
'nodes': [ | |
{'key': 'Thomas'}, | |
{'key': 'Eric'} | |
], | |
'edges': [ | |
{ | |
'key': 'T->E', | |
'source': 'Thomas', | |
'target': 'Eric', | |
} | |
] | |
}} | |
return {"graph": list(nx.to_edgelist(G))} | |