|
from typing import Union |
|
|
|
import gradio as gr |
|
from gradio.oauth import ( |
|
OAUTH_CLIENT_ID, |
|
OAUTH_CLIENT_SECRET, |
|
OAUTH_SCOPES, |
|
OPENID_PROVIDER_URL, |
|
get_space, |
|
) |
|
from huggingface_hub import whoami |
|
|
|
if ( |
|
all( |
|
[ |
|
OAUTH_CLIENT_ID, |
|
OAUTH_CLIENT_SECRET, |
|
OAUTH_SCOPES, |
|
OPENID_PROVIDER_URL, |
|
] |
|
) |
|
or get_space() is None |
|
): |
|
from gradio.oauth import OAuthToken |
|
else: |
|
OAuthToken = str |
|
|
|
|
|
def get_login_button(): |
|
if ( |
|
all( |
|
[ |
|
OAUTH_CLIENT_ID, |
|
OAUTH_CLIENT_SECRET, |
|
OAUTH_SCOPES, |
|
OPENID_PROVIDER_URL, |
|
] |
|
) |
|
or get_space() is None |
|
): |
|
return gr.LoginButton( |
|
value="Sign in with Hugging Face to generate a dataset!", |
|
size="lg", |
|
) |
|
|
|
|
|
def get_duplicate_button(): |
|
if get_space() is not None: |
|
return gr.DuplicateButton(size="lg") |
|
|
|
|
|
def list_orgs(token: OAuthToken = None): |
|
if token is not None: |
|
data = whoami(token) |
|
organisations = [ |
|
entry["entity"]["name"] |
|
for entry in data["auth"]["accessToken"]["fineGrained"]["scoped"] |
|
if "repo.write" in entry["permissions"] |
|
] |
|
return organisations |
|
else: |
|
return [] |
|
|
|
|
|
def get_org_dropdown(token: OAuthToken = None): |
|
orgs = list_orgs(token) |
|
return gr.Dropdown( |
|
label="Organization", choices=orgs, value=orgs[0] if orgs else None |
|
) |
|
|
|
|
|
def swap_visibilty(profile: Union[gr.OAuthProfile, None]): |
|
if get_space(): |
|
if profile is None: |
|
return gr.Column(visible=False) |
|
else: |
|
return gr.Column(visible=True) |
|
else: |
|
return gr.Column(visible=True) |
|
|
|
|
|
def get_css(): |
|
css = """ |
|
h1{font-size: 2em} |
|
h3{margin-top: 0} |
|
#component-1{text-align:center} |
|
.main_ui_logged_out{opacity: 0.3; pointer-events: none} |
|
.tabitem{border: 0px} |
|
.group_padding{padding: .55em} |
|
#space_model .wrap > label:last-child{opacity: 0.3; pointer-events:none} |
|
""" |
|
return css |
|
|