Releases: pcdshub/pcdsdevices
v7.4.1 (2023-06-30)
Device Updates
- QminiSpectrometer: Added some new PVs and modified others related to recent
IOC changes. Embedded UI was updated to reflect this.
Maintenance
- unpin pyqt, with the hope of supporting py3.11
Contributors
v7.4.0 (2023-05-08)
Device Updates
-
IMS
class:-
Added special parameter manager/questionnaire handling.
On load from the questionnaire, grab questionnaire stage identities
and apply them to the parameter manager for the given PV. -
Added functions that allow the user to see the given configuration
parameters or the current parameters of that base PV.- See
IMS.get_configuration_values
- See
IMS.get_current_values
- See
-
Return the output of
IMS.diff_configuration
as aPrettyTable
instead of as a dictionary, making it much easier to understand.
-
-
Updated
HXRSpectrometer
filter wheel with its state PV.
Previously, only the raw motor device was available.
Contributors
v7.3.0 (2023-04-17)
Device Updates
- LODCM: Add energy setpoint and tweakXC.
- LODCM: fix energy functionality and add commonly used aliases.
- LasBasler: Add a new signal that can be used to auto-configure a camera based on an internal dictionary.
New Devices
- PCDSAreaDetectorTyphos class: Add in signals for camera binning and region size control.
- LasBaslerNF: A Basler camera intended to be used as a near-field diagnostic.
- LasBaslerFF: A Basler camera intended to be used as a far-field diagnostic.
Contributors
v7.2.0 (2023-04-04)
Features
- Added a
diff_configuration
function to theIMS
class in
epics_motor.py
that compares the desired motor pv settings with the
current configuration assigned in the parameter manager. - Made
IMS
pmgr only search throughUSR
objects.
Device Updates
- Adds a preliminary attenuator class
AT1K2
and base classes for similar
two-blade ladder attenuators designed by JJ X-ray. - Adds some PVs for
RohdeSchwarzPowerSupply
. - Update
LusiSlits
to include individual blade controls. - Add cooling PVs for
XOffsetMirrorBend
:FWM:*_RBV
andPRSM:*_RBV
. - For
KBOMirrorHE
, set PVs toFWM
andPRSM
to match the ccc list. - For
Mono
, set PVs toFWM
andPRSM
to match the ccc list. - For
EllBase
, change the base class to enable scanning viabluesky
. CCM
energy moves no longer print about the PID loop being killed.
This was a leftover debug print.
New Devices
- Adds Leviton device classes and corresponding happi container for use in the
Facility Monitoring System (fms). - Adds
XOffsetMirrorStateCool
for offset mirrors with state and cooling. - Adds Device support for stoppers using
FB_MotionPneumaticActuator
on the PLC.
Users can now interface with these stoppers using theBeckhoffPneumatic
class. - Adds
VCN_VAT590
class for controlling theVAT590
variant of the variable
controlled needle valve. - Adds
RTDSX0ThreeStage
class, a 3DoF motion stage for Solid Drilling experiments
in the EBD's RTDS chambers.
Bugfixes
- Fixes lightpath logic for
XPPLODCM
to use the correct line and show full
transmission when splitting beam. - Fix an issue where
PseudoPositioner
devices defined in this module
but running from separate terminals would fight over control of the
ophyd_readback
helper signal, a PV that can be used to monitor
progress of the calculated readback. - Certain PIMs, such as
cxi_dg1_pim
, did not work properly because pcdsdevices
assumed that these devices had a "DIODE" state, which is not necessarily
true. This has been fixed by making allPIM
objects autodiscover their states from
EPICS.
Maintenance
- Fix an issue with the pre-commit config pointing to a missing mirror.
- Add
AT1K2
andAT2K2
to the attenuator smoke tests. - Adding symbolic links for
AT1K2
so that screens generate in a nice,
organized way (like other SXR Attenuators) - Pinning numpy to 1.23 to temporarily fix CI test suite.
pcdsdevices
no longer uses Travis CI and has migrated to GitHub Actions for
continuous integration, testing, and documentation deployment.pcdsdevices
has been migrated to use setuptools-scm, replacing versioneer, as
its version-string management tool of choice.pcdsdevices
has been migrated to use the modernpyproject.toml
, replacing
setup.py
and related files.- Older language features and syntax found in the repository have been updated
to Python 3.9+ standards by way ofpyupgrade
. - Sphinx 6.0 is now supported for documentation building.
docs-versions-menu
replacesdoctr-versions-menu
anddoctr
usage
for documentation deployment on GitHub Actions. The deployment key is now
no longer required.- Removed
CoatingState
class, usedreorder_components
instead. - Specified compatible xraydb and sqlalchemy versions in requirements files.
- Testing dependencies are now specified in the conda recipe for conda-based
installations.dev-requirements.txt
continues to be used for pip-based
installations.
Contributors
v7.1.0 (2022-11-04)
Device Updates
- Allow
BeckhoffAxis
devices to report the NC error from the
beckhoff PLC as part of the move status. - Throw a clear error when the user tries to move a
BeckhoffAxis
that has
the default velocity (zero), rather than failing silently.
Bugfixes
- Fix an issue where
BeckhoffAxis
devices would show error status
after nearly any move, even those that ended normally. - Fix
_find_matching_range_indices
method signature to include self.
This was causing startup errors for the XRT mirrors.
Maintenance
- Update quadratic equation and soft limits for VLS focus mirror. These were
no longer correct. - Update example in docstring of
LightpathMixin
. The previous example was
from an earlier implementation of thelightpath
interface. - Add argument to
conftest.find_all_device_classes
that allows specified
device classes to be skipped. This is helpful for skipping interface classes
that may not behave normally as independent devices. - Set
typhos>=2.4.0
in run_constrainted to make sure the typhos feature
required for the template update is available. - Four blade SXR solid attenuator (AT1K4 and AT2K2) screens have been updated
to include all of the filters installed on each blade. It will also show the
per-blade filters that the calculator will insert when "Apply Configuration"
is clicked. The custom energy line edit will now remain visible regardless of
the "Actual/Custom" Photon Energy selection. - Adjust the
BeckhoffAxis
typhos
templates to only show alarm state
fromhinted
components instead of all components. This reduces the noise
from an unresolved bug with alarm states that get stuck in a fake "major"
state for monitors despite being cleared. - Slightly adjust the sizing on the
BeckhoffAxis
detailedtyphos
template so that the errors can be read.
Contributors
- klauer
- tangkong
- wwright-slac
- zllentz
Full Changelog: v7.0.1...v7.1.0
v7.0.1 (2022-10-26)
Device Updates
- Rename
lens_pitch
tolens_pitch to lens_pitch_up_down
andlens_yaw
to
lens_yaw to lens_yaw_left_right
.
Bugfixes
- When initializing the lightpath summary signal from a happi load,
guard against badinput_branches
oroutput_branches
.
This stops us from spamming the terminal when loading from a db without
input_branches
andoutput_branches
. - Fully removes
LightpathItem
from containers that subclassed it.
Contributors
- tangkong
- tongju12
- zllentz
Full Changelog: v7.0.0...v7.0.1
v7.0.0 (2022-10-21)
API Changes
- Now compatible with and expecting
lightpath
v1.0.0
forlightpath
support. - Converted
LightpathMixin
to the newlightpath
API, consolodating
reporting into a singleLightpathState
Dataclass. Thelightpath
subscription system has also been simplified by using anAggregateSignal
to monitor all relevant components. - Overwrote the default move method for the
CCMEnergy
class to kill the PID loop at the end of each move (default).
This should prevent the piezo motor from heating up and breaking vacuum or frying itself.
Features
- Made
LCLSItem
fullylightpath
-compatible, to maintain backcompatibility
of happi db, as well as added happi containers that work with the newlightpath
interface.
These containers allowinput_branches
andoutput_branches
to be optional kwargs. This lets these containers work with devices
that both do and do not implement thelightpath
interface.
In a future release the extra containers may be removed and should
not be considered a permanent API. - Added LightControl.ui screen for controlling fiber-lites.
- Added useful qmini embedded screen that's been active in dev for over a year.
Device Updates
-
Updated
LightpathMixin
implementation to the new API for all
existinglightpath
-active devices. This includes but is not limited to:- Mirrors
- LODCMs
- Attenuators
-
Added an
ns_delay_scan motor
to the evrTrigger
class that is
convenient for scanning the delay in nanoseconds. -
Added the missing
valve_position
signal toValveBase
,
making it available for all valve classes. This contains the valve's state,
e.g. "OPEN", "CLOSED", "MOVING", "INVALID". -
Made devices that use
PVStateSignal
likeGateValve
andPulsePicker
report their enum states and write permissions
in subscriptions for applications liketyphos
andlightpath
. -
Updated
pcdsdevices.laser.btps
device classes following a PV rename. -
Updated
pcdsdevices.laser.btps
device classes to support the Laser Beam
Transport Motion System (BTMS). In addition, this includes a module
pcdsdevices.laser.btms_config
which has utilities to represent the state
of the BTS in a control system independent way and allows for motion
verification and other sanity checks. -
Added two new thorlabs ZST213 into
TMOSpectrometer
,lens_pitch
andlens_yaw
. -
Renamed the valve signal named
close_override
tooverride_force_close
for consistency withoverride_force_open
, which is the corresponding "open" signal.
New Devices
- Added
RohdeSchwarzPowerSupply
class for controlling the Rohde Schwarz NGP800 power supply series. - Added
pcdsdevices.laser.btps.BtpsVGC
a variant of the VGC class that included
valve_position
prior to this being added inValveBase
. - Added
HPI6030
in radiation.py, a device for reading out 6030 radiation data. - Added
Gen1VonHamos4Crystal
andGen1VonHamosCrystal
to thespectrometer
module to support the pre-ADS 4 crystal VonHamos.
Bugfixes
- Fixed an issue where various types of motors could have inconsistent
limits metadata when the IOC or gateway doesn't behave as expected. - Fixed an issue where the
UpdateComponent
was incompatible with
subscription decorators. - Fixed PV typos in the
BeckhoffSlits
andPowerSlits
typhos ui templates.
Maintenance
- Made some of the test motor simulations slightly more accurate.
- Mark
test_presets
as xfail because it has a race condition that is
slowing down our development.
Contributors
- christina-pino
- jortiz-slac
- klauer
- nrwslac
- tangkong
- tongju12
- vespos
- wwright-slac
- zllentz
Full Changelog: v6.3.0...v7.0.0
v6.3.0 (2022-07-27)
Features
- Add new module for controlling intensity of LEDs or Fiber-Lites,
light_control.py
.
CvmiLed from cvmi_motion.py has been moved to this new module and renamed toLightControl
.
Device Updates
TM2K4
now has its own class with 5 position states (4 targets and and OUT state)- Upgrade
BeamEnergyRequest
fromBaseInterface
toFltMvInterface
to pick up all the move aliases. - slits.py: add 'hg', 'ho', 'vg', 'vo' to tab_whitelist in
SlitsBase
, upon request from the XPP scientists - New
set_zero
method toDelayBase
New Devices
UsDigitalUsbEncoder
inpcdsdevices.usb_encoder
.
This is the EPICS interface for configuring the scale/offset of these encoders that are used in the DAQ.
Maintenance
- Delay the import of
pint
so that sessions with no unit conversions can
start up 2 seconds faster.
Contributors
v6.2.0
v6.2.0 (2022-06-20)
Device Updates
- Add IMS.setup_pmgr as a public API for applications that want to initialize pmgr support before the first device uses it. This was previously private API at IMS._setup_pmgr. (#1026)
- Added LED control PVs to CVMI motion class. (#1017)
New Devices
- Added ItechRfof class: Instrumentation Technologies RF over Fiber unit (#1020)
Bugfixes
- Create the pmgr resources when they are first used rather than on IMS init, saving 3 seconds of startup time for users that don't need pmgr resources. (#1026)
Maintenance
- Vendor happi.device.Device as LegacyItem instead of importing it, pending deprecation of the happi.device module. (#1023)
Contributors
- Mbosum
- mcb64
- slactjohnson
- wwright-slac (@wwright-slac made their first contribution in #1020 🥳 )
- zllentz
Full Changelog: v6.1.0...v6.2.0
v6.1.0 (2022-06-03)
Device Updates
- Updated the Laser Beam Transport Protection system configuration to reflect the latest PLC/IOC changes: the image sum from near and
far-field cameras is now used instead of centroid positioning. The relevant screens have been updated as well. - Added an optional
acr_status_suffix
argument toBeamEnergyRequest
that instantiates an alternate version of the class that waits on an ACR PV to know when the motion is done. This is a more suitable version of the class for step scans and a less suitable version of the class for fly scans.
New Devices
- Added
KBOMirrorHEStates
- a class for KBO mirrors with coating states and cooling. - Added
KBOMirrorStates
- a class for KBO mirrors with coating states and no cooling.
Bugfixes
- Fixed the
Stopper
happi
container definition. - Removed unusable
bunch_charge_2
signal from LCLS beam stats. This PV seems to contain a stale value that disagrees withbunch_charge
and causes EPICS errors on certain hosts.
Maintenance
- Added a run constraint for pyqt to avoid latest while we work out testing failures.
Contributors
- klauer
- nrwslac
- tangkong
- zllentz