Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
Commit
·
570b23d
1
Parent(s):
a43cb60
fetch user info from HF for stable user id
Browse files- app.py +9 -12
- 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,
|
| 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 |
-
|
| 101 |
-
logger.info(
|
| 102 |
-
stable_id =
|
| 103 |
logger.info(f"User stable ID: {stable_id}")
|
| 104 |
|
| 105 |
-
|
| 106 |
-
|
| 107 |
-
|
| 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
|
| 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,
|