__all__ = ['block', 'make_clickable_model', 'make_clickable_user', 'get_submissions']
import gradio as gr
import pandas as pd
from huggingface_hub import HfApi, repocard
def is_duplicated(space_id:str)->None:
card = repocard.RepoCard.load(space_id, repo_type="space")
return getattr(card.data, "duplicated_from", None) is not None
def make_clickable_model(model_name, link=None):
if link is None:
link = "https://huggingface.co/" + "spaces/" + model_name
return f'{model_name.split("/")[-1]}'
def get_space_ids():
api = HfApi()
spaces = api.list_spaces(filter="jax-diffusers-event")
print(spaces)
space_ids = [x for x in spaces]
return space_ids
def make_clickable_user(user_id):
link = "https://huggingface.co/" + user_id
return f'{user_id}'
def get_submissions():
submissions = get_space_ids()
leaderboard_models = []
for submission in submissions:
# user, model, likes
if not is_duplicated(submission.id):
user_id = submission.id.split("/")[0]
leaderboard_models.append(
(
make_clickable_user(user_id),
make_clickable_model(submission.id),
submission.likes,
)
)
df = pd.DataFrame(data=leaderboard_models, columns=["User", "Space", "Likes"])
df.sort_values(by=["Likes"], ascending=False, inplace=True)
df.insert(0, "Rank", list(range(1, len(df) + 1)))
return df
block = gr.Blocks()
with block:
gr.Markdown(
"""# JAX Diffusers Event Leaderboard
Welcome to the leaderboard for the JAX Diffusers Event ๐๐
This is a community event where participants are creating applications based on Stable Diffusion using ๐งจ diffusers and JAX with (v4) TPUs generously provided for free by Google Cloud.
To attend the event, simply follow the instructions in [this guide](https://github.com/huggingface/community-events/tree/main/jax-controlnet-sprint).
To submit your Space and add it to the leaderboard, simply add `jax-diffusers-event` under tags section in your Space's README.
At the end of the event, the demos with the most likes will be evaluated by the jury for special prizes! ๐
"""
)
with gr.Row():
data = gr.components.Dataframe(
type="pandas", datatype=["number", "markdown", "markdown", "number"]
)
with gr.Row():
data_run = gr.Button("Refresh")
data_run.click(
get_submissions, outputs=data
)
block.load(get_submissions, outputs=data)
block.launch()