Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FIX: patch over positioner limits = (None, None) issue #567

Merged
merged 1 commit into from
Aug 14, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions docs/source/upcoming_release_notes/565-poslimits.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
565 poslimits
#############

API Changes
-----------
- N/A

Features
--------
- N/A

Bugfixes
--------
- Avoid uncaught ``TypeError`` when ``None`` is present in a positioner
``.limits``.

Maintenance
-----------
- N/A

Contributors
------------
- klauer
6 changes: 5 additions & 1 deletion typhos/positioner.py
Original file line number Diff line number Diff line change
Expand Up @@ -314,7 +314,11 @@ def _link_limits_by_limits_attr(self):
except Exception:
...
else:
if low_limit < high_limit:
if low_limit is None or high_limit is None:
# Some devices may erroneously report `None` limits.
# TyphosPositioner will hide the limit labels in this scenario.
...
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It might be possible to have one more fallback that is subscribing to the setpoint PV's metadata callback- but other than that, there's not that much more we can do if we want to rely on an attribute instead of a signal.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you're right. What gave me pause mostly was the fact that we hide the limit widgets in this scenario - perhaps we just say "well, show the widgets at least so they can be set"

... In typing the above, though, I think there's no method for setting .limits with these widgets (in the fallback scenario you accurately described in this comment) - right? Or am I missing it?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right, these widgets are read-only. I think they are just the little text tags that go under the limit switch indicators.

elif low_limit < high_limit:
self.ui.low_limit.setText(str(low_limit))
self.ui.high_limit.setText(str(high_limit))
return
Expand Down
Loading