CellModules
parameters.py
Go to the documentation of this file.
1import json
2from pathlib import Path
3from copy import deepcopy
4import sys
5
7 def __init__(self):
8 self.__data__ = None
9
11 try:
12 text = (Path(__file__).resolve().parent / 'static' / 'config' / 'parameters.json').read_text()
13 self.__data__ = json.loads(text)
14 except Exception as e:
15 print(f"Error loading parameters: {e}", file=sys.stderr)
16 self.__data__ = {}
17 raise
18
19 def get(self, key):
20 if self.__data__ is None:
22 try:
23 return deepcopy(self.__data__[key])
24 except KeyError:
25 raise KeyError(f"Parameter '{key}' does not exist. Available parameters: {list(self.__data__.keys())}")
26
27 def save(self, key, value):
28 if self.__data__ is None:
30 self.__data__[key] = value
31 # Save the updated parameters back to the file
32 with open((Path(__file__).resolve().parent / 'static' / 'config' / 'parameters.json'), 'w') as f:
33 json.dump(self.__data__, f, indent=2)
34
35 def remove(self, key):
36 if self.__data__ is None:
38 if key in self.__data__:
39 del self.__data__[key]
40 # Save the updated parameters back to the file
41 with open((Path(__file__).resolve().parent / 'static' / 'config' / 'parameters.json'), 'w') as f:
42 json.dump(self.__data__, f, indent=2)
43 else:
44 raise AttributeError(f"Parameter '{key}' does not exist.")
45
46 def __setattr__(self, key, value):
47 if key == '__data__':
48 super().__setattr__(key, value)
49 else:
50 self.save(key, value)
51
52 def __delattr__(self, name):
53 if name != '__data__':
54 self.remove(name)
55
56 def __getitem__(self, key):
57 return self.get(key)
58
59 def __setitem__(self, key, value):
60 self.save(key, value)
61
62 def __getattr__(self, key):
63 return self.get(key)
64
65 def paramsAvailable(self):
66 if self.__data__ is None:
68 return list(self.__data__.keys())
69
70Parameters = Parameters()
def paramsAvailable(self)
Definition: parameters.py:65
def __load_parameters(self)
Definition: parameters.py:10
def __init__(self)
Definition: parameters.py:7
def __getitem__(self, key)
Definition: parameters.py:56
def get(self, key)
Definition: parameters.py:19
def __setattr__(self, key, value)
Definition: parameters.py:46
def __delattr__(self, name)
Definition: parameters.py:52
def __getattr__(self, key)
Definition: parameters.py:62
def __setitem__(self, key, value)
Definition: parameters.py:59
def remove(self, key)
Definition: parameters.py:35
def save(self, key, value)
Definition: parameters.py:27