Ophyd-async

Latest version: v0.9.0

Safety actively analyzes 710445 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 2 of 6

0.8.0a4

What's Changed
* Update to copier 2.5.0 by coretl in https://github.com/bluesky/ophyd-async/pull/637
* Speed up device creation and connection in mock mode by coretl in https://github.com/bluesky/ophyd-async/pull/641


**Full Changelog**: https://github.com/bluesky/ophyd-async/compare/v0.8.0a3...v0.8.0a4

0.8.0a3

What's Changed
* Windows: fix unit tests & enable CI by Tom-Willemsen in https://github.com/bluesky/ophyd-async/pull/633
* Declarative EPICS and StandardReadable Devices by coretl in https://github.com/bluesky/ophyd-async/pull/598

Changes

pvi structure changes
Structure read from `.value` now includes `DeviceVector` support. Requires at least PandABlocks-ioc 0.11.2

Epics `signal` module moves
`ophyd_async.epics.signal` moves to `ophyd_async.epics.core` with a backwards compat module that emits deprecation warning.
python
old
from ophyd_async.epics.signal import epics_signal_rw
new
from ophyd_async.epics.core import epics_signal_rw


`StandardReadable` wrappers change to `StandardReadableFormat`
`StandardReadable` wrappers change to enum members of `StandardReadableFormat` (normally imported as `Format`)
python
old
from ophyd_async.core import ConfigSignal, HintedSignal
class MyDevice(StandardReadable):
def __init__(self):
self.add_readables([sig1], ConfigSignal)
self.add_readables([sig2], HintedSignal)
self.add_readables([sig3], HintedSignal.uncached)
new
from ophyd_async.core import StandardReadableFormat as Format
class MyDevice(StandardReadable):
def __init__(self):
self.add_readables([sig1], Format.CONFIG_SIGNAL)
self.add_readables([sig2], Format.HINTED_SIGNAL)
self.add_readables([sig3], Format.HINTED_UNCACHED_SIGNAL


Declarative Devices are now available
python
old
from ophyd_async.core import ConfigSignal, HintedSignal
from ophyd_async.epics.signal import epics_signal_r, epics_signal_rw

class Sensor(StandardReadable):
def __init__(self, prefix: str, name="") -> None:
with self.add_children_as_readables(HintedSignal):
self.value = epics_signal_r(float, prefix + "Value")
with self.add_children_as_readables(ConfigSignal):
self.mode = epics_signal_rw(EnergyMode, prefix + "Mode")
super().__init__(name=name)
new
from typing import Annotated as A
from ophyd_async.core import StandardReadableFormat as Format
from ophyd_async.epics.core import EpicsDevice, PvSuffix, epics_signal_r, epics_signal_rw

class Sensor(StandardReadable, EpicsDevice):
value: A[SignalR[float], PvSuffix("Value"), Format.HINTED_SIGNAL]
mode: A[SignalRW[EnergyMode], PvSuffix("Mode"), Format.CONFIG_SIGNAL]


**Full Changelog**: https://github.com/bluesky/ophyd-async/compare/v0.8.0a2...v0.8.0a3

0.8.0a2

What's Changed
* Allow CA/PVA mismatching enums to be bools by coretl in https://github.com/bluesky/ophyd-async/pull/632
* Allow shared parent mock to be passed to Device.connect by jsouter in https://github.com/bluesky/ophyd-async/pull/599
* Report Device name in error when using AsyncStatus.wrap by jsouter in https://github.com/bluesky/ophyd-async/pull/607
* Temporary fix for PyPI publishing by coretl in https://github.com/bluesky/ophyd-async/pull/634


**Full Changelog**: https://github.com/bluesky/ophyd-async/compare/v0.8.0a1...v0.8.0a2

0.8.0a1

What's Changed
* Add test for context race condition by DominicOram in https://github.com/bluesky/ophyd-async/pull/600
* New signal typing by coretl in https://github.com/bluesky/ophyd-async/pull/594
* Update copier template to 2.4.0 by coretl in https://github.com/bluesky/ophyd-async/pull/628
* Logo by coretl in https://github.com/bluesky/ophyd-async/pull/629

Breaking changes
pvi structure changes
Structure now read from `.value` rather than `.pvi`. Supported in FastCS. Requires at least PandABlocks-ioc 0.10.0
`StrictEnum` is now requried for all strictly checked `Enums`
python
old
from enum import Enum
class MyEnum(str, Enum):
ONE = "one"
TWO = "two"
new
from ophyd_async.core import StrictEnum
class MyEnum(StrictEnum):
ONE = "one"
TWO = "two"

`SubsetEnum` is now an `Enum` subclass:
python
from ophyd_async.core import SubsetEnum
old
MySubsetEnum = SubsetEnum["one", "two"]
new
class MySubsetEnum(SubsetEnum):
ONE = "one"
TWO = "two"

Use python primitives for scalar types instead of numpy types
python
old
import numpy as np
x = epics_signal_rw(np.int32, "PV")
new
x = epics_signal_rw(int, "PV")

Use `Array1D` for 1D arrays instead of `npt.NDArray`
python
import numpy as np
old
import numpy.typing as npt
x = epics_signal_rw(npt.NDArray[np.int32], "PV")
new
from ophyd_async.core import Array1D
x = epics_signal_rw(Array1D[np.int32], "PV")

Use `Sequence[str]` for arrays of strings instead of `npt.NDArray[np.str_]`
python
import numpy as np
old
import numpy.typing as npt
x = epics_signal_rw(npt.NDArray[np.str_], "PV")
new
from collections.abc import Sequence
x = epics_signal_rw(Sequence[str], "PV")

`MockSignalBackend` requires a real backend
python
old
fake_set_signal = SignalRW(MockSignalBackend(float))
new
fake_set_signal = soft_signal_rw(float)
await fake_set_signal.connect(mock=True)

`get_mock_put` is no longer passed timeout as it is handled in `Signal`
python
old
get_mock_put(driver.capture).assert_called_once_with(Writing.ON, wait=ANY, timeout=ANY)
new
get_mock_put(driver.capture).assert_called_once_with(Writing.ON, wait=ANY)

`super().__init__` required for `Device` subclasses
python
old
class MyDevice(Device):
def __init__(self, name: str = ""):
self.signal, self.backend_put = soft_signal_r_and_setter(int)
new
class MyDevice(Device):
def __init__(self, name: str = ""):
self.signal, self.backend_put = soft_signal_r_and_setter(int)
super().__init__(name=name)

Arbitrary `BaseModel`s not supported, pending use cases for them
The `Table` type has been suitable for everything we have seen so far, if you need an arbitrary `BaseModel` subclass then please make an issue
Child `Device`s set parent on attach, and can't be public children of more than one parent
python
class SourceDevice(Device):
def __init__(self, name: str = ""):
self.signal = soft_signal_rw(int)
super().__init__(name=name)

old
class ReferenceDevice(Device):
def __init__(self, signal: SignalRW[int], name: str = ""):
self.signal = signal
super().__init__(name=name)

def set(self, value) -> AsyncStatus:
return self.signal.set(value + 1)
new
from ophyd_async.core import Reference

class ReferenceDevice(Device):
def __init__(self, signal: SignalRW[int], name: str = ""):
self._signal_ref = Reference(signal)
super().__init__(name=name)

def set(self, value) -> AsyncStatus:
return self._signal_ref().set(value + 1)


**Full Changelog**: https://github.com/bluesky/ophyd-async/compare/v0.7.0...v0.8.0a1

0.7.0

What's Changed
* fixed typos by ZohebShaikh in https://github.com/bluesky/ophyd-async/pull/589
* Make table subclass enums be sequence enum rather than numpy string by evalott100 in https://github.com/bluesky/ophyd-async/pull/579
* Reset completed iterations counter to 0 once target iterations are reached and detector is disarmed by jwlodek in https://github.com/bluesky/ophyd-async/pull/590
* Simplify ad standard det tests by jwlodek in https://github.com/bluesky/ophyd-async/pull/592
* Remove config sigs kwarg from flyer since use case for them was unclear. by jwlodek in https://github.com/bluesky/ophyd-async/pull/593
* added number_of_frames instead of iterations by ZohebShaikh in https://github.com/bluesky/ophyd-async/pull/581
* Rename core classes by abbiemery in https://github.com/bluesky/ophyd-async/pull/577
* Tango support by burkeds in https://github.com/bluesky/ophyd-async/pull/437
* add Capture mode signal to Panda DataBlock by jsouter in https://github.com/bluesky/ophyd-async/pull/604
* with DeviceCollector doesn't work in plans, so error rather than hang by coretl in https://github.com/bluesky/ophyd-async/pull/612

New Contributors
* burkeds made their first contribution in https://github.com/bluesky/ophyd-async/pull/437

**Full Changelog**: https://github.com/bluesky/ophyd-async/compare/v0.6.0...v0.7.0

0.7.0a1

What's Changed
* fixed typos by ZohebShaikh in https://github.com/bluesky/ophyd-async/pull/589
* Make table subclass enums be sequence enum rather than numpy string by evalott100 in https://github.com/bluesky/ophyd-async/pull/579
* Reset completed iterations counter to 0 once target iterations are reached and detector is disarmed by jwlodek in https://github.com/bluesky/ophyd-async/pull/590
* Simplify ad standard det tests by jwlodek in https://github.com/bluesky/ophyd-async/pull/592
* Remove config sigs kwarg from flyer since use case for them was unclear. by jwlodek in https://github.com/bluesky/ophyd-async/pull/593
* added number_of_frames instead of iterations by ZohebShaikh in https://github.com/bluesky/ophyd-async/pull/581
* Rename core classes by abbiemery in https://github.com/bluesky/ophyd-async/pull/577
* Tango support by burkeds in https://github.com/bluesky/ophyd-async/pull/437

New Contributors
* burkeds made their first contribution in https://github.com/bluesky/ophyd-async/pull/437

**Full Changelog**: https://github.com/bluesky/ophyd-async/compare/v0.6.0...v0.7.0a1

Page 2 of 6

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.