File size: 1,301 Bytes
7948328
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from __future__ import annotations
from dataclasses import dataclass
from pathlib import Path


@dataclass
class Style:
    name: str
    folder: Path


# Style descriptor vocabulary for embedding-based style extraction. Curated list of common style keywords.
def list_styles(styles_root: Path) -> list[str]:
    if not styles_root.exists():
        return []
    return sorted([p.name for p in styles_root.iterdir() if p.is_dir()])

# Load a style by name from the styles directory. Validates that the specified style exists and returns a Style object with the relevant information about the style folder and embedding settings
# The function checks if the style folder exists and is a directory, and raises an error if not. This ensures that the rest of the generation process has a valid style to work with
# The Style object returned by this function can then be used in the generation process to access the reference images and embedding settings for that style
def load_style(styles_root: Path, style_name: str) -> Style:
    folder = styles_root / style_name
    if not folder.exists() or not folder.is_dir():
        raise FileNotFoundError(f"Style '{style_name}' not found in {styles_root}")
    return Style(
        name=style_name,
        folder=folder,
    )