Skip to content

Releases: pcdshub/pcdsdevices

v4.6.1 (2021-07-14)

14 Jul 21:49
3be84f3
Compare
Choose a tag to compare

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)

09 Jul 23:31
24a61eb
Compare
Choose a tag to compare

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)

03 Jun 21:39
334af15
Compare
Choose a tag to compare

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)

15 Apr 21:51
031b935
Compare
Choose a tag to compare

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)

05 Apr 16:36
be5cfea
Compare
Choose a tag to compare

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)

02 Apr 23:43
70f0c78
Compare
Choose a tag to compare

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 of OffsetMotorBase that has an additional _SET offset pv, and puts to this pv during set_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)

02 Apr 17:51
b23b07b
Compare
Choose a tag to compare

API Changes

  • Deprecate pcdsdevices.component in favor of pcdsdevices.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 and EpicsSignalROEditMD 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 deprecated SyncAxesBase with expanded
    feature set, more sensible defaults, and more solid foundation.
  • Add set_current_position to all PseudoPositioner classes.
  • Add invert parameter to DelayBase for inverting any delay stage.
  • Add set_position as an alias to set_current_position
  • New motor configuration for LAMP. Hoping we only have two configurations to switch between
  • Add InterfaceDevice and InterfaceComponent as a tool for
    including pre-build objects in a device at init time.
  • Add to_interface helper function for converting normal Device
    classes into InterfaceDevice 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 the set state
    instead of bringing it back to the use 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 the units keyword argument in its metadata (SUB_META or
    'meta') callbacks. It will be included even if the original signal
    did not include units 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)

03 Mar 18:53
a4a5312
Compare
Choose a tag to compare

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)

11 Feb 00:36
d08d4ed
Compare
Choose a tag to compare

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 and scale arguments to
    :func:~pcdsdevices.utils.get_status_float, which affect floating point
    formatting of values available in the status_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 from status_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 for get_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)

23 Dec 00:27
e5cf6f6
Compare
Choose a tag to compare

API Changes

  • On our EPICS motor classes, remove the ability to use setattr for
    low_limit and high_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() and set_low_limit(), as well as get_low_limit() and get_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, and FFMirror.
  • Add custom status print for gon classes: BaseGon, and XYZStage class.
  • Add notepad signals to LaserTiming and DelayBase 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 and LaserTimingCompensation
    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