Skip to content

Releases: pcdshub/typhos

v4.0.0 (2024-08-20)

22 Aug 23:59
730c3b7
Compare
Choose a tag to compare

API Breaks

  • TyphosStatusThread now has a dramatically different signal API.
    This is an improved version but if you were using this class take note
    of the changes. Key member signals are:
    • TyphosStatusThread.status_started
    • TyphosStatusThread.status_timeout
    • TyphosStatusThread.status_finished
    • TyphosStatusThread.error_message
    • TyphosStatusThread.status_exc

Features

  • Rework the design, sizing, and font scaling of the positioner row widget to address
    concerns about readability and poor use of space for positioners that don't need
    all of the widget components.
  • Implement dynamic resizing in all directions for positioner row widgets.
  • Make the timeout messages friendlier and more accurate when the
    timeouts come from the TyphosPositionerWidget.
  • Make error messages in general (including status timeouts) clearer
    when they come from the positioner device class controlled by the
    TyphosPositionerWidget.

Bugfixes

  • Fix an issue where the row positioner widget's resizing would peg the cpu to 100%
  • Fix various issues that cause font clipping for specific motors using the positioner row widget.
  • Fix various issues with enum handling in the SignalPlugin.

Maintenance

  • Fix issues with cloud-only CI failures and segfaults.
  • unpin jinja, sphinx no longer incompatible
  • Refactor TyphosStatusThread to facilitate timeout message changes.
  • In dev/test requirements, pin pcdsdevices to current latest to fix the CI builds.

Contributors

  • canismarko
  • tangkong
  • zllentz

v3.1.1

12 Apr 22:29
ad6ffaf
Compare
Choose a tag to compare

What's Changed

  • ENH: switch lim colors to blk/org from yel/yel by @ZLLentz in #600
  • DOC: compile and clarify release notes for v3.1.1 by @ZLLentz in #602

Full Changelog: v3.1.0...v3.1.1

v3.1.0 (2023-12-05)

06 Dec 18:57
75d3e3c
Compare
Choose a tag to compare

Features

  • Added overridable find_signal method to the SignalConnection class to allow the use of alternate signal registries in subclasses.
  • Updated look and feel: change the typhos suite cli defaults to "embedded" displays arranged "vertically" instead of "detailed" displays arranged "horizontally" to more naturally match how typhos is used at present.

Contributors

v3.0.0 (2023-09-27)

27 Sep 23:13
6d193ea
Compare
Choose a tag to compare

API Breaks

  • The deprecated TyphosConsole has been removed as discussed in issue #538.
  • TyphosDeviceDisplay composite heuristics have been removed in favor of
    simpler methods, described in the features section.
  • The packaged IOC for benchmark testing is now in typhos.benchmark.ioc.

