Spaces:
hlby
/
Runtime error

File size: 1,163 Bytes
947e9b9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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)