Skip to content

Commit f41824d

Browse files
committed
Move View to xtrack
1 parent 7ef52a6 commit f41824d

File tree

1 file changed

+0
-183
lines changed

1 file changed

+0
-183
lines changed

xdeps/madxutils.py

Lines changed: 0 additions & 183 deletions
Original file line numberDiff line numberDiff line change
@@ -121,189 +121,6 @@ def _eval(self, expr):
121121
return self._r._eval(expr)
122122

123123

124-
class View:
125-
def __init__(self, obj, ref, evaluator):
126-
if type(obj) is View:
127-
obj = obj._get_viewed_object()
128-
object.__setattr__(self, "_obj", obj)
129-
object.__setattr__(self, "_ref", ref)
130-
object.__setattr__(self, "_eval", evaluator)
131-
132-
def _get_viewed_object(self):
133-
return object.__getattribute__(self, "_obj")
134-
135-
@property
136-
def __class__(self):
137-
# return type("View",(self._obj.__class__,),{})
138-
return self._obj.__class__
139-
140-
def get_value(self, key=None):
141-
if not hasattr(self._obj, "keys") and not hasattr(self._obj, "_xofields"):
142-
raise ValueError("get_value not supported for this object")
143-
144-
if key is None:
145-
if hasattr(self._obj, "_xofields"):
146-
return {kk: self.get_value(kk) for kk in self._obj._xofields}
147-
else:
148-
return {kk: self.get_value(kk) for kk in dir(self._obj)}
149-
150-
if hasattr(self._obj, "__iter__"):
151-
return self._obj[key]
152-
else:
153-
return getattr(self._obj, key)
154-
155-
def get_expr(self, key=None, index=None):
156-
if index is not None:
157-
if key is None:
158-
raise ValueError('`key` must be provided when `index` is provided.')
159-
return getattr(self._ref, key)[index]._expr
160-
161-
if not hasattr(self._obj, "keys") and not hasattr(self._obj, "_xofields"):
162-
# is an array
163-
return self._ref[key]._expr
164-
165-
if key is None:
166-
if hasattr(self._obj, "_xofields"):
167-
return {kk: self.get_expr(kk) for kk in self._obj._xofields}
168-
else:
169-
return {kk: self.get_expr(kk) for kk in dir(self._obj)}
170-
171-
if hasattr(self._obj, "__iter__"):
172-
return self._ref[key]._expr
173-
else:
174-
return getattr(self._ref, key)._expr
175-
176-
177-
def get_info(self, key=None):
178-
if not hasattr(self._obj, "keys") and not hasattr(self._obj, "_xofields"):
179-
raise ValueError("get_info not supported for this object")
180-
181-
if key is None:
182-
print("Element of type: ", self._obj.__class__.__name__)
183-
self.get_table().show(header=True, max_col_width=100)
184-
else:
185-
if hasattr(self._obj, "__iter__"):
186-
return self._ref[key]._info()
187-
else:
188-
return getattr(self._ref, key)._info()
189-
190-
def get_table(self):
191-
192-
if not hasattr(self._obj, "keys") and not hasattr(self._obj, "_xofields"):
193-
raise ValueError("get_table not supported for this object")
194-
195-
out_expr = self.get_expr()
196-
out_value = self.get_value()
197-
198-
value = [out_value[kk] for kk in out_expr.keys()]
199-
for ii, vv in enumerate(value):
200-
if not(np.isscalar(vv)):
201-
value[ii] = str(vv)
202-
203-
data = {
204-
"name": np.array(list(out_expr.keys()), dtype=object),
205-
"value": np.array(value, dtype=object),
206-
"expr": np.array(
207-
[str(out_expr[kk]) for kk in out_expr.keys()], dtype=object
208-
),
209-
}
210-
return Table(data)
211-
212-
def __getattr__(self, key):
213-
val = getattr(self._obj, key)
214-
if hasattr(val, "__setitem__"):
215-
return View(val, getattr(self._ref, key), self._eval)
216-
else:
217-
return val
218-
219-
def __getitem__(self, key):
220-
val = self._obj[key]
221-
if hasattr(val, "__setitem__"):
222-
return View(val, self._ref[key], self._eval)
223-
else:
224-
return val
225-
226-
def __setattr__(self, key, value):
227-
if isinstance(value, str):
228-
if hasattr(self._obj, "_noexpr_fields") and key in self._obj._noexpr_fields:
229-
value = value
230-
else:
231-
value = self._eval(value)
232-
setattr(self._ref, key, value)
233-
234-
def __setitem__(self, key, value):
235-
if isinstance(value, str):
236-
value = self._eval(value)
237-
self._ref[key] = value
238-
239-
def __repr__(self):
240-
return f"View of {self._obj!r}"
241-
242-
def __dir__(self):
243-
return dir(self._obj)
244-
245-
def __len__(self):
246-
return len(self._obj)
247-
248-
def __add__(self, other):
249-
return self._obj + other
250-
251-
def __radd__(self, other):
252-
return other + self._obj
253-
254-
def __sub__(self, other):
255-
return self._obj - other
256-
257-
def __rsub__(self, other):
258-
return other - self._obj
259-
260-
def __mul__(self, other):
261-
return self._obj * other
262-
263-
def __rmul__(self, other):
264-
return other * self._obj
265-
266-
def __truediv__(self, other):
267-
return self._obj / other
268-
269-
def __rtruediv__(self, other):
270-
return other / self._obj
271-
272-
def __floordiv__(self, other):
273-
return self._obj // other
274-
275-
def __rfloordiv__(self, other):
276-
return other // self._obj
277-
278-
def __mod__(self, other):
279-
return self._obj % other
280-
281-
def __rmod__(self, other):
282-
return other % self._obj
283-
284-
def __pow__(self, other):
285-
return self._obj**other
286-
287-
def __rpow__(self, other):
288-
return other**self._obj
289-
290-
def __eq__(self, value: object) -> bool:
291-
return self._obj == value
292-
293-
def __ne__(self, value: object) -> bool:
294-
return self._obj != value
295-
296-
def __lt__(self, value: object) -> bool:
297-
return self._obj < value
298-
299-
def __le__(self, value: object) -> bool:
300-
return self._obj <= value
301-
302-
def __gt__(self, value: object) -> bool:
303-
return self._obj > value
304-
305-
def __ge__(self, value: object) -> bool:
306-
return self._obj >= value
307124

308125

309126
class MadxEnv:

0 commit comments

Comments
 (0)