Releases: pcdshub/pcdsdevices
Releases · pcdshub/pcdsdevices
v4.6.1 (2021-07-14)
Maintenance
- Fix various issues with packaging, including outdated pypi requirements, errors in manifest files, and versioneer/gitattributes errors related to bad version data when checked with pip.
Contributors
- klauer
- zllentz
v4.6.0 (2021-07-09)
Features
- Add pmgr support to the
IMS
class! There are three new methods on IMS
for interacting with pmgr:configure
,get_configuration
, and
find_configuration
.
Device Updates
- User changes to offset/dir on python or UI level to MRCO motion have been disabled.
- Add the veto_device signal (:VETO_DEVICE_RBV) to the VFS class.
XYGridStage
now uses one file per sample instead of
one giant file for all samples, and it writes to these files less often.
This speeds up operations. Various additional improvements to the class.
New Devices
- Add special IM2K0 device for the new configuration of IM2K0, where we
swapped its XTES style camera setup for a L2SI style camera setup.
Bugfixes
- Fix an issue where DelayBase subclasses could spam the terminal at
startup if we load too many devices at once. - Fix a typo in the KBO DS Bender RMS PV.
- Fix issue where motor presets would not load until the first access of the
presets object. - Fix an issue where an epics motor could get stuck with a bad state of its
set_use_switch after a call to set_current_position with a bad value.
Contributors
- cristinasewell
- jsheppard95
- jyotiphy
- Mbosum
- mcb64
- zllentz
v4.5.0 (2021-06-03)
Features
- Add UpdateComponent, a component class to update component args
in subclasses.
Device Updates
- Update kmono threshold for showing beam passing in lightpath
- Rename PPSStopperL2SI to PPSStopper2PV and generalize to all PPS stoppers
whose states are determined by the combination of two PVs. The old name and
old defaults are retained for backcompatibility and have not yet been
deprecated. This was done to support the PVs for ST1K2 which do not follow
any existing pattern. - Set various beamline component motor offset signals to read-only, using the
new BeckhoffAxisNoOffset class, to prevent accidental changes.
These are static components that have no need for this level of
customization, which tends to just cause confusion.
New Devices
- MRCO motion class for MRCO IP1 endstation in TMO.
- Added a class for the RIX ladder-style solid attenuator
AT2K2
. - Add BeckhoffAxisNoOffset, a varition on BeckhoffAxis that uses
UpdateComponent to remove write access on the user offset signals.
Bugfixes
- Fix issue where BeckhoffSlits devices could show metadata errors on startup
by cleaning up the done moving handling. This would typically spam the
terminal in cases where we were making large numbers of PV connections in
the session at once, such as at the start of a hutch-python load.
Contributors
- Mbosum
- ZLLentz
- jsheppard95
- klauer
v4.4.0 (2021-04-15)
API Changes
- Move stoppers into stopper.py, but keep reverse imports for
backwards compatibility. This will be deprecated and then removed
at a later date.
Device Updates
- Add "confirm" variety metadata tag to
EpicsMotorInterface
and
BeckhoffAxisPLC
home commands, requiring user confirmation prior to
performing the homing motion in auto-generated Typhos screens. - Slits objects now have vo, vg, ho, and hg aliases.
- Motor objects now print out values with a precision of 3 places.
- Remove mpa3 and mpa4 from rtdsk0, they do not have filters and are always
in invalid states that confuse the lightpath. - Update the mono spectrometer class to provide status to lightpath.
- Make sim devices hinted by default so they show up in the
best-effort callback in bluesky.
New Devices
- Add PPSStopperL2SI for having readbacks of the new PPS stoppers inside
of lightpath.
Bugfixes
- Fix issue where the mirror coating states were expecting the default
'OUT' position, which does not exist on the real device. - Fix an issue where
ObjectComponent
instances did not have proper class
information. - Increase the retry delay in lightpath state updater to avoid issue where
long lightpaths would fail to update the first few devices in the path. - Fix issue where LICMirror would appear blocking in the mirror states on
lightpath. - Fix issue where PowerSlits would appear blocking on lightpath for some
positions reached by fulfilling normal PMPS requests. - Fix issue where SxtTestAbsorber would report no status on lightpath.
Contributors
- ZryletTC
- klauer
- zllentz
v4.3.2 (2021-04-05)
Bugfixes
- Fix an issue where pcdsdevices would break pyepics and ophyd in such a
way to cause thousands of lines of teardown spam at exit.
Contributors
- zllentz
v4.3.1 (2021-04-02)
Features
- New functions have been added to the LODCM object:
tweak_x
,tweak_parallel
,set_energy
,wait_energy
. - Custom status print has been added for the 3 towers as well as the energy classes.
- Added the
OffsetIMSWithPreset
subclass ofOffsetMotorBase
that has an additional_SET
offset pv, and puts to this pv duringset_current_position
.
Maintenance
- Have cleaned up some docstring and changed the naming for the offset motors to the old style.
Contributors
- cristinasewell
v4.3.0 (2021-04-02)
API Changes
- Deprecate
pcdsdevices.component
in favor ofpcdsdevices.device
to avoid circular imports and to more closely mirror the structure of
ophyd
.
Features
- Add FuncPositioner as a replacement for VirtualMotor.
This is a "dirty" positioner intended for quick hacks
in the beamline setup files, instantiated via handing
various functions to the init. - Add
EpicsSignalEditMD
andEpicsSignalROEditMD
classes for
situations where you need to override the control system's
discovered metadata. - Adding a normally open class (VRCNO) for VRC gate valves to valve module. VRCNO extends VVCNO and adds VRC functionality.
- Add
SyncAxis
to replace deprecatedSyncAxesBase
with expanded
feature set, more sensible defaults, and more solid foundation. - Add
set_current_position
to allPseudoPositioner
classes. - Add
invert
parameter toDelayBase
for inverting any delay stage. - Add
set_position
as an alias toset_current_position
- New motor configuration for LAMP. Hoping we only have two configurations to switch between
- Add
InterfaceDevice
andInterfaceComponent
as a tool for
including pre-build objects in a device at init time. - Add
to_interface
helper function for converting normalDevice
classes intoInterfaceDevice
classes. - Add
ObjectComponent
as a tool for including pre-build objects in
a device at class definition time.
Device Updates
- Add custom status prints for DelayBase and SyncAxis
- QminiSpectrometer: A few variety metadata updates for Typhos screens.
- Set EpicsMotor soft limit kinds to "config" for use in typhos.
New Devices
- QminiWithEvr: A new class with added PVs for controlling an EVR from a
Typhos screen. - LAMPMagneticBottle
- XOffsetMirrorState for mirror coatings
Bugfixes
- Include hacky fix from XPP/XCS that allows LaserTiming to complete moves
in all situations. The real cause and ideas for a clean fix are not
currently known/explored. - Fix issue where Newport motors would not show units in their status prints.
- Fix issue where SyncAxis was not compatible with PseudoPositioners as
its synchronized "real" motors. - Fix an issue where calling
set_current_position
on certain motors would
cause the ipython session to freeze, leaving the motor in theset
state
instead of bringing it back to theuse
state. - Hacky workaround for IMS motor part number strings being unable to be read
through pyepics when they contain invalid utf-8 characters. - Fix issue where
Newport
user_readback had incorrect metadata. - :class:
~pcdsdevices.signal.UnitConversionDerivedSignal
will now pass
through theunits
keyword argument in its metadata (SUB_META
or
'meta'
) callbacks. It will be included even if the original signal
did not includeunits
in metadata callbacks. (#767) - Fix an issue where various special Signal classes had their kinds
improperly reported as "hinted".
Maintenance
- Make unit handling in status_info more consistent to improve reliability of
status printouts.
Contributors
- Mbosum
- ghalym
- klauer
- tjohnson
- zllentz
v4.2.0 (2021-03-03)
Features
- Happi IOC Data: added new EntryInfo to happi.containers.LCLSItem for ioc
configuration data including engineer, location, hutch, release, arch, name,
and ioc type. - New containers: added new Happi containers with device specific metadata for
building MODS IOCs. - Custom status print for
LODCM
object. - Added the
MPOD
class that determines the appropriate MPOD Channel classes. This is to help support the happi entry creation from the questionnaire. - Add custom status for LaserTiming and for PseudoSingleInterface
- Add verbose_name attribute to PseudoSingleInterface and caclulated dial position
- Add verbose_name property to LaserTiming
Device Updates
LODCM
object has been updated to contain the Energy motors as well as the other motors and offsets.- Update various signal kinds on PTMPLC from omitted to normal or config as
appropriate. - ThorlabsWfs40: Added wavefront PV and viewer, added some docs
New Devices
OffsetMotor
- PseudoPositioner with an offset- Add GHCPLC (Hot Cathode) class as a counterpart to the GCCPLC (Cold Cathode)
class.
Bugfixes
- Fix issue where the Kappa had an incorrect e_phi calculation
in certain situations. - Fix issue where the Kappa used the calculated motors for the
safety check instead of the real motors. - Fix issue where legacy attenuator classes would break bluesky scans.
- Fix Kappa behavior for kappa angles above 180 degrees.
Contributors
- cristinasewell
- klauer
- slacAdpai
- slactjohnson
- zllentz
v4.1.0 (2021-02-10)
API Changes
- Update twincat motors to use the correct homing PV.
This is an alternative PV to the normal motor record PVs for IOC/PLC
management reasons.
It is possible that this will break devices that have not updated to the
latest motion PLC library. - Added
format
andscale
arguments to
:func:~pcdsdevices.utils.get_status_float
, which affect floating point
formatting of values available in thestatus_info
dictionary. - CVMI Motion System Prefix: 'TMO:CVMI'
- KTOF Motion System Prefix: 'TMO:KTOF'
Features
- Added :func:
~pcdsdevices.utils.format_status_table
for ease of generating
status tables fromstatus_info
dictionaries. - Added :func:
~pcdsdevices.utils.combine_status_info
to simplify joining
status information of child components.
Device Updates
- VCN upper limit can be changed from epics.
- Added the
active
component to
:class:~pcdsdevices.attenuator.AttenuatorCalculatorFilter
, indicating
whether or not the filter should be used in calculations. - Multiple devices have been modified to include explicit argument and keyword
argument names in__init__
for clarity and introspectability.
New Devices
- XYGridStage - maps targets from grids to x,y positions, and supports multiple samples on a stage.
- Added :class:
~pcdsdevices.attenuator.AT1K4
and supporting SXR solid
attenuator classes, including
:class:~pcdsdevices.attenuator.AttenuatorCalculatorSXR_Blade
,
:class:~pcdsdevices.attenuator.AttenuatorCalculatorSXR_FourBlade
, and
:class:~pcdsdevices.attenuator.AttenuatorSXR_Ladder
. - pcdsdevices.cvmi_motion.CVMI
- pcdsdevices.cvmi_motion.KTOF
Bugfixes
- The transmission status value for the 3rd harmonic has been fixed, it was previously using the wrong value.
Maintenance
- The test suite will now find all devices in pcdsdevices submodules at
arbitrary import depth. - Minor cleanup of the pcds-tag conda recipe
- Relocate happi name length restriction for lcls devices to this package
as a requirement on LCLSItem - Updated AT2L0 to use newer status formatting utilities.
- Added prettytable as an explicit dependency. It was previously assumed to
be installed with a sub-dependency. - Added test suite to try to instantiate all device classes with
make_fake_device
and perform status print formatting checks on them. - Added
include_plus_sign
option forget_status_float
. - Perform continuous integration tests with pip-based installs, with
dependencies installed from PyPI.
Contributors
- cristinasewell
- ghalym
- jsheppard95
- klauer
- zllentz
v4.0.0 (2020-12-22)
API Changes
- On our EPICS motor classes, remove the ability to use setattr for
low_limit
andhigh_limit
. - SmarActOpenLoop: Combined scan_move_cmd and scan_pos into single EpicsSignal,
scan_move, with separate read and write PVs.
Features
- Added pseudo motors and related calculations to the
Kappa
object. - Added two methods to
EpicsMotorInterface
:set_high_limit()
andset_low_limit()
, as well asget_low_limit()
andget_high_limit()
. - Added a little method to clear limits:
clear_limits
- by EPICS convention, this sets both limits to 0. - Added 3rd harmonic frequncy transmission info to the status print for the Attenuator.
- Added custom status print for
XOffsetMirror
,OffsetMirror
,KBOMirror
, andFFMirror
. - Add custom status print for
gon
classes:BaseGon
, andXYZStage
class. - Add notepad signals to
LaserTiming
andDelayBase
classes
Device Updates
- Instead of creating separated devices for Fundamental Frequency and 3rd Harmonic Frequency, we are now creating Attenuators that have both frequencies.
- EpicsMotorInterface: Add metadata to various upstream Ophyd methods to clean
up screens generated via Typhos. - Allow negative positions in
LaserTiming
andLaserTimingCompensation
devices - Add LED power to the Mono device.
- led metadata scalar range
New Devices
- Added
ExitSlits
device.
Bugfixes
- sequencer.EventSequencer.EventSequence: Add an explicit put to SEQ.PROC to
force the event sequencer to update with the new sequence. - Fix position handling in
ReversedTimeToolDelay
- AvgSignal will no longer spam exceptions text to the terminal when the signal
it is averaging is disconnected. This will primarily be noticed in the
BeamStats class, loaded in every hutch-python session.
Contributors
- ZryletTC
- cristinasewell
- ghalym
- tjohnson
- zllentz