acecalisto3 commited on
Commit
54eb236
·
verified ·
1 Parent(s): 3462f76

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +19 -24
app.py CHANGED
@@ -14,7 +14,6 @@ import webbrowser
14
  import urllib.parse
15
  import warnings
16
  import torch
17
- import spaces
18
  from accelerate import Accelerator
19
 
20
  warnings.filterwarnings('ignore', category=UserWarning, module='__main__')
@@ -123,20 +122,20 @@ class GitHubBot:
123
  """Initialize GitHub API with token"""
124
  self.github_api = GitHubAPI(token)
125
 
126
- def fetch_issues(self, token: str, username: str, repo: str) -> List[Dict]:
127
  """Fetch issues from GitHub repository"""
128
  try:
129
  self.initialize_api(token)
130
- return self.github_api.get_issues(username, repo)
131
  except Exception as e:
132
  logger.error(f"Error fetching issues: {str(e)}")
133
  return []
134
 
135
- def resolve_issue(self, token: str, username: str, repo: str, issue_number: int, resolution: str, forked_repo: str) -> str:
136
  """Resolve a GitHub issue and submit PR."""
137
  try:
138
  self.initialize_api(token)
139
- self.github_api.get_repository(username, repo)
140
 
141
  # Create resolution file
142
  timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
@@ -160,7 +159,7 @@ class GitHubBot:
160
  subprocess.run(['git', 'push', 'origin', 'HEAD'], check=True)
161
 
162
  # Open Pull Request page
163
- webbrowser.open(f'https://github.com/{forked_repo.split("/")[-1]}/compare/master...{username}:{forked_repo.split("/")[-1]}_resolved_issue_{issue_number}')
164
 
165
  return f"Resolution saved: {resolution_file}"
166
 
@@ -169,9 +168,9 @@ class GitHubBot:
169
  logger.error(error_msg)
170
  return error_msg
171
 
172
- def handle_issue_selection(token, username, repo, issue_number, resolution, forked_repo):
173
  bot = GitHubBot()
174
- result = bot.resolve_issue(token, username, repo, issue_number, resolution, forked_repo)
175
  return result
176
 
