MCPcopy
hub / github.com/vladmandic/sdnext / Options

Class Options

modules/options_handler.py:23–264  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

21
22
23class Options:
24 data_labels: dict[str, OptionInfo | LegacyOption]
25 data: dict[str, Any]
26 secrets: dict[str, Any]
27 typemap = {int: float}
28 debug = os.environ.get('SD_CONFIG_DEBUG', None) is not None
29 secrets_debug = os.environ.get("SD_SECRETS_DEBUG", None) is not None
30
31 def __init__(self, options_templates: dict[str, OptionInfo | LegacyOption] | None = None, restricted: set[str] | None = None, *, filename = '', secrets = ''):
32 if options_templates is None:
33 options_templates = {}
34 if restricted is None:
35 restricted = set()
36 super().__setattr__('data_labels', options_templates)
37 super().__setattr__('data', {k: v.default for k, v in options_templates.items()})
38 super().__setattr__('secrets', {})
39 self.filename: str = filename or cmd_opts.config
40 self.secretsfn: str = secrets or cmd_opts.secrets
41 self.restricted: set[str] = restricted
42 self.legacy = [k for k, v in options_templates.items() if isinstance(v, LegacyOption)]
43 self.load()
44
45 def __getattr__(self, item):
46 if item == 'secrets':
47 return super().__getattribute__('secrets')
48 if item == 'data':
49 return super().__getattribute__('data')
50 if item in self.secrets:
51 if self.secrets_debug:
52 fn = f"{sys._getframe(2).f_code.co_name}:{sys._getframe(1).f_code.co_name}" # pylint: disable=protected-access
53 log.trace(f"Secret: get={item} fn={fn}")
54 return self.secrets[item]
55 if item in self.data:
56 return self.data[item]
57 if item in self.data_labels:
58 return self.data_labels[item].default
59 return super().__getattribute__(item) # pylint: disable=super-with-arguments
60
61 def get(self, item):
62 if item in self.secrets:
63 if self.secrets_debug:
64 fn = f'{sys._getframe(2).f_code.co_name}:{sys._getframe(1).f_code.co_name}' # pylint: disable=protected-access
65 log.trace(f"Secret: get={item} fn={fn}")
66 return self.secrets[item]
67 if item in self.data:
68 return self.data[item]
69 if item in self.data_labels:
70 return self.data_labels[item].default
71 return super().__getattribute__(item) # pylint: disable=super-with-arguments
72
73 def __setattr__(self, key, value): # pylint: disable=inconsistent-return-statements
74 if (key in self.data_labels) or (key in self.data) or (key in self.secrets):
75 if cmd_opts.freeze:
76 log.warning(f"Settings are frozen: {key}")
77 return
78 if cmd_opts.hide_ui_dir_config and key in self.restricted:
79 log.warning(f"Settings key is restricted: {key}")
80 return

Callers 1

shared.pyFile · 0.90

Calls 1

getMethod · 0.45

Tested by

no test coverage detected