qcodes 0.45.0__tar.gz → 0.46.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 (559) hide show
  1. {qcodes-0.45.0/src/qcodes.egg-info → qcodes-0.46.0}/PKG-INFO +4 -1
  2. {qcodes-0.45.0 → qcodes-0.46.0}/pyproject.toml +8 -1
  3. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/_version.py +1 -1
  4. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/dond/do_nd_utils.py +16 -4
  5. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/measurements.py +18 -0
  6. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/plotting.py +8 -6
  7. qcodes-0.46.0/src/qcodes/extensions/_refactor.py +227 -0
  8. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/__init__.py +4 -2
  9. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/channel.py +7 -5
  10. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/instrument.py +15 -11
  11. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/instrument_base.py +56 -4
  12. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/ip.py +7 -11
  13. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/visa.py +62 -7
  14. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/AimTTi/_AimTTi_PL_P.py +43 -15
  15. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/AimTTi/__init__.py +2 -1
  16. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/AlazarTech/ATS.py +30 -11
  17. qcodes-0.46.0/src/qcodes/instrument_drivers/AlazarTech/ATS9360.py +472 -0
  18. qcodes-0.46.0/src/qcodes/instrument_drivers/AlazarTech/ATS9373.py +487 -0
  19. qcodes-0.46.0/src/qcodes/instrument_drivers/AlazarTech/ATS9440.py +391 -0
  20. qcodes-0.46.0/src/qcodes/instrument_drivers/AlazarTech/ATS9870.py +394 -0
  21. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/AlazarTech/ATS_acquisition_controllers.py +8 -2
  22. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/AlazarTech/__init__.py +3 -1
  23. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/AlazarTech/utils.py +2 -2
  24. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Galil/dmc_41x3.py +50 -20
  25. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/HP/HP_8133A.py +35 -13
  26. qcodes-0.46.0/src/qcodes/instrument_drivers/HP/HP_83650A.py +173 -0
  27. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/HP/HP_8753D.py +43 -16
  28. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Harvard/Decadac.py +108 -53
  29. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keithley/Keithley_2000.py +49 -19
  30. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keithley/Keithley_2400.py +41 -17
  31. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keithley/Keithley_2450.py +75 -36
  32. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keithley/Keithley_3706A.py +33 -10
  33. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keithley/Keithley_6500.py +44 -20
  34. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keithley/Keithley_7510.py +123 -66
  35. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keithley/Keithley_s46.py +20 -6
  36. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keithley/_Keithley_2600.py +71 -30
  37. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keithley/__init__.py +8 -2
  38. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/Infiniium.py +34 -10
  39. qcodes-0.46.0/src/qcodes/instrument_drivers/Keysight/KeysightAgilent_33XXX.py +433 -0
  40. qcodes-0.46.0/src/qcodes/instrument_drivers/Keysight/Keysight_33210a.py +7 -0
  41. qcodes-0.46.0/src/qcodes/instrument_drivers/Keysight/Keysight_33250a.py +7 -0
  42. qcodes-0.46.0/src/qcodes/instrument_drivers/Keysight/Keysight_33510b.py +7 -0
  43. qcodes-0.46.0/src/qcodes/instrument_drivers/Keysight/Keysight_33511b.py +7 -0
  44. qcodes-0.46.0/src/qcodes/instrument_drivers/Keysight/Keysight_33512b.py +7 -0
  45. qcodes-0.46.0/src/qcodes/instrument_drivers/Keysight/Keysight_33522b.py +7 -0
  46. qcodes-0.46.0/src/qcodes/instrument_drivers/Keysight/Keysight_33622a.py +7 -0
  47. qcodes-0.46.0/src/qcodes/instrument_drivers/Keysight/Keysight_34410A_submodules.py +34 -0
  48. qcodes-0.46.0/src/qcodes/instrument_drivers/Keysight/Keysight_34411A_submodules.py +34 -0
  49. qcodes-0.46.0/src/qcodes/instrument_drivers/Keysight/Keysight_34460A_submodules.py +34 -0
  50. qcodes-0.46.0/src/qcodes/instrument_drivers/Keysight/Keysight_34461A_submodules.py +34 -0
  51. qcodes-0.46.0/src/qcodes/instrument_drivers/Keysight/Keysight_34465A_submodules.py +34 -0
  52. qcodes-0.46.0/src/qcodes/instrument_drivers/Keysight/Keysight_34470A_submodules.py +34 -0
  53. qcodes-0.46.0/src/qcodes/instrument_drivers/Keysight/Keysight_B2962A.py +173 -0
  54. qcodes-0.46.0/src/qcodes/instrument_drivers/Keysight/Keysight_N5183B.py +22 -0
  55. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/Keysight_N5222B.py +10 -3
  56. qcodes-0.46.0/src/qcodes/instrument_drivers/Keysight/Keysight_N5230C.py +24 -0
  57. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/Keysight_N5245A.py +10 -3
  58. qcodes-0.46.0/src/qcodes/instrument_drivers/Keysight/Keysight_N6705B.py +133 -0
  59. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/Keysight_N9030B.py +141 -36
  60. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/Keysight_P9374A.py +10 -3
  61. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/KtM960x.py +76 -65
  62. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/KtMAwg.py +42 -23
  63. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/N51x1.py +55 -25
  64. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/N52xx.py +298 -203
  65. qcodes-0.46.0/src/qcodes/instrument_drivers/Keysight/_Keysight_N5232B.py +24 -0
  66. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/__init__.py +25 -3
  67. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/keysight_34934a.py +33 -16
  68. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/keysight_34980a.py +20 -12
  69. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/keysight_34980a_submodules.py +41 -14
  70. qcodes-0.46.0/src/qcodes/instrument_drivers/Keysight/keysight_b220x.py +442 -0
  71. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/keysight_e4980a.py +76 -53
  72. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/keysightb1500/KeysightB1500_base.py +61 -25
  73. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/keysightb1500/KeysightB1500_module.py +11 -5
  74. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/keysightb1500/KeysightB1500_sampling_measurement.py +2 -2
  75. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/keysightb1500/KeysightB1517A.py +363 -147
  76. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/keysightb1500/KeysightB1520A.py +453 -187
  77. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/keysightb1500/KeysightB1530A.py +7 -4
  78. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/keysightb1500/message_builder.py +1 -1
  79. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/private/Keysight_344xxA_submodules.py +628 -286
  80. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Lakeshore/Lakeshore_model_325.py +103 -45
  81. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Lakeshore/Lakeshore_model_336.py +60 -17
  82. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Lakeshore/Lakeshore_model_372.py +72 -24
  83. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Lakeshore/Model_325.py +17 -5
  84. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Lakeshore/Model_336.py +14 -3
  85. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Lakeshore/Model_372.py +11 -4
  86. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Lakeshore/__init__.py +8 -0
  87. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Lakeshore/_lakeshore_model_335.py +52 -14
  88. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Lakeshore/lakeshore_base.py +295 -197
  89. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Minicircuits/Base_SPDT.py +51 -8
  90. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Minicircuits/USBHIDMixin.py +166 -30
  91. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Minicircuits/__init__.py +10 -1
  92. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Minicircuits/_minicircuits_rc_sp4t.py +32 -7
  93. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Minicircuits/_minicircuits_rc_spdt.py +31 -7
  94. qcodes-0.46.0/src/qcodes/instrument_drivers/Minicircuits/_minicircuits_rudat_13g_90.py +76 -0
  95. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Minicircuits/_minicircuits_usb_spdt.py +21 -17
  96. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/QDev/QDac_channels.py +113 -74
  97. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/QuantumDesign/DynaCoolPPMS/DynaCool.py +198 -144
  98. qcodes-0.46.0/src/qcodes/instrument_drivers/agilent/Agilent_34401A.py +34 -0
  99. qcodes-0.46.0/src/qcodes/instrument_drivers/agilent/Agilent_34410A.py +42 -0
  100. qcodes-0.46.0/src/qcodes/instrument_drivers/agilent/Agilent_34411A.py +42 -0
  101. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/agilent/Agilent_E8257D.py +17 -10
  102. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/agilent/Agilent_E8267C.py +34 -13
  103. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/agilent/_Agilent_344xxA.py +34 -37
  104. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/agilent/__init__.py +2 -0
  105. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/american_magnetics/AMI430.py +275 -241
  106. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/american_magnetics/AMI430_visa.py +133 -68
  107. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/basel/BaselSP983.py +16 -6
  108. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/basel/BaselSP983a.py +19 -10
  109. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/cryomagnetics/_cryomagnetics4g.py +26 -12
  110. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/ithaco/Ithaco_1211.py +60 -39
  111. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/mock_instruments/__init__.py +75 -24
  112. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/oxford/MercuryiPS_VISA.py +158 -99
  113. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/oxford/triton.py +51 -24
  114. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rigol/Rigol_DG1062.py +71 -24
  115. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rigol/Rigol_DG4000.py +43 -17
  116. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rigol/Rigol_DP821.py +11 -4
  117. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rigol/Rigol_DP831.py +11 -4
  118. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rigol/Rigol_DP832.py +11 -4
  119. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rigol/Rigol_DS1074Z.py +54 -24
  120. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rigol/Rigol_DS4000.py +50 -17
  121. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rigol/__init__.py +2 -0
  122. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rigol/private/DP8xx.py +42 -19
  123. qcodes-0.46.0/src/qcodes/instrument_drivers/rohde_schwarz/RTO1000.py +982 -0
  124. qcodes-0.46.0/src/qcodes/instrument_drivers/rohde_schwarz/Rohde_Schwarz_ZNB20.py +10 -0
  125. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rohde_schwarz/Rohde_Schwarz_ZNB8.py +2 -2
  126. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rohde_schwarz/SGS100A.py +71 -33
  127. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rohde_schwarz/ZNB.py +111 -38
  128. qcodes-0.46.0/src/qcodes/instrument_drivers/rohde_schwarz/ZNB20.py +5 -0
  129. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rohde_schwarz/__init__.py +2 -1
  130. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/signal_hound/SignalHound_USB_SA124B.py +96 -29
  131. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/stahl/stahl.py +73 -40
  132. qcodes-0.46.0/src/qcodes/instrument_drivers/stanford_research/SG384.py +234 -0
  133. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/stanford_research/SR560.py +49 -29
  134. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/stanford_research/SR830.py +306 -223
  135. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/stanford_research/SR860.py +12 -1
  136. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/stanford_research/SR865.py +12 -1
  137. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/stanford_research/SR865A.py +15 -2
  138. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/stanford_research/SR86x.py +351 -244
  139. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/stanford_research/__init__.py +2 -1
  140. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/AWG5014.py +200 -120
  141. qcodes-0.46.0/src/qcodes/instrument_drivers/tektronix/AWG5208.py +39 -0
  142. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/AWG70000A.py +275 -178
  143. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/AWG70002A.py +15 -6
  144. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/DPO7200xx.py +212 -150
  145. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/TPS2012.py +139 -77
  146. qcodes-0.46.0/src/qcodes/instrument_drivers/tektronix/Tektronix_70001A.py +33 -0
  147. qcodes-0.46.0/src/qcodes/instrument_drivers/tektronix/Tektronix_70001B.py +33 -0
  148. qcodes-0.46.0/src/qcodes/instrument_drivers/tektronix/Tektronix_70002B.py +33 -0
  149. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/__init__.py +2 -1
  150. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/weinschel/Weinschel_8320.py +11 -4
  151. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/yokogawa/GS200.py +97 -40
  152. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/yokogawa/Yokogawa_GS200.py +97 -40
  153. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/math_utils/field_vector.py +20 -2
  154. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/monitor/monitor.py +3 -5
  155. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/array_parameter.py +3 -3
  156. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/multi_channel_instrument_parameter.py +27 -5
  157. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/multi_parameter.py +3 -3
  158. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/parameter.py +2 -4
  159. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/parameter_base.py +36 -8
  160. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/specialized_parameters.py +9 -9
  161. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/station.py +10 -4
  162. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/abstractmethod.py +7 -2
  163. {qcodes-0.45.0 → qcodes-0.46.0/src/qcodes.egg-info}/PKG-INFO +4 -1
  164. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes.egg-info/SOURCES.txt +1 -0
  165. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes.egg-info/entry_points.txt +1 -0
  166. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes.egg-info/requires.txt +4 -0
  167. {qcodes-0.45.0 → qcodes-0.46.0}/tests/test_instrument.py +22 -1
  168. {qcodes-0.45.0 → qcodes-0.46.0}/tests/test_station.py +2 -3
  169. {qcodes-0.45.0 → qcodes-0.46.0}/tests/test_visa.py +19 -8
  170. qcodes-0.45.0/src/qcodes/instrument_drivers/AlazarTech/ATS9360.py +0 -385
  171. qcodes-0.45.0/src/qcodes/instrument_drivers/AlazarTech/ATS9373.py +0 -400
  172. qcodes-0.45.0/src/qcodes/instrument_drivers/AlazarTech/ATS9440.py +0 -310
  173. qcodes-0.45.0/src/qcodes/instrument_drivers/AlazarTech/ATS9870.py +0 -317
  174. qcodes-0.45.0/src/qcodes/instrument_drivers/HP/HP_83650A.py +0 -139
  175. qcodes-0.45.0/src/qcodes/instrument_drivers/Keysight/KeysightAgilent_33XXX.py +0 -341
  176. qcodes-0.45.0/src/qcodes/instrument_drivers/Keysight/Keysight_33210a.py +0 -7
  177. qcodes-0.45.0/src/qcodes/instrument_drivers/Keysight/Keysight_33250a.py +0 -7
  178. qcodes-0.45.0/src/qcodes/instrument_drivers/Keysight/Keysight_33510b.py +0 -7
  179. qcodes-0.45.0/src/qcodes/instrument_drivers/Keysight/Keysight_33511b.py +0 -7
  180. qcodes-0.45.0/src/qcodes/instrument_drivers/Keysight/Keysight_33512b.py +0 -7
  181. qcodes-0.45.0/src/qcodes/instrument_drivers/Keysight/Keysight_33522b.py +0 -7
  182. qcodes-0.45.0/src/qcodes/instrument_drivers/Keysight/Keysight_33622a.py +0 -7
  183. qcodes-0.45.0/src/qcodes/instrument_drivers/Keysight/Keysight_34410A_submodules.py +0 -18
  184. qcodes-0.45.0/src/qcodes/instrument_drivers/Keysight/Keysight_34411A_submodules.py +0 -18
  185. qcodes-0.45.0/src/qcodes/instrument_drivers/Keysight/Keysight_34460A_submodules.py +0 -18
  186. qcodes-0.45.0/src/qcodes/instrument_drivers/Keysight/Keysight_34461A_submodules.py +0 -18
  187. qcodes-0.45.0/src/qcodes/instrument_drivers/Keysight/Keysight_34465A_submodules.py +0 -18
  188. qcodes-0.45.0/src/qcodes/instrument_drivers/Keysight/Keysight_34470A_submodules.py +0 -18
  189. qcodes-0.45.0/src/qcodes/instrument_drivers/Keysight/Keysight_B2962A.py +0 -122
  190. qcodes-0.45.0/src/qcodes/instrument_drivers/Keysight/Keysight_N5183B.py +0 -15
  191. qcodes-0.45.0/src/qcodes/instrument_drivers/Keysight/Keysight_N5230C.py +0 -17
  192. qcodes-0.45.0/src/qcodes/instrument_drivers/Keysight/Keysight_N6705B.py +0 -91
  193. qcodes-0.45.0/src/qcodes/instrument_drivers/Keysight/_Keysight_N5232B.py +0 -17
  194. qcodes-0.45.0/src/qcodes/instrument_drivers/Keysight/keysight_b220x.py +0 -380
  195. qcodes-0.45.0/src/qcodes/instrument_drivers/Minicircuits/_minicircuits_rudat_13g_90.py +0 -58
  196. qcodes-0.45.0/src/qcodes/instrument_drivers/agilent/Agilent_34401A.py +0 -9
  197. qcodes-0.45.0/src/qcodes/instrument_drivers/agilent/Agilent_34410A.py +0 -9
  198. qcodes-0.45.0/src/qcodes/instrument_drivers/agilent/Agilent_34411A.py +0 -9
  199. qcodes-0.45.0/src/qcodes/instrument_drivers/rohde_schwarz/RTO1000.py +0 -825
  200. qcodes-0.45.0/src/qcodes/instrument_drivers/rohde_schwarz/Rohde_Schwarz_ZNB20.py +0 -10
  201. qcodes-0.45.0/src/qcodes/instrument_drivers/rohde_schwarz/ZNB20.py +0 -5
  202. qcodes-0.45.0/src/qcodes/instrument_drivers/stanford_research/SG384.py +0 -165
  203. qcodes-0.45.0/src/qcodes/instrument_drivers/tektronix/AWG5208.py +0 -30
  204. qcodes-0.45.0/src/qcodes/instrument_drivers/tektronix/Tektronix_70001A.py +0 -24
  205. qcodes-0.45.0/src/qcodes/instrument_drivers/tektronix/Tektronix_70001B.py +0 -24
  206. qcodes-0.45.0/src/qcodes/instrument_drivers/tektronix/Tektronix_70002B.py +0 -24
  207. {qcodes-0.45.0 → qcodes-0.46.0}/LICENSE +0 -0
  208. {qcodes-0.45.0 → qcodes-0.46.0}/MANIFEST.in +0 -0
  209. {qcodes-0.45.0 → qcodes-0.46.0}/README.rst +0 -0
  210. {qcodes-0.45.0 → qcodes-0.46.0}/setup.cfg +0 -0
  211. {qcodes-0.45.0 → qcodes-0.46.0}/setup.py +0 -0
  212. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/__init__.py +0 -0
  213. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/calibrations/__init__.py +0 -0
  214. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/calibrations/keithley.py +0 -0
  215. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/configuration/__init__.py +0 -0
  216. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/configuration/config.py +0 -0
  217. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/configuration/qcodesrc.json +0 -0
  218. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/configuration/qcodesrc_schema.json +0 -0
  219. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/__init__.py +0 -0
  220. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/data_export.py +0 -0
  221. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/data_set.py +0 -0
  222. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/data_set_cache.py +0 -0
  223. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/data_set_in_memory.py +0 -0
  224. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/data_set_info.py +0 -0
  225. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/data_set_protocol.py +0 -0
  226. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/database_extract_runs.py +0 -0
  227. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/database_fix_functions.py +0 -0
  228. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/dataset_helpers.py +0 -0
  229. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/descriptions/__init__.py +0 -0
  230. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/descriptions/dependencies.py +0 -0
  231. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/descriptions/detect_shapes.py +0 -0
  232. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/descriptions/param_spec.py +0 -0
  233. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/descriptions/rundescriber.py +0 -0
  234. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/descriptions/versioning/__init__.py +0 -0
  235. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/descriptions/versioning/converters.py +0 -0
  236. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/descriptions/versioning/rundescribertypes.py +0 -0
  237. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/descriptions/versioning/serialization.py +0 -0
  238. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/descriptions/versioning/v0.py +0 -0
  239. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/dond/__init__.py +0 -0
  240. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/dond/do2d_retrace.py +0 -0
  241. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/dond/do_0d.py +0 -0
  242. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/dond/do_1d.py +0 -0
  243. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/dond/do_2d.py +0 -0
  244. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/dond/do_nd.py +0 -0
  245. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/dond/sweeps.py +0 -0
  246. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/experiment_container.py +0 -0
  247. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/experiment_settings.py +0 -0
  248. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/export_config.py +0 -0
  249. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/exporters/__init__.py +0 -0
  250. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/exporters/export_info.py +0 -0
  251. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/exporters/export_to_csv.py +0 -0
  252. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/exporters/export_to_pandas.py +0 -0
  253. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/exporters/export_to_xarray.py +0 -0
  254. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/guid_helpers.py +0 -0
  255. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/guids.py +0 -0
  256. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/json_exporter.py +0 -0
  257. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/legacy_import.py +0 -0
  258. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/linked_datasets/__init__.py +0 -0
  259. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/linked_datasets/links.py +0 -0
  260. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/measurement_extensions.py +0 -0
  261. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/snapshot_utils.py +0 -0
  262. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/sqlite/__init__.py +0 -0
  263. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/sqlite/connection.py +0 -0
  264. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/sqlite/database.py +0 -0
  265. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/sqlite/db_upgrades/__init__.py +0 -0
  266. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/sqlite/db_upgrades/upgrade_2_to_3.py +0 -0
  267. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/sqlite/db_upgrades/upgrade_3_to_4.py +0 -0
  268. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/sqlite/db_upgrades/upgrade_5_to_6.py +0 -0
  269. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/sqlite/db_upgrades/version.py +0 -0
  270. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/sqlite/initial_schema.py +0 -0
  271. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/sqlite/queries.py +0 -0
  272. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/sqlite/query_helpers.py +0 -0
  273. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/sqlite/settings.py +0 -0
  274. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/subscriber.py +0 -0
  275. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/threading.py +0 -0
  276. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dist/__init__.py +0 -0
  277. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dist/schemas/__init__.py +0 -0
  278. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dist/schemas/station-template.schema.json +0 -0
  279. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dist/tests/__init__.py +0 -0
  280. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dist/tests/station/__init__.py +0 -0
  281. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dist/tests/station/example.station.yaml +0 -0
  282. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/extensions/__init__.py +0 -0
  283. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/extensions/_driver_test_case.py +0 -0
  284. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/extensions/_log_export_info.py +0 -0
  285. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/extensions/infer.py +0 -0
  286. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/extensions/installation.py +0 -0
  287. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/base.py +0 -0
  288. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/delegate/__init__.py +0 -0
  289. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/delegate/delegate_channel_instrument.py +0 -0
  290. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/delegate/delegate_instrument.py +0 -0
  291. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/delegate/grouped_parameter.py +0 -0
  292. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/delegate/instrument_group.py +0 -0
  293. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/function.py +0 -0
  294. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/group_parameter.py +0 -0
  295. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/instrument_meta.py +0 -0
  296. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/ip_to_visa.py +0 -0
  297. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/mockers/__init__.py +0 -0
  298. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/mockers/ami430.py +0 -0
  299. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/mockers/simulated_ats_api.py +0 -0
  300. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/parameter.py +0 -0
  301. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/AMI430.yaml +0 -0
  302. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/AimTTi_PL601P.yaml +0 -0
  303. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/Keithley_2450.yaml +0 -0
  304. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/Keithley_2600.yaml +0 -0
  305. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/Keithley_3706A.yaml +0 -0
  306. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/Keithley_s46.yaml +0 -0
  307. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/Keysight_33xxx.yaml +0 -0
  308. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/Keysight_34465A.yaml +0 -0
  309. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/Keysight_E4980A.yaml +0 -0
  310. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/Keysight_N6705B.yaml +0 -0
  311. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/Keysight_N9030B.yaml +0 -0
  312. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/MercuryiPS.yaml +0 -0
  313. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/RSHMC804x.yaml +0 -0
  314. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/RSSGS100A.yaml +0 -0
  315. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/RTO_1000.yaml +0 -0
  316. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/Rigol_DS1074Z.yaml +0 -0
  317. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/Tektronix_AWG5014C.yaml +0 -0
  318. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/Tektronix_AWG5208.yaml +0 -0
  319. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/Tektronix_AWG70000A.yaml +0 -0
  320. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/Tektronix_DPO7200xx.yaml +0 -0
  321. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/Weinschel_8320.yaml +0 -0
  322. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/Yokogawa_GS200.yaml +0 -0
  323. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/__init__.py +0 -0
  324. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/cryo4g.yaml +0 -0
  325. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/dummy.py +0 -0
  326. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/dummy.yaml +0 -0
  327. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/keithley_7510.yaml +0 -0
  328. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/keysight_34980A.yaml +0 -0
  329. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/keysight_b1500.yaml +0 -0
  330. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/keysight_b220x.yaml +0 -0
  331. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/lakeshore_model335.yaml +0 -0
  332. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/lakeshore_model336.yaml +0 -0
  333. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/lakeshore_model372.yaml +0 -0
  334. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/stahl.yaml +0 -0
  335. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/specialized_parameters.py +0 -0
  336. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sweep_values.py +0 -0
  337. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/AimTTi/AimTTi_PL601P_channels.py +0 -0
  338. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/AimTTi/Aim_TTi_PL068_P.py +0 -0
  339. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/AimTTi/Aim_TTi_PL155_P.py +0 -0
  340. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/AimTTi/Aim_TTi_PL303QMD_P.py +0 -0
  341. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/AimTTi/Aim_TTi_PL303QMT_P.py +0 -0
  342. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/AimTTi/Aim_TTi_PL303_P.py +0 -0
  343. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/AimTTi/Aim_TTi_PL601_P.py +0 -0
  344. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/AimTTi/Aim_TTi_QL355_TP.py +0 -0
  345. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/AlazarTech/ats_api.py +0 -0
  346. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/AlazarTech/constants.py +0 -0
  347. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/AlazarTech/dll_wrapper.py +0 -0
  348. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/AlazarTech/helpers.py +0 -0
  349. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Galil/__init__.py +0 -0
  350. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/HP/HP8133A.py +0 -0
  351. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/HP/HP8753D.py +0 -0
  352. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/HP/__init__.py +0 -0
  353. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Harvard/__init__.py +0 -0
  354. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keithley/Keithley_2601B.py +0 -0
  355. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keithley/Keithley_2602A.py +0 -0
  356. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keithley/Keithley_2602B.py +0 -0
  357. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keithley/Keithley_2604B.py +0 -0
  358. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keithley/Keithley_2611B.py +0 -0
  359. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keithley/Keithley_2612B.py +0 -0
  360. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keithley/Keithley_2614B.py +0 -0
  361. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keithley/Keithley_2634B.py +0 -0
  362. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keithley/Keithley_2635B.py +0 -0
  363. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keithley/Keithley_2636B.py +0 -0
  364. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/Keysight_N5173B.py +0 -0
  365. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/KtM960xDefs.py +0 -0
  366. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/KtMAwgDefs.py +0 -0
  367. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/N5222B.py +0 -0
  368. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/N5230C.py +0 -0
  369. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/N5245A.py +0 -0
  370. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/N9030B.py +0 -0
  371. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/P9374A.py +0 -0
  372. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/keysightb1500/KeysightB1511B.py +0 -0
  373. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/keysightb1500/__init__.py +0 -0
  374. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/keysightb1500/constants.py +0 -0
  375. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/private/__init__.py +0 -0
  376. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/private/error_handling.py +0 -0
  377. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Minicircuits/RC_SP4T.py +0 -0
  378. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Minicircuits/RC_SPDT.py +0 -0
  379. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Minicircuits/RUDAT_13G_90.py +0 -0
  380. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Minicircuits/USB_SPDT.py +0 -0
  381. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/QDev/__init__.py +0 -0
  382. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/QuantumDesign/DynaCoolPPMS/__init__.py +0 -0
  383. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/QuantumDesign/DynaCoolPPMS/private/__init__.py +0 -0
  384. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/QuantumDesign/DynaCoolPPMS/private/commandhandler.py +0 -0
  385. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/QuantumDesign/DynaCoolPPMS/private/server.py +0 -0
  386. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/QuantumDesign/__init__.py +0 -0
  387. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/__init__.py +0 -0
  388. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/american_magnetics/__init__.py +0 -0
  389. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/basel/BaselSP983c.py +0 -0
  390. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/basel/__init__.py +0 -0
  391. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/basel/sp983c.py +0 -0
  392. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/basel/sp983c_remote.py +0 -0
  393. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/cryomagnetics/__init__.py +0 -0
  394. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/ithaco/__init__.py +0 -0
  395. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/oxford/__init__.py +0 -0
  396. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rigol/DG1062.py +0 -0
  397. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rigol/DG4000.py +0 -0
  398. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rigol/DP821.py +0 -0
  399. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rigol/DP831.py +0 -0
  400. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rigol/DP832.py +0 -0
  401. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rigol/DS1074Z.py +0 -0
  402. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rigol/DS4000.py +0 -0
  403. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rigol/private/__init__.py +0 -0
  404. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rohde_schwarz/RTE1000.py +0 -0
  405. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/signal_hound/USB_SA124B.py +0 -0
  406. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/signal_hound/__init__.py +0 -0
  407. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/stahl/__init__.py +0 -0
  408. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/AWGFileParser.py +0 -0
  409. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/Keithley_2000.py +0 -0
  410. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/Keithley_2400.py +0 -0
  411. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/Keithley_2450.py +0 -0
  412. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/Keithley_2600_channels.py +0 -0
  413. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/Keithley_3706A.py +0 -0
  414. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/Keithley_6500.py +0 -0
  415. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/Keithley_s46.py +0 -0
  416. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/Tektronix_DPO5000.py +0 -0
  417. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/Tektronix_DPO7000.py +0 -0
  418. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/Tektronix_DPO70000.py +0 -0
  419. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/Tektronix_DSA70000.py +0 -0
  420. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/Tektronix_MSO5000.py +0 -0
  421. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/Tektronix_MSO70000.py +0 -0
  422. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/keithley_7510.py +0 -0
  423. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/weinschel/__init__.py +0 -0
  424. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/yokogawa/__init__.py +0 -0
  425. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/zurich_instruments/__init__.py +0 -0
  426. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/zurich_instruments/hdawg.py +0 -0
  427. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/zurich_instruments/hf2.py +0 -0
  428. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/zurich_instruments/mfli.py +0 -0
  429. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/zurich_instruments/pqsc.py +0 -0
  430. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/zurich_instruments/shfqa.py +0 -0
  431. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/zurich_instruments/shfsg.py +0 -0
  432. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/zurich_instruments/uhfli.py +0 -0
  433. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/zurich_instruments/uhfqa.py +0 -0
  434. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/interactive_widget.py +0 -0
  435. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/logger/__init__.py +0 -0
  436. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/logger/instrument_logger.py +0 -0
  437. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/logger/log_analysis.py +0 -0
  438. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/logger/logger.py +0 -0
  439. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/math_utils/__init__.py +0 -0
  440. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/metadatable/__init__.py +0 -0
  441. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/metadatable/metadatable_base.py +0 -0
  442. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/monitor/__init__.py +0 -0
  443. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/monitor/dist/__init__.py +0 -0
  444. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/monitor/dist/css/__init__.py +0 -0
  445. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/monitor/dist/css/main.0963d6b9.css +0 -0
  446. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/monitor/dist/favicon.ico +0 -0
  447. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/monitor/dist/index.html +0 -0
  448. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/monitor/dist/js/__init.py +0 -0
  449. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/monitor/dist/js/__init__.py +0 -0
  450. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/monitor/dist/js/main.b221ee88.js +0 -0
  451. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/monitor/dist/webpack-assets.json +0 -0
  452. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/__init__.py +0 -0
  453. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/cache.py +0 -0
  454. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/combined_parameter.py +0 -0
  455. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/command.py +0 -0
  456. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/delegate_parameter.py +0 -0
  457. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/function.py +0 -0
  458. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/group_parameter.py +0 -0
  459. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/grouped_parameter.py +0 -0
  460. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/named_repr.py +0 -0
  461. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/parameter_with_setpoints.py +0 -0
  462. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/permissive_range.py +0 -0
  463. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/scaled_paramter.py +0 -0
  464. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/sequence_helpers.py +0 -0
  465. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/sweep_values.py +0 -0
  466. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/val_mapping.py +0 -0
  467. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/plotting/__init__.py +0 -0
  468. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/plotting/auto_range.py +0 -0
  469. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/plotting/axis_labels.py +0 -0
  470. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/plotting/matplotlib_helpers.py +0 -0
  471. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/py.typed +0 -0
  472. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/sphinx_extensions/__init__.py +0 -0
  473. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/sphinx_extensions/parse_parameter_attr.py +0 -0
  474. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/__init__.py +0 -0
  475. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/common.py +0 -0
  476. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/conftest.py +0 -0
  477. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/dataset/__init__.py +0 -0
  478. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/dataset/conftest.py +0 -0
  479. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/dataset/dond/__init__.py +0 -0
  480. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/dataset/dond/conftest.py +0 -0
  481. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/dataset/fixtures/__init__.py +0 -0
  482. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/dataset/fixtures/data_2018_01_17/__init__.py +0 -0
  483. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/dataset/fixtures/data_2018_01_17/data_001_testsweep_15_42_57/__init__.py +0 -0
  484. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/dataset/fixtures/data_2018_01_17/data_001_testsweep_15_42_57/dac_ch1_set.dat +0 -0
  485. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/dataset/fixtures/data_2018_01_17/data_001_testsweep_15_42_57/snapshot.json +0 -0
  486. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/dataset/fixtures/data_2018_01_17/data_002_2D_test_15_43_14/__init__.py +0 -0
  487. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/dataset/fixtures/data_2018_01_17/data_002_2D_test_15_43_14/dac_ch1_set_dac_ch2_set.dat +0 -0
  488. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/dataset/fixtures/data_2018_01_17/data_002_2D_test_15_43_14/snapshot.json +0 -0
  489. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/dataset/helper_functions.py +0 -0
  490. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/dataset/measurement/__init__.py +0 -0
  491. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/dataset_generators.py +0 -0
  492. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/delegate/__init__.py +0 -0
  493. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/delegate/conftest.py +0 -0
  494. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/delegate/data/__init__.py +0 -0
  495. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/delegate/data/chip.yml +0 -0
  496. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/delegate/data/chip_typo.yml +0 -0
  497. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/driver_test_case.py +0 -0
  498. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/drivers/AlazarTech/__init__.py +0 -0
  499. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/drivers/__init__.py +0 -0
  500. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/drivers/auxiliary_files/__init__.py +0 -0
  501. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/drivers/auxiliary_files/awgSeqDataSets.xsd +0 -0
  502. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/drivers/keysight_b1500/__init__.py +0 -0
  503. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/drivers/keysight_b1500/b1500_driver_tests/__init__.py +0 -0
  504. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/drivers/keysight_b1500/b1500_driver_tests/conftest.py +0 -0
  505. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/helpers/__init__.py +0 -0
  506. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/instrument_mocks.py +0 -0
  507. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/mockers/__init__.py +0 -0
  508. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/parameter/__init__.py +0 -0
  509. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/parameter/conftest.py +0 -0
  510. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/sphinx_extension/__init__.py +0 -0
  511. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/utils/__init__.py +0 -0
  512. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/validators/__init__.py +0 -0
  513. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/validators/conftest.py +0 -0
  514. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/__init__.py +0 -0
  515. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/attribute_helpers.py +0 -0
  516. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/command.py +0 -0
  517. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/dataset/__init__.py +0 -0
  518. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/dataset/doNd.py +0 -0
  519. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/deep_update_utils.py +0 -0
  520. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/delaykeyboardinterrupt.py +0 -0
  521. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/deprecate.py +0 -0
  522. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/full_class.py +0 -0
  523. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/function_helpers.py +0 -0
  524. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/helpers.py +0 -0
  525. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/installation.py +0 -0
  526. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/installation_info.py +0 -0
  527. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/json_utils.py +0 -0
  528. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/metadata.py +0 -0
  529. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/numpy_utils.py +0 -0
  530. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/partial_utils.py +0 -0
  531. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/path_helpers.py +0 -0
  532. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/plotting.py +0 -0
  533. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/snapshot_helpers.py +0 -0
  534. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/spyder_utils.py +0 -0
  535. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/threading.py +0 -0
  536. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/threading_utils.py +0 -0
  537. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/types.py +0 -0
  538. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/validators.py +0 -0
  539. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/validators/__init__.py +0 -0
  540. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/validators/validators.py +0 -0
  541. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes.egg-info/dependency_links.txt +0 -0
  542. {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes.egg-info/top_level.txt +0 -0
  543. {qcodes-0.45.0 → qcodes-0.46.0}/tests/test_abstract_instrument.py +0 -0
  544. {qcodes-0.45.0 → qcodes-0.46.0}/tests/test_autoloadable_channels.py +0 -0
  545. {qcodes-0.45.0 → qcodes-0.46.0}/tests/test_channels.py +0 -0
  546. {qcodes-0.45.0 → qcodes-0.46.0}/tests/test_command.py +0 -0
  547. {qcodes-0.45.0 → qcodes-0.46.0}/tests/test_config.py +0 -0
  548. {qcodes-0.45.0 → qcodes-0.46.0}/tests/test_deprecate.py +0 -0
  549. {qcodes-0.45.0 → qcodes-0.46.0}/tests/test_field_vector.py +0 -0
  550. {qcodes-0.45.0 → qcodes-0.46.0}/tests/test_installation_info.py +0 -0
  551. {qcodes-0.45.0 → qcodes-0.46.0}/tests/test_interactive_widget.py +0 -0
  552. {qcodes-0.45.0 → qcodes-0.46.0}/tests/test_logger.py +0 -0
  553. {qcodes-0.45.0 → qcodes-0.46.0}/tests/test_metadata.py +0 -0
  554. {qcodes-0.45.0 → qcodes-0.46.0}/tests/test_monitor.py +0 -0
  555. {qcodes-0.45.0 → qcodes-0.46.0}/tests/test_plot_utils.py +0 -0
  556. {qcodes-0.45.0 → qcodes-0.46.0}/tests/test_snapshot.py +0 -0
  557. {qcodes-0.45.0 → qcodes-0.46.0}/tests/test_sweep_values.py +0 -0
  558. {qcodes-0.45.0 → qcodes-0.46.0}/tests/test_testutils.py +0 -0
  559. {qcodes-0.45.0 → qcodes-0.46.0}/tests/test_threading.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: qcodes
3
- Version: 0.45.0
3
+ Version: 0.46.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: MIT
@@ -78,6 +78,7 @@ Requires-Dist: types-tqdm>=4.64.6; extra == "test"
78
78
  Requires-Dist: types_pywin32>=305.0.0.7; extra == "test"
79
79
  Requires-Dist: qcodes_loop>=0.1.1; extra == "test"
80
80
  Requires-Dist: zhinst.qcodes>=0.5; extra == "test"
81
+ Requires-Dist: libcst>=1.2.0; extra == "test"
81
82
  Requires-Dist: jinja2>=3.1.3; extra == "test"
82
83
  Provides-Extra: docs
83
84
  Requires-Dist: autodocsumm>=0.2.9; extra == "docs"
@@ -96,6 +97,8 @@ Requires-Dist: jinja2>=3.1.3; extra == "docs"
96
97
  Provides-Extra: opencensus
97
98
  Requires-Dist: opencensus>=0.7.10; extra == "opencensus"
98
99
  Requires-Dist: opencensus-ext-azure<2.0.0,>=1.0.4; extra == "opencensus"
100
+ Provides-Extra: refactor
101
+ Requires-Dist: libcst>=1.2.0; extra == "refactor"
99
102
 
100
103
  QCoDeS |PyPi| |DOCS| |PyPI python versions| |DOI|
101
104
  =================================================
@@ -98,6 +98,7 @@ test = [
98
98
  "types_pywin32>=305.0.0.7",
99
99
  "qcodes_loop>=0.1.1",
100
100
  "zhinst.qcodes>=0.5", # typecheck zhinst driver alias
101
+ "libcst>=1.2.0", # refactor tests
101
102
  "jinja2>=3.1.3", # transitive dependency pin due to cve in earlier version
102
103
  ]
103
104
  docs = [
@@ -119,9 +120,13 @@ opencensus = [
119
120
  "opencensus>=0.7.10",
120
121
  "opencensus-ext-azure>=1.0.4, <2.0.0",
121
122
  ]
123
+ refactor = [
124
+ "libcst>=1.2.0"
125
+ ]
122
126
 
123
127
  [project.scripts]
124
128
  qcodes-monitor = "qcodes.monitor.monitor:main"
129
+ qcodes-refactor = "qcodes.extensions._refactor:main"
125
130
  qcodes-dynacool-server = "qcodes.instrument_drivers.QuantumDesign.DynaCoolPPMS.private.server:run_server"
126
131
 
127
132
  [project.entry-points."qcodes.dataset.on_export"]
@@ -203,7 +208,7 @@ module = [
203
208
  ignore_missing_imports = true
204
209
 
205
210
  [tool.pyright]
206
- include = ["src"]
211
+ include = ["src","tests"]
207
212
  ignore = [
208
213
  "src/qcodes/instrument_drivers/Harvard/Decadac.py",
209
214
  ]
@@ -223,7 +228,9 @@ markers = "serial"
223
228
 
224
229
  # we ignore warnings
225
230
  # triggered by third party packages
231
+ # and error on all other warnings
226
232
  filterwarnings = [
233
+ 'error',
227
234
  'ignore:Deprecated call to `pkg_resources\.declare_namespace:DeprecationWarning', # google, sphinxcontrib
228
235
  'ignore:pkg_resources is deprecated as an API:DeprecationWarning', # pyvisa-sim
229
236
  'ignore:open_binary is deprecated:DeprecationWarning', # pyvisa-sim
@@ -14,4 +14,4 @@ def _get_version() -> str:
14
14
  return "0.0"
15
15
 
16
16
 
17
- __version__ = "0.45.0"
17
+ __version__ = "0.46.0"
@@ -120,14 +120,26 @@ def _register_actions(
120
120
 
121
121
 
122
122
  @contextmanager
123
- def catch_interrupts() -> Iterator[Callable[[], MeasInterruptT]]:
124
- interrupt_exception = None
123
+ def catch_interrupts() -> Iterator[Callable[[], MeasInterruptT | None]]:
124
+ interrupt_exception: MeasInterruptT | None = None
125
+ interrupt_raised = False
125
126
 
126
- def get_interrupt_exception() -> MeasInterruptT:
127
+ def get_interrupt_exception() -> MeasInterruptT | None:
127
128
  nonlocal interrupt_exception
128
129
  return interrupt_exception
129
130
 
130
131
  try:
131
132
  yield get_interrupt_exception
132
- except (KeyboardInterrupt, BreakConditionInterrupt) as e:
133
+ except KeyboardInterrupt as e:
133
134
  interrupt_exception = e
135
+ interrupt_raised = True
136
+ raise # Re-raise KeyboardInterrupt
137
+ except BreakConditionInterrupt as e:
138
+ interrupt_exception = e
139
+ interrupt_raised = True
140
+ # Don't re-raise BreakConditionInterrupt
141
+ finally:
142
+ if interrupt_raised:
143
+ log.warning(
144
+ f"Measurement has been interrupted, data may be incomplete: {interrupt_exception}"
145
+ )
@@ -932,6 +932,12 @@ class Measurement:
932
932
  f"{ParamSpec.allowed_types} are supported."
933
933
  )
934
934
 
935
+ if setpoints is not None:
936
+ self._check_setpoints_type(setpoints, "setpoints")
937
+
938
+ if basis is not None:
939
+ self._check_setpoints_type(basis, "basis")
940
+
935
941
  if isinstance(parameter, ArrayParameter):
936
942
  self._register_arrayparameter(parameter, setpoints, basis, paramtype)
937
943
  elif isinstance(parameter, ParameterWithSetpoints):
@@ -970,6 +976,18 @@ class Measurement:
970
976
 
971
977
  return self
972
978
 
979
+ @staticmethod
980
+ def _check_setpoints_type(arg: setpoints_type, name: str) -> None:
981
+ if (
982
+ not isinstance(arg, Sequence)
983
+ or isinstance(arg, str)
984
+ or any(not isinstance(a, (str, ParameterBase)) for a in arg)
985
+ ):
986
+ raise TypeError(
987
+ f"{name} should be a sequence of str or ParameterBase, not "
988
+ f"{type(arg)}"
989
+ )
990
+
973
991
  @staticmethod
974
992
  def _infer_paramtype(parameter: ParameterBase, paramtype: str | None) -> str | None:
975
993
  """
@@ -2,6 +2,7 @@
2
2
  This plotting module provides various functions to plot the data measured
3
3
  using QCoDeS.
4
4
  """
5
+
5
6
  from __future__ import annotations
6
7
 
7
8
  import inspect
@@ -236,7 +237,6 @@ def plot_dataset(
236
237
  new_colorbars: list[Colorbar | None] = []
237
238
 
238
239
  for data, ax, colorbar in zip(alldata, axeslist, colorbars):
239
-
240
240
  if len(data) == 2: # 1D PLOTTING
241
241
  log.debug(f"Doing a 1D plot with kwargs: {kwargs}")
242
242
 
@@ -330,7 +330,11 @@ def plot_dataset(
330
330
 
331
331
  def plot_and_save_image(
332
332
  data: DataSetProtocol, save_pdf: bool = True, save_png: bool = True
333
- ) -> tuple[DataSetProtocol, tuple[Axes, ...], tuple[Colorbar | None, ...],]:
333
+ ) -> tuple[
334
+ DataSetProtocol,
335
+ tuple[Axes, ...],
336
+ tuple[Colorbar | None, ...],
337
+ ]:
334
338
  """
335
339
  The utility function to plot results and save the figures either in pdf or
336
340
  png or both formats.
@@ -578,7 +582,6 @@ def plot_2d_scatterplot(
578
582
  The matplotlib axis handles for plot and colorbar
579
583
  """
580
584
  import matplotlib
581
- import matplotlib.cm
582
585
 
583
586
  if "rasterized" in kwargs.keys():
584
587
  rasterized = kwargs.pop("rasterized")
@@ -597,7 +600,7 @@ def plot_2d_scatterplot(
597
600
 
598
601
  if z_is_stringy:
599
602
  name = getattr(cmap, "name", _DEFAULT_COLORMAP)
600
- cmap = matplotlib.cm.get_cmap(name, len(z_strings))
603
+ cmap = matplotlib.colormaps.get_cmap(name).resampled(len(z_strings))
601
604
 
602
605
  # according to the docs the c argument should support an ndarray
603
606
  # but that fails type checking
@@ -649,7 +652,6 @@ def plot_on_a_plain_grid(
649
652
  The matplotlib axes handle for plot and colorbar
650
653
  """
651
654
  import matplotlib
652
- import matplotlib.cm
653
655
 
654
656
  log.debug(f"Got kwargs: {kwargs}")
655
657
 
@@ -698,7 +700,7 @@ def plot_on_a_plain_grid(
698
700
 
699
701
  if z_is_stringy:
700
702
  name = getattr(cmap, "name", _DEFAULT_COLORMAP)
701
- cmap = matplotlib.cm.get_cmap(name, len(z_strings))
703
+ cmap = matplotlib.colormaps.get_cmap(name).resampled(len(z_strings))
702
704
 
703
705
  colormesh = ax.pcolormesh(
704
706
  x_to_plot,
@@ -0,0 +1,227 @@
1
+ from __future__ import annotations
2
+
3
+ import argparse
4
+ import os
5
+ from dataclasses import dataclass
6
+ from glob import glob
7
+ from pathlib import Path
8
+ from textwrap import dedent
9
+ from typing import Union, cast
10
+
11
+ try:
12
+ import libcst as cst
13
+ from libcst import matchers as m
14
+ from libcst.codemod import CodemodContext, VisitorBasedCodemodCommand
15
+ except ImportError as er:
16
+ raise ImportError(
17
+ "qcodes-refactor requires that QCoDeS is installed with refactor extra dependencies."
18
+ ) from er
19
+
20
+
21
+ @dataclass
22
+ class Extracted:
23
+ name: str | None = None
24
+ docstring: str | None = None
25
+ parameter_class: str | None = None
26
+
27
+
28
+ class AddParameterTransformer(VisitorBasedCodemodCommand):
29
+ """
30
+ This is a tool that will transform `self.add_parameter("name", ...)`
31
+ into the form `self.name: Parameter = self.add_parameter("name", ...)`
32
+ as well as as add a docstring either by extracting the docstring arg
33
+ from add_parameter or by generating a generic docstring.
34
+ This enabled parameters to be typechecked and documented
35
+ """
36
+
37
+ def __init__(self, context: CodemodContext) -> None:
38
+ self.annotations: Extracted = Extracted()
39
+ self._arg_num: dict[str, int] = {}
40
+ self._call_stack: list[str] = []
41
+ super().__init__(context=context)
42
+
43
+ def visit_Call(self, node: cst.Call) -> None:
44
+ call_name = _get_call_name(node)
45
+ if call_name is not None:
46
+ self._call_stack.append(call_name)
47
+ self._arg_num[call_name] = 0
48
+
49
+ def visit_Arg(self, node: cst.Arg) -> None:
50
+ if len(self._call_stack) == 0:
51
+ return
52
+ self._arg_num[self._call_stack[-1]] += 1
53
+ if self._call_stack[-1] != "self.add_parameter":
54
+ return
55
+
56
+ first_positional_arg_is_str = self._arg_num[
57
+ self._call_stack[-1]
58
+ ] == 1 and m.matches(
59
+ node,
60
+ matcher=m.Arg(value=m.SimpleString(), keyword=None),
61
+ )
62
+ arg_is_name = m.matches(
63
+ node, m.Arg(keyword=m.Name(value="name"), value=m.SimpleString())
64
+ )
65
+
66
+ arg_is_docstring = m.matches(
67
+ node,
68
+ matcher=m.Arg(
69
+ keyword=m.Name(value="docstring"),
70
+ value=m.OneOf(m.SimpleString(), m.ConcatenatedString()),
71
+ ),
72
+ )
73
+
74
+ arg_is_docstring_dedent = m.matches(
75
+ node,
76
+ m.Arg(
77
+ keyword=m.Name(value="docstring"),
78
+ value=m.Call(args=[m.Arg(m.SimpleString())]),
79
+ ),
80
+ )
81
+
82
+ arg_is_parameter_class = m.matches(
83
+ node,
84
+ matcher=m.Arg(keyword=m.Name(value="parameter_class"), value=m.Name()),
85
+ )
86
+
87
+ second_positional_arg_is_str = self._arg_num[
88
+ self._call_stack[-1]
89
+ ] == 2 and m.matches(
90
+ node,
91
+ matcher=m.Arg(value=m.Name(), keyword=None),
92
+ )
93
+
94
+ if first_positional_arg_is_str or arg_is_name:
95
+ self.annotations.name = cst.ensure_type(
96
+ node.value, cst.SimpleString
97
+ ).raw_value
98
+
99
+ if arg_is_docstring:
100
+ self.annotations.docstring = str(
101
+ cast(
102
+ Union[cst.SimpleString, cst.ConcatenatedString], node.value
103
+ ).evaluated_value
104
+ )
105
+ if arg_is_docstring_dedent:
106
+ self.annotations.docstring = dedent(
107
+ str(
108
+ cst.ensure_type(
109
+ cst.ensure_type(node.value, cst.Call).args[0].value,
110
+ cst.SimpleString,
111
+ ).evaluated_value
112
+ )
113
+ ).strip()
114
+
115
+ if arg_is_parameter_class or second_positional_arg_is_str:
116
+ self.annotations.parameter_class = cst.ensure_type(
117
+ node.value, cst.Name
118
+ ).value
119
+
120
+ def leave_Call(self, original_node: cst.Call, updated_node: cst.Call) -> cst.Call:
121
+ call_name = _get_call_name(updated_node)
122
+ if call_name is not None:
123
+ self._call_stack.pop()
124
+ return updated_node
125
+
126
+ def leave_SimpleStatementLine(
127
+ self,
128
+ original_node: cst.SimpleStatementLine,
129
+ updated_node: cst.SimpleStatementLine,
130
+ ) -> cst.FlattenSentinel | cst.SimpleStatementLine:
131
+ annotations = self.annotations
132
+ self.annotations = Extracted()
133
+
134
+ if not m.matches(
135
+ updated_node.body[0],
136
+ m.Expr(value=m.Call(func=m.Attribute(attr=m.Name("add_parameter")))),
137
+ ):
138
+ return updated_node
139
+
140
+ call_node = cst.ensure_type(
141
+ cst.ensure_type(updated_node.body[0], cst.Expr).value, cst.Call
142
+ )
143
+
144
+ if annotations.name is None:
145
+ return updated_node
146
+
147
+ if annotations.parameter_class is not None:
148
+ parameter_class = annotations.parameter_class
149
+ else:
150
+ parameter_class = "Parameter"
151
+
152
+ if annotations.docstring is not None:
153
+ comment = cst.parse_module(f'"""{annotations.docstring}"""')
154
+ else:
155
+ comment = cst.parse_module(f'"""Parameter {annotations.name}"""')
156
+
157
+ stm = cst.parse_statement(
158
+ source=f"self.{annotations.name}: {parameter_class} = x"
159
+ )
160
+
161
+ if isinstance(stm.body, cst.BaseSuite) or isinstance(
162
+ comment.body, cst.BaseSuite
163
+ ):
164
+ raise RuntimeError("Unexpected result from parsing code.")
165
+
166
+ new_node = stm.body[0]
167
+ new_node = new_node.with_changes(value=call_node)
168
+
169
+ return cst.FlattenSentinel(
170
+ [updated_node.with_changes(body=[new_node]), comment.body[0]]
171
+ )
172
+
173
+
174
+ def transform_files_in_folder(folder_path: Path) -> None:
175
+ transformer = AddParameterTransformer(CodemodContext())
176
+ files = glob(f"{folder_path}/**/*.py", recursive=True)
177
+ for filename in files:
178
+ if filename.endswith(".py"):
179
+ try:
180
+ file_name: str = os.path.join(folder_path, filename)
181
+ with open(file_name, encoding="utf-8") as file:
182
+ source_code = file.read()
183
+ source_tree = cst.parse_module(source_code)
184
+ modified_tree = source_tree.visit(transformer)
185
+ if source_tree.code != modified_tree.code:
186
+ with open(file_name, "w", encoding="utf-8") as file:
187
+ print(f"Modified {file_name}")
188
+ file.write(modified_tree.code)
189
+ except Exception as ex:
190
+ print(f"could not parse {filename}. Got {ex}")
191
+
192
+
193
+ def main() -> None:
194
+ parser = argparse.ArgumentParser(
195
+ prog="QCoDeS refactor tool",
196
+ description="Perform refactors related to QCoDeS.",
197
+ )
198
+ choices = ["parameter_refactor"]
199
+
200
+ parser.add_argument("tool", choices=choices, help="Refactor tool to run.")
201
+ parser.add_argument(
202
+ "path", help="Path to folder where the transform should be run."
203
+ )
204
+
205
+ args = parser.parse_args()
206
+
207
+ if args.tool == choices[0]:
208
+ path = Path(args.path).absolute()
209
+ transform_files_in_folder(folder_path=path)
210
+
211
+
212
+ def _get_call_name(node: cst.Call) -> str | None:
213
+ if m.matches(node.func, m.Attribute(value=m.Name(), attr=m.Name())):
214
+ my_class = cst.ensure_type(
215
+ cst.ensure_type(node.func, cst.Attribute).value, cst.Name
216
+ ).value
217
+ my_attr = cst.ensure_type(
218
+ cst.ensure_type(node.func, cst.Attribute).attr, cst.Name
219
+ ).value
220
+
221
+ func_name = f"{my_class}.{my_attr}"
222
+ elif m.matches(node.func, m.Name()):
223
+ func_name = cst.ensure_type(node.func, cst.Name).value
224
+ else:
225
+ return None
226
+
227
+ return func_name
@@ -17,9 +17,9 @@ from qcodes.parameters import ( # noqa: F401
17
17
 
18
18
  from .channel import ChannelList, ChannelTuple, InstrumentChannel, InstrumentModule
19
19
  from .instrument import Instrument, find_or_create_instrument
20
- from .instrument_base import InstrumentBase
20
+ from .instrument_base import InstrumentBase, InstrumentBaseKWArgs
21
21
  from .ip import IPInstrument
22
- from .visa import VisaInstrument
22
+ from .visa import VisaInstrument, VisaInstrumentKWArgs
23
23
 
24
24
  __all__ = [
25
25
  "ChannelList",
@@ -27,8 +27,10 @@ __all__ = [
27
27
  "IPInstrument",
28
28
  "Instrument",
29
29
  "InstrumentBase",
30
+ "InstrumentBaseKWArgs",
30
31
  "InstrumentChannel",
31
32
  "InstrumentModule",
32
33
  "VisaInstrument",
34
+ "VisaInstrumentKWArgs",
33
35
  "find_or_create_instrument",
34
36
  ]
@@ -19,7 +19,10 @@ from qcodes.validators import Validator
19
19
  from .instrument_base import InstrumentBase
20
20
 
21
21
  if TYPE_CHECKING:
22
+ from typing_extensions import Unpack
23
+
22
24
  from .instrument import Instrument
25
+ from .instrument_base import InstrumentBaseKWArgs
23
26
 
24
27
 
25
28
  class InstrumentModule(InstrumentBase):
@@ -33,15 +36,14 @@ class InstrumentModule(InstrumentBase):
33
36
  Args:
34
37
  parent: The instrument to which this module should be
35
38
  attached.
36
-
37
39
  name: The name of this module.
40
+ **kwargs: Forwarded to the base class.
38
41
 
39
42
  """
40
43
 
41
- def __init__(self,
42
- parent: InstrumentBase,
43
- name: str,
44
- **kwargs: Any) -> None:
44
+ def __init__(
45
+ self, parent: InstrumentBase, name: str, **kwargs: Unpack[InstrumentBaseKWArgs]
46
+ ) -> None:
45
47
  # need to specify parent before `super().__init__` so that the right
46
48
  # `full_name` is available in that scope. `full_name` is used for
47
49
  # registering the filter for the log messages. It is composed by
@@ -9,15 +9,14 @@ from typing import TYPE_CHECKING, Any, Protocol, TypeVar, overload
9
9
  from qcodes.utils import strip_attrs
10
10
  from qcodes.validators import Anything
11
11
 
12
- from .instrument_base import InstrumentBase
12
+ from .instrument_base import InstrumentBase, InstrumentBaseKWArgs
13
13
  from .instrument_meta import InstrumentMeta
14
14
 
15
15
  if TYPE_CHECKING:
16
- from collections.abc import Mapping
16
+ from typing_extensions import Unpack
17
17
 
18
18
  from qcodes.logger.instrument_logger import InstrumentLoggerAdapter
19
19
 
20
-
21
20
  log = logging.getLogger(__name__)
22
21
 
23
22
 
@@ -35,9 +34,19 @@ class InstrumentProtocol(Protocol):
35
34
 
36
35
  T = TypeVar("T", bound="Instrument")
37
36
 
37
+ # a metaclass that overrides __call__ means that we lose
38
+ # both the args and return type hints.
39
+ # Since our metaclass does not modify the signature
40
+ # is is safe simply not to use that metaclass in typechecking context.
41
+ # See https://github.com/microsoft/pyright/discussions/5561 and
42
+ # https://github.com/microsoft/pyright/issues/5488
43
+ if TYPE_CHECKING:
44
+ instrument_meta_class = type
45
+ else:
46
+ instrument_meta_class = InstrumentMeta
38
47
 
39
- class Instrument(InstrumentBase, metaclass=InstrumentMeta):
40
48
 
49
+ class Instrument(InstrumentBase, metaclass=instrument_meta_class):
41
50
  """
42
51
  Base class for all QCodes instruments.
43
52
 
@@ -56,16 +65,11 @@ class Instrument(InstrumentBase, metaclass=InstrumentMeta):
56
65
  _type: type[Instrument] | None = None
57
66
  _instances: weakref.WeakSet[Instrument] = weakref.WeakSet()
58
67
 
59
- def __init__(
60
- self,
61
- name: str,
62
- metadata: Mapping[Any, Any] | None = None,
63
- label: str | None = None,
64
- ) -> None:
68
+ def __init__(self, name: str, **kwargs: Unpack[InstrumentBaseKWArgs]) -> None:
65
69
 
66
70
  self._t0 = time.time()
67
71
 
68
- super().__init__(name=name, metadata=metadata, label=label)
72
+ super().__init__(name=name, **kwargs)
69
73
 
70
74
  self.add_parameter("IDN", get_cmd=self.get_idn, vals=Anything())
71
75
 
@@ -4,9 +4,11 @@ from __future__ import annotations
4
4
  import collections.abc
5
5
  import logging
6
6
  import warnings
7
- from typing import TYPE_CHECKING, Any, ClassVar
7
+ from collections.abc import Callable, Mapping, Sequence
8
+ from typing import TYPE_CHECKING, Any, ClassVar, cast
8
9
 
9
10
  import numpy as np
11
+ from typing_extensions import TypedDict, TypeVar, deprecated
10
12
 
11
13
  from qcodes.logger import get_instrument_logger
12
14
  from qcodes.metadatable import Metadatable, MetadatableWithName
@@ -16,6 +18,8 @@ from qcodes.utils import DelegateAttributes, full_class
16
18
  if TYPE_CHECKING:
17
19
  from collections.abc import Callable, Mapping, Sequence
18
20
 
21
+ from typing_extensions import NotRequired
22
+
19
23
  from qcodes.instrument.channel import ChannelTuple, InstrumentModule
20
24
  from qcodes.logger.instrument_logger import InstrumentLoggerAdapter
21
25
 
@@ -23,6 +27,26 @@ from qcodes.utils import QCoDeSDeprecationWarning
23
27
 
24
28
  log = logging.getLogger(__name__)
25
29
 
30
+ TParameter = TypeVar("TParameter", bound=ParameterBase, default=Parameter)
31
+
32
+
33
+ class InstrumentBaseKWArgs(TypedDict):
34
+ """
35
+ This TypedDict defines the type of the kwargs that can be passed to the InstrumentBase class.
36
+ A subclass of VisaInstrument should take ``**kwargs: Unpack[InstrumentBaseKWArgs]`` as input
37
+ and forward this to the super class to ensure that it can accept all the arguments defined here.
38
+ """
39
+
40
+ metadata: NotRequired[Mapping[Any, Any] | None]
41
+ """
42
+ Additional static metadata to add to this
43
+ instrument's JSON snapshot.
44
+ """
45
+ label: NotRequired[str | None]
46
+ """
47
+ Nicely formatted name of the instrument; if None,
48
+ the ``name`` is used.
49
+ """
26
50
 
27
51
  class InstrumentBase(MetadatableWithName, DelegateAttributes):
28
52
  """
@@ -100,9 +124,9 @@ class InstrumentBase(MetadatableWithName, DelegateAttributes):
100
124
  def add_parameter(
101
125
  self,
102
126
  name: str,
103
- parameter_class: type[ParameterBase] | None = None,
127
+ parameter_class: type[TParameter] | None = None,
104
128
  **kwargs: Any,
105
- ) -> None:
129
+ ) -> TParameter:
106
130
  """
107
131
  Bind one Parameter to this instrument.
108
132
 
@@ -132,7 +156,7 @@ class InstrumentBase(MetadatableWithName, DelegateAttributes):
132
156
  one.
133
157
  """
134
158
  if parameter_class is None:
135
- parameter_class = Parameter
159
+ parameter_class = cast(type[TParameter], Parameter)
136
160
 
137
161
  if "bind_to_instrument" not in kwargs.keys():
138
162
  kwargs["bind_to_instrument"] = True
@@ -160,6 +184,30 @@ class InstrumentBase(MetadatableWithName, DelegateAttributes):
160
184
  QCoDeSDeprecationWarning,
161
185
  )
162
186
  self.parameters[name] = param
187
+ return param
188
+
189
+ def remove_parameter(self, name: str) -> None:
190
+ """
191
+ Remove a Parameter from this instrument.
192
+
193
+ Unlike modifying the parameters dict directly, this method will
194
+ make sure that the parameter is properly unbound from the instrument
195
+ if the parameter is added as a real attribute to the instrument.
196
+ If a property of the same name exists it will not be modified.
197
+ If name is an attribute but not a parameter, it will not be modified.
198
+
199
+ Args:
200
+ name: The name of the parameter to remove.
201
+
202
+ Raises:
203
+ KeyError: If the parameter does not exist on the instrument.
204
+ """
205
+ self.parameters.pop(name)
206
+
207
+ is_property = isinstance(getattr(self.__class__, name, None), property)
208
+
209
+ if not is_property and hasattr(self, name):
210
+ delattr(self, name)
163
211
 
164
212
  def add_function(self, name: str, **kwargs: Any) -> None:
165
213
  """
@@ -534,6 +582,10 @@ class InstrumentBase(MetadatableWithName, DelegateAttributes):
534
582
  return self.full_name
535
583
 
536
584
  @property
585
+ @deprecated(
586
+ "The private attribute `_name` is deprecated and will be removed. Use `full_name` instead.",
587
+ category=QCoDeSDeprecationWarning,
588
+ )
537
589
  def _name(self) -> str:
538
590
  """
539
591
  Private alias kept here for backwards compatibility