File size: 4,722 Bytes
5434c4b f26a894 5434c4b 0c136d8 5434c4b 5f3a4af f26a894 5434c4b 0c136d8 5434c4b 0c136d8 5434c4b 5f3a4af 30e165f 5f3a4af 642fae1 5434c4b 642fae1 0c136d8 5f3a4af f26a894 4017643 f26a894 5f3a4af 0c136d8 5434c4b 5f3a4af 5434c4b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
import gradio as gr
import generate_annotated_diffs
import statistics
df_manual = generate_annotated_diffs.manual_data_with_annotated_diffs()
n_diffs_manual = len(df_manual)
df_synthetic = generate_annotated_diffs.synthetic_data_with_annotated_diffs()
n_diffs_synthetic = len(df_synthetic)
STATISTICS = {"manual": statistics.get_statistics_for_manual_df(df_manual),
"synthetic": statistics.get_statistics_for_synthetic_df(df_synthetic)}
def update_manual_view(diff_idx):
diff_idx -= 1
return df_manual.iloc[diff_idx]['annotated_diff'], df_manual.iloc[diff_idx]['commit_msg_start'], \
df_manual.iloc[diff_idx][
'commit_msg_end'], df_manual.iloc[diff_idx][
'session'], f"https://github.com/{df_manual.iloc[diff_idx]['repo']}/commit/{df_manual.iloc[diff_idx]['hash']}"
def update_synthetic_view(diff_idx):
diff_idx -= 1
return (df_synthetic.iloc[diff_idx]['annotated_diff'], df_synthetic.iloc[diff_idx]['initial_msg_pred'],
df_synthetic.iloc[diff_idx]['reference'],
f"https://github.com/{df_synthetic.iloc[diff_idx]['repo']}/commit/{df_synthetic.iloc[diff_idx]['hash']}")
force_light_theme_js_func = """
function refresh() {
const url = new URL(window.location);
if (url.searchParams.get('__theme') !== 'light') {
url.searchParams.set('__theme', 'light');
window.location.href = url.href;
}
}
"""
if __name__ == '__main__':
with gr.Blocks(theme=gr.themes.Soft(), js=force_light_theme_js_func) as application:
with gr.Tab("Manual"):
slider_manual = gr.Slider(minimum=1, maximum=n_diffs_manual, step=1, value=1,
label=f"Sample number (total: {n_diffs_manual})")
diff_view_manual = gr.Highlightedtext(combine_adjacent=True, color_map={'+': "green", '-': "red"})
start_view_manual = gr.Textbox(interactive=False, label="Start message", container=True)
end_view_manual = gr.Textbox(interactive=False, label="End message", container=True)
session_view_manual = gr.Textbox(interactive=False, label="Session", container=True)
link_view_manual = gr.Markdown()
view_manual = [
diff_view_manual,
start_view_manual,
end_view_manual,
session_view_manual,
link_view_manual
]
slider_manual.change(update_manual_view, inputs=slider_manual,
outputs=view_manual)
with gr.Tab("Synthetic"):
slider_synthetic = gr.Slider(minimum=1, maximum=n_diffs_synthetic, step=1, value=1,
label=f"Sample number (total: {n_diffs_synthetic})")
diff_view_synthetic = gr.Highlightedtext(combine_adjacent=True, color_map={'+': "green", '-': "red"})
start_view_synthetic = gr.Textbox(interactive=False, label="Start message", container=True)
end_view_synthetic = gr.Textbox(interactive=False, label="End message", container=True)
link_view_synthetic = gr.Markdown()
view_synthetic = [
diff_view_synthetic,
start_view_synthetic,
end_view_synthetic,
link_view_synthetic
]
slider_synthetic.change(update_synthetic_view, inputs=slider_synthetic,
outputs=view_synthetic)
with gr.Tab("Compare"):
def layout_for_statistics(statistics_group_name):
gr.Markdown(f"### {statistics_group_name}")
stats = STATISTICS[statistics_group_name]
gr.Number(label="Average deletions number (rel to the initial message length)", interactive=False,
value=stats['deletions'].mean().item(), precision=3)
gr.Number(label="Average insertions number (rel to the result length)", interactive=False,
value=stats['insertions'].mean().item(), precision=3)
gr.Number(label="Average changes number (rel to the result length)", interactive=False,
value=stats['changes'].mean().item(), precision=3)
with gr.Row():
with gr.Column(scale=1):
layout_for_statistics("manual")
with gr.Column(scale=1):
layout_for_statistics("synthetic")
application.load(update_manual_view, inputs=slider_manual,
outputs=view_manual)
application.load(update_synthetic_view, inputs=slider_synthetic,
outputs=view_synthetic)
application.launch()
|