Spaces:
Paused
Paused
Commit
•
3b22eeb
1
Parent(s):
c0cfc84
Refactor code and update dependencies
Browse files- main.py +30 -15
- requirements.in +0 -1
- requirements.txt +17 -1
main.py
CHANGED
@@ -1,17 +1,17 @@
|
|
1 |
import contextlib
|
2 |
-
from fastapi import FastAPI, Request, BackgroundTasks
|
3 |
-
from fastapi.middleware.cors import CORSMiddleware
|
4 |
-
from pydantic import BaseModel
|
5 |
import json
|
6 |
-
from huggingface_hub import HfApi
|
7 |
import os
|
8 |
-
from dotenv import load_dotenv
|
9 |
-
import json
|
10 |
from contextlib import asynccontextmanager
|
11 |
from datetime import datetime
|
12 |
from pathlib import Path
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
from starlette.responses import RedirectResponse
|
14 |
-
from huggingface_hub import CommitScheduler
|
15 |
|
16 |
load_dotenv()
|
17 |
|
@@ -52,13 +52,6 @@ app.add_middleware(
|
|
52 |
)
|
53 |
|
54 |
|
55 |
-
class Vote(BaseModel):
|
56 |
-
dataset: str
|
57 |
-
description: str
|
58 |
-
vote: int
|
59 |
-
userID: str
|
60 |
-
|
61 |
-
|
62 |
def save_vote(vote_entry):
|
63 |
with open(VOTES_FILE, "a") as file:
|
64 |
# add time stamp to the vote entry
|
@@ -73,8 +66,30 @@ def root():
|
|
73 |
return RedirectResponse(url="/docs")
|
74 |
|
75 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
76 |
@app.post("/vote")
|
77 |
-
async def receive_vote(
|
|
|
|
|
|
|
|
|
|
|
78 |
vote_entry = {
|
79 |
"dataset": vote.dataset,
|
80 |
"vote": vote.vote,
|
|
|
1 |
import contextlib
|
|
|
|
|
|
|
2 |
import json
|
|
|
3 |
import os
|
|
|
|
|
4 |
from contextlib import asynccontextmanager
|
5 |
from datetime import datetime
|
6 |
from pathlib import Path
|
7 |
+
|
8 |
+
from dotenv import load_dotenv
|
9 |
+
from fastapi import BackgroundTasks, FastAPI, Header, Request
|
10 |
+
from fastapi.middleware.cors import CORSMiddleware
|
11 |
+
from huggingface_hub import CommitScheduler, HfApi, whoami
|
12 |
+
from huggingface_hub.utils import HTTPError
|
13 |
+
from pydantic import BaseModel
|
14 |
from starlette.responses import RedirectResponse
|
|
|
15 |
|
16 |
load_dotenv()
|
17 |
|
|
|
52 |
)
|
53 |
|
54 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
55 |
def save_vote(vote_entry):
|
56 |
with open(VOTES_FILE, "a") as file:
|
57 |
# add time stamp to the vote entry
|
|
|
66 |
return RedirectResponse(url="/docs")
|
67 |
|
68 |
|
69 |
+
class Vote(BaseModel):
|
70 |
+
dataset: str
|
71 |
+
description: str
|
72 |
+
vote: int
|
73 |
+
userID: str
|
74 |
+
|
75 |
+
|
76 |
+
def validate_token(token: str):
|
77 |
+
try:
|
78 |
+
user = whoami(token=token)
|
79 |
+
return True
|
80 |
+
except HTTPError as e:
|
81 |
+
# check for HTTPError: Invalid user token. If you didn't pass a user token, make sure you are properly logged in by executing `huggingface-cli login`, and if you did pass a user token, double-check it's correct. in the error message
|
82 |
+
if "Invalid user token" in str(e):
|
83 |
+
return False
|
84 |
+
|
85 |
+
|
86 |
@app.post("/vote")
|
87 |
+
async def receive_vote(
|
88 |
+
vote: Vote, background_tasks: BackgroundTasks, authorization: str = Header(...)
|
89 |
+
):
|
90 |
+
token = authorization.split(" ")[1]
|
91 |
+
if not validate_token(token):
|
92 |
+
return {"message": "Invalid user token"}
|
93 |
vote_entry = {
|
94 |
"dataset": vote.dataset,
|
95 |
"vote": vote.vote,
|
requirements.in
CHANGED
@@ -2,5 +2,4 @@ fastapi
|
|
2 |
fastapi-cors
|
3 |
huggingface_hub
|
4 |
python-dotenv
|
5 |
-
toolz
|
6 |
uvicorn[standard]
|
|
|
2 |
fastapi-cors
|
3 |
huggingface_hub
|
4 |
python-dotenv
|
|
|
5 |
uvicorn[standard]
|
requirements.txt
CHANGED
@@ -8,10 +8,16 @@ anyio==4.2.0
|
|
8 |
# watchfiles
|
9 |
certifi==2023.11.17
|
10 |
# via requests
|
|
|
|
|
11 |
charset-normalizer==3.3.2
|
12 |
# via requests
|
13 |
click==8.1.7
|
14 |
# via uvicorn
|
|
|
|
|
|
|
|
|
15 |
environs==11.0.0
|
16 |
# via fastapi-cors
|
17 |
fastapi==0.109.0
|
@@ -36,6 +42,12 @@ packaging==23.2
|
|
36 |
# via
|
37 |
# huggingface-hub
|
38 |
# marshmallow
|
|
|
|
|
|
|
|
|
|
|
|
|
39 |
pydantic==2.5.3
|
40 |
# via fastapi
|
41 |
pydantic-core==2.14.6
|
@@ -44,17 +56,21 @@ python-dotenv==1.0.1
|
|
44 |
# via
|
45 |
# environs
|
46 |
# uvicorn
|
|
|
47 |
pyyaml==6.0.1
|
48 |
# via
|
49 |
# huggingface-hub
|
50 |
# uvicorn
|
51 |
requests==2.31.0
|
52 |
# via huggingface-hub
|
|
|
|
|
|
|
|
|
53 |
sniffio==1.3.0
|
54 |
# via anyio
|
55 |
starlette==0.35.1
|
56 |
# via fastapi
|
57 |
-
toolz==0.12.0
|
58 |
tqdm==4.66.1
|
59 |
# via huggingface-hub
|
60 |
typing-extensions==4.9.0
|
|
|
8 |
# watchfiles
|
9 |
certifi==2023.11.17
|
10 |
# via requests
|
11 |
+
cffi==1.16.0
|
12 |
+
# via cryptography
|
13 |
charset-normalizer==3.3.2
|
14 |
# via requests
|
15 |
click==8.1.7
|
16 |
# via uvicorn
|
17 |
+
cryptography==42.0.5
|
18 |
+
# via python-jose
|
19 |
+
ecdsa==0.18.0
|
20 |
+
# via python-jose
|
21 |
environs==11.0.0
|
22 |
# via fastapi-cors
|
23 |
fastapi==0.109.0
|
|
|
42 |
# via
|
43 |
# huggingface-hub
|
44 |
# marshmallow
|
45 |
+
pyasn1==0.6.0
|
46 |
+
# via
|
47 |
+
# python-jose
|
48 |
+
# rsa
|
49 |
+
pycparser==2.22
|
50 |
+
# via cffi
|
51 |
pydantic==2.5.3
|
52 |
# via fastapi
|
53 |
pydantic-core==2.14.6
|
|
|
56 |
# via
|
57 |
# environs
|
58 |
# uvicorn
|
59 |
+
python-jose==3.3.0
|
60 |
pyyaml==6.0.1
|
61 |
# via
|
62 |
# huggingface-hub
|
63 |
# uvicorn
|
64 |
requests==2.31.0
|
65 |
# via huggingface-hub
|
66 |
+
rsa==4.9
|
67 |
+
# via python-jose
|
68 |
+
six==1.16.0
|
69 |
+
# via ecdsa
|
70 |
sniffio==1.3.0
|
71 |
# via anyio
|
72 |
starlette==0.35.1
|
73 |
# via fastapi
|
|
|
74 |
tqdm==4.66.1
|
75 |
# via huggingface-hub
|
76 |
typing-extensions==4.9.0
|