Amy Roberts
Draft
9b744c5
raw
history blame
3.92 kB
import os
import gradio as gr
import gradio as gr
from find_similar_issues import get_similar_issues
import requests
from html2image import Html2Image
import io
hti = Html2Image(size=(1920, 1080 * 3))
from defaults import OWNER, REPO, TOKEN
def get_query_issue_information(issue_no, token):
headers = {
"Accept": "application/vnd.github+json",
"Authorization": f"{token}",
"X-GitHub-Api-Version": "2022-11-28",
"User-Agent": "amyeroberts",
}
request = requests.get(
f"https://api.github.com/repos/{OWNER}/{REPO}/issues/{issue_no}",
headers=headers,
)
if request.status_code != 200:
raise ValueError(f"Request failed with status code {request.status_code} and message {request.text}")
return request.json()
def find_similar_issues(issue, token):
similar_issues = get_similar_issues(issue, token=token)
similar_issues_summary = [f"#{issue['number']} - {issue['title']}" for issue in similar_issues]
return similar_issues_summary
def render_issue_as_image(issue, filename="image.png"):
url = issue["html_url"]
print(url)
hti.screenshot(url=url, save_as=filename)
return filename
def run_find_similar_issues(issue, token, n_issues):
issue_information = get_query_issue_information(issue, token=token)
# issue_information_summary = f"#{issue_information['number']} - {issue_information['title']}\n\n{issue_information['body']}"
similar_issues = get_similar_issues(issue, token=token, top_k=n_issues)
# similar_issues_summary = [f"#{issue['number']} - {issue['title']}" for issue in similar_issues]
issue_image = render_issue_as_image(issue_information, filename="query_issue.png")
image_names = []
for i, issue in enumerate(similar_issues):
image_names.append(render_issue_as_image(issue, filename=f"image{i}.png"))
# return issue_information_summary, image_names
page_html = requests.get(issue_information["html_url"]).text
return issue_image, page_html, image_names
with gr.Blocks(title="Github Bot") as demo:
with gr.Tab("Find similar issues"):
with gr.Row():
with gr.Column():
with gr.Row():
issue = gr.Textbox(label="Github Issue", placeholder="Github issue you want to find similar issues to")
token = gr.Textbox(label="Github Token", placeholder="Your github token for authentication. This is not stored anywhere.")
with gr.Row():
n_issues = gr.Slider(1, 50, value=5, label="Number of similar issues", info="Choose between 1 and 50")
with gr.Row():
submit_button = gr.Button(value="Submit")
with gr.Row():
with gr.Column():
issue_image = gr.Image(type="filepath", label="Your issue")
with gr.Column():
similar_issues_screenshots = gr.Gallery(label="Similar Issues")
issue_text = gr.HTML(label="Issue text", elem_id="issue_text")
submit_button.click(run_find_similar_issues, outputs=[issue_image, issue_text, similar_issues_screenshots], inputs=[issue, token, n_issues])
with gr.Tab("Search issues"):
with gr.Row():
query = gr.Textbox(label="Query", placeholder="Search for issues")
with gr.Row():
token = gr.Textbox(label="Github Token", placeholder="Your github token for authentication. This is not stored anywhere.")
with gr.Row():
pass
with gr.Tab("Find maintainers to ping"):
with gr.Row():
issue = gr.Textbox(label="Github Issue / PR", placeholder="Issue or PR you want to find maintainers to ping for")
with gr.Row():
token = gr.Textbox(label="Github Token", placeholder="Your github token for authentication. This is not stored anywhere.")
if __name__ == "__main__":
demo.launch()