hardware-control 3.0.0__tar.gz → 3.1.0__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 (345) hide show
  1. {hardware-control-3.0.0 → hardware_control-3.1.0}/.gitignore +2 -1
  2. {hardware-control-3.0.0 → hardware_control-3.1.0}/.pre-commit-config.yaml +3 -3
  3. {hardware-control-3.0.0 → hardware_control-3.1.0}/.readthedocs.yaml +1 -1
  4. {hardware-control-3.0.0/docs/source → hardware_control-3.1.0}/CHANGELOG.md +37 -0
  5. hardware_control-3.1.0/PKG-INFO +167 -0
  6. hardware_control-3.1.0/bitbucket-pipelines.yml +47 -0
  7. {hardware-control-3.0.0 → hardware_control-3.1.0/docs/source}/CHANGELOG.md +37 -0
  8. hardware_control-3.1.0/docs/source/images/TPI.jpg +0 -0
  9. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/index.rst +1 -1
  10. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/installation.rst +1 -1
  11. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/instrument_index.rst +1 -0
  12. hardware_control-3.1.0/docs/source/instruments/picotech.rst +10 -0
  13. hardware_control-3.1.0/docs/source/instruments/trinity_power.rst +11 -0
  14. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/outlook.md +3 -3
  15. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/supported_instruments.rst +3 -0
  16. {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/Single_Instrument_Demos/RGA_demo.py +0 -1
  17. {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/Single_Instrument_Demos/TempMonitor_demo.py +0 -1
  18. hardware_control-3.1.0/pyproject.toml +100 -0
  19. hardware_control-3.1.0/setup.cfg +4 -0
  20. hardware_control-3.1.0/src/hardware_control/_version.py +16 -0
  21. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/base/App.py +54 -4
  22. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/base/Dataset.py +3 -5
  23. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/base/HCMainWindow.py +0 -4
  24. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/base/Instrument.py +10 -10
  25. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/base/ZMQRemoteAdapter.py +0 -1
  26. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/base/hooks.py +6 -6
  27. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/base/logging.py +0 -1
  28. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/controls/DelayGenerator.py +0 -2
  29. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/controls/FunctionGenerator.py +0 -1
  30. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/controls/IOModule.py +0 -4
  31. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/controls/KeysightPowerSupply.py +46 -21
  32. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/controls/MicrowaveControl.py +41 -29
  33. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/controls/MultiPowerSupply.py +47 -79
  34. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/controls/Oscilloscope.py +3 -5
  35. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/controls/RGA.py +0 -2
  36. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/controls/TempMonitor.py +0 -1
  37. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/controls/TempMonitor_Adam.py +3 -4
  38. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/widgets/connection_status.py +0 -1
  39. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/widgets/data_widget.py +0 -1
  40. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/widgets/hc_widgets.py +21 -16
  41. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/widgets/plot.py +7 -2
  42. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/widgets/qtconsole.py +9 -1
  43. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/widgets/scan_widget.py +3 -3
  44. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/widgets/trace_plotter.py +6 -6
  45. hardware_control-3.1.0/src/hardware_control/icons/calibration-error.svg +99 -0
  46. hardware_control-3.1.0/src/hardware_control/icons/disabled.svg +78 -0
  47. hardware_control-3.1.0/src/hardware_control/icons/empty.svg +57 -0
  48. hardware_control-3.1.0/src/hardware_control/icons/interlocked.svg +93 -0
  49. hardware_control-3.1.0/src/hardware_control/icons/kill.svg +96 -0
  50. hardware_control-3.1.0/src/hardware_control/icons/max-voltage.svg +91 -0
  51. hardware_control-3.1.0/src/hardware_control/icons/over-current.svg +94 -0
  52. hardware_control-3.1.0/src/hardware_control/icons/over-power.svg +117 -0
  53. hardware_control-3.1.0/src/hardware_control/icons/over-temperature.svg +105 -0
  54. hardware_control-3.1.0/src/hardware_control/icons/over-voltage.svg +78 -0
  55. hardware_control-3.1.0/src/hardware_control/icons/ramping-down.svg +76 -0
  56. hardware_control-3.1.0/src/hardware_control/icons/ramping-up.svg +76 -0
  57. hardware_control-3.1.0/src/hardware_control/icons/svg/calibration-error.svg +95 -0
  58. hardware_control-3.1.0/src/hardware_control/icons/svg/channel_labels.svg +288 -0
  59. hardware_control-3.1.0/src/hardware_control/icons/svg/connection_label.svg +94 -0
  60. hardware_control-3.1.0/src/hardware_control/icons/svg/disabled.svg +74 -0
  61. hardware_control-3.1.0/src/hardware_control/icons/svg/empty.svg +57 -0
  62. hardware_control-3.1.0/src/hardware_control/icons/svg/func_gen.svg +141 -0
  63. hardware_control-3.1.0/src/hardware_control/icons/svg/interlocked.svg +89 -0
  64. hardware_control-3.1.0/src/hardware_control/icons/svg/kill.svg +92 -0
  65. hardware_control-3.1.0/src/hardware_control/icons/svg/max-voltage.svg +87 -0
  66. hardware_control-3.1.0/src/hardware_control/icons/svg/over-current.svg +90 -0
  67. hardware_control-3.1.0/src/hardware_control/icons/svg/over-power.svg +113 -0
  68. hardware_control-3.1.0/src/hardware_control/icons/svg/over-temperature.svg +101 -0
  69. hardware_control-3.1.0/src/hardware_control/icons/svg/over-voltage.svg +74 -0
  70. hardware_control-3.1.0/src/hardware_control/icons/svg/ramping-down.svg +72 -0
  71. hardware_control-3.1.0/src/hardware_control/icons/svg/ramping-up.svg +72 -0
  72. hardware_control-3.1.0/src/hardware_control/icons/svg/tripped.svg +83 -0
  73. hardware_control-3.1.0/src/hardware_control/icons/svg/under-voltage.svg +74 -0
  74. hardware_control-3.1.0/src/hardware_control/icons/tripped.svg +87 -0
  75. hardware_control-3.1.0/src/hardware_control/icons/under-voltage.svg +78 -0
  76. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/HP/HP_3478A.py +1 -0
  77. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/Keithley/Keithley_2400.py +8 -5
  78. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/advantech/Adam_6015.py +7 -3
  79. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/advantech/Adam_6024.py +31 -0
  80. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/alicat/Alicat_M_Series.py +0 -1
  81. hardware_control-3.1.0/src/hardware_control/instruments/applied_motion/__init__.py +0 -0
  82. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/caen/Caen_RSeries.py +15 -5
  83. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/keysight/Keysight_36300.py +6 -0
  84. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/ni/Ni_9000.py +4 -5
  85. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/picotech/Picoscope.py +51 -19
  86. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/srs/SRS_CIS200.py +1 -3
  87. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/srs/SRS_DG535.py +0 -1
  88. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/srs/SRS_DG645.py +6 -4
  89. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/trinity_power/tpi.py +37 -19
  90. hardware_control-3.1.0/src/hardware_control.egg-info/PKG-INFO +167 -0
  91. hardware_control-3.1.0/src/hardware_control.egg-info/SOURCES.txt +333 -0
  92. {hardware-control-3.0.0 → hardware_control-3.1.0}/tests/test_zmq.py +0 -1
  93. hardware-control-3.0.0/PKG-INFO +0 -108
  94. hardware-control-3.0.0/bitbucket-pipelines.yml +0 -14
  95. hardware-control-3.0.0/docs/source/instruments/picotech.rst +0 -10
  96. hardware-control-3.0.0/hardware_control/_version.py +0 -4
  97. hardware-control-3.0.0/hardware_control.egg-info/PKG-INFO +0 -108
  98. hardware-control-3.0.0/hardware_control.egg-info/SOURCES.txt +0 -302
  99. hardware-control-3.0.0/hardware_control.egg-info/not-zip-safe +0 -1
  100. hardware-control-3.0.0/pyproject.toml +0 -34
  101. hardware-control-3.0.0/setup.cfg +0 -70
  102. hardware-control-3.0.0/setup.py +0 -3
  103. {hardware-control-3.0.0 → hardware_control-3.1.0}/COPYRIGHT +0 -0
  104. {hardware-control-3.0.0 → hardware_control-3.1.0}/LICENSE +0 -0
  105. {hardware-control-3.0.0 → hardware_control-3.1.0}/MANIFEST.in +0 -0
  106. {hardware-control-3.0.0 → hardware_control-3.1.0}/README.md +0 -0
  107. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/Makefile +0 -0
  108. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/make.bat +0 -0
  109. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/adding_commands.md +0 -0
  110. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/adding_instruments.md +0 -0
  111. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/adding_user_interfaces.md +0 -0
  112. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/base/App.rst +0 -0
  113. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/base/Dataset.rst +0 -0
  114. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/base/HCMainWindow.rst +0 -0
  115. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/base/Instrument.rst +0 -0
  116. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/base/ZMQAdapter.rst +0 -0
  117. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/base/ZMQRemoteAdapter.rst +0 -0
  118. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/base/hooks.rst +0 -0
  119. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/base/logging.rst +0 -0
  120. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/base/zmq_helper.rst +0 -0
  121. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/base_index.rst +0 -0
  122. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/conf.py +0 -0
  123. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/examples.md +0 -0
  124. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/gui/controls/DelayGenerator.rst +0 -0
  125. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/gui/controls/FlowController.rst +0 -0
  126. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/gui/controls/FunctionGenerator.rst +0 -0
  127. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/gui/controls/IOModule.rst +0 -0
  128. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/gui/controls/KeysightPowerSupply.rst +0 -0
  129. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/gui/controls/MultiPowerSupply.rst +0 -0
  130. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/gui/controls/Oscilloscope.rst +0 -0
  131. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/gui/controls/RGA.rst +0 -0
  132. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/gui/controls/TempMonitor.rst +0 -0
  133. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/gui/widgets/connection_status.rst +0 -0
  134. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/gui/widgets/data_widget.rst +0 -0
  135. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/gui/widgets/function_runner.rst +0 -0
  136. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/gui/widgets/hc_widgets.rst +0 -0
  137. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/gui/widgets/plot.rst +0 -0
  138. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/gui/widgets/qtconsole.rst +0 -0
  139. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/gui/widgets/scan_widget.rst +0 -0
  140. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/gui_index.rst +0 -0
  141. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/hardware_control.rst +0 -0
  142. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/how_to_contribute.rst +0 -0
  143. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/howtos.rst +0 -0
  144. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/ADAM-6015.jpg +0 -0
  145. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/ADAM-6024.jpg +0 -0
  146. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/Alicat_M-Series.jpg +0 -0
  147. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/CAENR14xxET.jpg +0 -0
  148. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/CAENR803x.jpg +0 -0
  149. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/DG535.jpg +0 -0
  150. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/GP356.jpg +0 -0
  151. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/GP_VQM835.jpg +0 -0
  152. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/HP-34401A.jpg +0 -0
  153. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/HP-3478A.jpg +0 -0
  154. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/Keysight33500B.png +0 -0
  155. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/Keysight4000X.jpeg +0 -0
  156. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/Keysight_E36312A.png +0 -0
  157. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/Lake_Shore_224.png +0 -0
  158. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/Lake_Shore_372.png +0 -0
  159. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/NI9000.jpeg +0 -0
  160. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/Pico_6000.jpg +0 -0
  161. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/RigolDP800.png +0 -0
  162. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/RigolDS100Z.png +0 -0
  163. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/SDG1000X.png +0 -0
  164. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/SRS_CIS.jpg +0 -0
  165. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/TDKLGenH.jpg +0 -0
  166. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/controls/DelayGenerator.png +0 -0
  167. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/controls/FlowController.png +0 -0
  168. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/controls/FunctionGenerator.png +0 -0
  169. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/controls/IOModule.png +0 -0
  170. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/controls/KeysightPowerSupply.png +0 -0
  171. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/controls/MultiPowerSupply.png +0 -0
  172. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/controls/Oscilloscope.png +0 -0
  173. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/controls/RGA.png +0 -0
  174. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/controls/TempMonitor.png +0 -0
  175. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/widgets/connection_status.png +0 -0
  176. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/widgets/data_widget.png +0 -0
  177. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/widgets/function_runner.png +0 -0
  178. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/widgets/plot.png +0 -0
  179. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/widgets/qtconsole.png +0 -0
  180. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/widgets/scan_example.png +0 -0
  181. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/widgets/scan_widget.png +0 -0
  182. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/instruments/advantech.rst +0 -0
  183. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/instruments/alicat.rst +0 -0
  184. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/instruments/caen.rst +0 -0
  185. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/instruments/keysight.rst +0 -0
  186. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/instruments/lakeshore.rst +0 -0
  187. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/instruments/ni.rst +0 -0
  188. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/instruments/rigol.rst +0 -0
  189. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/instruments/siglent.rst +0 -0
  190. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/instruments/srs.rst +0 -0
  191. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/instruments/tdkl.rst +0 -0
  192. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/overview.md +0 -0
  193. {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/using_hardware_control.md +0 -0
  194. {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/Single_Instrument_Demos/Caen14xxET_demo.py +0 -0
  195. {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/Single_Instrument_Demos/DelayGenerator_demo.py +0 -0
  196. {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/Single_Instrument_Demos/FlowController_demo.py +0 -0
  197. {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/Single_Instrument_Demos/FunctionGenerator_demo.py +0 -0
  198. {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/Single_Instrument_Demos/FunctionGenerator_demo_Siglent.py +0 -0
  199. {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/Single_Instrument_Demos/IOModule_demo.py +0 -0
  200. {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/Single_Instrument_Demos/KeysightPowerSupply_demo.py +0 -0
  201. {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/Single_Instrument_Demos/MicrowaveController_demo.py +0 -0
  202. {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/Single_Instrument_Demos/Oscilloscope_demo.py +0 -0
  203. {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/Single_Instrument_Demos/Oscilloscope_demo_Rigol.py +0 -0
  204. {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/Single_Instrument_Demos/Picoscope_demo.py +0 -0
  205. {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/Single_Instrument_Demos/README.md +0 -0
  206. {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/Single_Instrument_Demos/RigolPowerSupply_demo.py +0 -0
  207. {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/Single_Instrument_Demos/TDKLGenH_demo.py +0 -0
  208. {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/Single_Instrument_Demos/settings_files/IOModule_channel_data.json +0 -0
  209. {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/Single_Instrument_Demos/settings_files/keysight_powersupply_init.json +0 -0
  210. {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/Single_Instrument_Demos/settings_files/nidaq_grid_conf.json +0 -0
  211. {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/dataset_plotting.py +0 -0
  212. {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/hooks.py +0 -0
  213. {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/interactive_python.py +0 -0
  214. {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/remote_instrument/client.py +0 -0
  215. {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/remote_instrument/main_app.py +0 -0
  216. {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/scan_widget.py +0 -0
  217. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/__init__.py +0 -0
  218. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/base/ZMQAdapter.py +0 -0
  219. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/base/__init__.py +0 -0
  220. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/base/zmq_helper.py +0 -0
  221. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/__init__.py +0 -0
  222. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/controls/DeviceTemplate.py +0 -0
  223. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/controls/FlowController.py +0 -0
  224. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/controls/__init__.py +0 -0
  225. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/widgets/__init__.py +0 -0
  226. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/widgets/function_runner.py +0 -0
  227. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/BWlim.png +0 -0
  228. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/arrow.png +0 -0
  229. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/async_label.png +0 -0
  230. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/autosave_label.png +0 -0
  231. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/blue_ind.svg +0 -0
  232. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/burst.png +0 -0
  233. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/button-power-off.svg +0 -0
  234. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/button-power-on.svg +0 -0
  235. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/button-power-unknown.svg +0 -0
  236. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/ccurrent_label.svg +0 -0
  237. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel1_yellow.png +0 -0
  238. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel2_green.png +0 -0
  239. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel3_blue.png +0 -0
  240. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel4_red.png +0 -0
  241. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel_1.png +0 -0
  242. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel_10.png +0 -0
  243. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel_11.png +0 -0
  244. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel_12.png +0 -0
  245. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel_13.png +0 -0
  246. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel_14.png +0 -0
  247. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel_15.png +0 -0
  248. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel_16.png +0 -0
  249. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel_17.png +0 -0
  250. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel_18.png +0 -0
  251. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel_19.png +0 -0
  252. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel_2.png +0 -0
  253. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel_20.png +0 -0
  254. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel_3.png +0 -0
  255. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel_4.png +0 -0
  256. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel_5.png +0 -0
  257. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel_6.png +0 -0
  258. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel_7.png +0 -0
  259. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel_8.png +0 -0
  260. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel_9.png +0 -0
  261. {hardware-control-3.0.0/hardware_control/icons/svg → hardware_control-3.1.0/src/hardware_control/icons}/channel_labels.svg +0 -0
  262. {hardware-control-3.0.0/hardware_control/icons/svg → hardware_control-3.1.0/src/hardware_control/icons}/connection_label.svg +0 -0
  263. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/cvoltage_label.svg +0 -0
  264. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/disabled_label.svg +0 -0
  265. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/enabled_label.svg +0 -0
  266. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/error_label.svg +0 -0
  267. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/falling_ind.svg +0 -0
  268. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/falling_ind_pale.svg +0 -0
  269. {hardware-control-3.0.0/hardware_control/icons/svg → hardware_control-3.1.0/src/hardware_control/icons}/func_gen.svg +0 -0
  270. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/gas_flow_label.svg +0 -0
  271. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/green_ind.svg +0 -0
  272. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/grey_ind.svg +0 -0
  273. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/grid_monitor_label.svg +0 -0
  274. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/grid_power_supplies_label.svg +0 -0
  275. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/high_label.svg +0 -0
  276. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/horizontal_label.png +0 -0
  277. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/ind_blue.png +0 -0
  278. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/ind_darkgrey.png +0 -0
  279. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/ind_green.png +0 -0
  280. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/ind_grey.png +0 -0
  281. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/ind_red.png +0 -0
  282. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/invert.png +0 -0
  283. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/low_label.svg +0 -0
  284. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/measurement_label.png +0 -0
  285. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/modulation.png +0 -0
  286. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/na_label.svg +0 -0
  287. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/offline_label.svg +0 -0
  288. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/on-off-indicator-off.svg +0 -0
  289. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/on-off-indicator-on.svg +0 -0
  290. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/on-off-indicator-unkown.svg +0 -0
  291. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/online_label.svg +0 -0
  292. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/plasma_source_timing_settings_label.svg +0 -0
  293. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/power_supply_controls_label.svg +0 -0
  294. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/pulse.png +0 -0
  295. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/rampdn_label.svg +0 -0
  296. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/rampup_label.svg +0 -0
  297. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/red_ind.svg +0 -0
  298. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/rising_ind.svg +0 -0
  299. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/rising_ind_pale.svg +0 -0
  300. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/scan.png +0 -0
  301. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/status_label.png +0 -0
  302. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/steady_ind.svg +0 -0
  303. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/steady_label.svg +0 -0
  304. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/stop.svg +0 -0
  305. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/svg/labels.afdesign +0 -0
  306. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/svg/rise_fall_source.afdesign +0 -0
  307. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/trigger_label.png +0 -0
  308. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/voltage_off.svg +0 -0
  309. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/HP/HP_34401A.py +0 -0
  310. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/HP/__init__.py +0 -0
  311. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/Keithley/Keithley_2001.py +0 -0
  312. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/Keithley/__init__.py +0 -0
  313. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/__init__.py +0 -0
  314. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/advantech/Adam_base.py +0 -0
  315. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/advantech/__init__.py +0 -0
  316. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/alicat/__init__.py +0 -0
  317. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/caen/__init__.py +0 -0
  318. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/demo/demoA.py +0 -0
  319. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/keysight/Keysight_33500B.py +0 -0
  320. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/keysight/Keysight_4000X.py +0 -0
  321. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/keysight/__init__.py +0 -0
  322. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/lakeshore/Lakeshore224.py +0 -0
  323. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/lakeshore/Lakeshore372.py +0 -0
  324. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/lakeshore/LakeshoreBase.py +0 -0
  325. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/lakeshore/__init__.py +0 -0
  326. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/mks/GP356.py +0 -0
  327. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/mks/VQM835.py +0 -0
  328. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/mks/__init__.py +0 -0
  329. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/ni/__init__.py +0 -0
  330. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/picotech/__init__.py +0 -0
  331. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/rigol/Rigol_DP832.py +0 -0
  332. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/rigol/Rigol_DS1000Z.py +0 -0
  333. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/rigol/__init__.py +0 -0
  334. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/siglent/Siglent_SDG.py +0 -0
  335. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/siglent/__init__.py +0 -0
  336. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/srs/__init__.py +0 -0
  337. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/tdkl/TDKL_GenH.py +0 -0
  338. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/tdkl/__init__.py +0 -0
  339. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/trinity_power/__init__.py +0 -0
  340. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/utility.py +0 -0
  341. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control.egg-info/dependency_links.txt +0 -0
  342. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control.egg-info/requires.txt +0 -0
  343. {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control.egg-info/top_level.txt +0 -0
  344. {hardware-control-3.0.0 → hardware_control-3.1.0}/tests/test_hooks.py +0 -0
  345. {hardware-control-3.0.0 → hardware_control-3.1.0}/tests/test_instrument.py +0 -0
@@ -2,7 +2,8 @@
2
2
  __pycache__
3
3
  *.pyc
4
4
  hardware-control.egg-info/
5
- hardware_control/_version.py
5
+ src/hardware_control.egg-info/
6
+ src/hardware_control/_version.py
6
7
  build/
7
8
  dist/
8
9
  python/.eggs/
@@ -7,12 +7,12 @@ repos:
7
7
  - id: debug-statements
8
8
  - id: check-merge-conflict
9
9
  - repo: https://github.com/asottile/pyupgrade
10
- rev: v3.3.1
10
+ rev: v3.14.0
11
11
  hooks:
12
12
  - id: pyupgrade
13
- args: ["--py36-plus"]
13
+ args: ["--py39-plus"]
14
14
  - repo: https://github.com/psf/black
15
- rev: 23.1.0
15
+ rev: 23.9.1
16
16
  hooks:
17
17
  - id: black
18
18
  language_version: python3
@@ -10,7 +10,7 @@ build:
10
10
  apt_packages:
11
11
  - qmake6
12
12
  tools:
13
- python: "3.8"
13
+ python: "3.11"
14
14
 
15
15
  sphinx:
16
16
  configuration: docs/source/conf.py
@@ -7,6 +7,43 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [3.1.0] 2024-04-13
11
+
12
+ ### Fixed
13
+ - automatic update in App.py of instrument parameters was not working correctly
14
+ - Keysight 3600 power supply UI: remove on/off buttons for E3631A mode (only global on/off available)
15
+ - Adam6015: detect offline mode in case command times out
16
+ - plotbase: define variables in init
17
+ - Picoscope: setting larger voltage ranges
18
+ - MWController: added display of actual power level
19
+ - TPI: by default show -9 to +9 dBm, option to override this
20
+ - TPI: fix use in dummy mode
21
+
22
+ ### Added
23
+ - Keysight 3600 power supply: add readout of persona
24
+ - Picoscope: readout of scope parameters
25
+ - Add ZMQ channel to allow other programs to request instrument parameters
26
+
27
+ ### CHANGED
28
+ - changed to src/ layout
29
+ - move setup.{cfg,py} into pyproject.toml
30
+ - require python >= 3.9 (minimum version for numpy)
31
+ - updated pre-commit versions and run on all files
32
+ - updated pipelines and readthedocs python versions
33
+ - MWController: changed order of widgets
34
+ - MultiPowerSupply: better on/off buttons, better status icons
35
+
36
+ ## [3.0.1] 2023-02-18
37
+
38
+ ### CHANGED
39
+ - updated docs
40
+ - Removed auto_update from HCPushButton since it connects to a command not a parameter
41
+
42
+ ### FIXED
43
+ - HCLabel: force convertion to string, so that call to .rjust works all the time
44
+ - TPI: several fixes
45
+ - Fix quering for a serial device
46
+
10
47
  ## [3.0.0] 2023-02-18
11
48
 
12
49
  The main new feature is updating to pyqt6.
@@ -0,0 +1,167 @@
1
+ Metadata-Version: 2.1
2
+ Name: hardware-control
3
+ Version: 3.1.0
4
+ Author-email: Arun Persaud <apersaud@lbl.gov>, Ariel Amsellem <ajamsellem@lbl.gov>, Brian Mak <brianmak@lbl.gov>, Mauricio Ayllon Unzueta <mayllonu@lbl.gov>, Brian Wynne <bwynne@lbl.gov>, Grant Giesbrecht <ggiesbrecht@lbl.gov>, Timo Bauer <TimoBauer@lbl.gov>, Zhihao Qin <zqin@lbl.gov>, Arfon Smith <arfon.smith@gmail.com>, Sara Matsuo Saib <smsaib@lbl.gov>, Caroline Egan <cegan@lbl.gov>, Schuyler Freeman <skyfreeman@lbl.gov>
5
+ License: Copyright (c) 2019, The Regents of the University of California,
6
+ through Lawrence Berkeley National Laboratory (subject to receipt of
7
+ any required approvals from the U.S. Dept. of Energy). All rights
8
+ reserved.
9
+
10
+ Redistribution and use in source and binary forms, with or without
11
+ modification, are permitted provided that the following conditions are
12
+ met:
13
+
14
+ (1) Redistributions of source code must retain the above copyright
15
+ notice, this list of conditions and the following disclaimer.
16
+
17
+ (2) Redistributions in binary form must reproduce the above copyright
18
+ notice, this list of conditions and the following disclaimer in the
19
+ documentation and/or other materials provided with the distribution.
20
+
21
+ (3) Neither the name of the University of California, Lawrence
22
+ Berkeley National Laboratory, U.S. Dept. of Energy, nor the names of
23
+ its contributors may be used to endorse or promote products derived
24
+ from this software without specific prior written permission.
25
+
26
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
27
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
28
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
29
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
30
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
31
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
32
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
33
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
34
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
35
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
36
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37
+
38
+ You are under no obligation whatsoever to provide any bug fixes,
39
+ patches, or upgrades to the features, functionality or performance of
40
+ the source code ("Enhancements") to anyone; however, if you choose to
41
+ make your Enhancements available either publicly, or directly to
42
+ Lawrence Berkeley National Laboratory, without imposing a separate
43
+ written license agreement for such Enhancements, then you hereby grant
44
+ the following license: a non-exclusive, royalty-free perpetual license
45
+ to install, use, modify, prepare derivative works, incorporate into
46
+ other computer software, distribute, and sublicense such enhancements
47
+ or derivative works thereof, in binary and source code form.
48
+
49
+ Project-URL: documentation, https://hardware-control.readthedocs.io/
50
+ Project-URL: homepage, https://bitbucket.org/berkeleylab/hardware-control
51
+ Project-URL: issues, https://bitbucket.org/berkeleylab/hardware-control/issues
52
+ Project-URL: changelog, https://bitbucket.org/berkeleylab/hardware-control/src/main/CHANGELOG.md
53
+ Classifier: Programming Language :: Python :: 3
54
+ Classifier: Operating System :: OS Independent
55
+ Classifier: Development Status :: 5 - Production/Stable
56
+ Classifier: License :: OSI Approved :: BSD License
57
+ Classifier: Intended Audience :: Science/Research
58
+ Classifier: Programming Language :: Python :: 3.9
59
+ Classifier: Programming Language :: Python :: 3.10
60
+ Classifier: Programming Language :: Python :: 3.11
61
+ Classifier: Programming Language :: Python :: 3.12
62
+ Classifier: Topic :: Scientific/Engineering :: Physics
63
+ Requires-Python: >=3.9
64
+ Description-Content-Type: text/markdown
65
+ License-File: LICENSE
66
+ Requires-Dist: docopt
67
+ Requires-Dist: matplotlib
68
+ Requires-Dist: nidaqmx>=0.6.4
69
+ Requires-Dist: numpy
70
+ Requires-Dist: pandas
71
+ Requires-Dist: picoscope
72
+ Requires-Dist: pymodbus>=3.0.0
73
+ Requires-Dist: PyQt6
74
+ Requires-Dist: pyqtgraph
75
+ Requires-Dist: pytest
76
+ Requires-Dist: PyVISA
77
+ Requires-Dist: qtconsole>=5.3.2
78
+ Requires-Dist: recommonmark
79
+ Requires-Dist: scipy
80
+ Requires-Dist: setuptools
81
+ Requires-Dist: setuptools-scm
82
+ Requires-Dist: Sphinx
83
+ Requires-Dist: sphinx_rtd_theme
84
+ Requires-Dist: pyzmq
85
+
86
+ [![read-the-docs](https://readthedocs.org/projects/hardware-control/badge/?style=flat)](https://readthedocs.org/projects/hardware-control/)
87
+ [![PyPI version](https://badge.fury.io/py/hardware-control.svg)](https://badge.fury.io/py/hardware-control)
88
+ [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit)
89
+ [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
90
+ [![DOI](https://joss.theoj.org/papers/10.21105/joss.02688/status.svg)](https://doi.org/10.21105/joss.02688)
91
+
92
+ ## What is this repository for?
93
+
94
+ The goal is to provide reusable code for hardware control using python and Qt.
95
+
96
+ Documentation can be found at [Read the Docs](https://readthedocs.org/projects/hardware-control/).
97
+
98
+ ## How do I get set up?
99
+
100
+ The easiest way is to pip install the software:
101
+
102
+ pip install hardware-control
103
+
104
+ ## Examples
105
+
106
+ If you want to have a quick look at some basic functionality, you can
107
+ run the demos in the example directory. If you have the same hardware
108
+ that is used in the example, you will have to update the connection
109
+ address, e.g. ip address. Otherwise, you can still run the examples by
110
+ providing the `--dummy` command line argument that will simulate
111
+ instrument output. The logging level can also be redirected to the
112
+ terminal using `--console` and the log-level changed by providing
113
+ `--info` or `--debug` options on the command line.
114
+
115
+ ## Tests
116
+
117
+ We use `pytest` to provide some simple tests for some of the
118
+ functionallity of the package. However, to check if an instrument is
119
+ really working, one needs to have the instrument connected, which
120
+ makes testing harder. When the instruments are not available some
121
+ functionallity, such as the Qt layout, can still be tested using
122
+ "--dummy" mode. In this mode instrument parameters can return a
123
+ predefined value or the result of a function.
124
+
125
+ To run the tests use:
126
+
127
+ python -m pytest
128
+
129
+
130
+ ## Contribution guidelines
131
+
132
+ Feel free to contribute new drivers for hardware or other changes.
133
+
134
+ We use black to format the code, so please format your code
135
+ accordingly. The easiest way to achieve this is to install pre-commit
136
+ and use the config file we provide:
137
+
138
+ pip install pre-commit
139
+ # cd into repo
140
+ pre-commit install
141
+
142
+ ## How to cite this package
143
+
144
+ Please use the following [citation](https://doi.org/10.21105/joss.02688).
145
+
146
+ ```
147
+ @article{Giesbrecht2022,
148
+ doi = {10.21105/joss.02688},
149
+ url = {https://doi.org/10.21105/joss.02688},
150
+ year = {2022},
151
+ publisher = {The Open Journal},
152
+ volume = {7},
153
+ number = {72},
154
+ pages = {2688},
155
+ author = {Grant Giesbrecht and Ariel Amsellem and Timo Bauer and Brian Mak and Brian Wynne and Zhihao Qin and Arun Persaud},
156
+ title = {Hardware-Control: Instrument control and automation package},
157
+ journal = {Journal of Open Source Software}
158
+ }
159
+ ```
160
+
161
+ ## Who do I talk to?
162
+
163
+ If you have questions, please contact Arun at apersaud@lbl.gov.
164
+
165
+ ## Copyright and License
166
+
167
+ See the files COPYRIGHT and LICENSE in the top level directory
@@ -0,0 +1,47 @@
1
+ pipelines:
2
+ default:
3
+ - parallel:
4
+ - step:
5
+ name: Test_3.9
6
+ image: python:3.9
7
+ caches:
8
+ - pip
9
+ script:
10
+ - apt-get update -y
11
+ - apt-get install -y python3-pyqt6 mesa-common-dev libglu1-mesa-dev
12
+ - pip install -U pip
13
+ - pip install .
14
+ - pytest -v tests/* --junitxml=test-reports/report.xml
15
+ - step:
16
+ name: Test_3.10
17
+ image: python:3.10
18
+ caches:
19
+ - pip
20
+ script:
21
+ - apt-get update -y
22
+ - apt-get install -y python3-pyqt6 mesa-common-dev libglu1-mesa-dev
23
+ - pip install -U pip
24
+ - pip install .
25
+ - pytest -v tests/* --junitxml=test-reports/report.xml
26
+ - step:
27
+ name: Test_3.11
28
+ image: python:3.11
29
+ caches:
30
+ - pip
31
+ script:
32
+ - apt-get update -y
33
+ - apt-get install -y python3-pyqt6 mesa-common-dev libglu1-mesa-dev
34
+ - pip install -U pip
35
+ - pip install .
36
+ - pytest -v tests/* --junitxml=test-reports/report.xml
37
+ - step:
38
+ name: Test_3.12
39
+ image: python:3.12
40
+ caches:
41
+ - pip
42
+ script:
43
+ - apt-get update -y
44
+ - apt-get install -y python3-pyqt6 mesa-common-dev libglu1-mesa-dev
45
+ - pip install -U pip
46
+ - pip install .
47
+ - pytest -v tests/* --junitxml=test-reports/report.xml
@@ -7,6 +7,43 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [3.1.0] 2024-04-13
11
+
12
+ ### Fixed
13
+ - automatic update in App.py of instrument parameters was not working correctly
14
+ - Keysight 3600 power supply UI: remove on/off buttons for E3631A mode (only global on/off available)
15
+ - Adam6015: detect offline mode in case command times out
16
+ - plotbase: define variables in init
17
+ - Picoscope: setting larger voltage ranges
18
+ - MWController: added display of actual power level
19
+ - TPI: by default show -9 to +9 dBm, option to override this
20
+ - TPI: fix use in dummy mode
21
+
22
+ ### Added
23
+ - Keysight 3600 power supply: add readout of persona
24
+ - Picoscope: readout of scope parameters
25
+ - Add ZMQ channel to allow other programs to request instrument parameters
26
+
27
+ ### CHANGED
28
+ - changed to src/ layout
29
+ - move setup.{cfg,py} into pyproject.toml
30
+ - require python >= 3.9 (minimum version for numpy)
31
+ - updated pre-commit versions and run on all files
32
+ - updated pipelines and readthedocs python versions
33
+ - MWController: changed order of widgets
34
+ - MultiPowerSupply: better on/off buttons, better status icons
35
+
36
+ ## [3.0.1] 2023-02-18
37
+
38
+ ### CHANGED
39
+ - updated docs
40
+ - Removed auto_update from HCPushButton since it connects to a command not a parameter
41
+
42
+ ### FIXED
43
+ - HCLabel: force convertion to string, so that call to .rjust works all the time
44
+ - TPI: several fixes
45
+ - Fix quering for a serial device
46
+
10
47
  ## [3.0.0] 2023-02-18
11
48
 
12
49
  The main new feature is updating to pyqt6.
@@ -4,7 +4,7 @@ Welcome to Hardware-control's documentation!
4
4
  Hardware-control is a Python package designed to simplify creating
5
5
  instrument control programs (for example for power supplies,
6
6
  oscilloscopes, etc.). By using reusable front ends (widgets) and
7
- instrument drivers hardware-control tries to minimize the
7
+ instrument drivers. Hardware-control tries to minimize the
8
8
  effort and code required to communicate with instruments in the lab.
9
9
 
10
10
  Hardware-control uses a few basic constructs to organize its
@@ -1,7 +1,7 @@
1
1
  Installation
2
2
  ============
3
3
 
4
- Hardware control requires python ≥ 3.6.
4
+ Hardware control requires python ≥ 3.7.
5
5
 
6
6
  The code is available on `PyPi
7
7
  <https://pypi.org/project/hardware-control>`_ and therefore can be
@@ -33,3 +33,4 @@ drivers for the NI-DAQ modules and picoscopes.
33
33
  instruments/siglent
34
34
  instruments/srs
35
35
  instruments/tdkl
36
+ instruments/trinity_power
@@ -0,0 +1,10 @@
1
+ Picotech
2
+ ========
3
+
4
+ hardware_control.instruments.picotech.Picoscope module
5
+ ------------------------------------------------------
6
+
7
+ .. automodule:: hardware_control.instruments.picotech.Picoscope
8
+ :members:
9
+ :undoc-members:
10
+ :show-inheritance:
@@ -0,0 +1,11 @@
1
+ Trinity Power
2
+ =============
3
+
4
+ hardware_control.instruments.trinity_power.tpi module
5
+ -----------------------------------------------------
6
+
7
+ .. automodule:: hardware_control.instruments.trinity_power.TPI
8
+ :members:
9
+ :undoc-members:
10
+ :show-inheritance:
11
+
@@ -5,11 +5,11 @@ Plans for the future include (but are not limited to):
5
5
  - Adding more instrument drivers
6
6
  - Expanding the instrument drivers we have to implement more parameters/commands
7
7
  - Modifying the auto-update functionality of the main app to be more flexible, e.g. custom timeout for each instrument
8
- - Looking into using binary ZMQ messages and sending for example numpy arrays over ZMQ instead of strings
8
+ - Looking into using binary ZMQ messages and sending for example numpy arrays over ZMQ instead of strings (e.g., using msgpack)
9
9
  - Create a custom widget that shows all logging messages and lets you filter them on the fly (by loglevel and instrument driver, etc.)
10
10
  - Code improvement:
11
11
  - adding more type hints
12
12
  - adding more tests (e.g. figuring out how to test Qt apps)
13
- - improving the code base (running linters such as pylint)
14
- - update to Qt6
13
+ - improving the code base (running linters such as pylint, ruff)
15
14
  - replace some logging instances with raising an exception where appropiate (currently we only use logger.error)
15
+ - in the instrument drivers switch from commands (no argument) and parameters (one argument) to something that can handle multiple arguments
@@ -111,6 +111,9 @@ provide a pull request.
111
111
  * - `Siglent SDG Series <https://www.siglent.eu/waveform-generators>`_ (LAN)
112
112
  - .. image:: /images/SDG1000X.png
113
113
  :height: 100
114
+ * - `Trinity Power TPI <https://rf-consultant.com/products/tpi-1001-b-signal-generator/>`_ (USB)
115
+ - .. image:: /images/TPI.jpg
116
+ :height: 100
114
117
 
115
118
 
116
119
  - IOModule:
@@ -31,7 +31,6 @@ hc.setup_logging_docopt(logger, commands)
31
31
 
32
32
  class RGA_CIS(hc.HCMainWindow):
33
33
  def __init__(self, dummy):
34
-
35
34
  super().__init__(dummy=dummy)
36
35
 
37
36
  # set title of window
@@ -31,7 +31,6 @@ hc.setup_logging_docopt(logger, commands)
31
31
 
32
32
  class TemperatureMonitor(hc.HCMainWindow):
33
33
  def __init__(self, dummy):
34
-
35
34
  super().__init__(dummy=dummy)
36
35
 
37
36
  # set title of window
@@ -0,0 +1,100 @@
1
+ [build-system]
2
+ requires = ["setuptools>=61.0", "setuptools_scm[toml]>=6.2"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "hardware-control"
7
+ dynamic = ["version"]
8
+ authors = [
9
+ { name = "Arun Persaud", email = "apersaud@lbl.gov" },
10
+ { name = "Ariel Amsellem", email = "ajamsellem@lbl.gov" },
11
+ { name = "Brian Mak", email = "brianmak@lbl.gov" },
12
+ { name = "Mauricio Ayllon Unzueta", email = "mayllonu@lbl.gov" },
13
+ { name = "Brian Wynne", email = "bwynne@lbl.gov" },
14
+ { name = "Grant Giesbrecht", email = "ggiesbrecht@lbl.gov" },
15
+ { name = "Timo Bauer", email = "TimoBauer@lbl.gov" },
16
+ { name = "Zhihao Qin", email = "zqin@lbl.gov" },
17
+ { name = "Arfon Smith", email = "arfon.smith@gmail.com" },
18
+ { name = "Sara Matsuo Saib", email = "smsaib@lbl.gov" },
19
+ { name = "Caroline Egan", email = "cegan@lbl.gov" },
20
+ { name = "Schuyler Freeman", email = "skyfreeman@lbl.gov" },
21
+ ]
22
+ readme = "README.md"
23
+ license = {file = "LICENSE"}
24
+ requires-python = ">=3.9"
25
+ dependencies = [
26
+ "docopt",
27
+ "matplotlib",
28
+ "nidaqmx >= 0.6.4",
29
+ "numpy",
30
+ "pandas",
31
+ "picoscope",
32
+ "pymodbus >= 3.0.0",
33
+ "PyQt6",
34
+ "pyqtgraph",
35
+ "pytest",
36
+ "PyVISA",
37
+ "qtconsole >= 5.3.2",
38
+ "recommonmark",
39
+ "scipy",
40
+ "setuptools",
41
+ "setuptools-scm",
42
+ "Sphinx",
43
+ "sphinx_rtd_theme",
44
+ "pyzmq",
45
+ ]
46
+ classifiers = [
47
+ "Programming Language :: Python :: 3",
48
+ "Operating System :: OS Independent",
49
+ "Development Status :: 5 - Production/Stable",
50
+ "License :: OSI Approved :: BSD License",
51
+ "Intended Audience :: Science/Research",
52
+ "Programming Language :: Python :: 3.9",
53
+ "Programming Language :: Python :: 3.10",
54
+ "Programming Language :: Python :: 3.11",
55
+ "Programming Language :: Python :: 3.12",
56
+ "Topic :: Scientific/Engineering :: Physics",
57
+ ]
58
+
59
+ [project.urls]
60
+ documentation = "https://hardware-control.readthedocs.io/"
61
+ homepage = "https://bitbucket.org/berkeleylab/hardware-control"
62
+ issues = "https://bitbucket.org/berkeleylab/hardware-control/issues"
63
+ changelog = "https://bitbucket.org/berkeleylab/hardware-control/src/main/CHANGELOG.md"
64
+
65
+ [tool.setuptools.packages.find]
66
+ where = ["src"]
67
+
68
+ [tool.setuptools.package-data]
69
+ "*" = ["icons/*svg"]
70
+
71
+ [tool.setuptools_scm]
72
+ write_to = "src/hardware_control/_version.py"
73
+
74
+ [tool.pylint.FORMAT]
75
+ max-line-length="88"
76
+
77
+ [tool.pylint."MESSAGES CONTROL"]
78
+ # bad-continuation: Black does the job, no need to check.
79
+ disable = "bad-continuation, logging-fstring-interpolation, line-too-long"
80
+
81
+ [tool.pylint.MASTER]
82
+ extension-pkg-whitelist="PyQt6"
83
+ jobs=4
84
+
85
+ [tool.pylint.TYPECHECK]
86
+ # zmq.{LINGER,REQ,ROUTER,NOBLOCK} are dynamically generated and so pylint
87
+ # doesn't see them, causing false positives.
88
+ generated-members=[
89
+ "REQ",
90
+ "REP",
91
+ "RCVTIMEO",
92
+ "PUB",
93
+ "SUB",
94
+ "NOBLOCK",
95
+ "AF_INET",
96
+ "SOCK_STREAM",
97
+ "TCP_NODELAY",
98
+ "SOCK_DGRAM",
99
+ "IPPROTO_TCP",
100
+ ]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,16 @@
1
+ # file generated by setuptools_scm
2
+ # don't change, don't track in version control
3
+ TYPE_CHECKING = False
4
+ if TYPE_CHECKING:
5
+ from typing import Tuple, Union
6
+ VERSION_TUPLE = Tuple[Union[int, str], ...]
7
+ else:
8
+ VERSION_TUPLE = object
9
+
10
+ version: str
11
+ __version__: str
12
+ __version_tuple__: VERSION_TUPLE
13
+ version_tuple: VERSION_TUPLE
14
+
15
+ __version__ = version = '3.1.0'
16
+ __version_tuple__ = version_tuple = (3, 1, 0)
@@ -4,7 +4,7 @@ import logging
4
4
  from pathlib import Path
5
5
  import threading
6
6
  import time
7
- from typing import Union, Optional, Callable, Any, List
7
+ from typing import Union, Optional, Callable, Any
8
8
  from datetime import datetime
9
9
 
10
10
  from PyQt6.QtWidgets import QApplication
@@ -100,8 +100,12 @@ class App(QApplication):
100
100
  self.ipaddress = ipaddress
101
101
  self.zmq_publisher_address = f"tcp://{self.ipaddress}:1234"
102
102
  self.zmq_context = zmq.Context()
103
+ # to talk to all the instruments
103
104
  self.zmq_publisher = self.zmq_context.socket(zmq.PUB)
104
105
  self.zmq_publisher.bind(self.zmq_publisher_address)
106
+ # to handle queries from other programs
107
+ self.zmq_info = self.zmq_context.socket(zmq.REP)
108
+ self.zmq_info.bind(f"tcp://{self.ipaddress}:1235")
105
109
 
106
110
  self.dummy = dummy
107
111
  self.additional_save_formats = {}
@@ -123,6 +127,7 @@ class App(QApplication):
123
127
  # a timer to check ZMQ messages
124
128
  self.zmq_timer = QTimer(self)
125
129
  self.zmq_timer.timeout.connect(self.parse_message_from_instruments)
130
+ self.zmq_timer.timeout.connect(self.handle_request)
126
131
  self.zmq_timer.start(100)
127
132
 
128
133
  # a timer to requests updates from instruments
@@ -143,6 +148,51 @@ class App(QApplication):
143
148
  for t in self.threads:
144
149
  t.join()
145
150
 
151
+ def handle_request(self):
152
+ """Handle requests from other programs.
153
+
154
+ This provides an interface for other programs to get
155
+ values. In principle this could also enable remote control in
156
+ the future.
157
+
158
+ To make use of this, the other program has to setup a ZMQ REQ
159
+ socket. For example using:
160
+
161
+ > import zmq
162
+ > c = zmq.Context()
163
+ > s = c.socket(zmq.REQ)
164
+ >
165
+ > s.connect("tcp://127.0.0.1:1235")
166
+ > s.send_string('get_instrument_parameter(ADAM_6024,CH0_READ_VOLTAGE)')
167
+ >
168
+ > s.recv_string()
169
+ > '1.0'
170
+
171
+ We implement the get_instrument_parameter function and perhaps should
172
+ also support similar other function in the future.
173
+
174
+ The value will be returned directly as a string.
175
+
176
+ """
177
+ while True:
178
+ try:
179
+ msg = self.zmq_info.recv_string(flags=zmq.NOBLOCK)
180
+ logger.debug(f"App got request '{msg}'")
181
+
182
+ if msg.startswith("get_instrument_parameter"):
183
+ msg = msg.replace("get_instrument_parameter", "")
184
+ msg = msg[1:-1] # remove ()
185
+
186
+ name, parameter = msg.split(",")
187
+ name = name.strip().replace("'", "")
188
+ parameter = parameter.strip().replace("'", "")
189
+
190
+ value = self.get_instrument_parameter(name, parameter)
191
+
192
+ self.zmq_info.send_string(str(value))
193
+ except zmq.ZMQError:
194
+ break
195
+
146
196
  @ensure_instrument_exists
147
197
  def register_parameters_and_commands(
148
198
  self, instrument: str, read_parameters, set_parameters, commands
@@ -325,7 +375,7 @@ class App(QApplication):
325
375
  continue
326
376
  online = self.get_instrument_parameter(instrument, "ONLINE")
327
377
  if online is None or online == "False":
328
- return
378
+ continue
329
379
  if callable(parameter_or_function):
330
380
  parameter_or_function()
331
381
  else:
@@ -617,11 +667,11 @@ class App(QApplication):
617
667
  self.additional_save_formats[format_name] = save_fxn
618
668
 
619
669
  @ensure_instrument_exists
620
- def list_instrument_parameters(self, instrument) -> List[str]:
670
+ def list_instrument_parameters(self, instrument) -> list[str]:
621
671
  """Compile a list of all the parameters for a specified instrument."""
622
672
  return [parameter for parameter in self._data[instrument]]
623
673
 
624
- def list_instruments(self) -> List[str]:
674
+ def list_instruments(self) -> list[str]:
625
675
  """Compile a list of all the instruments in the app."""
626
676
  if not self._data:
627
677
  return []