Pcdsdevices

Latest version: v8.7.0

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

Scan your dependencies

Page 8 of 12

3.1.0

API Changes
-----------
- The `SxrGmD` device has been removed from `beam_stats` module. SXR has been
disassembled and the GMD was moved into the EBD. Its MJ PVs was not working
anymore.

Device Updates
--------------
- Added RTD PVs to KBOMirror class for bender actuators
- Added PTYPE PV to SmarAct class
- Added metadata to SmarAct jog pvs for better screens
- Added additional PVs to lasers/elliptec.py classes
- TuttiFruttiCls: Added an option to specify the controller channel for
Thorlabs Elliptec sliders.
- Added the Thorlabs WFS class to the TuttiFrutti class.

New Devices
-----------
- Add XYTargetGrid, an interactive utility class for managing a target grid
oriented normal to the beam, with regular X-Y spacing between targets.
- PCDSAreaDetectorTyphosBeamStats, a variant of PCSDAreaDetectorTyphos that
includes centroid information and the crosshair PVs.
- KBOMirror Class: Kirkpatrick-Baez Mirror class, X, Y, Pitch, Bender axes
- FFMirror Class: Kirkpatrick-Baez Mirror without Bender axes. (Fixed focus)
- LAMP motion Class for the LAMP endstation TMO. This includes the following motion axes:

- Gas Jet X/Y/Z Axes
- Gas Needle X/Y/Z Axes
- Sample Paddle X/Y/Z Axes

- A new LCLS class has been added to the `beam_stats` module that contains PVs
related to the Lcls Linac Status, as well as a few functions to support with
checking the BYKIK status, turning it On and Off, and setting the period.
- SmarActOpenLoopPositioner: Class intended for performing Bluesky scans using
open-loop SmarAct motors.

Bugfixes
--------
- Corrected X/Y error in KBOMirror and FFMirror classes
- Fix issues with L2SI Reflaser Picos being unable to successfully move.
This was because they were using the wrong motor class, which had extra
PVs that would never connect.
- Fixed a bug preventing instantiation of the Elliptec sliders in the
TuttiFrutti device.

Maintenance
-----------
- Add prefix and lightpath tests for KBOMirror.

Contributors
------------
- cristinasewell
- jsheppard95
- sfsyunus
- tjohnson
- zllentz

3.0.0

API Changes
-----------
- The calculations for `alio_to_theta` and `theta_to_alio` in `ccm.py`
have been reverted to the old calculations.
- User-facing move functions will not be able to catch the
:class:`~ophyd.utils.LimitError` exception. These interactive methods are
not meant to be used in scans, as that is the role of bluesky.

Features
--------
- :class:`pcdsdevices.attenuator.AT2L0` now has a textual representation of
filter status, and supports the move interface by way of transmission values.
- :class:`~pcdsdevices.pseudopos.SyncAxes` has been adjusted to support
scalar-valued pseudopositioners, allowing for more complex devices to be kept
in lock-step motion.
- :class:`~pcdsdevices.pseudopos.PseudoPositioner` position tuples, when of
length 1, now support casting to floating point, meaning they can be used
in many functions which only support floating point values.
- Added signal annotations for auto-generated notepad IOC support.

Device Updates
--------------
- Add event/trigger information to PPM, XPIM.
- Reclassify twincat motor and states error resets as "normal" for
accessibility.
- Add PMPS maintenance/config PVs class for TwinCAT states devices,
propagating this to all consumers.

New Devices
-----------
- Adds :class:`~pcdsdevices.lxe.LaserTimingCompensation` (``lxt_ttc``) which
synchronously moves :class:`LaserTiming` (``lxt``) with
:class:`~pcdsdevices.lxe.TimeToolDelay` (``txt``) to compensate so that the
true laser x-ray delay by using the ``lxt``-value and the result of time tool
data analysis, avoiding double-counting.
- Adds :class:`~pcdsdevices.lxe.TimeToolDelay`, an alias for
:class:`~pcdsdevices.pseudopos.DelayNewport` with additional contextual
information and room for future development.
- Add LaserInCoupling device for TMO.
- Add ArrivalTimeMonitor device for TMO.
- Add ReflaserL2SI device for TMO.

Bugfixes
--------
- Fixed a typo in a ``ValueError`` exception in
:meth:`pcdsdevices.state.StatePositioner.check_value`.
- A read-only PV was erroneously marked as read-write in
:class:`pcdsdevices.gauge.GaugeSerialGPI`, component ``autozero``.
All other devices were audited, finding no other RBV-related read-only items.
- The direction of :class:`LaserTiming` (``lxt``) was inverted and is now
fixed.
- Allow setting of :class:`~ophyd.EpicsMotor` limits when unset in the motor
record (i.e., ``(0, 0)``) when using
:class:`~pcdsdevices.epics_motor.EpicsMotorInterface`.

Maintenance
-----------
- Added a copy-pastable example to
:class:`~pcdsdevices.component.UnrelatedComponent` to ease creation of new
devices.
- Catch :class:`~ophyd.utils.LimitError` in all
:class:`pcdsdevices.interface.MvInterface` moves, reporting a simple error by
way of the interface module-level logger.

Contributors
------------
- cristinasewell
- klauer
- zlentz

2.11.0

API Changes
-----------
- BaseInterface` no longer inherits from `ophyd.OphydObject`.
- The order of multiple inheritance for many devices using the LCLS-enhanced
`BaseInterface`, `MvInterface`, and `FltMvInterface` has
been changed.
- Added `pcdsdevices.interface.TabCompletionHelperClass` to help hold
tab completion information state and also allow for tab-completion
customization on a per-instance level.
- `~pcdsdevices.interface.Presets` ``add_hutch`` (and all similar
``add_*``) methods no longer require a position. When unspecified, the
current position is used.

Features
--------
- For `pcdsdevices.pseudopos.DelayBase`, added
`~pcdsdevices.pseudopos.DelayBase.set_current_position` and its related
component `user_offset`, allowing for custom offsets.
- Epics motors can now have local limits updated per-session, rather than
only having the option of the EPICS limits. Setting limits attributes will
update the python limits, putting to the limits PVs will update the limits
PVs.
- Add PVPositionerDone, a setpoint-only PVPositioner class that is done moving
immediately. This is not much more useful than just using a PV, but it is
compatibile with pseudopositioners and has a built-in filter for ignoring
small moves.
- Moves using mv and umv will log their moves at info level for interactive
use to keep track of the sessions.
- Add ``user_offset`` to :class:`~pcdsdevices.signal.UnitConversionDerivedSignal`,
allowing for an arbitrary user offset in user-facing units.
- Add ``user_offset`` signal to the :class:`pcdsdevices.lxe.LaserTiming`, by
way of `~pcdsdevices.signal.UnitConversionDerivedSignal`, offset
support.

Device Updates
--------------
- CCM energy limited to the range of 4 to 25 keV
- CCM theta2fine done moving tolerance raised to 0.01
- Beam request default move start tolerance dropped to 5eV

New Devices
-----------
- Add WaveFrontSensorTarget for the wavefront sensor targets (PF1K0, PF1L0).
- Add TwinCATTempSensor for the updated twincat FB with corrected PV pragmas.

Bugfixes
--------
- Adds hints to the :class:`pcdsdevices.lxe.LaserTiming` class for
``LiveTable`` support.
- umv will now properly display position and completion status after a move.
- Tab completion for many devices has been fixed. Regression tests have been
added.
- Fix bug in PulsePickerInOut where it would grab only the first section of
of the PV instead of the first two
- Tweak will feel less "janky" now and give useful feedback.
- Tweak now accepts + and - as valid inputs for changing the step size.
- Tweak properly clears lines between prints.
- Fix issue where putting to the limits property would update live PVs,
contrary to the behavior of all other limits attributes in ophyd.
- Fix issue where doing a getattr on the limits properties would fetch
live PVs, which can cause slowdowns and instabilities.
- Preset methods are now visible when not in engineering mode. (576)
- Rework BeamEnergyPositioner to be setpoint-only to work properly
with the behavior of the energy PVs.
- FltMvPositioner.wm will now return numeric values if the position
value is a tuple. This value is the first element of the tuple, which
for pseudo positioners is a value that can be passed into move and have
it do the right thing. This resolves consistency issues and fixes bugs
where mvr and umvr would fail.
- Fixed a race condition in the EventSequencer device's status objects. Waiting
on these statuses will now be more reliable.
- Fix issue where converting units could incur time penalties of up to
7 seconds. This should take around 10ms now.
- Fix bug on beam request where you could not override the tolerance
via init kwarg, despite docstring's indication.

Maintenance
-----------
- Establish DOC conventions for accumulating release notes from every
pull request.
- Tweak refactored for maintainability.
- Use more of the built-in ophyd mechanisms for limits rather than
relying on local overrides.

Contributors
------------
- klauer
- zllentz
- zrylettc

2.10.0

Features
--------
- Add LookupTablePositioner PseudoPositioner base class for moves
based on a calibration table.
- Add UnitConversionDerivedSignal as a Signal class for converting
EPICS units to more desirable units for the user.
- Add units to the IPython prettyprint repr.

Device Updates
--------------
- Add Vernier integration into the CCM class using BeamEnergyRequest.

New Devices
-----------
- Add support for Thorlabs WFS40 USB Wavefront Sensor Camera.
- Add LaserEnergyPositioner PseudoPositioner (lxe) using
LookupTablePositioner.
- Add LaserTiming PVPositioner (lxt) using UnitConversionDerivedSignal.
- Add BeamEnergyRequest PVPositioner for requesting beam energies in eV from
ACR.

2.9.0

Features
--------
- Devices will now show detailed status information when returned
in the ipython terminal.

Device Updates
--------------
- Update docs on FSV fast shutter valve
- Update AT2L0 with state positioners and calculator
- Update Elliptec classes for cleaner implementation
- Add missing CCM motors and fix the energy motion (no vernier yet)
- Add HDF5 plugin to PCDSAreaDetectorEmbedded

New Devices
-----------
- Add support for SmarAct motors
- Add attenuator calculator device for Ken's new calculator
- Add support for TuttiFruitti diagnostic stack

Bugfixes
--------
- Fix typo in PV name of BeckhoffJet slits

2.8.0

===================

Features
--------
- Expand variety schema support and add dotted dictionary access.

Device Updates
--------------
- Update various vacuum char waveforms with ``string=True`` for proper
handling in ``typhos``.
- Add various missing vacuum PVs to various vacuum devices.
- Switch twincat state device error reset to ``kind=config`` so it shows up
by default in ``typhos``.
- Update LCLS-II imagers to use the new ``AreaDetectorTyphos``.
- The following devices now have ``lightpath`` support:
- ``FeeAtt``
- ``FEESolidAttenuator``
- ``XOffsetMirror``
- ``PPM``
- ``XPIM``
- ``PowerSlits``
- ``Kmono``
- ``VRC`` and all subclasses, such as ``VGC``
- ``VFS``
- Update ``XOffsetMirror`` ``y_up``, ``x_up``, and ``pitch`` to
``kind=hinted`` (previously ``normal``). These axes are usually the
most important.
- Rename ``PPM.y_states`` and ``XPIM.y_states`` to ``target`` for reduced
redundancy in screens. The only name is aliased via a property.
- ``PowerSlits`` now have a feature set on par with the old slits.
- Update ``VFS`` ``valve_position`` and ``vfs_state`` to ``kind=hinted``
(previously ``normal``) for more focused statuses.

New Devices
-----------
- Add support for Qmini Spectrometer.
- Add ``AreaDetectorTyphos`` class for optimized screen view of most used
area detector signals.
- Add ``RTDSL0`` and ``RTDSK0`` to support the rapid turnaround diagnostic
station configurations.

Bugfixes
--------
- Fix issue with failing callback in ``IMS`` from upstream ``ophyd`` change.

Maintenance
-----------
- Switch from using ``cf-units`` to ``pint`` for portability.
- Add the following helpers:
- ``interface.LightpathMixin`` to help establish ``lightpath`` support.
- ``signal.NotImplementedSignal`` to help devices that will expand later.
- ``signal.InternalSignal`` to help implement read-only signals that can
be updated by the parent class.
- ``utils.schedule_task`` to help interface with the ``ophyd`` callback
queues.
- The ``slits`` module has been refactored to accomodate both old and new
slits.

Page 8 of 12

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.