Spaces:
Running
Running
from typing import Union | |
import fastapi | |
import pydantic | |
import networkx as nx | |
class Position(pydantic.BaseModel): | |
x: float | |
y: float | |
class WorkspaceNode(pydantic.BaseModel): | |
id: str | |
title: str | |
type: str | |
position: Position | |
class WorkspaceConnection(pydantic.BaseModel): | |
id: str | |
# Baklava.js calls it "from", but that's a reserved keyword in Python. | |
src: str = pydantic.Field(None, alias='from') | |
dst: str = pydantic.Field(None, alias='to') | |
class WorkspaceGraph(pydantic.BaseModel): | |
nodes: list[WorkspaceNode] | |
connections: list[WorkspaceConnection] | |
panning: Position | |
scaling: float | |
nodes: list[WorkspaceNode] | |
class Workspace(pydantic.BaseModel): | |
graph: WorkspaceGraph | |
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(100) | |
return {"graph": list(nx.to_edgelist(G))} | |