177
  custom_css = """
@@ -255,14 +254,9 @@ def create_gradio_interface(input_file, output_directory):
255
  type="password",
256
  elem_classes="input input-bordered input-primary"
257
  )
258
- github_username = gr.Textbox(
259
- label="Repository Owner",
260
- placeholder="Enter repository owner username",
261
- elem_classes="input input-bordered input-primary"
262
- )
263
- github_repo = gr.Textbox(
264
- label="Repository Name",
265
- placeholder="Enter repository name",
266
  elem_classes="input input-bordered input-primary"
267
  )
268
 
@@ -303,11 +297,12 @@ def create_gradio_interface(input_file, output_directory):
303
 
304
  gr.HTML("</div></div>") # Close card and container divs
305
 
306
- def fetch_issues_handler(token, username, repo):
307
- if not all([token, username, repo]):
308
  return gr.Dropdown(choices=["Please provide all required fields"])
309
 
310
- issues = bot.fetch_issues(token, username, repo)
 
311
  if not issues:
312
  return gr.Dropdown(choices=["No issues found or error occurred"])
313
 
@@ -315,20 +310,21 @@ def create_gradio_interface(input_file, output_directory):
315
  choices=[f"#{issue['number']}: {issue['title']}" for issue in issues]
316
  )
317
 
318
- def resolve_issue_handler(token, username, repo, selected_issue, resolution, forked_repo):
319
  if not selected_issue:
320
  return "Please select an issue first"
321
 
322
  try:
 
323
  issue_number = int(selected_issue.split(':')[0][1:])
324
- return handle_issue_selection(token, username, repo, issue_number, resolution, forked_repo)
325
  except Exception as e:
326
  return f"Error: {str(e)}"
327
 
328
  # Connect components
329
  fetch_button.click(
330
  fetch_issues_handler,
331
- inputs=[github_token, github_username, github_repo],
332
  outputs=[issue_dropdown]
333
  )
334
 
@@ -336,8 +332,7 @@ def create_gradio_interface(input_file, output_directory):
336
  resolve_issue_handler,
337
  inputs=[
338
  github_token,
339
- github_username,
340
- github_repo,
341
  issue_dropdown,
342
  resolution_text,
343
  forked_repo
 
14
  import urllib.parse
15
  import warnings
16
  import torch
 
17
  from accelerate import Accelerator
18
 
19
  warnings.filterwarnings('ignore', category=UserWarning, module='__main__')
 
122
  """Initialize GitHub API with token"""
123
  self.github_api = GitHubAPI(token)
124
 
125
+ def fetch_issues(self, token: str, owner: str, repo: str) -> List[Dict]:
126
  """Fetch issues from GitHub repository"""
127
  try:
128
  self.initialize_api(token)
129
+ return self.github_api.get_issues(owner, repo)
130
  except Exception as e:
131
  logger.error(f"Error fetching issues: {str(e)}")
132
  return []
133
 
134
+ def resolve_issue(self, token: str, owner: str, repo: str, issue_number: int, resolution: str, forked_repo: str) -> str:
135
  """Resolve a GitHub issue and submit PR."""
136
  try:
137
  self.initialize_api(token)
138
+ self.github_api.get_repository(owner, repo)
139
 
140
  # Create resolution file
141
  timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
 
159
  subprocess.run(['git', 'push', 'origin', 'HEAD'], check=True)
160
 
161
  # Open Pull Request page
162
+ webbrowser.open(f'https://github.com/{forked_repo.split("/")[-1]}/compare/master...{owner}:{forked_repo.split("/")[-1]}_resolved_issue_{issue_number}')
163
 
164
  return f"Resolution saved: {resolution_file}"
165
 
 
168
  logger.error(error_msg)
169
  return error_msg
170
 
171
+ def handle_issue_selection(token, owner, repo, issue_number, resolution, forked_repo):
172
  bot = GitHubBot()
173
+ result = bot.resolve_issue(token, owner, repo, issue_number, resolution, forked_repo)
174
  return result
175
 
176
  custom_css = """
 
254
  type="password",
255
  elem_classes="input input-bordered input-primary"
256
  )
257
+ repo_link = gr.Textbox(
258
+ label="Repository Link",
259
+ placeholder="Enter repository link (e.g., https://github.com/owner/repo)",
 
 
 
 
 
260
  elem_classes="input input-bordered input-primary"
261
  )
262
 
 
297
 
298
  gr.HTML("</div></div>") # Close card and container divs
299
 
300
+ def fetch_issues_handler(token, repo_link):
301
+ if not all([token, repo_link]):
302
  return gr.Dropdown(choices=["Please provide all required fields"])
303
 
304
+ owner, repo = repo_link.split('/')[-2:]
305
+ issues = bot.fetch_issues(token, owner, repo)
306
  if not issues:
307
  return gr.Dropdown(choices=["No issues found or error occurred"])
308
 
 
310
  choices=[f"#{issue['number']}: {issue['title']}" for issue in issues]
311
  )
312
 
313
+ def resolve_issue_handler(token, repo_link, selected_issue, resolution, forked_repo):
314
  if not selected_issue:
315
  return "Please select an issue first"
316
 
317
  try:
318
+ owner, repo = repo_link.split('/')[-2:]
319
  issue_number = int(selected_issue.split(':')[0][1:])
320
+ return handle_issue_selection(token, owner, repo, issue_number, resolution, forked_repo)
321
  except Exception as e:
322
  return f"Error: {str(e)}"
323
 
324
  # Connect components
325
  fetch_button.click(
326
  fetch_issues_handler,
327
+ inputs=[github_token, repo_link],
328
  outputs=[issue_dropdown]
329
  )
330
 
 
332
  resolve_issue_handler,
333
  inputs=[
334
  github_token,
335
+ repo_link,
 
336
  issue_dropdown,
337
  resolution_text,
338
  forked_repo