home · contact · privacy
Improve parameter parsing.
authorChristian Heller <c.heller@plomlompom.de>
Mon, 19 Aug 2024 05:36:37 +0000 (07:36 +0200)
committerChristian Heller <c.heller@plomlompom.de>
Mon, 19 Aug 2024 05:36:37 +0000 (07:36 +0200)
stable.py
stable/core.py

index be5d13570d482a5b53ef6cf53c9f3334f57b57c8..460c0eee3436c788fc0aa927200dae5dd322f4c3 100755 (executable)
--- a/stable.py
+++ b/stable.py
@@ -40,14 +40,18 @@ def parse_args():
                         help=f'default: {DEFAULT_SCHEDULER}')
     parsed_args = parser.parse_args()
     if parsed_args.copy_params:
-        for section in parsed_args.copy_params.split('; '):
+        first_split = parsed_args.copy_params.split('; PROMPT: ', maxsplit=1)
+        if 2 == len(first_split):
+            parser.set_defaults(prompt=first_split[1])
+        for section in first_split[0].split('; '):
             key, val = section.split(': ', maxsplit=1)
             key = key.lower()
             if key in {'seed', 'height', 'width', 'n_steps'}:
                 val = int(val)
             elif key in {'guidance'}:
                 val = float(val)
-            setattr(parsed_args, key, val)
+            parser.set_defaults(**{key: val})
+    parsed_args = parser.parse_args()
     prefix = f'{argv[0]}: error: '
     if parsed_args.list_schedulers:
         required = {'model': 'm'}
index d89d4a9a8a917226b745c744a1b70d228d5906fa..a5f7b56d77c9f5eb1d93bae5d6260f8afbfe0a60 100644 (file)
@@ -23,6 +23,8 @@ class ImageMaker:
                 return self.target not in record.getMessage()
 
         self.model_filename = basename(model_path)
+        if '; ' in self.model_filename:
+            raise Exception('illegal filename (must not contain "; ")')
         self.seed = None
         self.prompt = None
         self.guidance = None