Spaces:
Sleeping
Sleeping
Download render/model_view.py from arana22/Data-Generator-MVP: direct link, hf CLI and curl.
- Browser
- Download file 2.51 kB
-
https://huggingface.co/spaces/arana22/Data-Generator-MVP/resolve/main/render/model_view.py
- Command line
-
hf download hf://spaces/arana22/Data-Generator-MVP/render/model_view.py
-
curl -L -o model_view.py https://huggingface.co/spaces/arana22/Data-Generator-MVP/resolve/main/render/model_view.py
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 | |
| ) |