Spaces:
hlby
/
Runtime error

gpt / gradio /themes /utils /semver_match.py
hlby's picture
Duplicate from jumei/gptsite
947e9b9
raw
history blame contribute delete
No virus
1.16 kB
from __future__ import annotations
from dataclasses import dataclass, field
from typing import List
import huggingface_hub
import semantic_version
import semantic_version as semver
@dataclass
class ThemeAsset:
filename: str
version: semver.Version = field(init=False)
def __post_init__(self):
self.version = semver.Version(self.filename.split("@")[1].replace(".json", ""))
def get_theme_assets(space_info: huggingface_hub.hf_api.SpaceInfo) -> List[ThemeAsset]:
if "gradio-theme" not in getattr(space_info, "tags", []):
raise ValueError(f"{space_info.id} is not a valid gradio-theme space!")
return [
ThemeAsset(filename.rfilename)
for filename in space_info.siblings
if filename.rfilename.startswith("themes/")
]
def get_matching_version(
assets: List[ThemeAsset], expression: str | None
) -> ThemeAsset | None:
expression = expression or "*"
# Return most recent version that matches
matching_version = semantic_version.SimpleSpec(expression).select(
[a.version for a in assets]
)
return next((a for a in assets if a.version == matching_version), None)