Skip to content

Releases: pcdshub/pcdsdevices

v7.4.1 (2023-06-30)

30 Jun 20:53
95b005e
Compare
Choose a tag to compare

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)

08 May 23:55
7a11f2e
Compare
Choose a tag to compare

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
    • Return the output of IMS.diff_configuration as a PrettyTable
      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)

17 Apr 17:53
f891ad4
Compare
Choose a tag to compare

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)

04 Apr 22:34
4522d32
Compare
Choose a tag to compare

Features

  • Added a diff_configuration function to the IMS 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 through USR 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 and PRSM:*_RBV.
  • For KBOMirrorHE, set PVs to FWM and PRSM to match the ccc list.
  • For Mono, set PVs to FWM and PRSM to match the ccc list.
  • For EllBase, change the base class to enable scanning via bluesky.
  • 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 the BeckhoffPneumatic class.
  • Adds VCN_VAT590 class for controlling the VAT590 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 all PIM objects autodiscover their states from
    EPICS.

Maintenance

  • Fix an issue with the pre-commit config pointing to a missing mirror.
  • Add AT1K2 and AT2K2 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 modern pyproject.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 of pyupgrade.
  • Sphinx 6.0 is now supported for documentation building.
  • docs-versions-menu replaces doctr-versions-menu and doctr usage
    for documentation deployment on GitHub Actions. The deployment key is now
    no longer required.
  • Removed CoatingState class, used reorder_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)

08 Nov 01:36
2dfb218
Compare
Choose a tag to compare

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 the lightpath 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
    from hinted 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 detailed typhos
    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)

26 Oct 21:49
f1323c0
Compare
Choose a tag to compare

Device Updates

  • Rename lens_pitch to lens_pitch to lens_pitch_up_down and lens_yaw to
    lens_yaw to lens_yaw_left_right.

Bugfixes

  • When initializing the lightpath summary signal from a happi load,
    guard against bad input_branches or output_branches.
    This stops us from spamming the terminal when loading from a db without
    input_branches and output_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)

21 Oct 22:10
6fe2de5
Compare
Choose a tag to compare

API Changes

  • Now compatible with and expecting lightpath v1.0.0 for lightpath support.
  • Converted LightpathMixin to the new lightpath API, consolodating
    reporting into a single LightpathState Dataclass. The lightpath
    subscription system has also been simplified by using an AggregateSignal
    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 fully lightpath-compatible, to maintain backcompatibility
    of happi db, as well as added happi containers that work with the new lightpath interface.
    These containers allow input_branches and output_branches
    to be optional kwargs. This lets these containers work with devices
    that both do and do not implement the lightpath 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
    existing lightpath-active devices. This includes but is not limited to:

    • Mirrors
    • LODCMs
    • Attenuators
  • Added an ns_delay_scan motor to the evr Trigger class that is
    convenient for scanning the delay in nanoseconds.

  • Added the missing valve_position signal to ValveBase,
    making it available for all valve classes. This contains the valve's state,
    e.g. "OPEN", "CLOSED", "MOVING", "INVALID".

  • Made devices that use PVStateSignal like GateValve
    and PulsePicker report their enum states and write permissions
    in subscriptions for applications like typhos and lightpath.

  • 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 and lens_yaw.

  • Renamed the valve signal named close_override to override_force_close
    for consistency with override_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 in ValveBase.
  • Added HPI6030 in radiation.py, a device for reading out 6030 radiation data.
  • Added Gen1VonHamos4Crystal and Gen1VonHamosCrystal to the spectrometer 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 and PowerSlits 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)

27 Jul 23:37
556fb58
Compare
Choose a tag to compare

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 to LightControl.

Device Updates

  • TM2K4 now has its own class with 5 position states (4 targets and and OUT state)
  • Upgrade BeamEnergyRequest from BaseInterface to FltMvInterface
    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 to DelayBase

New Devices

  • UsDigitalUsbEncoder in pcdsdevices.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

20 Jun 20:31
fcda7d9
Compare
Choose a tag to compare

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)

03 Jun 21:14
bc58615
Compare
Choose a tag to compare

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 to BeamEnergyRequest 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 with bunch_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