Features

  • Added typhos --screenshot filename_pattern to take screenshots of typhos
    displays prior to exiting early (in combination with --exit-after).

  • Added TyphosSuite.save_screenshot which takes a screenshot of the entire
    suite as-displayed.

  • Added TyphosSuite.save_device_screenshots which takes individual
    screenshots of each device display in the suite and saves them to the
    provided formatted filename.

  • LazySubdisplay.get_subdisplay now provides the option to only get
    existing widgets (by using the argument instantiate=False).

  • TyphosNoteEdit now supports .add_device() like other typhos widgets.
    This is alongside its original setup_data API.

  • TyphosNoteEdit is now a TyphosBase object and is accessible in the Qt
    designer.

  • Added new designable widget TyphosPositionerRowWidget. This compact
    positioner widget makes dense motor-heavy screens much more space efficient.

  • The layout method for TyphosDeviceDisplay has changed. For large device trees,
    it now favors showing the compact "embedded" screens over detailed screens. The order
    of priority is now as follows:

  • For top-level devices (e.g., at2l0), the template load priority is as follows:

    • Happi-defined values ("detailed_screen", embedded_screen", "engineering_screen")
    • Device-specific screens, if available (named as ClassNameHere.detailed.ui)
    • The detailed tree, if the device has sub-devices
    • The default templates
  • For nested displays in a device tree, sub-device (e.g., at2l0.blade_01)
    template load priority is as follows:

    • Device-specific screens, if available (named as ClassNameHere.embedded.ui)
    • The detailed tree, if the device has sub-devices
    • The default templates (embedded_screen.ui)
  • Increase motor timeouts proportionally for longer moves.

  • Added dynamic font sizer utility which can work with some Qt-provided widgets
    as well as PyDM widgets.

  • Qt object names for displays will now be set automatically to aid in
    debugging.

Bugfixes

  • Fix an issue where setpoint widgets in the full positioner
    widget had become zero-width.
  • Creates new notes file if requested note file does not exist
  • Typhos suites will now resize in width to fit device displays.
  • For devices which do not require keyword arguments to instantiate, the typhos
    CLI will no longer require an empty dictionary. That is, $ typhos ophyd.sim.SynAxis[] is equivalent to $ typhos ophyd.sim.SynAxis[{}].
    As before, ophyd's required "name" keyword argument is filled in by typhos by
    default.
  • Fix an issue where ophyd signals with floats would always display with a
    precision of 0 without special manual configuration. Floating-point signals
    now default to a precision of 3.
  • Fix issues with running the CLI benchmarks in certain
    conda installs, particularly python>=3.10.
  • ophyd.Kind usage has been fixed for Python 3.11. Python 3.11 differs in
    enumeration of IntFlag items, resulting in typhos only picking up
    component kinds that were a power of 2.
  • multiprocessing is no longer used to spawn the test suite benchmarking
    IOC, as it was problematic for Python 3.11. The provided IOC is now spawned
    using the same utilities provided by the caproto test suite.
  • Vendored pydm load_ui_file and modified it so we can always get our
    Display instance back in TyphosDeviceDisplay.
  • Ignore deleted qt objects on SignalConnection.remove_connection, avoiding
    teardown error tracebacks.
  • Avoid creating subdisplays during a call to TyphosSuite.hide_subdisplays
  • Added a pytest hook helper to aid in finding widgets that were not cleaned
  • Avoid failing screenshot taking when widgets are garbage collected at the
    same time.
  • Avoid race condition in description cache if the cache is externally cleared
    when a new description callback is received.
  • Avoid uncaught TypeError when None is present in a positioner
    .limits.

Maintenance

  • adds TyphosDisplaySwitcher to TyphosPositionerRowWidget
  • adds checklist to Pull Request Template
  • Add pre-release notes scripts
  • Update build requirements to use pip-provided extras for documentation and test builds
  • Update PyDM pin to >=1.19.1 due to Display method being used.
  • Avoid hundreds of warnings during line profiling profiling by intercepting
    messages about profiling the wrapped function instead of the wrapper.
  • The setpoint history menu on TyphosLineEdit is now only created on-demand.

Contributors

v2.4.1 (2023-4-4)

04 Apr 22:30
553e3c5
Compare
Choose a tag to compare

Description

This is a bugfix and maintenance/CI release.

Bugfixes

  • Include the normal PyDM stylesheets in the loading process.
    Previously, this was leading to unexpected behavior.

Maintenance

  • Fix an issue related to a deleted flake8 mirror.
  • Migrates from Travis CI to GitHub Actions for continuous integration testing, and documentation deployment.
  • Updates typhos to use setuptools-scm, replacing versioneer, as its version-string management tool of choice.
  • Syntax has been updated to Python 3.9+ via pyupgrade.
  • typhos has migrated to modern pyproject.toml, replacing setup.py.
  • Sphinx 6.0 now supported for documentation building.

Contributors

v2.4.0 (2022-11-4)

04 Nov 18:06
56b7dd9
Compare
Choose a tag to compare

Description

This is a small release with features for improving the usage
and configurability of the PositionerWidget.

Features

  • Report errors raised during the execution of positioner
    set commands in the positioner widget instead of in a pop-up.
    This makes it easier to keep track of which positioner widget
    is associated with which error and makes it less likely that the
    message will be missed or lost on large monitors.
  • Add a designer property to PositionerWidget, alarmKindLevel,
    to configure the enclosed alarm widget's kindLevel property in
    designer. This was previously only configurable in code.

Contributors

  • zllentz

Full Changelog: v2.3.3...v2.4.0

v2.3.3 (2022-10-20)

21 Oct 00:08
c5ccc71
Compare
Choose a tag to compare

Description

This is a small release with bugfixes and maintenance.

Bugfixes

  • Do not wait for lazy signals when creating a SignalPanel.
    This was causing long setup times in some applications.
  • Call stop with success=True in the positioner widget to avoid causing
    our own UnknownStatusError, which was then displayed to the user.

Maintenance

  • Add cleanup for background threads.
  • Add replacement for functools.partial usage in methods as
    this was preventing TyphosSuite from getting garbage collected.
  • Removes custom designer widget plugin,
    instead relying on PyDM's own mechanism
  • Use pydm's data plugin entrypoint to include the sig and happi channels.
  • Prevent TyphosStatusThread objects from being orphaned.

Contributors

  • klauer
  • tangkong
  • zllentz

Full Changelog: v2.3.2...v2.3.3

v2.3.2 (2022-07-28)

29 Jul 22:27
a5eecb3
Compare
Choose a tag to compare

Description

This is a bugfix and maintenance release.

Fixes

  • Fix various instances of clipping in the positioner widget.
  • Show Python documentation when no web help is available.
  • Fix issues with suite sidebar width.
  • Lazy load all tools to improve performance.
  • Fix the profiler to also profile class methods.
  • Use cached paths for finding class templates.
  • Properly handle various deprecations and deprecation warnings.
  • Fix usage of deprecated methods in happi (optional dependency).

Maintenance

  • Log "unable to add device" without the traceback, which was previously unhelpful.
  • Pin pyqt at 5.12 for test suite incompatibility in newer versions.
  • Ensure that test.qss test suite artifact is cleaned up properly.
  • Fix the broken test suite.
  • Pin jinja2 at <3.1 in CI builds for sphinx <4.0.0 compatibility

Contributors

v2.3.1 (2022-05-02)

02 May 21:29
c1ad740
Compare
Choose a tag to compare

Description

This is a small bugfix release.

Fixes

  • Fix an issue where the configuration menu would be defunct for
    custom template screens.

Maintenance

  • Add some additional documentation about sig:// and cli usage.
  • Configure and satisfy the repository's own pre-commit checks.
  • Update versioneer install to current latest.

Contributors

v2.3.0 (2022-03-31)

01 Apr 00:24
408c108
Compare
Choose a tag to compare

Description

This is a small release with fixes and features that were implemented
last month.

Features

  • Add the option to hide displays in the suite at launch,
    rather than automatically showing all of them.
  • Allow the sig:// protocol to be used in typhos templates by
    automatically registering all of a device's signals at launch.

Fixes

  • Fix an issue where an assumption about the nature of EpicsSignal
    object was breaking when using PytmcSignal objects from pcdsdevices.
  • Make a workaround for a C++ wrapped exception that could happen
    in specific orders of loading and unloading typhos alarm widgets.