Data-Generator-MVP / render /model_view.py
rana22
code refactor
a00e0b6
Raw History Blame Contribute Delete
2.51 kB
import gradio as gr
import pandas as pd
import os, yaml, requests
from schema import load_schemas_from_models, node_schemas_to_markdown
from loaders import (
parse_env_text,
load_env_to_text,
get_excel_or_json_data
)
from graph.BFS import get_edges_for_nodes
# load schema
def load_and_display_schema(
env_text,
node_list
):
print("load schema")
env_values: dict[str, str] = {}
env_values.update(parse_env_text(env_text))
for k, v in env_values.items():
os.environ[k] = v
try:
# env var
node_url = os.getenv("NODE_MODEL_URL", "")
prop_url = os.getenv("PROP_MODEL_URL", "")
if not node_url or not prop_url:
raise gr.Error("Set NODE_MODEL_URL and PROP_MODEL_URL in the environment.")
# print(node_url)
# print(prop_url)
node_model = yaml.safe_load(requests.get(node_url, timeout=30).text)
prop_model = yaml.safe_load(requests.get(prop_url, timeout=30).text)
nodes = node_model.get("Nodes", {}) or node_model.get("nodes", {}) or {}
props = prop_model.get("PropDefinitions", {}) or prop_model.get("properties", {}) or {}
whole_schema, error = load_schemas_from_models(nodes, props)
if error:
return [], error
md = node_schemas_to_markdown(whole_schema)
return md, whole_schema, ""
except Exception as e:
return "", [], f"error while loading schema - app\n {str(e)}"
def view_model(env_text, error_box):
node_list_state = gr.State([])
load_schema_btn = gr.Button("Load Schema")
schema_state = gr.State([])
schema_markdown = gr.Markdown(label="Schema View", height=500)
load_schema_btn.click(
fn=load_and_display_schema,
inputs=[env_text],
outputs=[schema_markdown, schema_state, error_box],
)
load_relations_btn = gr.Button("View Nodes")
graph_state = gr.State()
# graph_df = gr.DataFrame(label="Node Tree")
paths_out = gr.JSON(label="Paths")
edges = gr.State([])
edges_out = gr.DataFrame(label="Edges", interactive=False)
load_relations_btn.click(
fn=get_edges_for_nodes,
inputs=[node_list_state],
outputs=[
graph_state,
paths_out,
edges,
edges_out,
error_box
]
)
return (
node_list_state,
schema_state,
graph_state,
paths_out,
edges,
edges_out,
error_box
)