import gradio as gr import pandas as pd from collections import defaultdict df = pd.read_csv("./stackv2_languages_freq.csv") langs = sorted(list(df["language"].unique())) exts = list(df["extension"].unique()) lang_to_ext = defaultdict(set) for lang, ext in zip(df["language"], df["extension"]): if isinstance(ext, str): lang_to_ext[lang].update([ext]) def compute(lang): report = f"## Summary:\n\n The `{lang}` language has {len(lang_to_ext[lang])} extensions: {', '.join(sorted(['`'+ext+'`' for ext in lang_to_ext[lang]]))}.\n\n" df_lang = df[df["language"]==lang] for i, (ext, example) in enumerate(zip(df_lang["extension"], df_lang["content"])): example_string = f"**Example {i+1} (extension=`{ext}`):**\n\n ```\n{example}\n```\n\n" report += example_string return report.strip() with gr.Blocks() as demo: gr.Markdown(f"# Programming Languages for The Stack v2\n\nIn total there are **{len(langs)} languages** and **{len(exts)} extensions.**") lang_select = gr.Dropdown(choices=langs, value="Python") md = gr.Markdown("") lang_select.change(fn=compute, inputs=[lang_select], outputs=[md]) demo.load(fn=compute, inputs=[lang_select], outputs=[md]) demo.launch()