tomerz-aai commited on
Commit
570b23d
·
1 Parent(s): a43cb60

fetch user info from HF for stable user id

Browse files
Files changed (2) hide show
  1. app.py +9 -12
  2. src/submission/submit.py +13 -0
app.py CHANGED
@@ -3,7 +3,6 @@ import pandas as pd
3
  from apscheduler.schedulers.background import BackgroundScheduler
4
  from gradio_leaderboard import ColumnFilter, Leaderboard, SelectColumns
5
  from gradio.themes import Base, colors, sizes
6
- from huggingface_hub import whoami
7
 
8
  from src.about import CITATION_BUTTON_LABEL, CITATION_BUTTON_TEXT, EVALUATION_QUEUE_TEXT, INTRODUCTION_TEXT, TITLE
9
  from src.datamodel.data import F1Data
@@ -13,7 +12,7 @@ from src.display.utils import AutoEvalColumn, ModelType, fields
13
  from src.envs import API, CODE_PROBLEMS_REPO, REPO_ID, RESULTS_REPO, SUBMISSIONS_REPO
14
  from src.logger import get_logger
15
  from src.populate import get_leaderboard_df
16
- from src.submission.submit import add_new_solutions, fetch_sub_claim
17
  from src.validation.validate import MAX_INPUT_LENGTH, MIN_INPUT_LENGTH, is_submission_file_valid, is_valid
18
 
19
  logger = get_logger(__name__)
@@ -97,25 +96,23 @@ def add_solution_cbk(
97
  logger.info(f"Display name: {display_name}")
98
 
99
  # Stable account id
100
- claims = fetch_sub_claim(token) or {}
101
- logger.info(f"Claims: {claims}")
102
- stable_id = claims.get("sub")
103
  logger.info(f"User stable ID: {stable_id}")
104
 
105
- # if not stable_id:
106
- # return styled_error("Could not retrieve your stable user ID. Please try signing in again.")
107
- # user_id = stable_id
108
 
109
- # NOTE: stable_id is sometimes None (expired Token?) so we opt to use username.
110
- # TODO: extract stable_id robustly, if possible.
111
  if not profile.username:
112
  return styled_error("Could not retrieve username. Please try signing in again.")
113
  # We rely on underscores as separators in submission ID, replace it with "-".
114
- user_id = profile.username.replace("_", "-")
115
 
116
  try:
117
  # Validating the submission file.
118
- if len(submission_path) == 0:
119
  return styled_error("Please upload JSONL submission file.")
120
 
121
  if not is_submission_file_valid(
 
3
  from apscheduler.schedulers.background import BackgroundScheduler
4
  from gradio_leaderboard import ColumnFilter, Leaderboard, SelectColumns
5
  from gradio.themes import Base, colors, sizes
 
6
 
7
  from src.about import CITATION_BUTTON_LABEL, CITATION_BUTTON_TEXT, EVALUATION_QUEUE_TEXT, INTRODUCTION_TEXT, TITLE
8
  from src.datamodel.data import F1Data
 
12
  from src.envs import API, CODE_PROBLEMS_REPO, REPO_ID, RESULTS_REPO, SUBMISSIONS_REPO
13
  from src.logger import get_logger
14
  from src.populate import get_leaderboard_df
15
+ from src.submission.submit import add_new_solutions, fetch_user_info
16
  from src.validation.validate import MAX_INPUT_LENGTH, MIN_INPUT_LENGTH, is_submission_file_valid, is_valid
17
 
18
  logger = get_logger(__name__)
 
96
  logger.info(f"Display name: {display_name}")
97
 
98
  # Stable account id
99
+ user_info = fetch_user_info(token)
100
+ logger.info("Logged in user info: %s", user_info)
101
+ stable_id = user_info.get("id")
102
  logger.info(f"User stable ID: {stable_id}")
103
 
104
+ if not stable_id:
105
+ return styled_error("Could not retrieve your stable user ID. Please try signing in again.")
106
+ user_id = stable_id
107
 
 
 
108
  if not profile.username:
109
  return styled_error("Could not retrieve username. Please try signing in again.")
110
  # We rely on underscores as separators in submission ID, replace it with "-".
111
+ # user_id = profile.username.replace("_", "-")
112
 
113
  try:
114
  # Validating the submission file.
115
+ if not submission_path:
116
  return styled_error("Please upload JSONL submission file.")
117
 
118
  if not is_submission_file_valid(
src/submission/submit.py CHANGED
@@ -157,6 +157,19 @@ def fetch_sub_claim(oauth_token: gr.OAuthToken | None) -> dict | None:
157
  return None
158
 
159
 
 
 
 
 
 
 
 
 
 
 
 
 
 
160
  def _validate_all_submissions_present(
161
  lbdb: F1Data,
162
  pd_ds: pd.DataFrame,
 
157
  return None
158
 
159
 
160
+ def fetch_user_info(oauth_token: gr.OAuthToken | None) -> dict | None:
161
+ if oauth_token is None:
162
+ return None
163
+ try:
164
+ headers = {"Authorization": f"Bearer {oauth_token.token}"}
165
+ r = requests.get("https://huggingface.co/api/whoami-v2", headers=headers)
166
+ if r.status_code != 200:
167
+ return None
168
+ return r.json()
169
+ except:
170
+ logger.exception("Cannot get user info")
171
+ return None
172
+
173
  def _validate_all_submissions_present(
174
  lbdb: F1Data,
175
  pd_ds: pd.DataFrame,