diff --git a/modules/styles.py b/modules/styles.py index 9edcc7e44..60bd8a7fb 100644 --- a/modules/styles.py +++ b/modules/styles.py @@ -1,4 +1,5 @@ from pathlib import Path +from modules import errors import csv import os import typing @@ -128,19 +129,22 @@ class StyleDatabase: self.load_from_csv(styles_file) def load_from_csv(self, path: str | Path): - with open(path, "r", encoding="utf-8-sig", newline="") as file: - reader = csv.DictReader(file, skipinitialspace=True) - for row in reader: - # Ignore empty rows or rows starting with a comment - if not row or row["name"].startswith("#"): - continue - # Support loading old CSV format with "name, text"-columns - prompt = row["prompt"] if "prompt" in row else row["text"] - negative_prompt = row.get("negative_prompt", "") - # Add style to database - self.styles[row["name"]] = PromptStyle( - row["name"], prompt, negative_prompt, str(path) - ) + try: + with open(path, "r", encoding="utf-8-sig", newline="") as file: + reader = csv.DictReader(file, skipinitialspace=True) + for row in reader: + # Ignore empty rows or rows starting with a comment + if not row or row["name"].startswith("#"): + continue + # Support loading old CSV format with "name, text"-columns + prompt = row["prompt"] if "prompt" in row else row["text"] + negative_prompt = row.get("negative_prompt", "") + # Add style to database + self.styles[row["name"]] = PromptStyle( + row["name"], prompt, negative_prompt, str(path) + ) + except Exception: + errors.report(f'Error loading styles from {path}: ', exc_info=True) def get_style_paths(self) -> set: """Returns a set of all distinct paths of files that styles are loaded from."""