Releases: pcdshub/typhos
v4.0.0 (2024-08-20)
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 theTyphosPositionerWidget
. - 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
v3.1.0 (2023-12-05)
Features
- Added overridable
find_signal
method to theSignalConnection
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)
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 argumentinstantiate=False
). -
TyphosNoteEdit
now supports.add_device()
like other typhos widgets.
This is alongside its originalsetup_data
API. -
TyphosNoteEdit
is now aTyphosBase
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
- Happi-defined values (
-
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
)
- Device-specific screens, if available (named as
-
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 ofIntFlag
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 inTyphosDeviceDisplay
. - 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
whenNone
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)
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
, replacingsetup.py
. - Sphinx 6.0 now supported for documentation building.
Contributors
v2.4.0 (2022-11-4)
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'skindLevel
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)
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)
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)
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)
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.