Mike Jay commited on
Commit
9095c2c
·
1 Parent(s): 5a7189c

wip mock data test api

Browse files
Files changed (2) hide show
  1. app.py +44 -2
  2. submit.py +37 -1
app.py CHANGED
@@ -2,8 +2,10 @@
2
 
3
  import os
4
  import gradio as gr
 
5
 
6
  from questions import get_questions_data
 
7
 
8
  DEFAULT_API_URL = "https://agents-course-unit4-scoring.hf.space"
9
 
@@ -36,8 +38,48 @@ def run_and_submit_all(profile: gr.OAuthProfile | None):
36
  return "Questions list is empty or invalid format.", None
37
  print(f"Retrieved {len(questions_data)} questions.")
38
 
39
- # PLACEHOLDER
40
- return f"Retrieved {len(questions_data)} questions.", None
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
 
42
 
43
  # --- Build Gradio Interface using Blocks ---
 
2
 
3
  import os
4
  import gradio as gr
5
+ import pandas as pd
6
 
7
  from questions import get_questions_data
8
+ from submit import submit_answers
9
 
10
  DEFAULT_API_URL = "https://agents-course-unit4-scoring.hf.space"
11
 
 
38
  return "Questions list is empty or invalid format.", None
39
  print(f"Retrieved {len(questions_data)} questions.")
40
 
41
+ # TEST STUB SECTION START
42
+
43
+ results_log = []
44
+ answers_payload = []
45
+ submitted_answer = "Mock Final Answer Test Data"
46
+
47
+ for item in questions_data:
48
+ task_id = item.get("task_id")
49
+ question_text = item.get("question")
50
+ if not task_id or question_text is None:
51
+ print(f"Skipping item with missing task_id or question: {item}")
52
+ continue
53
+ answers_payload.append(
54
+ {"task_id": task_id, "submitted_answer": submitted_answer}
55
+ )
56
+ results_log.append(
57
+ {
58
+ "Task ID": task_id,
59
+ "Question": question_text,
60
+ "Submitted Answer": submitted_answer,
61
+ }
62
+ )
63
+
64
+ submission_data = {
65
+ "username": username.strip(),
66
+ "agent_code": AGENT_CODE,
67
+ "answers": answers_payload,
68
+ }
69
+ status_update = f"Agent finished. Submitting {len(answers_payload)} answers for user '{username}'..." # pylint: disable=line-too-long
70
+ print(status_update)
71
+ results_df = pd.DataFrame(results_log)
72
+ print(f"Submitting {len(answers_payload)} answers to: {SUBMIT_URL}")
73
+
74
+ # TEST STUB SECTION END
75
+
76
+ final_status, error_message = submit_answers(
77
+ submit_url=SUBMIT_URL, submission_data=submission_data
78
+ )
79
+
80
+ if final_status:
81
+ return final_status, results_df
82
+ return error_message, results_df
83
 
84
 
85
  # --- Build Gradio Interface using Blocks ---
submit.py CHANGED
@@ -26,7 +26,43 @@ def _api_response(submit_url: str, submission_data: dict) -> tuple:
26
  error_message = f"Submission Failed: Network error - {e}"
27
  print(error_message)
28
  return None, error_message
29
- except Exception as e: # pylint: disable=broad-exception-caught
30
  error_message = f"An unexpected error occurred during submission: {e}"
31
  print(error_message)
32
  return None, error_message
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
  error_message = f"Submission Failed: Network error - {e}"
27
  print(error_message)
28
  return None, error_message
29
+ except Exception as e: # pylint: disable=broad-exception-caught
30
  error_message = f"An unexpected error occurred during submission: {e}"
31
  print(error_message)
32
  return None, error_message
33
+
34
+
35
+ def _final_status_from_response(response: requests.Response) -> tuple:
36
+ try:
37
+ result_data = response.json()
38
+ final_status = (
39
+ f"Submission Successful!\n"
40
+ f"User: {result_data.get('username')}\n"
41
+ f"Overall Score: {result_data.get('score', 'N/A')}% "
42
+ f"({result_data.get('correct_count', '?')}/{result_data.get('total_attempted', '?')} correct)\n" # pylint: disable=line-too-long
43
+ f"Message: {result_data.get('message', 'No message received.')}"
44
+ )
45
+ print("Submission successful.")
46
+ return final_status, None
47
+ except requests.exceptions.JSONDecodeError as e:
48
+ print(f"Error decoding JSON response from Submit endpoint: {e}")
49
+ print(f"Response text: {response.text[:500]}")
50
+ error_message = f"Error decoding server Submit response for Final Status: {e}"
51
+ return None, error_message
52
+ except Exception as e: # pylint: disable=broad-exception-caught
53
+ error_message = f"An unexpected error occurred during submission: {e}"
54
+ print(error_message)
55
+ return None, error_message
56
+
57
+
58
+ def submit_answers(submit_url: str, submission_data: dict) -> tuple:
59
+ """Submit Answers returning Final Status"""
60
+ response, error_message = _api_response(
61
+ submit_url=submit_url, submission_data=submission_data
62
+ )
63
+ if not response:
64
+ return None, error_message
65
+ final_status, error_message = _final_status_from_response(response=response)
66
+ if not final_status:
67
+ return None, error_message
68
+ return final_status, None