Преглед на файлове

Change the timing for setup() calls

oobabooga преди 2 години
родител
ревизия
42ea6a3fc0
променени са 1 файла, в които са добавени 7 реда и са изтрити 10 реда
  1. 7 10
      modules/extensions.py

+ 7 - 10
modules/extensions.py

@@ -11,29 +11,31 @@ setup_called = set()
 
 
 def load_extensions():
-    global state
+    global state, setup_called
     for i, name in enumerate(shared.args.extensions):
         if name in available_extensions:
             print(f'Loading the extension "{name}"... ', end='')
             try:
                 exec(f"import extensions.{name}.script")
+                extension = eval(f"extensions.{name}.script")
+                if extension not in setup_called and hasattr(extension, "setup"):
+                    setup_called.add(extension)
+                    extension.setup()
                 state[name] = [True, i]
                 print('Ok.')
             except:
                 print('Fail.')
                 traceback.print_exc()
 
-# This iterator returns the extensions in the order specified in the command-line
-
 
+# This iterator returns the extensions in the order specified in the command-line
 def iterator():
     for name in sorted(state, key=lambda x: state[x][1]):
         if state[name][0]:
             yield eval(f"extensions.{name}.script"), name
 
-# Extension functions that map string -> string
-
 
+# Extension functions that map string -> string
 def apply_extensions(text, typ):
     for extension, _ in iterator():
         if typ == "input" and hasattr(extension, "input_modifier"):
@@ -57,14 +59,9 @@ def create_extensions_block():
                     extension.params[param] = shared.settings[_id]
 
     should_display_ui = False
-
-    # Running setup function
     for extension, name in iterator():
         if hasattr(extension, "ui"):
             should_display_ui = True
-        if extension not in setup_called and hasattr(extension, "setup"):
-            setup_called.add(extension)
-            extension.setup()
 
     # Creating the extension ui elements
     if should_display_ui: