qcodes 0.62.0__tar.gz → 0.63.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 (468) hide show
  1. {qcodes-0.62.0/src/qcodes.egg-info → qcodes-0.63.0}/PKG-INFO +4 -3
  2. {qcodes-0.62.0 → qcodes-0.63.0}/pyproject.toml +4 -17
  3. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/_version.py +1 -1
  4. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/data_set.py +35 -27
  5. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/instrument.py +28 -6
  6. qcodes-0.63.0/src/qcodes/instrument/sims/Agilent_E8257D.yaml +30 -0
  7. qcodes-0.63.0/src/qcodes/instrument/sims/Agilent_E8267C.yaml +41 -0
  8. qcodes-0.63.0/src/qcodes/instrument/sims/Basel_SP983a.yaml +35 -0
  9. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/sims/Keithley_2450.yaml +36 -0
  10. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/sims/Keithley_2600.yaml +6 -0
  11. qcodes-0.63.0/src/qcodes/instrument/sims/Keithley_6500.yaml +50 -0
  12. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/sims/Keysight_E4980A.yaml +17 -0
  13. qcodes-0.63.0/src/qcodes/instrument/sims/Keysight_N5222B.yaml +65 -0
  14. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/sims/RTO_1000.yaml +18 -1
  15. qcodes-0.63.0/src/qcodes/instrument/sims/Rigol_DG1062.yaml +54 -0
  16. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/sims/Rigol_DS1074Z.yaml +8 -0
  17. qcodes-0.63.0/src/qcodes/instrument/sims/Rigol_DS4000.yaml +27 -0
  18. qcodes-0.63.0/src/qcodes/instrument/sims/Rohde_Schwarz_ZNB20.yaml +99 -0
  19. qcodes-0.63.0/src/qcodes/instrument/sims/SR860.yaml +26 -0
  20. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/sims/Tektronix_DPO7200xx.yaml +63 -0
  21. qcodes-0.63.0/src/qcodes/instrument/sims/Tektronix_TPS2012.yaml +41 -0
  22. qcodes-0.63.0/src/qcodes/instrument/sims/keithley_7510.yaml +94 -0
  23. qcodes-0.63.0/src/qcodes/instrument/sims/lakeshore_model325.yaml +55 -0
  24. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/AimTTi/_AimTTi_PL_P.py +10 -9
  25. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/AlazarTech/ATS9360.py +16 -16
  26. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/AlazarTech/ATS9373.py +16 -16
  27. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/AlazarTech/ATS9440.py +15 -15
  28. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/AlazarTech/ATS9870.py +15 -15
  29. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/AlazarTech/ATS_acquisition_controllers.py +2 -2
  30. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/CopperMountain/_M5xxx.py +24 -23
  31. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Galil/dmc_41x3.py +14 -14
  32. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/HP/HP_8133A.py +10 -10
  33. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/HP/HP_83650A.py +10 -10
  34. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/HP/HP_8753D.py +12 -12
  35. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keithley/Keithley_2000.py +24 -19
  36. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keithley/Keithley_2400.py +13 -13
  37. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keithley/Keithley_2450.py +34 -28
  38. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keithley/Keithley_3706A.py +5 -5
  39. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keithley/Keithley_6500.py +21 -20
  40. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keithley/Keithley_7510.py +60 -54
  41. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keithley/Keithley_s46.py +2 -2
  42. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keithley/_Keithley_2600.py +22 -22
  43. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/KeysightAgilent_33XXX.py +24 -24
  44. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/Keysight_N6705B.py +8 -8
  45. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/Keysight_N9030B.py +19 -19
  46. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/KtM960x.py +6 -6
  47. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/KtMAwg.py +8 -8
  48. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/N51x1.py +8 -8
  49. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/N52xx.py +34 -28
  50. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/keysight_34934a.py +2 -2
  51. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/keysight_34980a.py +9 -8
  52. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/keysight_b220x.py +9 -9
  53. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/keysight_e4980a.py +15 -14
  54. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/keysightb1500/KeysightB1500_base.py +2 -2
  55. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/keysightb1500/KeysightB1517A.py +32 -10
  56. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/keysightb1500/KeysightB1520A.py +30 -22
  57. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/keysightb1500/message_builder.py +1 -1
  58. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/private/Keysight_344xxA_submodules.py +23 -23
  59. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Lakeshore/Lakeshore_model_325.py +51 -20
  60. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Lakeshore/Lakeshore_model_336.py +2 -2
  61. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Lakeshore/Lakeshore_model_372.py +10 -5
  62. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Lakeshore/lakeshore_base.py +14 -14
  63. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Minicircuits/Base_SPDT.py +2 -2
  64. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Minicircuits/_minicircuits_rc_sp4t.py +2 -2
  65. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Minicircuits/_minicircuits_rc_spdt.py +2 -2
  66. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Minicircuits/_minicircuits_rudat_13g_90.py +11 -7
  67. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/QDev/QDac_channels.py +5 -5
  68. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/QuantumDesign/DynaCoolPPMS/DynaCool.py +31 -27
  69. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/agilent/Agilent_34401A.py +2 -2
  70. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/agilent/Agilent_34410A.py +3 -3
  71. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/agilent/Agilent_34411A.py +3 -3
  72. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/agilent/Agilent_E8257D.py +6 -6
  73. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/agilent/Agilent_E8267C.py +11 -10
  74. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/agilent/_Agilent_344xxA.py +7 -7
  75. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/american_magnetics/AMI430_visa.py +253 -136
  76. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/basel/BaselSP983.py +3 -3
  77. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/basel/BaselSP983a.py +4 -4
  78. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/cryomagnetics/_TM620.py +3 -3
  79. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/cryomagnetics/_cryomagnetics4g.py +6 -6
  80. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/ithaco/Ithaco_1211.py +6 -6
  81. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/mock_instruments/__init__.py +19 -38
  82. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/oxford/MercuryiPS_VISA.py +15 -15
  83. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/oxford/triton.py +7 -7
  84. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/rigol/Rigol_DG1062.py +30 -17
  85. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/rigol/Rigol_DG4000.py +12 -12
  86. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/rigol/Rigol_DS1074Z.py +25 -21
  87. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/rigol/Rigol_DS4000.py +16 -11
  88. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/rigol/private/DP8xx.py +12 -12
  89. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/rohde_schwarz/RTO1000.py +48 -45
  90. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/rohde_schwarz/SGS100A.py +33 -33
  91. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/rohde_schwarz/ZNB.py +27 -26
  92. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/signal_hound/SignalHound_USB_SA124B.py +8 -8
  93. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/stahl/stahl.py +5 -5
  94. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/stanford_research/SG384.py +21 -21
  95. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/stanford_research/SR560.py +2 -2
  96. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/stanford_research/SR830.py +26 -26
  97. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/stanford_research/SR86x.py +38 -37
  98. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/tektronix/AWG5014.py +36 -33
  99. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/tektronix/AWG70000A.py +60 -21
  100. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/tektronix/DPO7200xx.py +113 -51
  101. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/tektronix/TPS2012.py +11 -10
  102. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/yokogawa/Yokogawa_GS200.py +20 -20
  103. qcodes-0.63.0/src/qcodes/math_utils/__init__.py +13 -0
  104. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/math_utils/field_vector.py +34 -1
  105. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/parameters/__init__.py +10 -0
  106. qcodes-0.63.0/src/qcodes/parameters/parameter_access.py +388 -0
  107. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/parameters/parameter_base.py +64 -4
  108. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/sphinx_extensions/parse_parameter_attr.py +25 -20
  109. {qcodes-0.62.0 → qcodes-0.63.0/src/qcodes.egg-info}/PKG-INFO +4 -3
  110. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes.egg-info/SOURCES.txt +12 -0
  111. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes.egg-info/requires.txt +3 -4
  112. {qcodes-0.62.0 → qcodes-0.63.0}/tests/test_field_vector.py +23 -0
  113. {qcodes-0.62.0 → qcodes-0.63.0}/tests/test_instrument.py +114 -0
  114. {qcodes-0.62.0 → qcodes-0.63.0}/tests/test_interactive_widget.py +0 -6
  115. {qcodes-0.62.0 → qcodes-0.63.0}/tests/test_monitor.py +1 -0
  116. {qcodes-0.62.0 → qcodes-0.63.0}/tests/test_station.py +17 -35
  117. qcodes-0.62.0/src/qcodes/instrument/sims/keithley_7510.yaml +0 -39
  118. qcodes-0.62.0/src/qcodes/math_utils/__init__.py +0 -8
  119. {qcodes-0.62.0 → qcodes-0.63.0}/LICENSE +0 -0
  120. {qcodes-0.62.0 → qcodes-0.63.0}/MANIFEST.in +0 -0
  121. {qcodes-0.62.0 → qcodes-0.63.0}/README.rst +0 -0
  122. {qcodes-0.62.0 → qcodes-0.63.0}/setup.cfg +0 -0
  123. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/__init__.py +0 -0
  124. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/calibrations/__init__.py +0 -0
  125. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/calibrations/keithley.py +0 -0
  126. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/configuration/__init__.py +0 -0
  127. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/configuration/config.py +0 -0
  128. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/configuration/qcodesrc.json +0 -0
  129. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/configuration/qcodesrc_schema.json +0 -0
  130. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/__init__.py +0 -0
  131. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/_raw_data_storage.py +0 -0
  132. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/_results_backend.py +0 -0
  133. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/data_export.py +0 -0
  134. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/data_set_cache.py +0 -0
  135. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/data_set_in_memory.py +0 -0
  136. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/data_set_info.py +0 -0
  137. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/data_set_protocol.py +0 -0
  138. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/database_extract_runs.py +0 -0
  139. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/database_fix_functions.py +0 -0
  140. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/dataset_helpers.py +0 -0
  141. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/descriptions/__init__.py +0 -0
  142. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/descriptions/dependencies.py +0 -0
  143. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/descriptions/detect_shapes.py +0 -0
  144. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/descriptions/param_spec.py +0 -0
  145. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/descriptions/rundescriber.py +0 -0
  146. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/descriptions/versioning/__init__.py +0 -0
  147. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/descriptions/versioning/converters.py +0 -0
  148. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/descriptions/versioning/rundescribertypes.py +0 -0
  149. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/descriptions/versioning/serialization.py +0 -0
  150. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/descriptions/versioning/v0.py +0 -0
  151. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/dond/__init__.py +0 -0
  152. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/dond/do2d_retrace.py +0 -0
  153. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/dond/do_0d.py +0 -0
  154. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/dond/do_1d.py +0 -0
  155. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/dond/do_2d.py +0 -0
  156. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/dond/do_nd.py +0 -0
  157. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/dond/do_nd_utils.py +0 -0
  158. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/dond/sweeps.py +0 -0
  159. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/experiment_container.py +0 -0
  160. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/experiment_settings.py +0 -0
  161. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/export_config.py +0 -0
  162. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/exporters/__init__.py +0 -0
  163. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/exporters/export_info.py +0 -0
  164. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/exporters/export_to_csv.py +0 -0
  165. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/exporters/export_to_pandas.py +0 -0
  166. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/exporters/export_to_xarray.py +0 -0
  167. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/guid_helpers.py +0 -0
  168. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/guids.py +0 -0
  169. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/json_exporter.py +0 -0
  170. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/legacy_import.py +0 -0
  171. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/linked_datasets/__init__.py +0 -0
  172. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/linked_datasets/links.py +0 -0
  173. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/measurement_extensions.py +0 -0
  174. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/measurements.py +0 -0
  175. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/plotting.py +0 -0
  176. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/snapshot_utils.py +0 -0
  177. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/sqlite/__init__.py +0 -0
  178. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/sqlite/connection.py +0 -0
  179. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/sqlite/database.py +0 -0
  180. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/sqlite/db_overview.py +0 -0
  181. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/sqlite/db_upgrades/__init__.py +0 -0
  182. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/sqlite/db_upgrades/upgrade_2_to_3.py +0 -0
  183. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/sqlite/db_upgrades/upgrade_3_to_4.py +0 -0
  184. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/sqlite/db_upgrades/upgrade_5_to_6.py +0 -0
  185. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/sqlite/db_upgrades/version.py +0 -0
  186. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/sqlite/initial_schema.py +0 -0
  187. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/sqlite/queries.py +0 -0
  188. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/sqlite/query_helpers.py +0 -0
  189. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/sqlite/settings.py +0 -0
  190. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/subscriber.py +0 -0
  191. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dataset/threading.py +0 -0
  192. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dist/__init__.py +0 -0
  193. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dist/schemas/__init__.py +0 -0
  194. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dist/schemas/station-template.schema.json +0 -0
  195. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dist/tests/__init__.py +0 -0
  196. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dist/tests/station/__init__.py +0 -0
  197. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/dist/tests/station/example.station.yaml +0 -0
  198. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/extensions/__init__.py +0 -0
  199. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/extensions/_driver_test_case.py +0 -0
  200. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/extensions/_log_export_info.py +0 -0
  201. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/extensions/_refactor.py +0 -0
  202. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/extensions/infer.py +0 -0
  203. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/extensions/installation.py +0 -0
  204. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/extensions/parameters/__init__.py +0 -0
  205. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/extensions/parameters/parameter_mixin.py +0 -0
  206. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/extensions/parameters/parameter_mixin_group_registry.py +0 -0
  207. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/extensions/parameters/parameter_mixin_interdependent.py +0 -0
  208. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/extensions/parameters/parameter_mixin_on_cache_change.py +0 -0
  209. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/extensions/parameters/parameter_mixin_set_cache_value_on_reset.py +0 -0
  210. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/__init__.py +0 -0
  211. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/channel.py +0 -0
  212. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/delegate/__init__.py +0 -0
  213. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/delegate/delegate_channel_instrument.py +0 -0
  214. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/delegate/delegate_instrument.py +0 -0
  215. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/delegate/instrument_group.py +0 -0
  216. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/instrument_base.py +0 -0
  217. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/instrument_meta.py +0 -0
  218. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/ip.py +0 -0
  219. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/ip_to_visa.py +1 -1
  220. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/mockers/__init__.py +0 -0
  221. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/mockers/simulated_ats_api.py +0 -0
  222. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/sims/AMI430.yaml +0 -0
  223. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/sims/AimTTi_PL601P.yaml +0 -0
  224. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/sims/CopperMountain_M5065.yaml +0 -0
  225. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/sims/CopperMountain_M5180.yaml +0 -0
  226. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/sims/Keithley_3706A.yaml +0 -0
  227. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/sims/Keithley_s46.yaml +0 -0
  228. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/sims/Keysight_33xxx.yaml +0 -0
  229. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/sims/Keysight_34465A.yaml +0 -0
  230. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/sims/Keysight_Infiniium.yaml +0 -0
  231. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/sims/Keysight_N6705B.yaml +0 -0
  232. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/sims/Keysight_N9030B.yaml +0 -0
  233. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/sims/MercuryiPS.yaml +0 -0
  234. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/sims/RSHMC804x.yaml +0 -0
  235. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/sims/RSSGS100A.yaml +0 -0
  236. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/sims/Tektronix_AWG5014C.yaml +0 -0
  237. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/sims/Tektronix_AWG5208.yaml +0 -0
  238. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/sims/Tektronix_AWG70000A.yaml +0 -0
  239. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/sims/Weinschel_8320.yaml +0 -0
  240. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/sims/Yokogawa_GS200.yaml +0 -0
  241. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/sims/__init__.py +0 -0
  242. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/sims/cryo4g.yaml +0 -0
  243. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/sims/cryo_tm620.yaml +0 -0
  244. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/sims/dummy.py +0 -0
  245. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/sims/dummy.yaml +0 -0
  246. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/sims/keysight_34980A.yaml +0 -0
  247. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/sims/keysight_b1500.yaml +0 -0
  248. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/sims/keysight_b220x.yaml +0 -0
  249. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/sims/lakeshore_model335.yaml +0 -0
  250. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/sims/lakeshore_model336.yaml +0 -0
  251. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/sims/lakeshore_model372.yaml +0 -0
  252. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/sims/stahl.yaml +0 -0
  253. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument/visa.py +0 -0
  254. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/AimTTi/Aim_TTi_PL068_P.py +0 -0
  255. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/AimTTi/Aim_TTi_PL155_P.py +0 -0
  256. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/AimTTi/Aim_TTi_PL303QMD_P.py +0 -0
  257. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/AimTTi/Aim_TTi_PL303QMT_P.py +0 -0
  258. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/AimTTi/Aim_TTi_PL303_P.py +0 -0
  259. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/AimTTi/Aim_TTi_PL601_P.py +0 -0
  260. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/AimTTi/Aim_TTi_QL355_TP.py +0 -0
  261. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/AimTTi/__init__.py +0 -0
  262. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/AlazarTech/ATS.py +0 -0
  263. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/AlazarTech/__init__.py +0 -0
  264. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/AlazarTech/ats_api.py +0 -0
  265. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/AlazarTech/constants.py +0 -0
  266. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/AlazarTech/dll_wrapper.py +0 -0
  267. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/AlazarTech/helpers.py +0 -0
  268. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/AlazarTech/utils.py +0 -0
  269. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/CopperMountain/_M5065.py +0 -0
  270. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/CopperMountain/_M5180.py +0 -0
  271. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/CopperMountain/__init__.py +0 -0
  272. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Galil/__init__.py +0 -0
  273. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/HP/__init__.py +0 -0
  274. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Harvard/Decadac.py +0 -0
  275. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Harvard/__init__.py +0 -0
  276. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keithley/Keithley_2601B.py +0 -0
  277. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keithley/Keithley_2602A.py +0 -0
  278. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keithley/Keithley_2602B.py +0 -0
  279. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keithley/Keithley_2604B.py +0 -0
  280. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keithley/Keithley_2611B.py +0 -0
  281. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keithley/Keithley_2612B.py +0 -0
  282. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keithley/Keithley_2614B.py +0 -0
  283. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keithley/Keithley_2634B.py +0 -0
  284. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keithley/Keithley_2635B.py +0 -0
  285. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keithley/Keithley_2636B.py +0 -0
  286. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keithley/__init__.py +0 -0
  287. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/Infiniium.py +0 -0
  288. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/Keysight_33210a.py +0 -0
  289. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/Keysight_33250a.py +0 -0
  290. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/Keysight_33510b.py +0 -0
  291. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/Keysight_33511b.py +0 -0
  292. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/Keysight_33512b.py +0 -0
  293. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/Keysight_33521b.py +0 -0
  294. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/Keysight_33522b.py +0 -0
  295. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/Keysight_33611a.py +0 -0
  296. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/Keysight_33612a.py +0 -0
  297. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/Keysight_33621a.py +0 -0
  298. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/Keysight_33622a.py +0 -0
  299. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/Keysight_34410A_submodules.py +0 -0
  300. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/Keysight_34411A_submodules.py +0 -0
  301. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/Keysight_34460A_submodules.py +0 -0
  302. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/Keysight_34461A_submodules.py +0 -0
  303. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/Keysight_34465A_submodules.py +0 -0
  304. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/Keysight_34470A_submodules.py +0 -0
  305. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/Keysight_B2962A.py +0 -0
  306. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/Keysight_N5173B.py +0 -0
  307. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/Keysight_N5183B.py +0 -0
  308. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/Keysight_N5222B.py +0 -0
  309. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/Keysight_N5230C.py +0 -0
  310. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/Keysight_N5245A.py +0 -0
  311. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/Keysight_P5002B.py +0 -0
  312. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/Keysight_P5004B.py +0 -0
  313. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/Keysight_P9374A.py +0 -0
  314. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/KtM960xDefs.py +0 -0
  315. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/KtMAwgDefs.py +0 -0
  316. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/_Keysight_N5232B.py +0 -0
  317. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/__init__.py +0 -0
  318. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/keysight_34980a_submodules.py +0 -0
  319. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/keysightb1500/KeysightB1500_module.py +0 -0
  320. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/keysightb1500/KeysightB1500_sampling_measurement.py +0 -0
  321. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/keysightb1500/KeysightB1511B.py +0 -0
  322. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/keysightb1500/KeysightB1530A.py +0 -0
  323. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/keysightb1500/__init__.py +0 -0
  324. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/keysightb1500/constants.py +0 -0
  325. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/private/__init__.py +0 -0
  326. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Keysight/private/error_handling.py +0 -0
  327. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Lakeshore/__init__.py +0 -0
  328. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Lakeshore/_lakeshore_model_335.py +0 -0
  329. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Minicircuits/USBHIDMixin.py +0 -0
  330. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Minicircuits/__init__.py +0 -0
  331. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/Minicircuits/_minicircuits_usb_spdt.py +0 -0
  332. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/QDev/__init__.py +0 -0
  333. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/QuantumDesign/DynaCoolPPMS/__init__.py +0 -0
  334. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/QuantumDesign/DynaCoolPPMS/private/__init__.py +0 -0
  335. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/QuantumDesign/DynaCoolPPMS/private/commandhandler.py +0 -0
  336. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/QuantumDesign/DynaCoolPPMS/private/server.py +0 -0
  337. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/QuantumDesign/__init__.py +0 -0
  338. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/__init__.py +0 -0
  339. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/agilent/__init__.py +0 -0
  340. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/american_magnetics/__init__.py +0 -0
  341. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/basel/BaselSP983c.py +0 -0
  342. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/basel/__init__.py +0 -0
  343. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/cryomagnetics/__init__.py +0 -0
  344. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/ithaco/__init__.py +0 -0
  345. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/oxford/__init__.py +0 -0
  346. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/rigol/Rigol_DP821.py +0 -0
  347. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/rigol/Rigol_DP831.py +0 -0
  348. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/rigol/Rigol_DP832.py +0 -0
  349. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/rigol/__init__.py +0 -0
  350. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/rigol/private/__init__.py +0 -0
  351. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/rohde_schwarz/Rohde_Schwarz_ZNB20.py +0 -0
  352. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/rohde_schwarz/Rohde_Schwarz_ZNB8.py +0 -0
  353. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/rohde_schwarz/ZNB20.py +0 -0
  354. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/rohde_schwarz/__init__.py +0 -0
  355. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/rohde_schwarz/_rohde_schwarz_znle.py +0 -0
  356. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/signal_hound/__init__.py +0 -0
  357. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/stahl/__init__.py +0 -0
  358. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/stanford_research/SR860.py +0 -0
  359. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/stanford_research/SR865.py +0 -0
  360. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/stanford_research/SR865A.py +0 -0
  361. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/stanford_research/__init__.py +0 -0
  362. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/tektronix/AWG5208.py +0 -0
  363. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/tektronix/AWG70002A.py +0 -0
  364. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/tektronix/AWGFileParser.py +0 -0
  365. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/tektronix/Tektronix_70001A.py +0 -0
  366. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/tektronix/Tektronix_70001B.py +0 -0
  367. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/tektronix/Tektronix_70002B.py +0 -0
  368. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/tektronix/Tektronix_DPO5000.py +0 -0
  369. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/tektronix/Tektronix_DPO7000.py +0 -0
  370. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/tektronix/Tektronix_DPO70000.py +0 -0
  371. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/tektronix/Tektronix_DSA70000.py +0 -0
  372. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/tektronix/Tektronix_MSO5000.py +0 -0
  373. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/tektronix/Tektronix_MSO70000.py +0 -0
  374. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/tektronix/__init__.py +0 -0
  375. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/weinschel/Weinschel_8320.py +0 -0
  376. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/weinschel/__init__.py +0 -0
  377. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/yokogawa/__init__.py +0 -0
  378. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/zurich_instruments/__init__.py +0 -0
  379. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/zurich_instruments/hdawg.py +0 -0
  380. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/zurich_instruments/hf2.py +0 -0
  381. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/zurich_instruments/mfli.py +0 -0
  382. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/zurich_instruments/pqsc.py +0 -0
  383. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/zurich_instruments/shfqa.py +0 -0
  384. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/zurich_instruments/shfsg.py +0 -0
  385. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/zurich_instruments/uhfli.py +0 -0
  386. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/instrument_drivers/zurich_instruments/uhfqa.py +0 -0
  387. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/interactive_widget.py +0 -0
  388. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/logger/__init__.py +0 -0
  389. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/logger/instrument_logger.py +0 -0
  390. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/logger/log_analysis.py +0 -0
  391. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/logger/logger.py +0 -0
  392. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/metadatable/__init__.py +0 -0
  393. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/metadatable/metadatable_base.py +0 -0
  394. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/monitor/__init__.py +0 -0
  395. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/monitor/dist/__init__.py +0 -0
  396. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/monitor/dist/css/__init__.py +0 -0
  397. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/monitor/dist/css/main.0963d6b9.css +0 -0
  398. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/monitor/dist/favicon.ico +0 -0
  399. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/monitor/dist/index.html +0 -0
  400. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/monitor/dist/js/__init.py +0 -0
  401. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/monitor/dist/js/__init__.py +0 -0
  402. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/monitor/dist/js/main.b221ee88.js +0 -0
  403. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/monitor/dist/webpack-assets.json +0 -0
  404. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/monitor/monitor.py +0 -0
  405. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/parameters/_paramspec.py +0 -0
  406. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/parameters/array_parameter.py +0 -0
  407. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/parameters/cache.py +0 -0
  408. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/parameters/combined_parameter.py +0 -0
  409. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/parameters/command.py +0 -0
  410. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/parameters/delegate_parameter.py +0 -0
  411. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/parameters/function.py +0 -0
  412. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/parameters/group_parameter.py +0 -0
  413. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/parameters/grouped_parameter.py +0 -0
  414. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/parameters/multi_channel_instrument_parameter.py +0 -0
  415. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/parameters/multi_parameter.py +0 -0
  416. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/parameters/named_repr.py +0 -0
  417. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/parameters/parameter.py +0 -0
  418. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/parameters/parameter_with_setpoints.py +0 -0
  419. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/parameters/permissive_range.py +0 -0
  420. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/parameters/scaled_paramter.py +0 -0
  421. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/parameters/sequence_helpers.py +0 -0
  422. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/parameters/specialized_parameters.py +0 -0
  423. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/parameters/sweep_values.py +0 -0
  424. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/parameters/val_mapping.py +0 -0
  425. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/plotting/__init__.py +0 -0
  426. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/plotting/auto_range.py +0 -0
  427. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/plotting/axis_labels.py +0 -0
  428. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/plotting/matplotlib_helpers.py +0 -0
  429. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/py.typed +0 -0
  430. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/sphinx_extensions/__init__.py +0 -0
  431. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/station.py +0 -0
  432. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/utils/__init__.py +0 -0
  433. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/utils/abstractmethod.py +0 -0
  434. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/utils/attribute_helpers.py +0 -0
  435. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/utils/deep_update_utils.py +0 -0
  436. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/utils/delaykeyboardinterrupt.py +0 -0
  437. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/utils/deprecate.py +0 -0
  438. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/utils/full_class.py +0 -0
  439. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/utils/function_helpers.py +0 -0
  440. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/utils/installation_info.py +0 -0
  441. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/utils/json_utils.py +0 -0
  442. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/utils/numpy_utils.py +0 -0
  443. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/utils/partial_utils.py +0 -0
  444. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/utils/path_helpers.py +0 -0
  445. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/utils/snapshot_helpers.py +0 -0
  446. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/utils/threading_utils.py +0 -0
  447. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/utils/types.py +0 -0
  448. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/validators/__init__.py +0 -0
  449. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes/validators/validators.py +0 -0
  450. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes.egg-info/dependency_links.txt +0 -0
  451. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes.egg-info/entry_points.txt +0 -0
  452. {qcodes-0.62.0 → qcodes-0.63.0}/src/qcodes.egg-info/top_level.txt +0 -0
  453. {qcodes-0.62.0 → qcodes-0.63.0}/tests/test_abstract_instrument.py +0 -0
  454. {qcodes-0.62.0 → qcodes-0.63.0}/tests/test_autoloadable_channels.py +0 -0
  455. {qcodes-0.62.0 → qcodes-0.63.0}/tests/test_channels.py +0 -0
  456. {qcodes-0.62.0 → qcodes-0.63.0}/tests/test_command.py +0 -0
  457. {qcodes-0.62.0 → qcodes-0.63.0}/tests/test_config.py +0 -0
  458. {qcodes-0.62.0 → qcodes-0.63.0}/tests/test_import.py +0 -0
  459. {qcodes-0.62.0 → qcodes-0.63.0}/tests/test_installation_info.py +0 -0
  460. {qcodes-0.62.0 → qcodes-0.63.0}/tests/test_logger.py +0 -0
  461. {qcodes-0.62.0 → qcodes-0.63.0}/tests/test_matplotlib_helpers.py +0 -0
  462. {qcodes-0.62.0 → qcodes-0.63.0}/tests/test_metadata.py +0 -0
  463. {qcodes-0.62.0 → qcodes-0.63.0}/tests/test_plot_utils.py +0 -0
  464. {qcodes-0.62.0 → qcodes-0.63.0}/tests/test_snapshot.py +0 -0
  465. {qcodes-0.62.0 → qcodes-0.63.0}/tests/test_sweep_values.py +0 -0
  466. {qcodes-0.62.0 → qcodes-0.63.0}/tests/test_testutils.py +0 -0
  467. {qcodes-0.62.0 → qcodes-0.63.0}/tests/test_threading.py +0 -0
  468. {qcodes-0.62.0 → qcodes-0.63.0}/tests/test_visa.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: qcodes
