Spaces:
Runtime error
Runtime error
""" | |
Gradio Interface for Vector operations. | |
""" | |
import gradio as gr | |
import numpy as np | |
import json | |
from typing import Union | |
def parse_vector(vector_str: str) -> np.ndarray: | |
try: | |
v = json.loads(vector_str) | |
arr = np.array(v, dtype=float) | |
if arr.ndim != 1: | |
raise ValueError("Vector must be 1-dimensional.") | |
if arr.shape[0] == 0: | |
raise ValueError("Vector cannot be empty.") | |
return arr | |
except (json.JSONDecodeError, TypeError, ValueError) as e_json: | |
try: | |
if not vector_str.strip(): | |
raise ValueError("Vector input is empty.") | |
arr = np.array([float(x.strip()) for x in vector_str.split(',') if x.strip()], dtype=float) | |
if arr.shape[0] == 0: | |
raise ValueError("Vector cannot be empty after parsing.") | |
return arr | |
except ValueError as e_csv: | |
raise gr.Error(f"Invalid vector format. Use JSON (e.g., [1,2,3]) or comma-separated (e.g., 1,2,3). Error: {e_csv} (Original JSON error: {e_json})") | |
except Exception as e_gen: | |
raise gr.Error(f"General error parsing vector: {e_gen}") | |
def format_output(data: Union[np.ndarray, float, str]) -> str: | |
if isinstance(data, np.ndarray): | |
return str(data.tolist()) | |
elif isinstance(data, (float, int, str)): | |
return str(data) | |
return "Output type not recognized." |