30 lines
1.2 KiB
Python
30 lines
1.2 KiB
Python
import logging
|
|
from typing import Any, Dict
|
|
from modules.shared import opts
|
|
|
|
log = logging.getLogger(__name__)
|
|
|
|
class A1111OptionsOverrider(object):
|
|
def __init__(self, opts_overrides: Dict[str, Any]):
|
|
self.opts_overrides = opts_overrides
|
|
|
|
def __enter__(self):
|
|
if self.opts_overrides is not None and len(self.opts_overrides)>0:
|
|
self.original_opts = {k: opts.data[k] for k in self.opts_overrides.keys() if k in opts.data}
|
|
log.debug(f"Captured options to override: {self.original_opts}")
|
|
log.info(f"Setting options: {self.opts_overrides}")
|
|
for k, v in self.opts_overrides.items():
|
|
setattr(opts, k, v)
|
|
else:
|
|
self.original_opts = None
|
|
return self
|
|
|
|
def __exit__(self, exception_type, exception_value, traceback):
|
|
if (exception_type is not None):
|
|
log.warning(f"Error during batch execution: {exception_type} - {exception_value}")
|
|
log.debug(f"{traceback}")
|
|
if (self.original_opts is not None):
|
|
log.info(f"Restoring options: {self.original_opts}")
|
|
for k, v in self.original_opts.items():
|
|
setattr(opts, k, v)
|