3
- Version: 0.62.0
3
+ Version: 0.63.0
4
4
  Summary: Python-based data acquisition framework developed by the Copenhagen / Delft / Sydney / Microsoft quantum computing consortium
5
5
  Maintainer-email: QCoDeS Core Developers <qcodes-support@microsoft.com>
6
6
  License-Expression: MIT
@@ -64,7 +64,7 @@ Requires-Dist: parso>=0.8.6; extra == "test"
64
64
  Requires-Dist: pytest>=8.2.0; extra == "test"
65
65
  Requires-Dist: pytest-asyncio>=0.24.0; extra == "test"
66
66
  Requires-Dist: pytest-cov>=5.0.0; extra == "test"
67
- Requires-Dist: pytest-mock>=3.13.0; extra == "test"
67
+ Requires-Dist: pytest-mock>=3.14.0; extra == "test"
68
68
  Requires-Dist: pytest-rerunfailures>=14.0; extra == "test"
69
69
  Requires-Dist: pytest-xdist>=3.6.1; extra == "test"
70
70
  Requires-Dist: PyVisa-sim>=0.6.0; extra == "test"
@@ -75,8 +75,9 @@ Requires-Dist: types_requests>=0.1.8; extra == "test"
75
75
  Requires-Dist: types-tabulate>=0.1.0; extra == "test"
