You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In [1]: from ophyd_async.core import save_device
In [2]: RE(save_device(panda1, "test.yml"))
An exception has occurred, use '%tb verbose' to see the full traceback.
TypeError: string indices must be integers, not 'str'
See /nsls2/users/jwlodek/.cache/bluesky/log/bluesky.log for the full traceback.
In [3]: panda1
Out[3]: <ophyd_async.fastcs.panda._hdf_panda.HDFPanda at 0x7f18f1ec4790>
Doing a verbose traceback shows the error comes from p4p:
File ~/.ipython/profile_collection_tst/venv/lib64/python3.11/site-packages/bluesky/utils/__init__.py:1929, in maybe_await(ret=<coroutine object SignalRW.locate>)
1927 async def maybe_await(ret: SyncOrAsync[T]) -> T:
1928 if inspect.isawaitable(ret):
-> 1929 return await ret
ret = <coroutine object SignalRW.locate at 0x7f18da2e3780>
1930 else:
1931 # Mypy does not understand how to narrow type to non-awaitable in this
1932 # instance, see https://github.com/python/mypy/issues/15520
1933 return ret
File ~/.ipython/profile_collection_tst/venv/lib64/python3.11/site-packages/ophyd_async/core/_signal.py:263, in SignalRW.locate(self=<ophyd_async.core._signal.SignalRW object>)
261 async def locate(self) -> Location:
262 location: Location = {
--> 263 "setpoint": await self._backend.get_setpoint(),
Location = <class 'bluesky.protocols.Location'>
self._backend = <ophyd_async.epics.signal._p4p.PvaSignalBackend object at 0x7f18da384a10>
self = <ophyd_async.core._signal.SignalRW object at 0x7f18da384b50>
264 "readback": await self.get_value(),
265 }
266 return location
File ~/.ipython/profile_collection_tst/venv/lib64/python3.11/site-packages/ophyd_async/epics/signal/_p4p.py:448, in PvaSignalBackend.get_setpoint(self=<ophyd_async.epics.signal._p4p.PvaSignalBackend object>)
446 async def get_setpoint(self) -> T:
447 value = await self.ctxt.get(self.write_pv, "field(value)")
--> 448 return self.converter.value(value)
value = Value(id:epics:nt/NTScalar:1.0, 'PCAP.ACTIVE')
self.converter = PvaEnumConverter()
self = <ophyd_async.epics.signal._p4p.PvaSignalBackend object at 0x7f18da384a10>
File ~/.ipython/profile_collection_tst/venv/lib64/python3.11/site-packages/ophyd_async/epics/signal/_p4p.py:231, in PvaEnumConverter.value(self=PvaEnumConverter(), value=Value(id:epics:nt/NTScalar:1.0, 'PCAP.ACTIVE'))
230 def value(self, value):
--> 231 return self.choices[value["value"]["index"]]
self.choices = ('ZERO', 'ONE')
self = PvaEnumConverter()
value = Value(id:epics:nt/NTScalar:1.0, 'PCAP.ACTIVE')
TypeError: string indices must be integers, not 'str'
It seems value['value'] is returning the string name of the record, not the value.
ipdb> value['value']
'PCAP.ACTIVE'
The text was updated successfully, but these errors were encountered:
Short traceback:
Doing a verbose traceback shows the error comes from p4p:
It seems value['value'] is returning the string name of the record, not the value.
The text was updated successfully, but these errors were encountered: