bec-widgets 0.46.4__tar.gz → 0.46.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/PKG-INFO +1 -1
  2. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/cli/client_utils.py +13 -1
  3. bec_widgets-0.46.6/bec_widgets/examples/jupyter_console/jupyter_console_window.py +102 -0
  4. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/widgets/figure/figure.py +4 -104
  5. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets.egg-info/PKG-INFO +1 -1
  6. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets.egg-info/SOURCES.txt +4 -1
  7. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/setup.py +1 -1
  8. bec_widgets-0.46.6/tests/unit_tests/test_client_utils.py +29 -0
  9. bec_widgets-0.46.6/tests/unit_tests/test_msgs/__init__.py +0 -0
  10. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/LICENSE +0 -0
  11. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/README.md +0 -0
  12. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/__init__.py +0 -0
  13. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/cli/__init__.py +0 -0
  14. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/cli/client.py +0 -0
  15. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/cli/generate_cli.py +0 -0
  16. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/cli/server.py +0 -0
  17. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/examples/__init__.py +0 -0
  18. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/examples/eiger_plot/__init__.py +0 -0
  19. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/examples/eiger_plot/eiger_plot.py +0 -0
  20. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/examples/eiger_plot/eiger_plot.ui +0 -0
  21. {bec_widgets-0.46.4/bec_widgets/examples/mca_readout → bec_widgets-0.46.6/bec_widgets/examples/jupyter_console}/__init__.py +0 -0
  22. /bec_widgets-0.46.4/bec_widgets/widgets/figure/figure_debug_minimal.ui → /bec_widgets-0.46.6/bec_widgets/examples/jupyter_console/jupyter_console_window.ui +0 -0
  23. {bec_widgets-0.46.4/bec_widgets/examples/stream_plot → bec_widgets-0.46.6/bec_widgets/examples/mca_readout}/__init__.py +0 -0
  24. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/examples/mca_readout/mca_plot.py +0 -0
  25. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/examples/mca_readout/mca_sim.py +0 -0
  26. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/examples/motor_movement/__init__.py +0 -0
  27. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/examples/motor_movement/config_example.yaml +0 -0
  28. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/examples/motor_movement/csax_bec_config.yaml +0 -0
  29. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/examples/motor_movement/csaxs_config.yaml +0 -0
  30. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/examples/motor_movement/motor_control_compilations.py +0 -0
  31. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/examples/motor_movement/motor_controller.ui +0 -0
  32. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/examples/motor_movement/motor_example.py +0 -0
  33. {bec_widgets-0.46.4/bec_widgets/simulations → bec_widgets-0.46.6/bec_widgets/examples/stream_plot}/__init__.py +0 -0
  34. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/examples/stream_plot/line_plot.ui +0 -0
  35. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/examples/stream_plot/stream_plot.py +0 -0
  36. {bec_widgets-0.46.4/tests → bec_widgets-0.46.6/bec_widgets/simulations}/__init__.py +0 -0
  37. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/utils/__init__.py +0 -0
  38. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/utils/bec_connector.py +0 -0
  39. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/utils/bec_dispatcher.py +0 -0
  40. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/utils/bec_table.py +0 -0
  41. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/utils/colors.py +0 -0
  42. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/utils/crosshair.py +0 -0
  43. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/utils/ctrl_c.py +0 -0
  44. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/utils/entry_validator.py +0 -0
  45. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/utils/rpc_decorator.py +0 -0
  46. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/utils/validator_delegate.py +0 -0
  47. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/utils/widget_io.py +0 -0
  48. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/utils/yaml_dialog.py +0 -0
  49. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/validation/__init__.py +0 -0
  50. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/validation/monitor_config_validator.py +0 -0
  51. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/widgets/__init__.py +0 -0
  52. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/widgets/editor/__init__.py +0 -0
  53. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/widgets/editor/editor.py +0 -0
  54. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/widgets/figure/__init__.py +0 -0
  55. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/widgets/monitor/__init__.py +0 -0
  56. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/widgets/monitor/config_dialog.py +0 -0
  57. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/widgets/monitor/config_dialog.ui +0 -0
  58. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/widgets/monitor/monitor.py +0 -0
  59. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/widgets/monitor/tab_template.ui +0 -0
  60. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/widgets/motor_control/__init__.py +0 -0
  61. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/widgets/motor_control/motor_control.py +0 -0
  62. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/widgets/motor_control/motor_control_absolute.ui +0 -0
  63. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/widgets/motor_control/motor_control_relative.ui +0 -0
  64. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/widgets/motor_control/motor_control_selection.ui +0 -0
  65. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/widgets/motor_control/motor_control_table.ui +0 -0
  66. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/widgets/motor_map/__init__.py +0 -0
  67. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/widgets/motor_map/motor_map.py +0 -0
  68. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/widgets/plots/__init__.py +0 -0
  69. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/widgets/plots/image.py +0 -0
  70. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/widgets/plots/motor_map.py +0 -0
  71. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/widgets/plots/plot_base.py +0 -0
  72. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/widgets/plots/waveform.py +0 -0
  73. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/widgets/scan_control/__init__.py +0 -0
  74. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/widgets/scan_control/scan_control.py +0 -0
  75. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/widgets/toolbar/__init__.py +0 -0
  76. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets/widgets/toolbar/toolbar.py +0 -0
  77. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets.egg-info/dependency_links.txt +0 -0
  78. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets.egg-info/requires.txt +0 -0
  79. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/bec_widgets.egg-info/top_level.txt +0 -0
  80. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/setup.cfg +0 -0
  81. {bec_widgets-0.46.4/tests/unit_tests → bec_widgets-0.46.6/tests}/__init__.py +0 -0
  82. {bec_widgets-0.46.4/tests/unit_tests/test_msgs → bec_widgets-0.46.6/tests/unit_tests}/__init__.py +0 -0
  83. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/tests/unit_tests/client_mocks.py +0 -0
  84. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/tests/unit_tests/conftest.py +0 -0
  85. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/tests/unit_tests/test_bec_connector.py +0 -0
  86. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/tests/unit_tests/test_bec_dispatcher.py +0 -0
  87. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/tests/unit_tests/test_bec_figure.py +0 -0
  88. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/tests/unit_tests/test_bec_monitor.py +0 -0
  89. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/tests/unit_tests/test_bec_motor_map.py +0 -0
  90. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/tests/unit_tests/test_config_dialog.py +0 -0
  91. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/tests/unit_tests/test_crosshair.py +0 -0
  92. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/tests/unit_tests/test_editor.py +0 -0
  93. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/tests/unit_tests/test_eiger_plot.py +0 -0
  94. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/tests/unit_tests/test_generate_cli_client.py +0 -0
  95. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/tests/unit_tests/test_motor_control.py +0 -0
  96. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/tests/unit_tests/test_motor_map.py +0 -0
  97. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/tests/unit_tests/test_msgs/available_scans_message.py +0 -0
  98. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/tests/unit_tests/test_plot_base.py +0 -0
  99. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/tests/unit_tests/test_scan_control.py +0 -0
  100. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/tests/unit_tests/test_stream_plot.py +0 -0
  101. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/tests/unit_tests/test_validator_errors.py +0 -0
  102. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/tests/unit_tests/test_waveform1d.py +0 -0
  103. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/tests/unit_tests/test_widget_io.py +0 -0
  104. {bec_widgets-0.46.4 → bec_widgets-0.46.6}/tests/unit_tests/test_yaml_dialog.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: bec_widgets
3
- Version: 0.46.4
3
+ Version: 0.46.6
4
4
  Summary: BEC Widgets
5
5
  Home-page: https://gitlab.psi.ch/bec/bec-widgets
6
6
  Project-URL: Bug Tracker, https://gitlab.psi.ch/bec/bec-widgets/issues
@@ -36,6 +36,17 @@ def rpc_call(func):
36
36
 
37
37
  @wraps(func)
38
38
  def wrapper(self, *args, **kwargs):
39
+ # we could rely on a strict type check here, but this is more flexible
40
+ # moreover, it would anyway crash for objects...
41
+ out = []
42
+ for arg in args:
43
+ if hasattr(arg, "name"):
44
+ arg = arg.name
45
+ out.append(arg)
46
+ args = tuple(out)
47
+ for key, val in kwargs.items():
48
+ if hasattr(val, "name"):
49
+ kwargs[key] = val.name
39
50
  if not self.gui_is_alive():
40
51
  raise RuntimeError("GUI is not alive")
41
52
  return self._run_rpc(func.__name__, *args, **kwargs)
@@ -82,8 +93,9 @@ def update_script(figure: BECFigure, msg):
82
93
  print(f"Scan {scan_number} is running")
83
94
  dev_x = scan_report_devices[0]
84
95
  dev_y = scan_report_devices[1]
96
+ dev_z = get_selected_device(monitored_devices, figure.selected_device)
85
97
  figure.clear_all()
86
- plt = figure.plot(dev_x, dev_y, label=f"Scan {scan_number}")
98
+ plt = figure.plot(dev_x, dev_y, dev_z, label=f"Scan {scan_number}")
87
99
  plt.set(title=f"Scan {scan_number}", x_label=dev_x, y_label=dev_y)
88
100
  elif scan_report_devices:
89
101
  dev_x = scan_report_devices[0]
@@ -0,0 +1,102 @@
1
+ import os
2
+
3
+ import numpy as np
4
+ import pyqtgraph as pg
5
+ from pyqtgraph.Qt import uic
6
+ from qtconsole.inprocess import QtInProcessKernelManager
7
+ from qtconsole.rich_jupyter_widget import RichJupyterWidget
8
+ from qtpy.QtWidgets import QApplication, QVBoxLayout, QWidget
9
+
10
+ from bec_widgets.utils import BECDispatcher
11
+ from bec_widgets.widgets import BECFigure
12
+
13
+
14
+ class JupyterConsoleWidget(RichJupyterWidget): # pragma: no cover:
15
+ def __init__(self):
16
+ super().__init__()
17
+
18
+ self.kernel_manager = QtInProcessKernelManager()
19
+ self.kernel_manager.start_kernel(show_banner=False)
20
+ self.kernel_client = self.kernel_manager.client()
21
+ self.kernel_client.start_channels()
22
+
23
+ self.kernel_manager.kernel.shell.push({"np": np, "pg": pg})
24
+ # self.set_console_font_size(70)
25
+
26
+ def shutdown_kernel(self):
27
+ self.kernel_client.stop_channels()
28
+ self.kernel_manager.shutdown_kernel()
29
+
30
+
31
+ class JupyterConsoleWindow(QWidget): # pragma: no cover:
32
+ """A widget that contains a Jupyter console linked to BEC Widgets with full API access (contains Qt and pyqtgraph API)."""
33
+
34
+ def __init__(self, parent=None):
35
+ super().__init__(parent)
36
+
37
+ current_path = os.path.dirname(__file__)
38
+ uic.loadUi(os.path.join(current_path, "jupyter_console_window.ui"), self)
39
+
40
+ self._init_ui()
41
+
42
+ self.splitter.setSizes([200, 100])
43
+ self.safe_close = False
44
+ # self.figure.clean_signal.connect(self.confirm_close)
45
+
46
+ # console push
47
+ self.console.kernel_manager.kernel.shell.push(
48
+ {
49
+ "fig": self.figure,
50
+ "w1": self.w1,
51
+ "w2": self.w2,
52
+ "w3": self.w3,
53
+ "bec": self.figure.client,
54
+ "scans": self.figure.client.scans,
55
+ "dev": self.figure.client.device_manager.devices,
56
+ }
57
+ )
58
+
59
+ def _init_ui(self):
60
+ # Plotting window
61
+ self.glw_1_layout = QVBoxLayout(self.glw) # Create a new QVBoxLayout
62
+ self.figure = BECFigure(parent=self, gui_id="remote") # Create a new BECDeviceMonitor
63
+ self.glw_1_layout.addWidget(self.figure) # Add BECDeviceMonitor to the layout
64
+
65
+ # add stuff to figure
66
+ self._init_figure()
67
+
68
+ self.console_layout = QVBoxLayout(self.widget_console)
69
+ self.console = JupyterConsoleWidget()
70
+ self.console_layout.addWidget(self.console)
71
+ self.console.set_default_style("linux")
72
+
73
+ def _init_figure(self):
74
+ self.figure.plot("samx", "bpm4d")
75
+ self.figure.motor_map("samx", "samy")
76
+ self.figure.image("eiger", color_map="viridis", vrange=(0, 100))
77
+
78
+ self.figure.change_layout(2, 2)
79
+
80
+ self.w1 = self.figure[0, 0]
81
+ self.w2 = self.figure[0, 1]
82
+ self.w3 = self.figure[1, 0]
83
+
84
+ # curves for w1
85
+ self.w1.add_curve_scan("samx", "samy", "bpm4i", pen_style="dash")
86
+ self.w1.add_curve_scan("samx", "samy", "bpm3a", pen_style="dash")
87
+ self.c1 = self.w1.get_config()
88
+
89
+
90
+ if __name__ == "__main__": # pragma: no cover
91
+ import sys
92
+
93
+ bec_dispatcher = BECDispatcher()
94
+ client = bec_dispatcher.client
95
+ client.start()
96
+
97
+ app = QApplication(sys.argv)
98
+ app.setApplicationName("Jupyter Console")
99
+ win = JupyterConsoleWindow()
100
+ win.show()
101
+
102
+ sys.exit(app.exec_())
@@ -227,7 +227,7 @@ class BECFigure(BECConnector, pg.GraphicsLayoutWidget):
227
227
  y_entry=y_entry,
228
228
  z_entry=z_entry,
229
229
  color=color,
230
- color_map=color_map_z,
230
+ color_map_z=color_map_z,
231
231
  label=label,
232
232
  validate=validate,
233
233
  )
@@ -313,7 +313,7 @@ class BECFigure(BECConnector, pg.GraphicsLayoutWidget):
313
313
  y_entry=y_entry,
314
314
  z_entry=z_entry,
315
315
  color=color,
316
- color_map=color_map_z,
316
+ color_map_z=color_map_z,
317
317
  label=label,
318
318
  validate=validate,
319
319
  )
@@ -787,8 +787,8 @@ class BECFigure(BECConnector, pg.GraphicsLayoutWidget):
787
787
 
788
788
  def clear_all(self):
789
789
  """Clear all widgets from the figure and reset to default state"""
790
- for widget in self._widgets.values():
791
- widget.cleanup()
790
+ # for widget in self._widgets.values():
791
+ # widget.cleanup()
792
792
  self.clear()
793
793
  self._widgets = defaultdict(dict)
794
794
  self.grid = []
@@ -796,103 +796,3 @@ class BECFigure(BECConnector, pg.GraphicsLayoutWidget):
796
796
  self.config = FigureConfig(
797
797
  widget_class=self.__class__.__name__, gui_id=self.gui_id, theme=theme
798
798
  )
799
-
800
-
801
- ##################################################
802
- ##################################################
803
- # Debug window
804
- ##################################################
805
- ##################################################
806
-
807
- from qtconsole.inprocess import QtInProcessKernelManager
808
- from qtconsole.rich_jupyter_widget import RichJupyterWidget
809
-
810
-
811
- class JupyterConsoleWidget(RichJupyterWidget): # pragma: no cover:
812
- def __init__(self):
813
- super().__init__()
814
-
815
- self.kernel_manager = QtInProcessKernelManager()
816
- self.kernel_manager.start_kernel(show_banner=False)
817
- self.kernel_client = self.kernel_manager.client()
818
- self.kernel_client.start_channels()
819
-
820
- self.kernel_manager.kernel.shell.push({"np": np, "pg": pg})
821
- # self.set_console_font_size(70)
822
-
823
- def shutdown_kernel(self):
824
- self.kernel_client.stop_channels()
825
- self.kernel_manager.shutdown_kernel()
826
-
827
-
828
- class DebugWindow(QWidget): # pragma: no cover:
829
- """Debug window for BEC widgets"""
830
-
831
- def __init__(self, parent=None):
832
- super().__init__(parent)
833
-
834
- current_path = os.path.dirname(__file__)
835
- uic.loadUi(os.path.join(current_path, "figure_debug_minimal.ui"), self)
836
-
837
- self._init_ui()
838
-
839
- self.splitter.setSizes([200, 100])
840
- self.safe_close = False
841
- # self.figure.clean_signal.connect(self.confirm_close)
842
-
843
- # console push
844
- self.console.kernel_manager.kernel.shell.push(
845
- {
846
- "fig": self.figure,
847
- "w1": self.w1,
848
- "w2": self.w2,
849
- "w3": self.w3,
850
- "bec": self.figure.client,
851
- "scans": self.figure.client.scans,
852
- "dev": self.figure.client.device_manager.devices,
853
- }
854
- )
855
-
856
- def _init_ui(self):
857
- # Plotting window
858
- self.glw_1_layout = QVBoxLayout(self.glw) # Create a new QVBoxLayout
859
- self.figure = BECFigure(parent=self, gui_id="remote") # Create a new BECDeviceMonitor
860
- self.glw_1_layout.addWidget(self.figure) # Add BECDeviceMonitor to the layout
861
-
862
- # add stuff to figure
863
- self._init_figure()
864
-
865
- self.console_layout = QVBoxLayout(self.widget_console)
866
- self.console = JupyterConsoleWidget()
867
- self.console_layout.addWidget(self.console)
868
- self.console.set_default_style("linux")
869
-
870
- def _init_figure(self):
871
- self.figure.plot("samx", "bpm4d")
872
- self.figure.motor_map("samx", "samy")
873
- self.figure.image("eiger", color_map="viridis", vrange=(0, 100))
874
-
875
- self.figure.change_layout(2, 2)
876
-
877
- self.w1 = self.figure[0, 0]
878
- self.w2 = self.figure[0, 1]
879
- self.w3 = self.figure[1, 0]
880
-
881
- # curves for w1
882
- self.w1.add_curve_scan("samx", "samy", "bpm4i", pen_style="dash")
883
- self.w1.add_curve_scan("samx", "samy", "bpm3a", pen_style="dash")
884
- self.c1 = self.w1.get_config()
885
-
886
-
887
- if __name__ == "__main__": # pragma: no cover
888
- import sys
889
-
890
- bec_dispatcher = BECDispatcher()
891
- client = bec_dispatcher.client
892
- client.start()
893
-
894
- app = QApplication(sys.argv)
895
- win = DebugWindow()
896
- win.show()
897
-
898
- sys.exit(app.exec_())
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: bec-widgets
3
- Version: 0.46.4
3
+ Version: 0.46.6
4
4
  Summary: BEC Widgets
