bec-widgets 0.52.1__py3-none-any.whl → 0.53.0__py3-none-any.whl

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 (67) hide show
  1. .git_hooks/pre-commit +3 -0
  2. .gitignore +177 -0
  3. .gitlab/issue_templates/bug_report_template.md +17 -0
  4. .gitlab/issue_templates/documentation_update_template.md +27 -0
  5. .gitlab/issue_templates/feature_request_template.md +40 -0
  6. .gitlab/merge_request_templates/default.md +28 -0
  7. .gitlab-ci.yml +225 -0
  8. .pylintrc +581 -0
  9. .readthedocs.yaml +25 -0
  10. CHANGELOG.md +176 -0
  11. PKG-INFO +33 -0
  12. bec_widgets-0.52.1.dist-info/METADATA → README.md +6 -42
  13. bec_widgets/cli/client.py +9 -9
  14. bec_widgets/cli/rpc_wigdet_handler.py +1 -3
  15. bec_widgets/examples/modular_app/___init__.py +0 -0
  16. bec_widgets/examples/modular_app/modular.ui +92 -0
  17. bec_widgets/examples/modular_app/modular_app.py +197 -0
  18. bec_widgets/examples/motor_movement/motor_control_compilations.py +1 -1
  19. bec_widgets/examples/motor_movement/motor_example.py +3 -12
  20. bec_widgets/utils/bec_dispatcher.py +1 -3
  21. bec_widgets/widgets/dock/dock_area.py +1 -4
  22. bec_widgets/widgets/figure/figure.py +3 -15
  23. bec_widgets/widgets/monitor/config_dialog.py +3 -19
  24. bec_widgets/widgets/monitor/example_configs/config_device.yaml +60 -0
  25. bec_widgets/widgets/monitor/example_configs/config_scans.yaml +92 -0
  26. bec_widgets/widgets/motor_map/motor_map.py +3 -14
  27. bec_widgets/widgets/plots/motor_map.py +2 -9
  28. bec_widgets/widgets/scan_control/scan_control.py +1 -3
  29. bec_widgets-0.53.0.dist-info/METADATA +33 -0
  30. {bec_widgets-0.52.1.dist-info → bec_widgets-0.53.0.dist-info}/RECORD +66 -23
  31. {bec_widgets-0.52.1.dist-info → bec_widgets-0.53.0.dist-info}/WHEEL +1 -2
  32. bec_widgets-0.53.0.dist-info/licenses/LICENSE +29 -0
  33. docs/Makefile +20 -0
  34. docs/_templates/custom-class-template.rst +34 -0
  35. docs/_templates/custom-module-template.rst +66 -0
  36. docs/conf.py +81 -0
  37. docs/developer/developer.md +26 -0
  38. docs/developer/reference.md +10 -0
  39. docs/index.md +39 -0
  40. docs/introduction/introduction.md +18 -0
  41. docs/make.bat +35 -0
  42. docs/requirements.txt +10 -0
  43. docs/user/apps/modular_app.md +6 -0
  44. docs/user/apps/motor_app.md +34 -0
  45. docs/user/apps/motor_app_10fps.gif +0 -0
  46. docs/user/apps/plot_app.md +6 -0
  47. docs/user/apps.md +39 -0
  48. docs/user/customisation.md +13 -0
  49. docs/user/installation.md +46 -0
  50. docs/user/user.md +38 -0
  51. docs/user/widgets/motor.gif +0 -0
  52. docs/user/widgets/scatter_2D.gif +0 -0
  53. docs/user/widgets/w1D.gif +0 -0
  54. docs/user/widgets.md +41 -0
  55. pyproject.toml +94 -0
  56. tests/unit_tests/test_bec_dispatcher.py +3 -26
  57. tests/unit_tests/test_bec_figure.py +1 -5
  58. tests/unit_tests/test_bec_motor_map.py +1 -4
  59. tests/unit_tests/test_config_dialog.py +1 -5
  60. tests/unit_tests/test_configs/config_device.yaml +33 -0
  61. tests/unit_tests/test_configs/config_device_no_entry.yaml +27 -0
  62. tests/unit_tests/test_configs/config_scan.yaml +82 -0
  63. tests/unit_tests/test_motor_control.py +1 -1
  64. tests/unit_tests/test_motor_map.py +5 -20
  65. tests/unit_tests/test_stream_plot.py +2 -12
  66. bec_widgets-0.52.1.dist-info/top_level.txt +0 -2
  67. /bec_widgets-0.52.1.dist-info/LICENSE → /LICENSE +0 -0
@@ -1068,10 +1068,7 @@ class MotorApp(QWidget):
1068
1068
 
1069
1069
  # PyQtGraph Controls
1070
1070
  layout.addWidget(QLabel("Graph Window Controls:"))
1071
- graph_controls = [
1072
- ("Left Drag", "Pan the view"),
1073
- ("Right Drag or Scroll", "Zoom in/out"),
1074
- ]
1071
+ graph_controls = [("Left Drag", "Pan the view"), ("Right Drag or Scroll", "Zoom in/out")]
1075
1072
  for action, description in graph_controls:
1076
1073
  layout.addWidget(QLabel(f"{action} - {description}"))
1077
1074
 
@@ -1111,10 +1108,7 @@ class MotorControl(QThread):
1111
1108
  motors_selected = pyqtSignal(object, object) # Signal to emit when the motors are selected
1112
1109
  # progress_updated = pyqtSignal(int) #TODO Signal to emit progress percentage
1113
1110
 
1114
- def __init__(
1115
- self,
1116
- parent=None,
1117
- ):
1111
+ def __init__(self, parent=None):
1118
1112
  super().__init__(parent)
1119
1113
 
1120
1114
  self.action = None
@@ -1131,10 +1125,7 @@ class MotorControl(QThread):
1131
1125
  self.motor_x_name = motor_x_name
1132
1126
  self.motor_y_name = motor_y_name
1133
1127
 
1134
- self.motor_x, self.motor_y = (
1135
- dev[self.motor_x_name],
1136
- dev[self.motor_y_name],
1137
- )
1128
+ self.motor_x, self.motor_y = (dev[self.motor_x_name], dev[self.motor_y_name])
1138
1129
 
1139
1130
  (self.current_x, self.current_y) = self.get_coordinates()
1140
1131
 
@@ -112,9 +112,7 @@ class BECDispatcher:
112
112
  cls._initialized = False
113
113
 
114
114
  def connect_slot(
115
- self,
116
- slot: Callable,
117
- topics: Union[EndpointInfo, str, list[Union[EndpointInfo, str]]],
115
+ self, slot: Callable, topics: Union[EndpointInfo, str, list[Union[EndpointInfo, str]]]
118
116
  ) -> None:
119
117
  """Connect widget's pyqt slot, so that it is called on new pub/sub topic message.
120
118
 
@@ -70,10 +70,7 @@ class BECDockArea(BECConnector, DockArea):
70
70
  self.docks = WeakValueDictionary(value)
71
71
 
72
72
  def restore_state(
73
- self,
74
- state: dict = None,
75
- missing: Literal["ignore", "error"] = "ignore",
76
- extra="bottom",
73
+ self, state: dict = None, missing: Literal["ignore", "error"] = "ignore", extra="bottom"
77
74
  ):
78
75
  """
79
76
  Restore the state of the dock area. If no state is provided, the last state is restored.
@@ -263,12 +263,7 @@ class BECFigure(BECConnector, pg.GraphicsLayoutWidget):
263
263
  )
264
264
  # User wants to add custom curve
265
265
  elif x is not None and y is not None and x_name is None and y_name is None:
266
- waveform.add_curve_custom(
267
- x=x,
268
- y=y,
269
- color=color,
270
- label=label,
271
- )
266
+ waveform.add_curve_custom(x=x, y=y, color=color, label=label)
272
267
 
273
268
  return waveform
274
269
 
@@ -354,12 +349,7 @@ class BECFigure(BECConnector, pg.GraphicsLayoutWidget):
354
349
  elif (
355
350
  x is not None and y is not None and x_name is None and y_name is None and z_name is None
356
351
  ):
357
- waveform.add_curve_custom(
358
- x=x,
359
- y=y,
360
- color=color,
361
- label=label,
362
- )
352
+ waveform.add_curve_custom(x=x, y=y, color=color, label=label)
363
353
  else:
