import streamlit as st import yaml # Import the pyyaml package from services import ServiceOne, ServiceTwo import json from pathlib import Path # List of available services services = { "Service One": ServiceOne(), "Service Two": ServiceTwo() } # User selects services and parameters selected_services = st.multiselect("Select Services", list(services.keys())) parameters = {} # Allow users to input parameters for selected services for service_name in selected_services: service_instance = services[service_name] parameters[service_name] = {} for param_name in service_instance.parameters: parameters[service_name][param_name] = st.text_input(f"Enter {param_name} for {service_name}") # User-defined workflow execution if st.button("Run Workflow"): input_data = ... # Define your input data workflow_config = [] # List to store the workflow configuration for service_name in selected_services: service_instance = services[service_name] service_instance.parameters = parameters[service_name] output_data = service_instance.execute(input_data) input_data = output_data # Store the service name and parameters in the workflow configuration workflow_config.append({ "service": service_name, "parameters": service_instance.parameters }) # Display the final output st.success("Workflow executed successfully. Output: {}".format(input_data)) # Export workflow configuration as YAML or JSON export_format = st.radio("Export Format", ["YAML", "JSON"]) with open("workflow_config.json", "w") as json_file: json.dump(workflow_config, json_file, indent=4) # with open("workflow_config.json", "w") as json_file: st.download_button("Export Config", data=Path("workflow_config.json").read_text(), file_name="workflow_config.json", mime="application/json") # if st.download_button("Export Workflow"): # if export_format == "YAML": # with open("workflow_config.yaml", "w") as yaml_file: # yaml.dump(workflow_config, yaml_file) # st.success("Workflow configuration exported as YAML.") # elif export_format == "JSON": # with open("workflow_config.json", "w") as json_file: # json.dump(workflow_config, json_file, indent=4) # st.success("Workflow configuration exported as JSON.")