Skip to content

Commit eeb6d4b

Browse files
committed
Factorized __repr__
1 parent 4fbd544 commit eeb6d4b

File tree

13 files changed

+46
-29
lines changed

13 files changed

+46
-29
lines changed

pyaml/bpm/bpm.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,4 @@ def attach(self, peer, positions: RBpmArray , offset: RWBpmOffsetArray,
7474
obj.__tilt = tilt
7575
obj._peer = peer
7676
return obj
77-
78-
def __repr__(self):
79-
return repr(self._cfg).replace("ConfigModel(",self.__class__.__name__ + "(peer='" + self.get_peer() + "', ")
77+

pyaml/bpm/bpm_simple_model.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
from pydantic import BaseModel,ConfigDict
33
import numpy as np
44
from ..control.deviceaccess import DeviceAccess
5+
from ..common.element import __pyaml_repr__
6+
57
from numpy.typing import NDArray
68
# Define the main class name for this module
79
PYAMLCLASS = "BPMSimpleModel"
@@ -115,4 +117,5 @@ def get_offset_devices(self) -> list[DeviceAccess]:
115117
return []
116118

117119
def __repr__(self):
118-
return repr(self._cfg).replace("ConfigModel",self.__class__.__name__)
120+
return __pyaml_repr__(self)
121+

pyaml/bpm/bpm_tiltoffset_model.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
from pydantic import BaseModel,ConfigDict
44
import numpy as np
55
from ..control.deviceaccess import DeviceAccess
6+
from ..common.element import __pyaml_repr__
7+
68
from numpy.typing import NDArray
79
# Define the main class name for this module
810
PYAMLCLASS = "BPMTiltOffsetModel"
@@ -113,3 +115,6 @@ def get_offset_devices(self) -> list[DeviceAccess]:
113115
Array of DeviceAcess
114116
"""
115117
return [self.__x_offset,self.__y_offset]
118+
119+
def __repr__(self):
120+
return __pyaml_repr__(self)

pyaml/common/element.py

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,21 @@
22

33
from pydantic import BaseModel,ConfigDict
44

5+
6+
def __pyaml_repr__(obj):
7+
"""
8+
Returns a string representation of a pyaml object
9+
"""
10+
if hasattr(obj,"_cfg"):
11+
if isinstance(obj,Element):
12+
return repr(obj._cfg).replace("ConfigModel(",obj.__class__.__name__ + "(peer='" + obj.get_peer() + "', ")
13+
else:
14+
# no peer
15+
return repr(obj._cfg).replace("ConfigModel",obj.__class__.__name__ )
16+
else:
17+
# Default to repr
18+
return repr(obj)
19+
520
class ElementConfigModel(BaseModel):
621

722
model_config = ConfigDict(arbitrary_types_allowed=True,extra="forbid")
@@ -47,8 +62,8 @@ def get_peer(self) -> str:
4762
return "None" if self._peer is None else f"{self._peer.__class__.__name__}:{self._peer.name()}"
4863

4964
def __repr__(self):
50-
return "%s(name='%s', peer='%s')" % (
51-
self.__class__.__name__,
52-
self.__name,
53-
self.get_peer()
54-
)
65+
return __pyaml_repr__(self)
66+
67+
68+
69+

pyaml/diagnostics/tune_monitor.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,3 @@ def attach(self, peer, betatron_tune: ReadFloatArray) -> Self:
4747
obj._peer = peer
4848
return obj
4949

50-
def __repr__(self):
51-
return repr(self._cfg).replace("ConfigModel(",self.__class__.__name__ + "(peer='" + self.get_peer() + "', ")
52-

pyaml/magnet/cfm_magnet.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11

22
from .model import MagnetModel
3-
from ..common.element import Element,ElementConfigModel
3+
from ..common.element import Element,ElementConfigModel,__pyaml_repr__
44
from ..common import abstract
55
from ..common.abstract import RWMapper
66
from ..common.exception import PyAMLException
@@ -87,4 +87,5 @@ def set_energy(self,E:float):
8787
self.model.set_magnet_rigidity(E/speed_of_light)
8888

8989
def __repr__(self):
90-
return repr(self._cfg).replace("ConfigModel",self.__class__.__name__)
90+
return __pyaml_repr__(self)
91+

pyaml/magnet/identity_cfm_model.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from .model import MagnetModel
55
from .. import PyAMLException
66
from ..control.deviceaccess import DeviceAccess
7+
from ..common.element import __pyaml_repr__
78

89
# Define the main class name for this module
910
PYAMLCLASS = "IdentityCFMagnetModel"
@@ -88,4 +89,4 @@ def has_hardware(self) -> bool:
8889
return self._cfg.powerconverters is not None
8990

9091
def __repr__(self):
91-
return repr(self._cfg).replace("ConfigModel",self.__class__.__name__)
92+
return __pyaml_repr__(self)

pyaml/magnet/identity_model.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from .model import MagnetModel
22
from .. import PyAMLException
33
from ..control.deviceaccess import DeviceAccess
4+
from ..common.element import __pyaml_repr__
45

56
import numpy as np
67
from pydantic import BaseModel,ConfigDict
@@ -70,4 +71,4 @@ def has_hardware(self) -> bool:
7071
return self._cfg.powerconverter is not None
7172

7273
def __repr__(self):
73-
return repr(self._cfg).replace("ConfigModel",self.__class__.__name__)
74+
return __pyaml_repr__(self)

pyaml/magnet/linear_cfm_model.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from ..control.deviceaccess import DeviceAccess
44
from .model import MagnetModel
55
from ..common.exception import PyAMLException
6+
from ..common.element import __pyaml_repr__
67

78
from pydantic import BaseModel,ConfigDict
89
import numpy as np
@@ -164,4 +165,5 @@ def has_hardware(self) -> bool:
164165
return (self.__nbPS == self.__nbFunction) and np.allclose(self.__matrix, np.eye(self.__nbFunction))
165166

166167
def __repr__(self):
167-
return repr(self._cfg).replace("ConfigModel",self.__class__.__name__)
168+
return __pyaml_repr__(self)
169+

pyaml/magnet/linear_model.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from .model import MagnetModel
22
from ..configuration.curve import Curve
33
from ..control.deviceaccess import DeviceAccess
4+
from ..common.element import __pyaml_repr__
45

56
import numpy as np
67
from pydantic import BaseModel,ConfigDict
@@ -76,5 +77,6 @@ def set_magnet_rigidity(self, brho: np.double):
7677
self.__brho = brho
7778

7879
def __repr__(self):
79-
return repr(self._cfg).replace("ConfigModel",self.__class__.__name__)
80+
return __pyaml_repr__(self)
81+
8082

0 commit comments

Comments
 (0)