()
| 286 | |
| 287 | |
| 288 | def load_scripts(): |
| 289 | t = timer.Timer() |
| 290 | t0 = time.time() |
| 291 | global current_basedir # pylint: disable=global-statement |
| 292 | scripts_data.clear() |
| 293 | postprocessing_scripts_data.clear() |
| 294 | script_callbacks.clear_callbacks() |
| 295 | scripts_list = list_scripts('scripts', '.py') + list_scripts(os.path.join('modules', 'face'), '.py') |
| 296 | scripts_list = sorted(scripts_list, key=lambda item: item.priority + item.path.lower(), reverse=False) |
| 297 | syspath = sys.path |
| 298 | |
| 299 | def register_scripts_from_module(module: ModuleType, scriptfile): |
| 300 | for script_class in module.__dict__.values(): |
| 301 | if type(script_class) != type: |
| 302 | continue |
| 303 | debug(f'Registering script: path="{scriptfile.path}"') |
| 304 | if issubclass(script_class, Script): |
| 305 | scripts_data.append(ScriptClassData(script_class, scriptfile.path, scriptfile.basedir, module)) |
| 306 | elif issubclass(script_class, scripts_postprocessing.ScriptPostprocessing): |
| 307 | postprocessing_scripts_data.append(ScriptClassData(script_class, scriptfile.path, scriptfile.basedir, module)) |
| 308 | |
| 309 | for scriptfile in scripts_list: |
| 310 | try: |
| 311 | if scriptfile.basedir != paths.script_path: |
| 312 | sys.path = [scriptfile.basedir] + sys.path |
| 313 | current_basedir = scriptfile.basedir |
| 314 | script_module = script_loading.load_module(scriptfile.path) |
| 315 | register_scripts_from_module(script_module, scriptfile) |
| 316 | except Exception as e: |
| 317 | errors.display(e, f'Load script: {scriptfile.filename}') |
| 318 | finally: |
| 319 | current_basedir = paths.script_path |
| 320 | t.record(os.path.basename(scriptfile.basedir) if scriptfile.basedir != paths.script_path else scriptfile.filename) |
| 321 | sys.path = syspath |
| 322 | |
| 323 | global scripts_txt2img, scripts_img2img, scripts_control, scripts_postproc # pylint: disable=global-statement |
| 324 | scripts_txt2img = ScriptRunner('txt2img') |
| 325 | scripts_img2img = ScriptRunner('img2img') |
| 326 | scripts_control = ScriptRunner('control') |
| 327 | scripts_postproc = scripts_postprocessing.ScriptPostprocessingRunner() |
| 328 | return t, time.time()-t0 |
| 329 | |
| 330 | |
| 331 | def wrap_call(func: Callable, filename: str, funcname: str, *args, default=None, **kwargs): |
nothing calls this directly
no test coverage detected