Unverified Commit e10ee962 authored by AUTOMATIC1111's avatar AUTOMATIC1111 Committed by GitHub
Browse files

Merge pull request #9334 from gmasil/prepare-simpler-docker-integration-for-styles-csv

allow styles.csv to be symlinked or mounted in docker
parents dae82c69 f7215906
Loading
Loading
Loading
Loading
+5 −7
Original line number Original line Diff line number Diff line
@@ -72,16 +72,14 @@ class StyleDatabase:
        return apply_styles_to_prompt(prompt, [self.styles.get(x, self.no_style).negative_prompt for x in styles])
        return apply_styles_to_prompt(prompt, [self.styles.get(x, self.no_style).negative_prompt for x in styles])


    def save_styles(self, path: str) -> None:
    def save_styles(self, path: str) -> None:
        # Write to temporary file first, so we don't nuke the file if something goes wrong
        # Always keep a backup file around
        fd, temp_path = tempfile.mkstemp(".csv")
        if os.path.exists(path):
            shutil.copy(path, path + ".bak")

        fd = os.open(path, os.O_RDWR|os.O_CREAT)
        with os.fdopen(fd, "w", encoding="utf-8-sig", newline='') as file:
        with os.fdopen(fd, "w", encoding="utf-8-sig", newline='') as file:
            # _fields is actually part of the public API: typing.NamedTuple is a replacement for collections.NamedTuple,
            # _fields is actually part of the public API: typing.NamedTuple is a replacement for collections.NamedTuple,
            # and collections.NamedTuple has explicit documentation for accessing _fields. Same goes for _asdict()
            # and collections.NamedTuple has explicit documentation for accessing _fields. Same goes for _asdict()
            writer = csv.DictWriter(file, fieldnames=PromptStyle._fields)
            writer = csv.DictWriter(file, fieldnames=PromptStyle._fields)
            writer.writeheader()
            writer.writeheader()
            writer.writerows(style._asdict() for k,     style in self.styles.items())
            writer.writerows(style._asdict() for k,     style in self.styles.items())

        # Always keep a backup file around
        if os.path.exists(path):
            shutil.move(path, path + ".bak")
        shutil.move(temp_path, path)