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.
- {qcodes-0.45.0/src/qcodes.egg-info → qcodes-0.46.0}/PKG-INFO +4 -1
- {qcodes-0.45.0 → qcodes-0.46.0}/pyproject.toml +8 -1
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/_version.py +1 -1
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/dond/do_nd_utils.py +16 -4
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/measurements.py +18 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/plotting.py +8 -6
- qcodes-0.46.0/src/qcodes/extensions/_refactor.py +227 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/__init__.py +4 -2
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/channel.py +7 -5
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/instrument.py +15 -11
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/instrument_base.py +56 -4
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/ip.py +7 -11
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/visa.py +62 -7
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/AimTTi/_AimTTi_PL_P.py +43 -15
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/AimTTi/__init__.py +2 -1
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/AlazarTech/ATS.py +30 -11
- qcodes-0.46.0/src/qcodes/instrument_drivers/AlazarTech/ATS9360.py +472 -0
- qcodes-0.46.0/src/qcodes/instrument_drivers/AlazarTech/ATS9373.py +487 -0
- qcodes-0.46.0/src/qcodes/instrument_drivers/AlazarTech/ATS9440.py +391 -0
- qcodes-0.46.0/src/qcodes/instrument_drivers/AlazarTech/ATS9870.py +394 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/AlazarTech/ATS_acquisition_controllers.py +8 -2
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/AlazarTech/__init__.py +3 -1
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/AlazarTech/utils.py +2 -2
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Galil/dmc_41x3.py +50 -20
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/HP/HP_8133A.py +35 -13
- qcodes-0.46.0/src/qcodes/instrument_drivers/HP/HP_83650A.py +173 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/HP/HP_8753D.py +43 -16
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Harvard/Decadac.py +108 -53
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keithley/Keithley_2000.py +49 -19
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keithley/Keithley_2400.py +41 -17
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keithley/Keithley_2450.py +75 -36
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keithley/Keithley_3706A.py +33 -10
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keithley/Keithley_6500.py +44 -20
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keithley/Keithley_7510.py +123 -66
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keithley/Keithley_s46.py +20 -6
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keithley/_Keithley_2600.py +71 -30
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keithley/__init__.py +8 -2
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/Infiniium.py +34 -10
- qcodes-0.46.0/src/qcodes/instrument_drivers/Keysight/KeysightAgilent_33XXX.py +433 -0
- qcodes-0.46.0/src/qcodes/instrument_drivers/Keysight/Keysight_33210a.py +7 -0
- qcodes-0.46.0/src/qcodes/instrument_drivers/Keysight/Keysight_33250a.py +7 -0
- qcodes-0.46.0/src/qcodes/instrument_drivers/Keysight/Keysight_33510b.py +7 -0
- qcodes-0.46.0/src/qcodes/instrument_drivers/Keysight/Keysight_33511b.py +7 -0
- qcodes-0.46.0/src/qcodes/instrument_drivers/Keysight/Keysight_33512b.py +7 -0
- qcodes-0.46.0/src/qcodes/instrument_drivers/Keysight/Keysight_33522b.py +7 -0
- qcodes-0.46.0/src/qcodes/instrument_drivers/Keysight/Keysight_33622a.py +7 -0
- qcodes-0.46.0/src/qcodes/instrument_drivers/Keysight/Keysight_34410A_submodules.py +34 -0
- qcodes-0.46.0/src/qcodes/instrument_drivers/Keysight/Keysight_34411A_submodules.py +34 -0
- qcodes-0.46.0/src/qcodes/instrument_drivers/Keysight/Keysight_34460A_submodules.py +34 -0
- qcodes-0.46.0/src/qcodes/instrument_drivers/Keysight/Keysight_34461A_submodules.py +34 -0
- qcodes-0.46.0/src/qcodes/instrument_drivers/Keysight/Keysight_34465A_submodules.py +34 -0
- qcodes-0.46.0/src/qcodes/instrument_drivers/Keysight/Keysight_34470A_submodules.py +34 -0
- qcodes-0.46.0/src/qcodes/instrument_drivers/Keysight/Keysight_B2962A.py +173 -0
- qcodes-0.46.0/src/qcodes/instrument_drivers/Keysight/Keysight_N5183B.py +22 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/Keysight_N5222B.py +10 -3
- qcodes-0.46.0/src/qcodes/instrument_drivers/Keysight/Keysight_N5230C.py +24 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/Keysight_N5245A.py +10 -3
- qcodes-0.46.0/src/qcodes/instrument_drivers/Keysight/Keysight_N6705B.py +133 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/Keysight_N9030B.py +141 -36
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/Keysight_P9374A.py +10 -3
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/KtM960x.py +76 -65
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/KtMAwg.py +42 -23
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/N51x1.py +55 -25
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/N52xx.py +298 -203
- qcodes-0.46.0/src/qcodes/instrument_drivers/Keysight/_Keysight_N5232B.py +24 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/__init__.py +25 -3
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/keysight_34934a.py +33 -16
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/keysight_34980a.py +20 -12
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/keysight_34980a_submodules.py +41 -14
- qcodes-0.46.0/src/qcodes/instrument_drivers/Keysight/keysight_b220x.py +442 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/keysight_e4980a.py +76 -53
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/keysightb1500/KeysightB1500_base.py +61 -25
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/keysightb1500/KeysightB1500_module.py +11 -5
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/keysightb1500/KeysightB1500_sampling_measurement.py +2 -2
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/keysightb1500/KeysightB1517A.py +363 -147
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/keysightb1500/KeysightB1520A.py +453 -187
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/keysightb1500/KeysightB1530A.py +7 -4
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/keysightb1500/message_builder.py +1 -1
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/private/Keysight_344xxA_submodules.py +628 -286
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Lakeshore/Lakeshore_model_325.py +103 -45
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Lakeshore/Lakeshore_model_336.py +60 -17
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Lakeshore/Lakeshore_model_372.py +72 -24
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Lakeshore/Model_325.py +17 -5
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Lakeshore/Model_336.py +14 -3
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Lakeshore/Model_372.py +11 -4
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Lakeshore/__init__.py +8 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Lakeshore/_lakeshore_model_335.py +52 -14
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Lakeshore/lakeshore_base.py +295 -197
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Minicircuits/Base_SPDT.py +51 -8
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Minicircuits/USBHIDMixin.py +166 -30
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Minicircuits/__init__.py +10 -1
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Minicircuits/_minicircuits_rc_sp4t.py +32 -7
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Minicircuits/_minicircuits_rc_spdt.py +31 -7
- qcodes-0.46.0/src/qcodes/instrument_drivers/Minicircuits/_minicircuits_rudat_13g_90.py +76 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Minicircuits/_minicircuits_usb_spdt.py +21 -17
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/QDev/QDac_channels.py +113 -74
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/QuantumDesign/DynaCoolPPMS/DynaCool.py +198 -144
- qcodes-0.46.0/src/qcodes/instrument_drivers/agilent/Agilent_34401A.py +34 -0
- qcodes-0.46.0/src/qcodes/instrument_drivers/agilent/Agilent_34410A.py +42 -0
- qcodes-0.46.0/src/qcodes/instrument_drivers/agilent/Agilent_34411A.py +42 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/agilent/Agilent_E8257D.py +17 -10
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/agilent/Agilent_E8267C.py +34 -13
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/agilent/_Agilent_344xxA.py +34 -37
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/agilent/__init__.py +2 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/american_magnetics/AMI430.py +275 -241
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/american_magnetics/AMI430_visa.py +133 -68
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/basel/BaselSP983.py +16 -6
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/basel/BaselSP983a.py +19 -10
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/cryomagnetics/_cryomagnetics4g.py +26 -12
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/ithaco/Ithaco_1211.py +60 -39
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/mock_instruments/__init__.py +75 -24
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/oxford/MercuryiPS_VISA.py +158 -99
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/oxford/triton.py +51 -24
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rigol/Rigol_DG1062.py +71 -24
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rigol/Rigol_DG4000.py +43 -17
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rigol/Rigol_DP821.py +11 -4
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rigol/Rigol_DP831.py +11 -4
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rigol/Rigol_DP832.py +11 -4
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rigol/Rigol_DS1074Z.py +54 -24
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rigol/Rigol_DS4000.py +50 -17
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rigol/__init__.py +2 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rigol/private/DP8xx.py +42 -19
- qcodes-0.46.0/src/qcodes/instrument_drivers/rohde_schwarz/RTO1000.py +982 -0
- qcodes-0.46.0/src/qcodes/instrument_drivers/rohde_schwarz/Rohde_Schwarz_ZNB20.py +10 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rohde_schwarz/Rohde_Schwarz_ZNB8.py +2 -2
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rohde_schwarz/SGS100A.py +71 -33
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rohde_schwarz/ZNB.py +111 -38
- qcodes-0.46.0/src/qcodes/instrument_drivers/rohde_schwarz/ZNB20.py +5 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rohde_schwarz/__init__.py +2 -1
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/signal_hound/SignalHound_USB_SA124B.py +96 -29
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/stahl/stahl.py +73 -40
- qcodes-0.46.0/src/qcodes/instrument_drivers/stanford_research/SG384.py +234 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/stanford_research/SR560.py +49 -29
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/stanford_research/SR830.py +306 -223
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/stanford_research/SR860.py +12 -1
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/stanford_research/SR865.py +12 -1
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/stanford_research/SR865A.py +15 -2
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/stanford_research/SR86x.py +351 -244
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/stanford_research/__init__.py +2 -1
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/AWG5014.py +200 -120
- qcodes-0.46.0/src/qcodes/instrument_drivers/tektronix/AWG5208.py +39 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/AWG70000A.py +275 -178
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/AWG70002A.py +15 -6
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/DPO7200xx.py +212 -150
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/TPS2012.py +139 -77
- qcodes-0.46.0/src/qcodes/instrument_drivers/tektronix/Tektronix_70001A.py +33 -0
- qcodes-0.46.0/src/qcodes/instrument_drivers/tektronix/Tektronix_70001B.py +33 -0
- qcodes-0.46.0/src/qcodes/instrument_drivers/tektronix/Tektronix_70002B.py +33 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/__init__.py +2 -1
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/weinschel/Weinschel_8320.py +11 -4
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/yokogawa/GS200.py +97 -40
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/yokogawa/Yokogawa_GS200.py +97 -40
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/math_utils/field_vector.py +20 -2
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/monitor/monitor.py +3 -5
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/array_parameter.py +3 -3
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/multi_channel_instrument_parameter.py +27 -5
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/multi_parameter.py +3 -3
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/parameter.py +2 -4
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/parameter_base.py +36 -8
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/specialized_parameters.py +9 -9
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/station.py +10 -4
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/abstractmethod.py +7 -2
- {qcodes-0.45.0 → qcodes-0.46.0/src/qcodes.egg-info}/PKG-INFO +4 -1
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes.egg-info/SOURCES.txt +1 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes.egg-info/entry_points.txt +1 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes.egg-info/requires.txt +4 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/tests/test_instrument.py +22 -1
- {qcodes-0.45.0 → qcodes-0.46.0}/tests/test_station.py +2 -3
- {qcodes-0.45.0 → qcodes-0.46.0}/tests/test_visa.py +19 -8
- qcodes-0.45.0/src/qcodes/instrument_drivers/AlazarTech/ATS9360.py +0 -385
- qcodes-0.45.0/src/qcodes/instrument_drivers/AlazarTech/ATS9373.py +0 -400
- qcodes-0.45.0/src/qcodes/instrument_drivers/AlazarTech/ATS9440.py +0 -310
- qcodes-0.45.0/src/qcodes/instrument_drivers/AlazarTech/ATS9870.py +0 -317
- qcodes-0.45.0/src/qcodes/instrument_drivers/HP/HP_83650A.py +0 -139
- qcodes-0.45.0/src/qcodes/instrument_drivers/Keysight/KeysightAgilent_33XXX.py +0 -341
- qcodes-0.45.0/src/qcodes/instrument_drivers/Keysight/Keysight_33210a.py +0 -7
- qcodes-0.45.0/src/qcodes/instrument_drivers/Keysight/Keysight_33250a.py +0 -7
- qcodes-0.45.0/src/qcodes/instrument_drivers/Keysight/Keysight_33510b.py +0 -7
- qcodes-0.45.0/src/qcodes/instrument_drivers/Keysight/Keysight_33511b.py +0 -7
- qcodes-0.45.0/src/qcodes/instrument_drivers/Keysight/Keysight_33512b.py +0 -7
- qcodes-0.45.0/src/qcodes/instrument_drivers/Keysight/Keysight_33522b.py +0 -7
- qcodes-0.45.0/src/qcodes/instrument_drivers/Keysight/Keysight_33622a.py +0 -7
- qcodes-0.45.0/src/qcodes/instrument_drivers/Keysight/Keysight_34410A_submodules.py +0 -18
- qcodes-0.45.0/src/qcodes/instrument_drivers/Keysight/Keysight_34411A_submodules.py +0 -18
- qcodes-0.45.0/src/qcodes/instrument_drivers/Keysight/Keysight_34460A_submodules.py +0 -18
- qcodes-0.45.0/src/qcodes/instrument_drivers/Keysight/Keysight_34461A_submodules.py +0 -18
- qcodes-0.45.0/src/qcodes/instrument_drivers/Keysight/Keysight_34465A_submodules.py +0 -18
- qcodes-0.45.0/src/qcodes/instrument_drivers/Keysight/Keysight_34470A_submodules.py +0 -18
- qcodes-0.45.0/src/qcodes/instrument_drivers/Keysight/Keysight_B2962A.py +0 -122
- qcodes-0.45.0/src/qcodes/instrument_drivers/Keysight/Keysight_N5183B.py +0 -15
- qcodes-0.45.0/src/qcodes/instrument_drivers/Keysight/Keysight_N5230C.py +0 -17
- qcodes-0.45.0/src/qcodes/instrument_drivers/Keysight/Keysight_N6705B.py +0 -91
- qcodes-0.45.0/src/qcodes/instrument_drivers/Keysight/_Keysight_N5232B.py +0 -17
- qcodes-0.45.0/src/qcodes/instrument_drivers/Keysight/keysight_b220x.py +0 -380
- qcodes-0.45.0/src/qcodes/instrument_drivers/Minicircuits/_minicircuits_rudat_13g_90.py +0 -58
- qcodes-0.45.0/src/qcodes/instrument_drivers/agilent/Agilent_34401A.py +0 -9
- qcodes-0.45.0/src/qcodes/instrument_drivers/agilent/Agilent_34410A.py +0 -9
- qcodes-0.45.0/src/qcodes/instrument_drivers/agilent/Agilent_34411A.py +0 -9
- qcodes-0.45.0/src/qcodes/instrument_drivers/rohde_schwarz/RTO1000.py +0 -825
- qcodes-0.45.0/src/qcodes/instrument_drivers/rohde_schwarz/Rohde_Schwarz_ZNB20.py +0 -10
- qcodes-0.45.0/src/qcodes/instrument_drivers/rohde_schwarz/ZNB20.py +0 -5
- qcodes-0.45.0/src/qcodes/instrument_drivers/stanford_research/SG384.py +0 -165
- qcodes-0.45.0/src/qcodes/instrument_drivers/tektronix/AWG5208.py +0 -30
- qcodes-0.45.0/src/qcodes/instrument_drivers/tektronix/Tektronix_70001A.py +0 -24
- qcodes-0.45.0/src/qcodes/instrument_drivers/tektronix/Tektronix_70001B.py +0 -24
- qcodes-0.45.0/src/qcodes/instrument_drivers/tektronix/Tektronix_70002B.py +0 -24
- {qcodes-0.45.0 → qcodes-0.46.0}/LICENSE +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/MANIFEST.in +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/README.rst +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/setup.cfg +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/setup.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/calibrations/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/calibrations/keithley.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/configuration/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/configuration/config.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/configuration/qcodesrc.json +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/configuration/qcodesrc_schema.json +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/data_export.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/data_set.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/data_set_cache.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/data_set_in_memory.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/data_set_info.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/data_set_protocol.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/database_extract_runs.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/database_fix_functions.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/dataset_helpers.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/descriptions/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/descriptions/dependencies.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/descriptions/detect_shapes.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/descriptions/param_spec.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/descriptions/rundescriber.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/descriptions/versioning/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/descriptions/versioning/converters.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/descriptions/versioning/rundescribertypes.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/descriptions/versioning/serialization.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/descriptions/versioning/v0.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/dond/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/dond/do2d_retrace.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/dond/do_0d.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/dond/do_1d.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/dond/do_2d.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/dond/do_nd.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/dond/sweeps.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/experiment_container.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/experiment_settings.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/export_config.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/exporters/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/exporters/export_info.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/exporters/export_to_csv.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/exporters/export_to_pandas.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/exporters/export_to_xarray.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/guid_helpers.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/guids.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/json_exporter.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/legacy_import.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/linked_datasets/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/linked_datasets/links.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/measurement_extensions.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/snapshot_utils.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/sqlite/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/sqlite/connection.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/sqlite/database.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/sqlite/db_upgrades/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/sqlite/db_upgrades/upgrade_2_to_3.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/sqlite/db_upgrades/upgrade_3_to_4.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/sqlite/db_upgrades/upgrade_5_to_6.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/sqlite/db_upgrades/version.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/sqlite/initial_schema.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/sqlite/queries.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/sqlite/query_helpers.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/sqlite/settings.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/subscriber.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dataset/threading.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dist/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dist/schemas/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dist/schemas/station-template.schema.json +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dist/tests/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dist/tests/station/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/dist/tests/station/example.station.yaml +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/extensions/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/extensions/_driver_test_case.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/extensions/_log_export_info.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/extensions/infer.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/extensions/installation.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/base.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/delegate/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/delegate/delegate_channel_instrument.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/delegate/delegate_instrument.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/delegate/grouped_parameter.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/delegate/instrument_group.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/function.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/group_parameter.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/instrument_meta.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/ip_to_visa.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/mockers/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/mockers/ami430.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/mockers/simulated_ats_api.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/parameter.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/AMI430.yaml +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/AimTTi_PL601P.yaml +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/Keithley_2450.yaml +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/Keithley_2600.yaml +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/Keithley_3706A.yaml +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/Keithley_s46.yaml +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/Keysight_33xxx.yaml +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/Keysight_34465A.yaml +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/Keysight_E4980A.yaml +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/Keysight_N6705B.yaml +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/Keysight_N9030B.yaml +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/MercuryiPS.yaml +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/RSHMC804x.yaml +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/RSSGS100A.yaml +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/RTO_1000.yaml +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/Rigol_DS1074Z.yaml +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/Tektronix_AWG5014C.yaml +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/Tektronix_AWG5208.yaml +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/Tektronix_AWG70000A.yaml +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/Tektronix_DPO7200xx.yaml +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/Weinschel_8320.yaml +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/Yokogawa_GS200.yaml +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/cryo4g.yaml +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/dummy.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/dummy.yaml +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/keithley_7510.yaml +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/keysight_34980A.yaml +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/keysight_b1500.yaml +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/keysight_b220x.yaml +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/lakeshore_model335.yaml +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/lakeshore_model336.yaml +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/lakeshore_model372.yaml +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sims/stahl.yaml +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/specialized_parameters.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument/sweep_values.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/AimTTi/AimTTi_PL601P_channels.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/AimTTi/Aim_TTi_PL068_P.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/AimTTi/Aim_TTi_PL155_P.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/AimTTi/Aim_TTi_PL303QMD_P.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/AimTTi/Aim_TTi_PL303QMT_P.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/AimTTi/Aim_TTi_PL303_P.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/AimTTi/Aim_TTi_PL601_P.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/AimTTi/Aim_TTi_QL355_TP.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/AlazarTech/ats_api.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/AlazarTech/constants.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/AlazarTech/dll_wrapper.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/AlazarTech/helpers.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Galil/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/HP/HP8133A.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/HP/HP8753D.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/HP/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Harvard/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keithley/Keithley_2601B.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keithley/Keithley_2602A.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keithley/Keithley_2602B.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keithley/Keithley_2604B.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keithley/Keithley_2611B.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keithley/Keithley_2612B.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keithley/Keithley_2614B.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keithley/Keithley_2634B.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keithley/Keithley_2635B.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keithley/Keithley_2636B.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/Keysight_N5173B.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/KtM960xDefs.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/KtMAwgDefs.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/N5222B.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/N5230C.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/N5245A.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/N9030B.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/P9374A.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/keysightb1500/KeysightB1511B.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/keysightb1500/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/keysightb1500/constants.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/private/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Keysight/private/error_handling.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Minicircuits/RC_SP4T.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Minicircuits/RC_SPDT.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Minicircuits/RUDAT_13G_90.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/Minicircuits/USB_SPDT.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/QDev/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/QuantumDesign/DynaCoolPPMS/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/QuantumDesign/DynaCoolPPMS/private/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/QuantumDesign/DynaCoolPPMS/private/commandhandler.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/QuantumDesign/DynaCoolPPMS/private/server.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/QuantumDesign/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/american_magnetics/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/basel/BaselSP983c.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/basel/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/basel/sp983c.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/basel/sp983c_remote.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/cryomagnetics/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/ithaco/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/oxford/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rigol/DG1062.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rigol/DG4000.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rigol/DP821.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rigol/DP831.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rigol/DP832.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rigol/DS1074Z.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rigol/DS4000.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rigol/private/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/rohde_schwarz/RTE1000.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/signal_hound/USB_SA124B.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/signal_hound/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/stahl/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/AWGFileParser.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/Keithley_2000.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/Keithley_2400.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/Keithley_2450.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/Keithley_2600_channels.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/Keithley_3706A.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/Keithley_6500.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/Keithley_s46.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/Tektronix_DPO5000.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/Tektronix_DPO7000.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/Tektronix_DPO70000.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/Tektronix_DSA70000.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/Tektronix_MSO5000.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/Tektronix_MSO70000.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/tektronix/keithley_7510.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/weinschel/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/yokogawa/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/zurich_instruments/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/zurich_instruments/hdawg.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/zurich_instruments/hf2.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/zurich_instruments/mfli.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/zurich_instruments/pqsc.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/zurich_instruments/shfqa.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/zurich_instruments/shfsg.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/zurich_instruments/uhfli.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/instrument_drivers/zurich_instruments/uhfqa.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/interactive_widget.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/logger/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/logger/instrument_logger.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/logger/log_analysis.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/logger/logger.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/math_utils/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/metadatable/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/metadatable/metadatable_base.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/monitor/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/monitor/dist/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/monitor/dist/css/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/monitor/dist/css/main.0963d6b9.css +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/monitor/dist/favicon.ico +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/monitor/dist/index.html +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/monitor/dist/js/__init.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/monitor/dist/js/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/monitor/dist/js/main.b221ee88.js +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/monitor/dist/webpack-assets.json +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/cache.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/combined_parameter.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/command.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/delegate_parameter.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/function.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/group_parameter.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/grouped_parameter.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/named_repr.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/parameter_with_setpoints.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/permissive_range.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/scaled_paramter.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/sequence_helpers.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/sweep_values.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/parameters/val_mapping.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/plotting/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/plotting/auto_range.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/plotting/axis_labels.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/plotting/matplotlib_helpers.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/py.typed +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/sphinx_extensions/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/sphinx_extensions/parse_parameter_attr.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/common.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/conftest.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/dataset/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/dataset/conftest.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/dataset/dond/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/dataset/dond/conftest.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/dataset/fixtures/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/dataset/fixtures/data_2018_01_17/__init__.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/dataset/helper_functions.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/dataset/measurement/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/dataset_generators.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/delegate/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/delegate/conftest.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/delegate/data/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/delegate/data/chip.yml +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/delegate/data/chip_typo.yml +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/driver_test_case.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/drivers/AlazarTech/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/drivers/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/drivers/auxiliary_files/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/drivers/auxiliary_files/awgSeqDataSets.xsd +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/drivers/keysight_b1500/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/drivers/keysight_b1500/b1500_driver_tests/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/drivers/keysight_b1500/b1500_driver_tests/conftest.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/helpers/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/instrument_mocks.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/mockers/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/parameter/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/parameter/conftest.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/sphinx_extension/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/utils/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/validators/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/tests/validators/conftest.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/attribute_helpers.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/command.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/dataset/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/dataset/doNd.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/deep_update_utils.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/delaykeyboardinterrupt.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/deprecate.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/full_class.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/function_helpers.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/helpers.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/installation.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/installation_info.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/json_utils.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/metadata.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/numpy_utils.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/partial_utils.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/path_helpers.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/plotting.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/snapshot_helpers.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/spyder_utils.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/threading.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/threading_utils.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/types.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/utils/validators.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/validators/__init__.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes/validators/validators.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes.egg-info/dependency_links.txt +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/src/qcodes.egg-info/top_level.txt +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/tests/test_abstract_instrument.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/tests/test_autoloadable_channels.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/tests/test_channels.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/tests/test_command.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/tests/test_config.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/tests/test_deprecate.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/tests/test_field_vector.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/tests/test_installation_info.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/tests/test_interactive_widget.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/tests/test_logger.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/tests/test_metadata.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/tests/test_monitor.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/tests/test_plot_utils.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/tests/test_snapshot.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/tests/test_sweep_values.py +0 -0
- {qcodes-0.45.0 → qcodes-0.46.0}/tests/test_testutils.py +0 -0
- {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.
|
|
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
|
|
@@ -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
|
|
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[
|
|
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.
|
|
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.
|
|
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__(
|
|
42
|
-
|
|
43
|
-
|
|
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
|
|
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,
|
|
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
|
|
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[
|
|
127
|
+
parameter_class: type[TParameter] | None = None,
|
|
104
128
|
**kwargs: Any,
|
|
105
|
-
) ->
|
|
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
|