364
354
  raise ValueError(
365
355
  "Invalid input. Provide either device names (x_name, y_name) or custom data."
@@ -534,9 +524,7 @@ class BECFigure(BECConnector, pg.GraphicsLayoutWidget):
534
524
  widget_id = str(uuid.uuid4())
535
525
  if config is None:
536
526
  config = MotorMapConfig(
537
- widget_class="BECMotorMap",
538
- gui_id=widget_id,
539
- parent_id=self.gui_id,
527
+ widget_class="BECMotorMap", gui_id=widget_id, parent_id=self.gui_id
540
528
  )
541
529
  motor_map = self.add_widget(
542
530
  widget_type="MotorMap",
@@ -113,10 +113,7 @@ CONFIG_SCAN_MODE = {
113
113
  "sources": [
114
114
  {
115
115
  "type": "scan_segment",
116
- "signals": {
117
- "x": [{"name": "samy"}],
118
- "y": [{"name": "gauss_adc2"}],
119
- },
116
+ "signals": {"x": [{"name": "samy"}], "y": [{"name": "gauss_adc2"}]},
120
117
  }
121
118
  ],
122
119
  },
@@ -172,12 +169,7 @@ CONFIG_SCAN_MODE = {
172
169
  class ConfigDialog(QWidget, Ui_Form):
173
170
  config_updated = pyqtSignal(dict)
174
171
 
175
- def __init__(
176
- self,
177
- client=None,
178
- default_config=None,
179
- skip_validation: bool = False,
180
- ):
172
+ def __init__(self, client=None, default_config=None, skip_validation: bool = False):
181
173
  super(ConfigDialog, self).__init__()
182
174
  self.setupUi(self)
183
175
 
@@ -386,15 +378,7 @@ class ConfigDialog(QWidget, Ui_Form):
386
378
  "plot_name": self.safe_text(ui.lineEdit_plot_title),
387
379
  "x_label": self.safe_text(ui.lineEdit_x_label),
388
380
  "y_label": self.safe_text(ui.lineEdit_y_label),
389
- "sources": [
390
- {
391
- "type": "scan_segment",
392
- "signals": {
393
- "x": x_signals,
394
- "y": y_signals,
395
- },
396
- }
397
- ],
381
+ "sources": [{"type": "scan_segment", "signals": {"x": x_signals, "y": y_signals}}],
398
382
  }
399
383
 
400
384
  return plot_data
@@ -0,0 +1,60 @@
1
+ plot_settings:
2
+ background_color: "black"
3
+ num_columns: 2
4
+ colormap: "viridis"
5
+ scan_types: False
6
+
7
+ plot_data:
8
+ - plot_name: "BPM4i plots vs samy"
9
+ x:
10
+ label: 'Motor Y'
11
+ signals:
12
+ - name: "samy"
13
+ entry: "samy"
14
+ y:
15
+ label: 'bpm4i'
16
+ signals:
17
+ - name: "bpm4i"
18
+ entry: "bpm4i"
19
+
20
+ - plot_name: "BPM4i plots vs samx"
21
+ x:
22
+ label: 'Motor X'
23
+ signals:
24
+ - name: "samx"
25
+ entry: "samx"
26
+ y:
27
+ label: 'bpm6b'
28
+ signals:
29
+ - name: "bpm6b"
30
+ entry: "bpm6b"
31
+ - name: "samy"
32
+ entry: "samy"
33
+
34
+ - plot_name: "Multiple Gaussian"
35
+ x:
36
+ label: 'Motor X'
37
+ signals:
38
+ - name: "samx"
39
+ entry: "samx"
40
+ y:
41
+ label: 'Gauss ADC'
42
+ signals:
43
+ - name: "gauss_adc1"
44
+ entry: "gauss_adc1"
45
+ - name: "gauss_adc2"
46
+ entry: "gauss_adc2"
47
+ - name: "gauss_adc3"
48
+ entry: "gauss_adc3"
49
+
50
+ - plot_name: "Linear Signals"
51
+ x:
52
+ label: 'Motor X'
53
+ signals:
54
+ - name: "samy"
55
+ entry: "samy"
56
+ y:
57
+ label: 'Motor Y'
58
+ signals:
59
+ - name: "samy"
60
+ entry: "samy"
@@ -0,0 +1,92 @@
1
+ plot_settings:
2
+ background_color: "black"
3
+ num_columns: 2
4
+ colormap: "plasma"
5
+ scan_types: True
6
+
7
+ plot_data:
8
+ line_scan:
9
+
10
+ - plot_name: "BPM plot"
11
+ x:
12
+ label: 'Motor X'
13
+ signals:
14
+ - name: "samx"
15
+ entry: "samx"
16
+ y:
17
+ label: 'BPM'
18
+ signals:
19
+ - name: "gauss_bpm"
20
+ entry: "gauss_bpm"
21
+ - name: "gauss_adc1"
22
+ entry: "gauss_adc1"
23
+ - name: "gauss_adc2"
24
+ entry: "gauss_adc2"
25
+
26
+ - plot_name: "Multi"
27
+ x:
28
+ label: 'Motor X'
29
+ signals:
30
+ - name: "samx"
31
+ entry: "samx"
32
+ y:
33
+ label: 'Multi'
34
+ signals:
35
+ - name: "gauss_bpm"
36
+ entry: "gauss_bpm"
37
+ - name: "samx"
38
+ entry: "samx"
39
+
40
+ grid_scan:
41
+ - plot_name: "Grid plot 1"
42
+ x:
43
+ label: 'Motor X'
44
+ signals:
45
+ - name: "samx"
46
+ entry: "samx"
47
+ y:
48
+ label: 'BPM'
49
+ signals:
50
+ - name: "gauss_bpm"
51
+ entry: "gauss_bpm"
52
+ - name: "gauss_adc1"
53
+ entry: "gauss_adc1"
54
+
55
+ - plot_name: "Grid plot 2"
56
+ x:
57
+ label: 'Motor X'
58
+ signals:
59
+ - name: "samx"
60
+ entry: "samx"
61
+ y:
62
+ label: 'BPM'
63
+ signals:
64
+ - name: "gauss_bpm"
65
+ entry: "gauss_bpm"
66
+ - name: "gauss_adc1"
67
+ entry: "gauss_adc1"
68
+
69
+ - plot_name: "Grid plot 3"
70
+ x:
71
+ label: 'Motor Y'
72
+ signals:
73
+ - name: "samy"
74
+ entry: "samy"
75
+ y:
76
+ label: 'BPM'
77
+ signals:
78
+ - name: "gauss_bpm"
79
+ entry: "gauss_bpm"
80
+
81
+ - plot_name: "Grid plot 4"
82
+ x:
83
+ label: 'Motor Y'
84
+ signals:
85
+ - name: "samy"
86
+ entry: "samy"
87
+ y:
88
+ label: 'BPM'
89
+ signals:
90
+ - name: "gauss_adc3"
91
+ entry: "gauss_adc3"
92
+
@@ -214,10 +214,7 @@ class MotorMap(pg.GraphicsLayoutWidget):
214
214
  endpoints.append(MessageEndpoints.device_readback(motor))
215
215
 
216
216
  # Connect all topics to a single slot
217
- bec_dispatcher.connect_slot(
218
- self.on_device_readback,
219
- endpoints,
220
- )
217
+ bec_dispatcher.connect_slot(self.on_device_readback, endpoints)
221
218
 
222
219
  def _add_limits_to_plot_data(self):
223
220
  """
@@ -491,11 +488,7 @@ class MotorMap(pg.GraphicsLayoutWidget):
491
488
 
492
489
  # Update the scatter plot
493
490
  self.curves_data[plot_name]["pos"].setData(
494
- x=motor_x_data,
495
- y=motor_y_data,
496
- brush=brushes,
497
- pen=None,
498
- size=self.scatter_size,
491
+ x=motor_x_data, y=motor_y_data, brush=brushes, pen=None, size=self.scatter_size
499
492
  )
500
493
 
501
494
  # Get last know position for crosshair
@@ -595,11 +588,7 @@ if __name__ == "__main__": # pragma: no cover
595
588
  client = BECDispatcher().client
596
589
  client.start()
597
590
  app = QApplication(sys.argv)
598
- motor_map = MotorMap(
599
- config=config,
600
- gui_id=args.id,
601
- skip_validation=True,
602
- )
591
+ motor_map = MotorMap(config=config, gui_id=args.id, skip_validation=True)
603
592
  motor_map.show()
604
593
 
605
594
  sys.exit(app.exec())
@@ -136,10 +136,7 @@ class BECMotorMap(BECPlotBase):
136
136
  Returns:
137
137
  dict: Data of the motor map.
138
138
  """
139
- data = {
140
- "x": self.database_buffer["x"],
141
- "y": self.database_buffer["y"],
142
- }
139
+ data = {"x": self.database_buffer["x"], "y": self.database_buffer["y"]}
143
140
  return data
144
141
 
145
142
  # TODO setup all visual properties
@@ -391,11 +388,7 @@ class BECMotorMap(BECPlotBase):
391
388
 
392
389
  # Update the scatter plot
393
390
  self.plot_components["scatter"].setData(
394
- x=x,
395
- y=y,
396
- brush=brushes,
397
- pen=None,
398
- size=scatter_size,
391
+ x=x, y=y, brush=brushes, pen=None, size=scatter_size
399
392
  )
400
393
 
401
394
  # Get last know position for crosshair
@@ -438,9 +438,7 @@ if __name__ == "__main__": # pragma: no cover
438
438
  client.start()
439
439
 
440
440
  app = QApplication([])
441
- scan_control = ScanControl(
442
- client=client,
443
- ) # allowed_scans=["line_scan", "grid_scan"])
441
+ scan_control = ScanControl(client=client) # allowed_scans=["line_scan", "grid_scan"])
444
442
 
445
443
  window = scan_control
446
444
  window.show()
@@ -0,0 +1,33 @@
1
+ Metadata-Version: 2.3
2
+ Name: bec_widgets
3
+ Version: 0.53.0
4
+ Summary: BEC Widgets
5
+ Project-URL: Bug Tracker, https://gitlab.psi.ch/bec/bec_widgets/issues
6
+ Project-URL: Homepage, https://gitlab.psi.ch/bec/bec_widgets
7
+ License-File: LICENSE
8
+ Classifier: Development Status :: 3 - Alpha
9
+ Classifier: Programming Language :: Python :: 3
10
+ Classifier: Topic :: Scientific/Engineering
11
+ Requires-Python: >=3.10
12
+ Requires-Dist: bec-lib
13
+ Requires-Dist: black
14
+ Requires-Dist: h5py
15
+ Requires-Dist: jedi
16
+ Requires-Dist: pydantic
17
+ Requires-Dist: pyqtdarktheme
18
+ Requires-Dist: pyqtgraph
19
+ Requires-Dist: qtconsole
20
+ Requires-Dist: qtpy
21
+ Requires-Dist: zmq
22
+ Provides-Extra: dev
23
+ Requires-Dist: coverage; extra == 'dev'
24
+ Requires-Dist: fakeredis; extra == 'dev'
25
+ Requires-Dist: isort; extra == 'dev'
26
+ Requires-Dist: pytest; extra == 'dev'
27
+ Requires-Dist: pytest-qt; extra == 'dev'
28
+ Requires-Dist: pytest-random-order; extra == 'dev'
29
+ Requires-Dist: pytest-timeout; extra == 'dev'
30
+ Provides-Extra: pyqt5
31
+ Requires-Dist: pyqt5>=5.9; extra == 'pyqt5'
32
+ Provides-Extra: pyqt6
33
+ Requires-Dist: pyqt6>=6.7; extra == 'pyqt6'
@@ -1,12 +1,26 @@
1
+ .gitignore,sha256=cMQ1MLmnoR88aMCCJwUyfoTnufzl4-ckmHtlFUqHcT4,3253
2
+ .gitlab-ci.yml,sha256=LPVy83qI_XshWVQoyx6PP3dKkfJxFIcPWGtGcfftNVE,7333
3
+ .pylintrc,sha256=OstrgmEyP0smNFBKoIN5_26-UmNZgMHnbjvAWX0UrLs,18535
4
+ .readthedocs.yaml,sha256=aSOc277LqXcsTI6lgvm_JY80lMlr69GbPKgivua2cS0,603
5
+ CHANGELOG.md,sha256=bYo26WEhNAuWHugSQ4qL8lkTUFMYCM8_grhjPm0SoQk,6933
6
+ LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
7
+ PKG-INFO,sha256=1QaB5z1C3g33ZmM8rhX3xMTuLwN0ij3PnS66-K_ISZY,1063
8
+ README.md,sha256=y4jB6wvArS7N8_iTbKWnSM_oRAqLA2GqgzUR-FMh5sU,2645
9
+ pyproject.toml,sha256=RZ88Z2ek1vsnyA2CPda8OChyPi_5xLKEyW0mHOkSAn0,1776
10
+ .git_hooks/pre-commit,sha256=n3RofIZHJl8zfJJIUomcMyYGFi_rwq4CC19z0snz3FI,286
11
+ .gitlab/issue_templates/bug_report_template.md,sha256=gAuyEwl7XlnebBrkiJ9AqffSNOywmr8vygUFWKTuQeI,386
12
+ .gitlab/issue_templates/documentation_update_template.md,sha256=FHLdb3TS_D9aL4CYZCjyXSulbaW5mrN2CmwTaeLPbNw,860
13
+ .gitlab/issue_templates/feature_request_template.md,sha256=vjxCnmj53Mp4FPzCrNxhkO-8StRQUZ36PlXu4K8VGaI,1543
14
+ .gitlab/merge_request_templates/default.md,sha256=tfyFA0hRCsIunbLGSlGbxWBQFeB3USpsA3H7IvwQ5UY,715
1
15
  bec_widgets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
16
  bec_widgets/cli/__init__.py,sha256=EHPu69lxYndxm6tJqwHHlktuq0hvOCaid1Nxh0jaexo,91
3
17
  bec_widgets/cli/auto_updates.py,sha256=ptZeBKr13o9THc8oKLn93K_16i6G3pxzw8hZ4MUgjW4,3845
4
18
  bec_widgets/cli/bec_widgets_icon.png,sha256=K8dgGwIjalDh9PRHUsSQBqgdX7a00nM3igZdc20pkYM,1747017
5
- bec_widgets/cli/client.py,sha256=WWWj7wE2nZW9JCMcrxRxDjuEnqyfR9bCfjkpUYoW7oI,45613
19
+ bec_widgets/cli/client.py,sha256=0qM-Zve4cXKNXrSNkxvTDtiWo6NvsYZGauOwLn4Rk3w,45622
6
20
  bec_widgets/cli/client_utils.py,sha256=DNMjH0g3P8k0pdKh7J3d0jNMQ_H1OYtbwSe1Oek1LH0,10402
7
21
  bec_widgets/cli/generate_cli.py,sha256=FFDAogkEewfXMP20jkBBB08vcQdg5k1gnHpldXUcgOw,4101
8
22
  bec_widgets/cli/rpc_register.py,sha256=QxXUZu5XNg00Yf5O3UHWOXg3-f_pzKjjoZYMOa-MOJc,2216
9
- bec_widgets/cli/rpc_wigdet_handler.py,sha256=_a035h9wEB-CQ0CwjNEuowcvlh3UstHu6EdY-UDQOQA,798
23
+ bec_widgets/cli/rpc_wigdet_handler.py,sha256=u54ctT3-pHIf_4788didF4YBXbvNFQI1TqleSILEaZU,783
10
24
  bec_widgets/cli/server.py,sha256=wIDOd56ZPfnM42pOJD8NCI3Dw38Aurb9TwwTrricfvU,5773
11
25
  bec_widgets/examples/__init__.py,sha256=WWQ0cu7m8sA4Ehy-DWdTIqSISjaHsbxhsNmNrMnhDZU,202
12
26
  bec_widgets/examples/eiger_plot/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -19,19 +33,22 @@ bec_widgets/examples/jupyter_console/terminal_icon.png,sha256=bJl7Tft4Fi2uxvuXI8
19
33
  bec_widgets/examples/mca_readout/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
34
  bec_widgets/examples/mca_readout/mca_plot.py,sha256=do7mSK_nzHtojRiMi8JoN_Rckg9yfjYYWz2S_Nl3xbE,5079
21
35
  bec_widgets/examples/mca_readout/mca_sim.py,sha256=yiX_3sOgDZIbAYA4D2BGmOgLMBWbQMOej0hSP4cQd0o,754
36
+ bec_widgets/examples/modular_app/___init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
+ bec_widgets/examples/modular_app/modular.ui,sha256=QM_sCgVELDOt18-4LHNRTjEcq2Ogf6e-E0-JidgkuGY,2450
38
+ bec_widgets/examples/modular_app/modular_app.py,sha256=F-VuxVfTL6WC2aPz1PIXKhU2cEcP1F8VXp-AwdWnk9o,6178
22
39
  bec_widgets/examples/motor_movement/__init__.py,sha256=LzPJkxLAxOsZCbXR-fRCPmeYobp7Yqds6tDxW4W1gSw,214
23
40
  bec_widgets/examples/motor_movement/config_example.yaml,sha256=YT8Bl3ViTaP03cX9X8kIgWnkoxaQOFqS-oRrclGS2hc,356
24
41
  bec_widgets/examples/motor_movement/csax_bec_config.yaml,sha256=cqhzwfIhFgHfCt90oVW3no8aVlWg7V42t4iiJCnydSw,146
25
42
  bec_widgets/examples/motor_movement/csaxs_config.yaml,sha256=poNndp-1ptdnriIJ_RTnbAimFlOJ45VdxfkclGEQlgc,344
26
- bec_widgets/examples/motor_movement/motor_control_compilations.py,sha256=HIDauBIkNmKB8oCuGy_toNkIYxsdBCEniK2zj6vZFVg,8979
43
+ bec_widgets/examples/motor_movement/motor_control_compilations.py,sha256=gj7SRjdKXDuX4jl4e8bnpM9U6l7B1wvwgGUPcVFOGCU,8978
27
44
  bec_widgets/examples/motor_movement/motor_controller.ui,sha256=83XX6NGILwntoUIghvzWnMuGf80O8khK3SduVKTAEFM,29105
28
- bec_widgets/examples/motor_movement/motor_example.py,sha256=_0S_VnksFhwb3WM3dQuI9BUrn8UYzXJg5q6ayPCsaoI,53414
45
+ bec_widgets/examples/motor_movement/motor_example.py,sha256=7HWMKgebEx0x9uJoYhB21qVYEzbTRBHXF15CzCFqXjU,53321
29
46
  bec_widgets/examples/stream_plot/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
47
  bec_widgets/examples/stream_plot/line_plot.ui,sha256=rgNfhOXu1AcWF0P6wnOlmJKDjS-VIoduVrREvmzJQR8,4626
31
48
  bec_widgets/examples/stream_plot/stream_plot.py,sha256=vHii1p9JxSyGQ_VcCjnk9SHJ41Q6Oi1GGd6swVVHLRM,12177
32
49
  bec_widgets/utils/__init__.py,sha256=PAHNbPFnPD-XGxKBZ7ctx9WBrvm9MArkCYDNfoOxVJA,449
33
50
  bec_widgets/utils/bec_connector.py,sha256=dsAPYbI4XzH3JnPcpAX3Z90OmcNVbNrDXPg3l7x8xy8,5185
34
- bec_widgets/utils/bec_dispatcher.py,sha256=xJrsHJ-flLFGA-XCa6wCsMzMpRu1fAy9IcUuLh6igSo,5569
51
+ bec_widgets/utils/bec_dispatcher.py,sha256=yyWHV0f5sM0Ely1iHGAzVXWLzDYlp5KcSMsl16bd5uQ,5552
35
52
  bec_widgets/utils/bec_table.py,sha256=nA2b8ukSeUfquFMAxGrUVOqdrzMoDYD6O_4EYbOG2zk,717
36
53
  bec_widgets/utils/colors.py,sha256=JsLxzkxbw-I8GIuvnIKyiM83n0edhyMG2Fa4Ffm62ww,2392
37
54
  bec_widgets/utils/container_utils.py,sha256=m3VUyAYmSWkEwApP9tBvKxPYVtc2kHw4toxIpMryJy4,1495
@@ -49,14 +66,16 @@ bec_widgets/validation/monitor_config_validator.py,sha256=LJ0kk1cT0x6rAMuEM5Xnml
49
66
  bec_widgets/widgets/__init__.py,sha256=NOgRDV9-uwrH1OK2JdfG5c0WcW77TSRz3PeNlGw22Lc,392
50
67
  bec_widgets/widgets/dock/__init__.py,sha256=B7foHt02gnhM7mFksa7GJVwT7n0j_JvYDCt6wc6XR5g,61
51
68
  bec_widgets/widgets/dock/dock.py,sha256=vnOQnOWWnd-3X07kniSW_I5l0uEHZOaWhfuqZkDGIqE,8467
52
- bec_widgets/widgets/dock/dock_area.py,sha256=cmEsGq-QQvy-j7L5vYMxjpvFLZVOpK9P0KekpH2E4TM,7207
69
+ bec_widgets/widgets/dock/dock_area.py,sha256=UaI5Z-c9C16lhTbXmEVzfl55Y8ymKSk4sPWGleIsUVY,7182
53
70
  bec_widgets/widgets/figure/__init__.py,sha256=3hGx_KOV7QHCYAV06aNuUgKq4QIYCjUTad-DrwkUaBM,44
54
- bec_widgets/widgets/figure/figure.py,sha256=E3H2O5M_ZyAgnej3MkpFbWZAtAvWFpgdtiM14lbQjlw,28756
71
+ bec_widgets/widgets/figure/figure.py,sha256=OSF5y9iMEjhZmPC1MvjCVASfDXapf_o4jeUH3JRhAl0,28565
55
72
  bec_widgets/widgets/monitor/__init__.py,sha256=afXuZcBOxNAuYdCkIQXX5J60R5A3Q_86lNEW2vpFtPI,32
56
- bec_widgets/widgets/monitor/config_dialog.py,sha256=Z1a4WRIVlfEGdwC-QG25kba2EHCZWi5J843tBVZlWiI,20275
73
+ bec_widgets/widgets/monitor/config_dialog.py,sha256=ThR1ZGnIUHqsW4t6ns9pBLTINYLBQwDtS-ipjOg4snU,19993
57
74
  bec_widgets/widgets/monitor/config_dialog.ui,sha256=ISMcF7CLTAMXhfZh2Yv5yezzAjMtb9fxY1pmX4B_jCg,5932
58
75
  bec_widgets/widgets/monitor/monitor.py,sha256=ET5O48kqRlwd8_jCMCrp8QwnL8LvoNgb5nQmVw36pKg,30219
59
76
  bec_widgets/widgets/monitor/tab_template.ui,sha256=JVB5fkzVhTjxMn9EdZCXsnfzBkeZpFMdTRuqTNSDSSo,4904
77
+ bec_widgets/widgets/monitor/example_configs/config_device.yaml,sha256=jn8EGvL_fk4gizCAA8P--OGn1RZGnz2aSlzQI9BcYlU,1172
78
+ bec_widgets/widgets/monitor/example_configs/config_scans.yaml,sha256=TwMhiE_4p88gBlaeoztmkwNObAeoVXLeBFIUsV1Nwu0,1889
60
79
  bec_widgets/widgets/motor_control/__init__.py,sha256=_4-G9AKcEnOyS6qVE26meRw3grEohNeMzACNMU5Sig0,153
61
80
  bec_widgets/widgets/motor_control/motor_control.py,sha256=sfH_uGes4B3mOFPP9BYVMtqMSCFD5fWJNQwNxV06288,42458
62
81
  bec_widgets/widgets/motor_control/motor_control_absolute.ui,sha256=nR3p6oevAkIBTLW5wM_zYOVWsCAUgeMZdRm10Q77COE,4126
@@ -64,16 +83,38 @@ bec_widgets/widgets/motor_control/motor_control_relative.ui,sha256=PulNJNiws7TRA
64
83
  bec_widgets/widgets/motor_control/motor_control_selection.ui,sha256=vXXpvNWuL6xyHhW7Lx1zmVFX-95Z5AXGlhKQD2HmM1A,1779
65
84
  bec_widgets/widgets/motor_control/motor_control_table.ui,sha256=t6aRKiSmutMfp0AyupavbCs0cal-FANEnlKQiPzC9PQ,2792
66
85
  bec_widgets/widgets/motor_map/__init__.py,sha256=K3c-3A_LbxK0UJ0_bV3opL-wGLTwBLendsJXsg8GAqE,32
67
- bec_widgets/widgets/motor_map/motor_map.py,sha256=vJlLWa0BXv5KMZ7UVT0q3I1I5CXgsDiXoM_ptsAsG3c,21860
86
+ bec_widgets/widgets/motor_map/motor_map.py,sha256=mtvYZRfzpBo9t3s8bUeo5XJPUsMMoAakydblWjZUwxQ,21713
68
87
  bec_widgets/widgets/plots/__init__.py,sha256=yaCWQEXiEVj3Oh9qvD3UDzY2HE2PiDKKyKINEcVeL2k,238
69
88
  bec_widgets/widgets/plots/image.py,sha256=nCgL5TK4x4uMUuF_SCfepUJaf9T3bmyvp0eU6PqT3gM,32434
70
- bec_widgets/widgets/plots/motor_map.py,sha256=kA2ALQFalg64xGuyRt7RAQ1DIiBpZUWyyWf3sT1LztU,15297
89
+ bec_widgets/widgets/plots/motor_map.py,sha256=Rm0nOZa2-rBRhsN-84qSxP9XqnHGlecQoEzm3eNzYyw,15213
71
90
  bec_widgets/widgets/plots/plot_base.py,sha256=oNUXEe94bD0_fVu-HPMRaoAuwPMW0DOAN8vvOeRz254,8513
72
91
  bec_widgets/widgets/plots/waveform.py,sha256=DXoc3GSyEuhFFNCkvCOuY5bezS7yDQ_ynTKHgCVtktw,28611
73
92
  bec_widgets/widgets/scan_control/__init__.py,sha256=IOfHl15vxb_uC6KN62-PeUzbBha_vQyqkkXbJ2HU674,38
74
- bec_widgets/widgets/scan_control/scan_control.py,sha256=7UNCnt4XBXn_W9cq3Gm0oC12ZlQNERgdo--7UzyMJig,17188
93
+ bec_widgets/widgets/scan_control/scan_control.py,sha256=omM9_j2TWh6ibYtu6Ep3oqMjVN5gJ_vwf6KWPix3fVA,17173
75
94
  bec_widgets/widgets/toolbar/__init__.py,sha256=d-TP4_cr_VbpwreMM4ePnfZ5YXsEPQ45ibEf75nuGoE,36
76
95
  bec_widgets/widgets/toolbar/toolbar.py,sha256=e0zCD_0q7K4NVhrzD8001Qvfxt-VhqHTgofchS9NgCM,5125
96
+ docs/Makefile,sha256=i2WHuFlgfyAPEW4ssEP8NY4cOibDJrVjvzSEU8_Ggwc,634
97
+ docs/conf.py,sha256=lsNwHWoCuzp_hFIk_P4u6c1OI3D7IPSsH5P2DP0fWFc,2481
98
+ docs/index.md,sha256=6HrqaPXb5uUPEtM2gZaVUi1wM1kUYmdC2aIFpmItzZ0,453
99
+ docs/make.bat,sha256=vKazJE8RW49Cy8K7hm8QYbletvAd8YkeKsaPA_dWnXs,800
100
+ docs/requirements.txt,sha256=5IJN7-VApjTeFouHsaWAb5b4p6wS6wI9fKcJBxcX9QY,134
101
+ docs/_templates/custom-class-template.rst,sha256=HPuPaGJob2zXlWOl5FmA-hAZRbUTGQmdqo3HS1iIFog,711
102
+ docs/_templates/custom-module-template.rst,sha256=MXYXAz06HP_mbblO--iFwL08xROmSBo7U4O-hPbMcZU,1228
103
+ docs/developer/developer.md,sha256=xJvO-EAf-9SqDARRnqFLRd8k_o258U97V0DmvgZKMos,477
104
+ docs/developer/reference.md,sha256=P0uuBwSWuDhbXifSbyDKJRkDhb1_nETckTTnt12-A4g,150
105
+ docs/introduction/introduction.md,sha256=wp7jmhkUtJnSnEnmIAZGUcau_3-5e5-FohvZb63khw4,1432
106
+ docs/user/apps.md,sha256=BpJXL3uccqa9Z34azMqi9uUsKM1ClnIZZFLLxx_hISs,1651
107
+ docs/user/customisation.md,sha256=Og0NuUsTs8HdwKtpHnycGmH8wCqOeYgj2ozlYRJ-Drk,249
108
+ docs/user/installation.md,sha256=8eotL5UQALR8z5aZ5fiJuR3yJOldg2S91ngvn2VVp7I,1233
109
+ docs/user/user.md,sha256=e5WKSginne0HMP7KpqmYEqBtHsPUgw36Egwrq3YUnpg,1997
110
+ docs/user/widgets.md,sha256=viEb7_nqXKcnJT3HqWvq9d2MKRtuwORf58xCquwUWOo,1903
111
+ docs/user/apps/modular_app.md,sha256=My95LH2wQLx2kAbssO39N15I_Mqiiv-64ASnaeW9jbs,67
112
+ docs/user/apps/motor_app.md,sha256=GiEqDfUbKdIr661lJCQtFFJfwZKLyaKtZC9aBho0jos,2416
113
+ docs/user/apps/motor_app_10fps.gif,sha256=jLfOgPoKRcqMqpiYkZNVNHB2IodILzO0IBgWLeSYzeA,5211338
114
+ docs/user/apps/plot_app.md,sha256=hq8ZFyuBLqWD018oc6LB12vfXL6i9hiAu-2IfHkyGIA,65
115
+ docs/user/widgets/motor.gif,sha256=FtaWdRHx4UZaGJPpq8LNhMMgX4PFcAB6IZ93JCMEh_w,2280719
116
+ docs/user/widgets/scatter_2D.gif,sha256=yHpsuAUseMafJjI_J5BcOhmE3nu9VFn_Xm9XHzJaH5I,13188862
117
+ docs/user/widgets/w1D.gif,sha256=tuHbleJpl6bJFNNC2OdndF5LF7IyfvlkFCMGZajrQPs,622773
77
118
  tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
78
119
  tests/end-2-end/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
79
120
  tests/end-2-end/conftest.py,sha256=b5Yebbj8C1-IcXq23XGbOnXF0kOZD_Po46Z-p4cBwfs,1346
@@ -84,30 +125,32 @@ tests/unit_tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,
84
125
  tests/unit_tests/client_mocks.py,sha256=LNUgI9Ccv5Ol7_pmybIhoVqZZem1RPIsTDk7ZTARNls,4128
85
126
  tests/unit_tests/conftest.py,sha256=KrnktXPWmZhnKNue-xGWOLD1XGEvdz9Vf7V2eO3XQ3A,596
86
127
  tests/unit_tests/test_bec_connector.py,sha256=f2XXGGw3NoZLIUrDuZuEWwF_ttOYmmquCgUrV5XkIOY,1951
87
- tests/unit_tests/test_bec_dispatcher.py,sha256=WW-wlzSgZA_h2Qx5EMvXfMlb2i7RYbWj2Cz3S2EzsZQ,4178
128
+ tests/unit_tests/test_bec_dispatcher.py,sha256=rYPiRizHaswhGZw55IBMneDFxmPiCCLAZQBqjEkpdyY,3992
88
129
  tests/unit_tests/test_bec_dock.py,sha256=ZnHUoVQCGbikd0mM64XBL_k0Kxp0d3UqCHpcyY59emg,3596
89
- tests/unit_tests/test_bec_figure.py,sha256=AOPJBGJIdAz80YqSiU1PosEHo-DjlmV8869HBcSHdS0,7860
130
+ tests/unit_tests/test_bec_figure.py,sha256=1nRSX2lJE_wv_R4WteECBxD0NwpQT8NaZH5q66gT-jo,7829
90
131
  tests/unit_tests/test_bec_monitor.py,sha256=mN7gBY7oXY6j65zzihpy8r-FvwVoCQlie3F6SoVq0mo,7042
91
- tests/unit_tests/test_bec_motor_map.py,sha256=IXSfitUGxOPqmngwVNPK5nwi2QDcXWjBkGNb0dBZDxQ,4611
132
+ tests/unit_tests/test_bec_motor_map.py,sha256=oAhnahV9UcPknsCgoP_TwTIlagKola2HFajmtkxzSyo,4588
92
133
  tests/unit_tests/test_client_utils.py,sha256=fIApd5WgnJuyIzV-hdSABn6T-aOel2Wr2xuUX4Z651A,774
93
- tests/unit_tests/test_config_dialog.py,sha256=5uNGcpvrx8qDdMwFCTXr8HMzFZF4rFi-ZHoDpMxGMf8,6955
134
+ tests/unit_tests/test_config_dialog.py,sha256=Y8I9zGG8G9jh0MRCsNl5dQT17bZL6BWaDja7fW1ncCs,6924
94
135
  tests/unit_tests/test_crosshair.py,sha256=d7fX-ymboZPALNqqiAj86PZ96llmGZ_3jf0yjVP0S94,5039
95
136
  tests/unit_tests/test_eiger_plot.py,sha256=bWnKBQid0YcLMQeBLy6ojb4ZpwTG-rFVT0kMg9Y08p8,4427
96
137
  tests/unit_tests/test_generate_cli_client.py,sha256=J7CFoO67txGu_u1Mwk32EejRX204FRuvmVg_yhAr1WM,2397
97
- tests/unit_tests/test_motor_control.py,sha256=jdTG35z3jOL9XCAIDNIGfdv60vcwGLHa3KJjKqJkoZw,20322
98
- tests/unit_tests/test_motor_map.py,sha256=UEjmtIYI2mxq9BUeopqoqNNy7UiPJEts9h45ufsFcrA,5979
138
+ tests/unit_tests/test_motor_control.py,sha256=210qBSZdg4hSDflgwez-pWsoU4m3W8hmGCJEdCeu6MA,20321
139
+ tests/unit_tests/test_motor_map.py,sha256=aKhJtgHOLMOlpniguuH5iGKh72ihYZ1L2S2KEmZUC0k,5875
99
140
  tests/unit_tests/test_plot_base.py,sha256=bOdlgAxh9oKk5PwiQ_MSFmzr44uJ61Tlg242RCIhl5c,2610
100
141
  tests/unit_tests/test_rpc_register.py,sha256=hECjZEimd440mwRrO0rg7L3PKN7__3DgjmESN6wx3bo,1179
101
142
  tests/unit_tests/test_scan_control.py,sha256=7dtGpE0g4FqUhhQeCkyJl-9o7NH3DFZJgEaqDmBYbBc,7551
102
- tests/unit_tests/test_stream_plot.py,sha256=LNCYIj9CafremGaz-DwDktCRJRrjgfOdVewCUwwZE5s,5843
143
+ tests/unit_tests/test_stream_plot.py,sha256=T0y4dPUTWzACQ2x6QKCYpWQBBNoOTEEgOZJsEDek8Eo,5725
103
144
  tests/unit_tests/test_validator_errors.py,sha256=NFxyv0TIOXeZKZRRUBfVQ7bpunwY4KkG95yTUdQmvns,3532
104
145
  tests/unit_tests/test_waveform1d.py,sha256=cBtESTQgsVQdv-Wl75eHK9D8YY-b60Z5wqtPCo9ohu0,15002
105
146
  tests/unit_tests/test_widget_io.py,sha256=FeL3ZYSBQnRt6jxj8VGYw1cmcicRQyHKleahw7XIyR0,3475
106
147
  tests/unit_tests/test_yaml_dialog.py,sha256=HNrqferkdg02-9ieOhhI2mr2Qvt7GrYgXmQ061YCTbg,5794
148
+ tests/unit_tests/test_configs/config_device.yaml,sha256=h3zNb5ZaT_sA59Sf-24qsXs54MgUsspo-GOJmKWHx3o,695
149
+ tests/unit_tests/test_configs/config_device_no_entry.yaml,sha256=hdvue9KLc_kfNzGPuJGpDZnRJknoF_yDNX1Fw5VYAQY,520
150
+ tests/unit_tests/test_configs/config_scan.yaml,sha256=vo484BbWOjA_e-h6bTjSV9k7QaQHrlAvx-z8wtY-P4E,1915
107
151
  tests/unit_tests/test_msgs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
108
152
  tests/unit_tests/test_msgs/available_scans_message.py,sha256=m_z97hIrjHXXMa2Ex-UvsPmTxOYXfjxyJaGkIY6StTY,46532
109
- bec_widgets-0.52.1.dist-info/LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
110
- bec_widgets-0.52.1.dist-info/METADATA,sha256=yxz2llCxurAtFc3xAZgLXHEQA4LZmxP7vFVhTCy-3ms,3724
111
- bec_widgets-0.52.1.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
112
- bec_widgets-0.52.1.dist-info/top_level.txt,sha256=EXCwhJYmXmd1DjYYL3hrGsddX-97IwYSiIHrf27FFVk,18
113
- bec_widgets-0.52.1.dist-info/RECORD,,
153
+ bec_widgets-0.53.0.dist-info/METADATA,sha256=1QaB5z1C3g33ZmM8rhX3xMTuLwN0ij3PnS66-K_ISZY,1063
154
+ bec_widgets-0.53.0.dist-info/WHEEL,sha256=zEMcRr9Kr03x1ozGwg5v9NQBKn3kndp6LSoSlVg-jhU,87
155
+ bec_widgets-0.53.0.dist-info/licenses/LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
156
+ bec_widgets-0.53.0.dist-info/RECORD,,
@@ -1,5 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.43.0)
2
+ Generator: hatchling 1.24.2
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
-
@@ -0,0 +1,29 @@
1
+ BSD 3-Clause License
2
+
3
+ Copyright (c) 2023, bec
4
+ All rights reserved.
5
+
6
+ Redistribution and use in source and binary forms, with or without
7
+ modification, are permitted provided that the following conditions are met:
8
+
9
+ 1. Redistributions of source code must retain the above copyright notice, this
10
+ list of conditions and the following disclaimer.
11
+
12
+ 2. Redistributions in binary form must reproduce the above copyright notice,
13
+ this list of conditions and the following disclaimer in the documentation
14
+ and/or other materials provided with the distribution.
15
+
16
+ 3. Neither the name of the copyright holder nor the names of its
17
+ contributors may be used to endorse or promote products derived from
18
+ this software without specific prior written permission.
19
+
20
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
24
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
docs/Makefile ADDED
@@ -0,0 +1,20 @@
1
+ # Minimal makefile for Sphinx documentation
2
+ #
3
+
4
+ # You can set these variables from the command line, and also
5
+ # from the environment for the first two.
6
+ SPHINXOPTS ?=
7
+ SPHINXBUILD ?= sphinx-build
8
+ SOURCEDIR = .
9
+ BUILDDIR = _build
10
+
11
+ # Put it first so that "make" without argument is like "make help".
12
+ help:
13
+ @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
14
+
15
+ .PHONY: help Makefile
16
+
17
+ # Catch-all target: route all unknown targets to Sphinx using the new
18
+ # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
19
+ %: Makefile
20
+ @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)