76
76
  Requires-Dist: types-tqdm>=4.64.6; extra == "test"
77
77
  Requires-Dist: types_pywin32>=305.0.0.7; extra == "test"
78
+ Requires-Dist: typing_extensions>=4.16.0; extra == "test"
78
79
  Requires-Dist: qcodes_loop>=0.1.1; extra == "test"
79
- Requires-Dist: zhinst.qcodes>=0.5; python_version < "3.15" and extra == "test"
80
+ Requires-Dist: zhinst.qcodes>=0.5; extra == "test"
80
81
  Requires-Dist: libcst>=1.2.0; extra == "test"
81
82
  Provides-Extra: docs
82
83
  Requires-Dist: autodocsumm>=0.2.9; extra == "docs"
@@ -75,7 +75,7 @@ test = [
75
75
  "pytest>=8.2.0",
76
76
  "pytest-asyncio>=0.24.0",
77
77
  "pytest-cov>=5.0.0",
78
- "pytest-mock>=3.13.0",
78
+ "pytest-mock>=3.14.0",
79
79
  "pytest-rerunfailures>=14.0",
80
80
  "pytest-xdist>=3.6.1",
81
81
  "PyVisa-sim>=0.6.0",
@@ -86,8 +86,9 @@ test = [
86
86
  "types-tabulate>=0.1.0",
87
87
  "types-tqdm>=4.64.6",
88
88
  "types_pywin32>=305.0.0.7",
89
+ "typing_extensions>=4.16.0", # Sentinel used in tests
89
90
  "qcodes_loop>=0.1.1",
90
- "zhinst.qcodes>=0.5; python_version < '3.15'", # typecheck zhinst driver alias. zhinst-core has no Python 3.15 wheels yet
91
+ "zhinst.qcodes>=0.5",
91
92
  "libcst>=1.2.0", # refactor tests
92
93
  ]
93
94
  docs = [
@@ -180,13 +181,6 @@ module = [
180
181
  ]
181
182
  ignore_missing_imports = true
182
183
 
183
- # zhinst-qcodes is not installable on all Python versions we test
184
- # (no Python 3.15 wheels for zhinst-core yet). When it is installed,
185
- # the Zurich Instruments driver aliases are still typechecked against it.
186
- [[tool.mypy.overrides]]
187
- module = ["zhinst.*"]
188
- ignore_missing_imports = true
189
-
190
184
  [tool.pyright]
191
185
  include = ["src","tests"]
192
186
  ignore = [
@@ -216,13 +210,6 @@ reportUnnecessaryTypeIgnoreComment = "none"
216
210
  # but not type ignore comments since mypy already checks if type ignores are necessary
217
211
  reportUnnecessaryContains = "none"
218
212
 
219
- executionEnvironments = [
220
- # zhinst-qcodes is not installable on all Python versions we test
221
- # (no Python 3.15 wheels for zhinst-core yet). When it is installed,
222
- # the Zurich Instruments driver aliases are still typechecked against it.
223
- { root = "src/qcodes/instrument_drivers/zurich_instruments", reportMissingImports = "none" },
224
- ]
225
-
226
213
  [tool.pytest.ini_options]
227
214
  minversion = "7.2"
228
215
  testpaths = "tests"
@@ -497,7 +484,7 @@ name = "Under the hood:"
497
484
  # we hard code the default version to match a development version
498
485
  # due to
499
486
  # https://github.com/orgs/community/discussions/163397#discussioncomment-13888710
500
- default-version = "0.54.0dev+Unknown"
487
+ default-version = "0.63.0dev+Unknown"
501
488
 
502
489
 
503
490
  [tool.versioningit.format]
@@ -13,4 +13,4 @@ def _get_version() -> str:
13
13
  return "0.0"
14
14
 
15
15
 
16
- __version__ = "0.62.0"
16
+ __version__ = "0.63.0"
@@ -391,7 +391,13 @@ class DataSet(BaseDataSet):
391
391
  parent_datasets: Sequence[Mapping[Any, Any]] = (),
392
392
  write_in_background: bool = False,
393
393
  ) -> None:
394
- self.add_snapshot(json.dumps(snapshot, cls=NumpyJSONEncoder))
394
+ """Prepare a run, committing its snapshot before starting observers.
395
+
396
+ Startup metadata and the snapshot are written atomically. The snapshot
397
+ is inserted after the other runs-row updates to avoid repeatedly
398
+ rewriting a potentially large payload.
399
+ """
400
+ snapshot_raw = json.dumps(snapshot, cls=NumpyJSONEncoder)
395
401
 
396
402
  if interdeps == InterDependencies_():
397
403
  raise RuntimeError("No parameters supplied")
@@ -399,7 +405,9 @@ class DataSet(BaseDataSet):
399
405
  self.set_interdependencies(interdeps, shapes)
400
406
  links = [Link(head=self.guid, **pdict) for pdict in parent_datasets]
401
407
  self.parent_dataset_links = links
402
- self.mark_started(start_bg_writer=write_in_background)
408
+ self._perform_start_actions(
409
+ start_bg_writer=write_in_background, snapshot=snapshot_raw
410
+ )
403
411
 
404
412
  @property
405
413
  def cache(self) -> DataSetCacheWithDBBackend:
@@ -742,16 +750,27 @@ class DataSet(BaseDataSet):
742
750
  """
743
751
  if not self._started:
744
752
  self._perform_start_actions(start_bg_writer=start_bg_writer)
745
- self._started = True
746
753
 
747
- def _perform_start_actions(self, start_bg_writer: bool) -> None:
754
+ def _perform_start_actions(
755
+ self, start_bg_writer: bool, snapshot: str | None = None
756
+ ) -> None:
748
757
  """
749
758
  Perform the actions that must take place once the run has been started
750
759
  """
751
760
  paramspecs = new_to_old(self._rundescriber.interdeps).paramspecs
752
761
 
753
- # Register all parameters in a single transaction (each add_parameter
754
- # would otherwise commit on its own) to avoid one fsync per parameter.
762
+ writer_status = self._writer_status
763
+ write_in_background_status = writer_status.write_in_background
764
+ if (
765
+ write_in_background_status is not None
766
+ and write_in_background_status != start_bg_writer
767
+ ):
768
+ raise RuntimeError(
769
+ "All datasets written to the same database must "
770
+ "be written either in the background or in the "
771
+ "main thread. You cannot mix."
772
+ )
773
+
755
774
  with atomic(self.conn) as conn:
756
775
  for spec in paramspecs:
757
776
  add_parameter(
@@ -764,32 +783,20 @@ class DataSet(BaseDataSet):
764
783
  insert_into_results_table=False,
765
784
  )
766
785
 
767
- # Let the backend set up its storage (add columns to the main-database
768
- # results table, create a per-dataset SQLite file, ...) now that all
769
- # parameters are known.
770
- self._results_backend.setup_on_start()
786
+ desc_str = serial.to_json_for_storage(self.description)
787
+ update_run_description(conn, self.run_id, desc_str)
771
788
 
772
- desc_str = serial.to_json_for_storage(self.description)
789
+ set_run_timestamp(conn, self.run_id)
773
790
 
774
- update_run_description(self.conn, self.run_id, desc_str)
791
+ pdl_str = links_to_str(self._parent_dataset_links)
792
+ update_parent_datasets(conn, self.run_id, pdl_str)
775
793
 
776
- set_run_timestamp(self.conn, self.run_id)
794
+ if snapshot is not None:
795
+ self.add_snapshot(snapshot)
777
796
 
778
- pdl_str = links_to_str(self._parent_dataset_links)
779
- update_parent_datasets(self.conn, self.run_id, pdl_str)
780
-
781
- writer_status = self._writer_status
797
+ # Backend setup changes the results storage, not the runs row.
798
+ self._results_backend.setup_on_start()
782
799
 
783
- write_in_background_status = writer_status.write_in_background
784
- if (
785
- write_in_background_status is not None
786
- and write_in_background_status != start_bg_writer
787
- ):
788
- raise RuntimeError(
789
- "All datasets written to the same database must "
790
- "be written either in the background or in the "
791
- "main thread. You cannot mix."
792
- )
793
800
  if start_bg_writer:
794
801
  writer_status.write_in_background = True
795
802
  if writer_status.bg_writer is None:
@@ -808,6 +815,7 @@ class DataSet(BaseDataSet):
808
815
  # results table exists in the per-dataset file), create any subscribers
809
816
  # that were requested while the dataset was still pristine.
810
817
  self._start_pending_subscribers()
818
+ self._started = True
811
819
 
812
820
  def mark_completed(self) -> None:
813
821
  """
@@ -169,6 +169,10 @@ class Instrument(InstrumentBase, metaclass=instrument_meta_class):
169
169
  if hasattr(self, "connection") and hasattr(self.connection, "close"):
170
170
  self.connection.close()
171
171
 
172
+ # Unregister the instrument before stripping it, so that a stripped
173
+ # and therefore unusable instrument is never left registered.
174
+ self.remove_instance(self)
175
+
172
176
  # check for the existense first since this may already
173
177
  # have been striped e.g. if the instrument has been closed once before
174
178
  if hasattr(self, "instrument_modules"):
@@ -181,7 +185,6 @@ class Instrument(InstrumentBase, metaclass=instrument_meta_class):
181
185
  strip_attrs(channel, whitelist=["_short_name", "_parent"])
182
186
 
183
187
  strip_attrs(self, whitelist=["_short_name"])
184
- self.remove_instance(self)
185
188
 
186
189
  @classmethod
187
190
  def close_all(
@@ -285,15 +288,34 @@ class Instrument(InstrumentBase, metaclass=instrument_meta_class):
285
288
  instance: The instance to remove
286
289
 
287
290
  """
291
+ if weakref.getweakrefcount(instance) == 0:
292
+ # Instances are only recorded through weak references, so there is
293
+ # nothing to remove. This is the case when the garbage collector
294
+ # finalizes the instance, since it clears all weak references to
295
+ # the instance before that. Leave the records alone then: before
296
+ # Python 3.14, weak containers postpone removing dead entries while
297
+ # being iterated over, but most of their methods apply postponed
298
+ # removals right away. That would make an iteration that the
299
+ # garbage collection interrupted fail with
300
+ # "RuntimeError: dictionary changed size during iteration".
301
+ return
302
+
288
303
  if instance in getattr(cls, "_instances", weakref.WeakSet()):
289
304
  cls._instances.remove(instance)
290
305
 
291
- # remove from all_instruments too, but don't depend on the
292
- # name to do it, in case name has changed or been deleted
306
+ # Look the instance up by name instead of iterating over all
307
+ # instruments, which a garbage collection could interrupt as described
308
+ # above. The identity check ensures that we never remove another
309
+ # instrument registered under the same name, e.g. when an instrument is
310
+ # closed again after its name has been reused.
311
+ try:
312
+ name = instance.name
313
+ except AttributeError:
314
+ # The instance was not initialized far enough to be registered.
315
+ return
293
316
  all_ins = cls._all_instruments
294
- for name, ref in list(all_ins.items()):
295
- if ref is instance:
296
- del all_ins[name]
317
+ if all_ins.get(name) is instance:
318
+ del all_ins[name]
297
319
 
298
320
  @overload
299
321
  @classmethod
@@ -0,0 +1,30 @@
1
+ # SIMULATED INSTRUMENT FOR Agilent E8257D
2
+ # Only covers what is needed to create the driver and switch the RF output.
3
+ # The installed options are frequency option 520 (20 GHz) and the step
4
+ # attenuator (1E1).
5
+ spec: "1.0"
6
+ devices:
7
+ device 1:
8
+ eom:
9
+ GPIB INSTR:
10
+ q: "\n"
11
+ r: "\n"
12
+ error: ERROR
13
+ dialogues:
14
+ - q: "*IDN?"
15
+ r: "Agilent Technologies, E8257D, US00000000, C.06.28"
16
+ - q: "DIAG:CPU:INFO:OPT:DET?"
17
+ r: "1E1,520,UNT"
18
+
19
+ properties:
20
+ output_enabled:
21
+ default: "0"
22
+ getter:
23
+ q: ":OUTP?"
24
+ r: "{}"
25
+ setter:
26
+ q: "OUTP {}"
27
+
28
+ resources:
29
+ GPIB::1::INSTR:
30
+ device: device 1
@@ -0,0 +1,41 @@
1
+ spec: "1.0"
2
+ devices:
3
+ device 1:
4
+ eom:
5
+ GPIB INSTR:
6
+ q: "\n"
7
+ r: "\n"
8
+ error: ERROR
9
+ dialogues:
10
+ - q: "*IDN?"
11
+ r: "Agilent Technologies, E8267C, US00000000, C.04.84"
12
+
13
+ properties:
14
+ power:
15
+ default: 0
16
+ getter:
17
+ q: "POW?"
18
+ r: "{}"
19
+ setter:
20
+ q: "POW {}"
21
+
22
+ power_offset:
23
+ default: 0
24
+ getter:
25
+ q: "POW:OFFS?"
26
+ r: "{}"
27
+ setter:
28
+ q: "POW:OFFS {}"
29
+
30
+ pulse_width:
31
+ # *RST value according to the E8257D/67D SCPI command reference
32
+ default: "+1.00000000E-006"
33
+ getter:
34
+ q: "PULM:INT:PWID?"
35
+ r: "{}"
36
+ setter:
37
+ q: "PULM:INT:PWID {}"
38
+
39
+ resources:
40
+ GPIB::1::INSTR:
41
+ device: device 1
@@ -0,0 +1,35 @@
1
+ spec: "1.0"
2
+ devices:
3
+ device 1:
4
+ eom:
5
+ GPIB INSTR:
6
+ q: "\r\n"
7
+ r: "\r\n"
8
+ error: ERROR
9
+ dialogues:
10
+ - q: "GET O"
11
+ r: "Overload: OFF"
12
+
13
+ # replies follow the format that the driver parses
14
+ properties:
15
+ gain:
16
+ default: "1E8"
17
+ getter:
18
+ q: "GET G"
19
+ r: "Gain: {}"
20
+ setter:
21
+ q: "SET G {}"
22
+ r: "OK"
23
+
24
+ filter:
25
+ default: "1k"
26
+ getter:
27
+ q: "GET F"
28
+ r: "Filter: {}Hz"
29
+ setter:
30
+ q: "SET F {}"
31
+ r: "OK"
32
+
33
+ resources:
34
+ GPIB::1::INSTR:
35
+ device: device 1
@@ -67,6 +67,42 @@ devices:
67
67
  setter:
68
68
  q: "TRACe:CLEar"
69
69
 
70
+ sense_count:
71
+ default: 1
72
+ getter:
73
+ q: ":SENSe:COUNt?"
74
+ r: "{}"
75
+ setter:
76
+ q: ":SENSe:COUNt {}"
77
+ specs:
78
+ type: int
79
+
80
+ line_frequency:
81
+ default: "5.000000E+01"
82
+ getter:
83
+ q: ":SYSTem:LFRequency?"
84
+ r: "{}"
85
+
86
+ sense_current_nplc:
87
+ default: 1
88
+ getter:
89
+ q: ":SENSe:current:NPLCycles?"
90
+ r: "{}"
91
+ setter:
92
+ q: ":SENSe:current:NPLCycles {}"
93
+ specs:
94
+ type: float
95
+
96
+ source_current_delay:
97
+ default: 0
98
+ getter:
99
+ q: ":SOURce:current:DELay?"
100
+ r: "{}"
101
+ setter:
102
+ q: ":SOURce:current:DELay {}"
103
+ specs:
104
+ type: float
105
+
70
106
  resources:
71
107
  GPIB::1::INSTR:
72
108
  device: device wrong_mode
@@ -203,3 +203,9 @@ resources:
203
203
 
204
204
  GPIB::2::INSTR:
205
205
  device: Keithley
206
+
207
+ GPIB::3::INSTR:
208
+ device: Keithley
209
+
210
+ GPIB::4::INSTR:
211
+ device: Keithley
@@ -0,0 +1,50 @@
1
+ spec: "1.0"
2
+ devices:
3
+ device 1:
4
+ eom:
5
+ GPIB INSTR:
6
+ q: "\n"
7
+ r: "\n"
8
+ error: ERROR
9
+ dialogues:
10
+ - q: "*IDN?"
11
+ r: "KEITHLEY INSTRUMENTS,MODEL DMM6500,04000000,1.0.0"
12
+ - q: "*LANG?"
13
+ r: "SCPI"
14
+
15
+ properties:
16
+ data_format:
17
+ default: ASCII
18
+ getter:
19
+ q: "FORM:DATA?"
20
+ r: "{}"
21
+ setter:
22
+ q: "FORM:DATA {}"
23
+
24
+ display_digits:
25
+ default: 6
26
+ getter:
27
+ q: "DISP:VOLT:DC:DIG?"
28
+ r: "{}"
29
+ setter:
30
+ q: "DISP:VOLT:DC:DIG {}"
31
+ specs:
32
+ type: int
33
+ min: 4
34
+ max: 7
35
+
36
+ scan_count:
37
+ default: 1
38
+ getter:
39
+ q: "ROUT:SCAN:COUN:SCAN?"
40
+ r: "{}"
41
+ setter:
42
+ q: "ROUT:SCAN:COUN:SCAN {}"
43
+ specs:
44
+ type: int
45
+ min: 0
46
+ max: 100000000
47
+
48
+ resources:
49
+ GPIB::1::INSTR:
50
+ device: device 1
@@ -32,6 +32,23 @@ devices:
32
32
  setter:
33
33
  q: ":CURRent:LEVel {}"
34
34
 
35
+ impedance_range:
36
+ # preset value according to the E4980A/AL user's guide
37
+ default: "+1.00000E+02"
38
+ getter:
39
+ q: ":FUNCtion:IMPedance:RANGe?"
40
+ r: "{}"
41
+ setter:
42
+ q: ":FUNCtion:IMPedance:RANGe {}"
43
+
44
+ impedance_autorange:
45
+ default: 1
46
+ getter:
47
+ q: ":FUNCtion:IMPedance:RANGe:AUTO?"
48
+ r: "{}"
49
+ setter:
50
+ q: ":FUNCtion:IMPedance:RANGe:AUTO {}"
51
+
35
52
  resources:
36
53
  GPIB::1::INSTR:
37
54
  device: device 1
@@ -0,0 +1,65 @@
1
+ # SIMULATED INSTRUMENT FOR Keysight PNA N5222B
2
+ # Only covers what is needed to create the driver and a few parameters.
3
+ # The instrument has a single measurement "CH1_S11_1" (trace number 1).
4
+ # Commands that are only written are modelled as properties with a setter
5
+ # without a response, so that they do not leave a reply in the read buffer.
6
+ spec: "1.0"
7
+ devices:
8
+ N5222B:
9
+ eom:
10
+ GPIB INSTR:
11
+ q: "\n"
12
+ r: "\n"
13
+ error: ERROR
14
+ dialogues:
15
+ - q: "*IDN?"
16
+ r: "Keysight Technologies,N5222B,MY12345678,A.13.95.09"
17
+ - q: "*OPT?"
18
+ r: '""'
19
+ - q: "CALC:PAR:CAT:EXT?"
20
+ r: '"CH1_S11_1,S11"'
21
+
22
+ properties:
23
+
24
+ data_format:
25
+ default: "REAL,32"
26
+ setter:
27
+ q: "FORM {}"
28
+
29
+ byte_order:
30
+ default: "NORM"
31
+ setter:
32
+ q: "FORM:BORD {}"
33
+
34
+ selected_measurement_name:
35
+ default: "'CH1_S11_1'"
36
+ setter:
37
+ q: "CALC:PAR:SEL {}"
38
+
39
+ active_trace:
40
+ default: 1
41
+ getter:
42
+ q: "CALC:PAR:MNUM?"
43
+ r: "{}"
44
+ setter:
45
+ q: "CALC:PAR:MNUM {}"
46
+
47
+ averages:
48
+ default: 1
49
+ getter:
50
+ q: "SENS:AVER:COUN?"
51
+ r: "{}"
52
+ setter:
53
+ q: "SENS:AVER:COUN {}"
54
+
55
+ points:
56
+ default: 201
57
+ getter:
58
+ q: "SENS:SWE:POIN?"
59
+ r: "{}"
60
+ setter:
61
+ q: "SENS:SWE:POIN {}"
62
+
63
+ resources:
64
+ GPIB::1::INSTR:
65
+ device: N5222B
@@ -25,7 +25,7 @@ devices:
25
25
  q: "TRIGger1:SOURce?"
26
26
  r: "{}"
27
27
  setter:
28
- q: "TRIGger1:SOURce? {}"
28
+ q: "TRIGger1:SOURce {}"
29
29
 
30
30
  trigger level 1:
31
31
  default: 0
@@ -35,6 +35,14 @@ devices:
35
35
  setter:
36
36
  q: "TRIGger1:LEVel1 {}"
37
37
 
38
+ trigger mode:
39
+ default: AUTO
40
+ getter:
41
+ q: "TRIGger:MODE?"
42
+ r: "{}"
43
+ setter:
44
+ q: "TRIGger:MODE {}"
45
+
38
46
  channel range 1:
39
47
  default: 5
40
48
  getter:
@@ -49,6 +57,15 @@ devices:
49
57
  setter:
50
58
  q: "CHANnel1:OFFSet {}"
51
59
 
60
+ channel impedance 1:
61
+ # *RST value according to the R&S RTO user manual
62
+ default: 50
63
+ getter:
64
+ q: "CHANnel1:IMPedance?"
65
+ r: "{}"
66
+ setter:
67
+ q: "CHANnel1:IMPedance {}"
68
+
52
69
  resources:
53
70
  GPIB::1::INSTR:
54
71
  device: device 1
@@ -0,0 +1,54 @@
1
+ spec: "1.0"
2
+ devices:
3
+ device 1:
4
+ eom:
5
+ GPIB INSTR:
6
+ q: "\n"
7
+ r: "\n"
8
+ error: ERROR
9
+ dialogues:
10
+ - q: "*IDN?"
11
+ r: "Rigol Technologies,DG1062Z,DG1ZA000000001,00.01.14"
12
+ - q: ":SOUR1:APPL?"
13
+ r: "\"SQU,1.000000E+03,5.000000E+00,0.000000E+00,0.000000E+00\""
14
+ - q: ":SOUR2:APPL?"
15
+ r: "\"SIN,1.000000E+03,5.000000E+00,0.000000E+00,0.000000E+00\""
16
+
17
+ # query responses use the scientific notation documented in the
18
+ # DG1000Z Programming Guide
19
+ properties:
20
+ burst_ncycles_1:
21
+ default: "1.000000E+00"
22
+ getter:
23
+ q: ":SOUR1:BURS:NCYC?"
24
+ r: "{}"
25
+ setter:
26
+ q: ":SOUR1:BURS:NCYC {}"
27
+
28
+ burst_phase_1:
29
+ default: "0.000000E+00"
30
+ getter:
31
+ q: ":SOUR1:BURS:PHAS?"
32
+ r: "{}"
33
+ setter:
34
+ q: ":SOUR1:BURS:PHAS {}"
35
+
36
+ burst_time_delay_1:
37
+ default: "0.000000E+00"
38
+ getter:
39
+ q: ":SOUR1:BURS:TDEL?"
40
+ r: "{}"
41
+ setter:
42
+ q: ":SOUR1:BURS:TDEL {}"
43
+
44
+ square_duty_cycle_1:
45
+ default: "5.000000E+01"
46
+ getter:
47
+ q: ":SOUR1:FUNC:SQU:DCYC?"
48
+ r: "{}"
49
+ setter:
50
+ q: ":SOUR1:FUNC:SQU:DCYC {}"
51
+
52
+ resources:
53
+ GPIB::1::INSTR:
54
+ device: device 1
@@ -46,6 +46,14 @@ devices:
46
46
  r: "{}"
47
47
  setter:
48
48
  q: ":TRIGger:MODE {}"
49
+ trigger_edge_level:
50
+ # response format from the MSO1000Z/DS1000Z Programming Guide
51
+ default: "1.600000e-01"
52
+ getter:
53
+ q: ":TRIGger:edge:LEVel?"
54
+ r: "{}"
55
+ setter:
56
+ q: ":TRIGger:edge:LEVel {}"
49
57
  data_source:
50
58
  default: "CHAN1"
51
59
  getter: