Spaces:
Sleeping
Sleeping
File size: 4,775 Bytes
ad956b6 46cbdf9 1a67d0f 46cbdf9 ad956b6 1a67d0f 46cbdf9 75eb05b 46cbdf9 75eb05b 46cbdf9 1a67d0f 46cbdf9 1a67d0f 46cbdf9 1a67d0f 46cbdf9 63c6341 46cbdf9 63c6341 46cbdf9 1a67d0f 46cbdf9 63c6341 46cbdf9 63c6341 46cbdf9 75eb05b 1a67d0f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 |
import gradio as gr
import os
import json
# Directory to store submissions
DATA_DIR = "submissions"
os.makedirs(DATA_DIR, exist_ok=True)
# Predefined task types
TASK_TYPES = ["math", "Open-Ended", "Custom"]
# Function to handle task submission
def submit_task(task_type, description, yaml_text):
if not yaml_text.strip():
return "YAML/Text input cannot be empty."
# Save task data
data = {
"task_type": task_type,
"description": description,
"yaml": yaml_text
}
file_path = os.path.join(DATA_DIR, f"{task_type}_{len(os.listdir(DATA_DIR))}.json")
with open(file_path, "w") as f:
json.dump(data, f)
return f"Task submitted successfully under type '{task_type}'!"
# Function to get tasks by type
def get_tasks_by_type(task_type):
tasks = []
for file in os.listdir(DATA_DIR):
with open(os.path.join(DATA_DIR, file), "r") as f:
data = json.load(f)
if data["task_type"] == task_type:
tasks.append(data)
return tasks
# Function to dynamically add a new task type
def add_new_task_type(new_type):
if new_type and new_type not in TASK_TYPES:
TASK_TYPES.append(new_type)
return gr.Dropdown.update(choices=TASK_TYPES), f"Task type '{new_type}' added successfully!"
return gr.Dropdown.update(choices=TASK_TYPES), "Task type already exists or invalid input."
# Function to switch tabs
def switch_tab(tab_name):
return gr.Tabs.update(visible_tab=tab_name)
# Gradio App
with gr.Blocks() as app:
gr.Markdown("# Task Configuration Sharing Space")
with gr.Tabs() as tabs:
with gr.Tab("Submit Task"):
gr.Markdown("## Submit a New Task Configuration")
# Input fields for the task submission
task_type_input = gr.Dropdown(
label="Task Type",
choices=TASK_TYPES,
value="math",
interactive=True
)
new_task_input = gr.Textbox(
label="Add New Task Type",
placeholder="Enter a new task type",
interactive=True
)
add_task_button = gr.Button("Add Task Type")
add_task_status = gr.Textbox(label="Status", interactive=False)
description_input = gr.Textbox(
label="Task Description",
placeholder="Provide a brief description of the task.",
lines=3
)
yaml_input = gr.Textbox(
label="YAML/Text Input",
placeholder="Paste your YAML or text configuration here.",
lines=10
)
submit_button = gr.Button("Submit Task")
go_to_view_tab = gr.Button("Go to View Tasks")
submission_status = gr.Textbox(label="Status", interactive=False)
# Handle adding new task type
add_task_button.click(
add_new_task_type,
inputs=[new_task_input],
outputs=[task_type_input, add_task_status]
)
# Handle task submission
submit_button.click(
submit_task,
inputs=[task_type_input, description_input, yaml_input],
outputs=[submission_status]
)
# Button to switch to "View Tasks" tab
go_to_view_tab.click(
lambda: gr.Tabs.update(visible_tab="View Tasks"),
inputs=None,
outputs=[tabs]
)
with gr.Tab("View Tasks"):
gr.Markdown("## View Submitted Tasks")
task_type_filter = gr.Dropdown(
label="Filter by Task Type",
choices=TASK_TYPES,
value="math",
interactive=True
)
view_button = gr.Button("View Tasks")
task_table = gr.Dataframe(headers=["Task Type", "Description", "YAML/Text"], interactive=False)
go_to_submit_tab = gr.Button("Go to Submit Task")
# Function to filter tasks by type
def filter_tasks(task_type):
tasks = get_tasks_by_type(task_type)
return [{"Task Type": t["task_type"], "Description": t["description"], "YAML/Text": t["yaml"]} for t in tasks]
# Handle task filtering
view_button.click(
filter_tasks,
inputs=[task_type_filter],
outputs=[task_table]
)
# Button to switch to "Submit Task" tab
go_to_submit_tab.click(
lambda: gr.Tabs.update(visible_tab="Submit Task"),
inputs=None,
outputs=[tabs]
)
app.launch() |