Skip to content

Commit 2313b02

Browse files
authored
Merge pull request #93 from python-accelerator-middle-layer/add-post-init-hook
Added post_init() hook
2 parents a0c5ca4 + 010aa00 commit 2313b02

File tree

5 files changed

+31
-4
lines changed

5 files changed

+31
-4
lines changed

pyaml/accelerator.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ def __init__(self, cfg: ConfigModel):
7474
if cfg.energy is not None:
7575
self.set_energy(cfg.energy)
7676

77+
self.post_init()
78+
7779
def set_energy(self, E: float):
7880
if self._cfg.simulators is not None:
7981
for s in self._cfg.simulators:
@@ -82,6 +84,17 @@ def set_energy(self, E: float):
8284
for c in self._cfg.controls:
8385
c.set_energy(E)
8486

87+
def post_init(self):
88+
"""
89+
Method triggered after all initialisations are done
90+
"""
91+
if self._cfg.simulators is not None:
92+
for s in self._cfg.simulators:
93+
s.post_init()
94+
if self._cfg.controls is not None:
95+
for c in self._cfg.controls:
96+
c.post_init()
97+
8598
@property
8699
def live(self) -> ControlSystem:
87100
return self.__live

pyaml/common/element.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,5 +78,11 @@ def get_peer(self) -> str:
7878
else f"{self._peer.__class__.__name__}:{self._peer.name()}"
7979
)
8080

81+
def post_init(self):
82+
"""
83+
Method triggered after all initialisations are done
84+
"""
85+
pass
86+
8187
def __repr__(self):
8288
return __pyaml_repr__(self)

pyaml/common/element_holder.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,13 @@ def __init__(self):
4040
self.__BPM_ARRAYS: dict = {}
4141
self.__ELEMENT_ARRAYS: dict = {}
4242

43+
def post_init(self):
44+
"""
45+
Method triggered after all initialisations are done
46+
"""
47+
for e in self.get_all_elements():
48+
e.post_init()
49+
4350
def fill_device(self, elements: list[Element]):
4451
raise PyAMLException("ElementHolder.fill_device() is not subclassed")
4552

pyaml/tuning_tools/tune.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -179,9 +179,6 @@ def readback(self):
179179
Return the betatron tune measurement
180180
"""
181181
self.check_peer()
182-
if not self.__tm:
183-
# Lazily attach the tune monitor
184-
self.__tm = self._peer.get_betatron_tune_monitor(self._cfg.betatron_tune)
185182
return self.__tm.tune.get()
186183

187184
def set(self, tune: np.array, iter: int = 1, wait_time: float = 0.0):
@@ -211,6 +208,10 @@ def set(self, tune: np.array, iter: int = 1, wait_time: float = 0.0):
211208
def response(self) -> TuneResponse:
212209
return self.__tr
213210

211+
def post_init(self):
212+
self.check_peer()
213+
self.__tm = self._peer.get_betatron_tune_monitor(self._cfg.betatron_tune)
214+
214215
def attach(
215216
self,
216217
peer: "ElementHolder",

tests/config/ideal_orm_disp.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)