5
5
  Home-page: https://gitlab.psi.ch/bec/bec-widgets
6
6
  Project-URL: Bug Tracker, https://gitlab.psi.ch/bec/bec-widgets/issues
@@ -12,6 +12,9 @@ setup.py
12
12
  ./bec_widgets/examples/eiger_plot/__init__.py
13
13
  ./bec_widgets/examples/eiger_plot/eiger_plot.py
14
14
  ./bec_widgets/examples/eiger_plot/eiger_plot.ui
15
+ ./bec_widgets/examples/jupyter_console/__init__.py
16
+ ./bec_widgets/examples/jupyter_console/jupyter_console_window.py
17
+ ./bec_widgets/examples/jupyter_console/jupyter_console_window.ui
15
18
  ./bec_widgets/examples/mca_readout/__init__.py
16
19
  ./bec_widgets/examples/mca_readout/mca_plot.py
17
20
  ./bec_widgets/examples/mca_readout/mca_sim.py
@@ -45,7 +48,6 @@ setup.py
45
48
  ./bec_widgets/widgets/editor/editor.py
46
49
  ./bec_widgets/widgets/figure/__init__.py
47
50
  ./bec_widgets/widgets/figure/figure.py
48
- ./bec_widgets/widgets/figure/figure_debug_minimal.ui
49
51
  ./bec_widgets/widgets/monitor/__init__.py
50
52
  ./bec_widgets/widgets/monitor/config_dialog.py
51
53
  ./bec_widgets/widgets/monitor/config_dialog.ui
@@ -77,6 +79,7 @@ setup.py
77
79
  ./tests/unit_tests/test_bec_figure.py
78
80
  ./tests/unit_tests/test_bec_monitor.py
79
81
  ./tests/unit_tests/test_bec_motor_map.py
82
+ ./tests/unit_tests/test_client_utils.py
80
83
  ./tests/unit_tests/test_config_dialog.py
81
84
  ./tests/unit_tests/test_crosshair.py
82
85
  ./tests/unit_tests/test_editor.py
@@ -1,7 +1,7 @@
1
1
  # pylint: disable= missing-module-docstring
2
2
  from setuptools import find_packages, setup
3
3
 
4
- __version__ = "0.46.4"
4
+ __version__ = "0.46.6"
5
5
 
6
6
  # Default to PyQt6 if no other Qt binding is installed
7
7
  QT_DEPENDENCY = "PyQt6>=6.0"
@@ -0,0 +1,29 @@
1
+ from unittest import mock
2
+
3
+ import pytest
4
+
5
+ from bec_widgets.cli.client import BECFigure
6
+
7
+ from .client_mocks import FakeDevice
8
+
9
+
10
+ @pytest.fixture
11
+ def cli_figure():
12
+ fig = BECFigure(gui_id="test")
13
+ with mock.patch.object(fig, "_run_rpc") as mock_rpc_call:
14
+ with mock.patch.object(fig, "gui_is_alive", return_value=True):
15
+ yield fig, mock_rpc_call
16
+
17
+
18
+ def test_rpc_call_plot(cli_figure):
19
+ fig, mock_rpc_call = cli_figure
20
+ fig.plot("samx", "bpm4i")
21
+ mock_rpc_call.assert_called_with("plot", "samx", "bpm4i")
22
+
23
+
24
+ def test_rpc_call_accepts_device_as_input(cli_figure):
25
+ dev1 = FakeDevice("samx")
26
+ dev2 = FakeDevice("bpm4i")
27
+ fig, mock_rpc_call = cli_figure
28
+ fig.plot(dev1, dev2)
29
+ mock_rpc_call.assert_called_with("plot", "samx", "bpm4i")
File without changes
File without changes
File without changes