from warnings import filterwarnings
filterwarnings('ignore')
import os
import uuid
import json
import gradio as gr
import pandas as pd
from huggingface_hub import CommitScheduler
from pathlib import Path
# Configure the logging functionality
log_file = Path("logs/") / f"data_{uuid.uuid4()}.json"
log_folder = log_file.parent
repo_id = "operand-logs"
# Create a commit scheduler
scheduler = CommitScheduler(
repo_id=repo_id,
repo_type="dataset",
folder_path=log_folder,
path_in_repo="data",
every=2
)
def process_command(command, ddddd):
print('foo...')
with scheduler.lock:
with log_file.open("a") as f:
f.write(json.dumps(
{
'p1': 'foo',
'p2': 100
}
))
f.write("\n")
return 42
# Set-up the Gradio UI
#textbox = gr.Textbox(label='Command')
# company = gr.Radio(label='Company:',
# choices=["aws", "google", "IBM", "Meta", "msft"],
# value="aws")
# Create Gradio interface with tabs
with gr.Blocks(theme=gr.themes.Soft()) as operand:
gr.Markdown("# operand")
gr.Markdown("No-code Data Automation Studio
")
with gr.Tab("Source"):
gr.Markdown("## Source")
gr.Markdown("Instances of data sources e.g., Jira Cloud endpoint, Trello endpoint, Github endpoint")
textbox_a = gr.Textbox(label='Command')
output_a = gr.Textbox(label='Output')
button_a = gr.Button("Submit")
button_a.click(process_command, inputs=[textbox_a], outputs=output_a)
with gr.Accordion("Syntax"):
gr.Markdown("
data_source my-ds-name1 my-ds-desc1 my-jira-endpoint1 my-jira-creds1")
with gr.Tab("Set"):
gr.Markdown("## Data Set")
gr.Markdown("A data set from a data source.")
textbox_b = gr.Textbox(label='Command')
output_b = gr.Textbox(label='Output')
button_b = gr.Button("Submit")
button_b.click(process_command, inputs=[textbox_b], outputs=output_b)
with gr.Tab("Transform"):
gr.Markdown("## Data Transform")
gr.Markdown("A transformation of a data set into a new data set.")
textbox_c = gr.Textbox(label='Command')
output_c = gr.Textbox(label='Output')
button_c = gr.Button("Submit")
button_c.click(process_command, inputs=[textbox_c], outputs=output_c)
with gr.Tab("Analysis"):
gr.Markdown("## Data Analysis")
gr.Markdown("Statistical analysis of a data set e.g., slope calculation on feature")
textbox_d = gr.Textbox(label='Command')
output_d = gr.Textbox(label='Output')
button_d = gr.Button("Submit")
button_d.click(process_command, inputs=[textbox_d], outputs=output_d)
with gr.Tab("Visualization"):
gr.Markdown("## Data Visualization")
gr.Markdown("A visual insight from a data set or data analysis results e.g., matplotlib, sns, plotly")
textbox_e = gr.Textbox(label='Command')
output_e = gr.Textbox(label='Output')
button_e = gr.Button("Submit")
button_e.click(process_command, inputs=[textbox_e], outputs=output_e)
with gr.Tab("Notification"):
gr.Markdown("## Notifications")
gr.Markdown("Scheduled transmission of data set, data analysis or data visualization direct to user device")
textbox_f = gr.Textbox(label='Command')
output_f = gr.Textbox(label='Output')
button_f = gr.Button("Submit")
button_f.click(process_command, inputs=[textbox_f], outputs=output_f)
with gr.Tab("Automation"):
gr.Markdown("## Automation")
gr.Markdown("Multistep composition of functional elements")
textbox_g = gr.Textbox(label='Command')
output_g = gr.Textbox(label='Output')
button_g = gr.Button("Submit")
button_g.click(process_command, inputs=[textbox_g], outputs=output_g)
# For the inputs parameter of Interface provide [textbox,company] with outputs parameter of Interface provide prediction
# demo = gr.Interface(fn=dprocess,
# inputs=[textbox],
# outputs="text",
# title="operand",
# description="Data Workbench CLI",
# theme=gr.themes.Soft())
operand.queue()
operand.launch()