import gradio as gr import pandas as pd import plotly.express as px from helpers import retrieve_pip_installs, retrieve_stars, retrieve_issues LIBRARIES = ["accelerate", "datasets", "diffusers", "evaluate", "gradio", "hub_docs", "huggingface_hub", "optimum", "pytorch_image_models", "tokenizers", "transformers"] def create_pip_plot(libraries, pip_choices): if "Pip" not in pip_choices: return gr.Plot(visible=False) output = retrieve_pip_installs(libraries, "Cumulated" in pip_choices) df = pd.DataFrame(output).melt(id_vars="day") plot = px.line(df, x="day", y="value", color="variable", title="Pip installs") plot.update_layout(legend=dict(x=0.5, y=0.99), title_x=0.5, legend_title_text="") return gr.Plot(value=plot, visible=True) def create_star_plot(libraries, star_choices): if "Stars" not in star_choices: return gr.Plot(visible=False) output = retrieve_stars(libraries, "Week over Week" in star_choices) df = pd.DataFrame(output).melt(id_vars="day") plot = px.line(df, x="day", y="value", color="variable", title="Number of stargazers") plot.update_layout(legend=dict(x=0.5, y=0.99), title_x=0.5, legend_title_text="") return gr.Plot(value=plot, visible=True) def create_issue_plot(libraries, issue_choices): if "Issue" not in issue_choices: return gr.Plot(visible=False) output = retrieve_issues(libraries, exclude_org_members="Exclude org members" in issue_choices, week_over_week="Week over Week" in issue_choices) df = pd.DataFrame(output).melt(id_vars="day") plot = px.line(df, x="day", y="value", color="variable", title="Cumulated number of issues, PRs, and comments", ) plot.update_layout(legend=dict(x=0.5, y=0.99), title_x=0.5, legend_title_text="") return gr.Plot(value=plot, visible=True) with gr.Blocks() as demo: with gr.Row(): with gr.Column(): gr.Markdown("## Select libraries to display") libraries = gr.CheckboxGroup(choices=LIBRARIES, show_label=False) with gr.Column(): gr.Markdown("## Select graphs to display") pip = gr.CheckboxGroup(choices=["Pip", "Cumulated"], show_label=False) stars = gr.CheckboxGroup(choices=["Stars", "Week over Week"], show_label=False) issues = gr.CheckboxGroup(choices=["Issue", "Exclude org members", "week over week"], show_label=False) with gr.Row(): fetch = gr.Button(value="Fetch") with gr.Row(): with gr.Column(): pip_plot = gr.Plot(visible=False) star_plot = gr.Plot(visible=False) issue_plot = gr.Plot(visible=False) fetch.click(create_pip_plot, inputs=[libraries, pip], outputs=pip_plot) fetch.click(create_star_plot, inputs=[libraries, stars], outputs=star_plot) fetch.click(create_issue_plot, inputs=[libraries, issues], outputs=issue_plot) if __name__ == "__main__": demo.launch()