Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from services.huggingface import init_huggingface, update_dataset | |
| from services.json_generator import generate_json | |
| from ui.form_components import ( | |
| create_header_tab, | |
| create_task_tab, | |
| create_measures_tab, | |
| create_system_tab, | |
| create_software_tab, | |
| create_infrastructure_tab, | |
| create_environment_tab, | |
| create_quality_tab, | |
| create_hash_tab | |
| ) | |
| # Initialize Hugging Face | |
| init_huggingface() | |
| def handle_submit(*inputs): | |
| message, file_output, json_output = generate_json(*inputs) | |
| # Check if the message indicates validation failure | |
| if message.startswith("The following fields are required"): | |
| return message, file_output, json_output | |
| # If validation passed, proceed to update_dataset | |
| update_output = update_dataset(json_output) | |
| return update_output, file_output, json_output | |
| # Create Gradio interface | |
| with gr.Blocks() as demo: | |
| gr.Markdown("## Data Collection Form") | |
| gr.Markdown("Welcome to this Huggingface space that helps you fill in a form for monitoring the energy consumption of an AI model.") | |
| # Create form tabs | |
| header_components = create_header_tab() | |
| task_components = create_task_tab() | |
| measures_components = create_measures_tab() | |
| system_components = create_system_tab() | |
| software_components = create_software_tab() | |
| infrastructure_components = create_infrastructure_tab() | |
| environment_components = create_environment_tab() | |
| quality_components = create_quality_tab() | |
| hash_components = create_hash_tab() | |
| # Submit and Download Buttons | |
| submit_button = gr.Button("Submit") | |
| output = gr.Textbox(label="Output", lines=1) | |
| json_output = gr.Textbox(visible=False) | |
| file_output = gr.File(label="Downloadable JSON") | |
| # Event Handlers | |
| submit_button.click( | |
| handle_submit, | |
| inputs=[ | |
| *header_components, | |
| *task_components, | |
| *measures_components, | |
| *system_components, | |
| *software_components, | |
| *infrastructure_components, | |
| *environment_components, | |
| *quality_components, | |
| *hash_components | |
| ], | |
| outputs=[output, file_output, json_output] | |
| ) | |
| if __name__ == "__main__": | |
| demo.launch() |