From 6a36571d247f14d8e2899c94dc8798eb25f41a64 Mon Sep 17 00:00:00 2001 From: "Jens H. Nielsen" Date: Fri, 30 May 2025 12:34:28 +0200 Subject: [PATCH 1/7] Ensure that lakeshore submodules are statically defined and documented --- .../Lakeshore/Lakeshore_model_336.py | 32 ++++++++++++++++--- .../Lakeshore/Lakeshore_model_372.py | 26 ++++++++++++--- .../Lakeshore/_lakeshore_model_335.py | 16 ++++++++-- .../Lakeshore/lakeshore_base.py | 6 +++- 4 files changed, 69 insertions(+), 11 deletions(-) diff --git a/src/qcodes/instrument_drivers/Lakeshore/Lakeshore_model_336.py b/src/qcodes/instrument_drivers/Lakeshore/Lakeshore_model_336.py index ea8df31b7e8e..977e04adec0f 100644 --- a/src/qcodes/instrument_drivers/Lakeshore/Lakeshore_model_336.py +++ b/src/qcodes/instrument_drivers/Lakeshore/Lakeshore_model_336.py @@ -294,7 +294,31 @@ def __init__( ) -> None: super().__init__(name, address, **kwargs) - self.output_1 = LakeshoreModel336CurrentSource(self, "output_1", 1) - self.output_2 = LakeshoreModel336CurrentSource(self, "output_2", 2) - self.output_3 = LakeshoreModel336VoltageSource(self, "output_3", 3) - self.output_4 = LakeshoreModel336VoltageSource(self, "output_4", 4) + self.output_1: LakeshoreModel336CurrentSource = self.add_submodule( + name="output_1", + submodule=LakeshoreModel336CurrentSource(self, "output_1", 1), + ) + """ + Control output 1 of Lakeshore Model 336. + """ + self.output_2: LakeshoreModel336CurrentSource = self.add_submodule( + name="output_2", + submodule=LakeshoreModel336CurrentSource(self, "output_2", 2), + ) + """ + Control output 2 of Lakeshore Model 336. + """ + self.output_3: LakeshoreModel336VoltageSource = self.add_submodule( + name="output_3", + submodule=LakeshoreModel336VoltageSource(self, "output_3", 3), + ) + """ + Control output 3 of Lakeshore Model 336. + """ + self.output_4: LakeshoreModel336VoltageSource = self.add_submodule( + name="output_4", + submodule=LakeshoreModel336VoltageSource(self, "output_4", 4), + ) + """ + Control output 4 of Lakeshore Model 336. + """ diff --git a/src/qcodes/instrument_drivers/Lakeshore/Lakeshore_model_372.py b/src/qcodes/instrument_drivers/Lakeshore/Lakeshore_model_372.py index 005c1d2b685d..46bcec7212e2 100644 --- a/src/qcodes/instrument_drivers/Lakeshore/Lakeshore_model_372.py +++ b/src/qcodes/instrument_drivers/Lakeshore/Lakeshore_model_372.py @@ -350,7 +350,25 @@ def __init__( super().__init__(name, address, **kwargs) heaters = {"sample_heater": 0, "warmup_heater": 1, "analog_heater": 2} - for heater_name, heater_index in heaters.items(): - self.add_submodule( - heater_name, LakeshoreModel372Output(self, heater_name, heater_index) - ) + + self.sample_heater: LakeshoreModel372Output = self.add_submodule( + "sample_heater", + LakeshoreModel372Output(self, "sample_heater", heaters["sample_heater"]), + ) + """ + Sample heater output channel. + """ + self.warmup_heater: LakeshoreModel372Output = self.add_submodule( + "warmup_heater", + LakeshoreModel372Output(self, "warmup_heater", heaters["warmup_heater"]), + ) + """ + Warm-up heater output channel. + """ + self.analog_heater: LakeshoreModel372Output = self.add_submodule( + "analog_heater", + LakeshoreModel372Output(self, "analog_heater", heaters["analog_heater"]), + ) + """ + Analog heater output channel. + """ diff --git a/src/qcodes/instrument_drivers/Lakeshore/_lakeshore_model_335.py b/src/qcodes/instrument_drivers/Lakeshore/_lakeshore_model_335.py index 8529cf92702d..90867211b023 100644 --- a/src/qcodes/instrument_drivers/Lakeshore/_lakeshore_model_335.py +++ b/src/qcodes/instrument_drivers/Lakeshore/_lakeshore_model_335.py @@ -206,7 +206,19 @@ def __init__( self.visa_handle.data_bits = 7 self.visa_handle.parity = pyvisa.constants.Parity(1) - self.output_1 = LakeshoreModel335CurrentSource(self, "output_1", 1) - self.output_2 = LakeshoreModel335CurrentSource(self, "output_2", 2) + self.output_1: LakeshoreModel335CurrentSource = self.add_submodule( + name="output_1", + submodule=LakeshoreModel335CurrentSource(self, "output_1", 1), + ) + """ + An InstrumentChannel for the first current source of Lakeshore Model 335. + """ + self.output_2 = self.add_submodule( + name="output_2", + submodule=LakeshoreModel335CurrentSource(self, "output_2", 2), + ) + """ + An InstrumentChannel for the second current source of Lakeshore Model 335. + """ self.connect_message() diff --git a/src/qcodes/instrument_drivers/Lakeshore/lakeshore_base.py b/src/qcodes/instrument_drivers/Lakeshore/lakeshore_base.py index cd95259971d7..8da157f99d09 100644 --- a/src/qcodes/instrument_drivers/Lakeshore/lakeshore_base.py +++ b/src/qcodes/instrument_drivers/Lakeshore/lakeshore_base.py @@ -21,6 +21,8 @@ from typing_extensions import Unpack + from qcodes.instrument.channel import ChannelTuple + class LakeshoreBaseOutput(InstrumentChannel): MODES: ClassVar[dict[str, int]] = {} @@ -742,7 +744,9 @@ def __init__( channel = self.CHANNEL_CLASS(self, channel_name, command) channels.append(channel) self.add_submodule(channel_name, channel) - self.channels = self.add_submodule("channels", channels.to_channel_tuple()) + self.channels: ChannelTuple[ChanType_co] = self.add_submodule( + "channels", channels.to_channel_tuple() + ) """A ChannelTuple of sensor channels on the Lakeshore instrument.""" # on Model335 we need to change serial port settings From 1145b0e2ddb8b80d1c09c8635e3484a2617ed727 Mon Sep 17 00:00:00 2001 From: "Jens H. Nielsen" Date: Fri, 30 May 2025 12:36:03 +0200 Subject: [PATCH 2/7] Remove deprecate aliases from qcodes.instrument_drivers.Lakeshore.lakeshore_base.py --- .../instrument_drivers/Lakeshore/Model_336.py | 8 +++---- .../instrument_drivers/Lakeshore/Model_372.py | 8 +++++-- .../Lakeshore/lakeshore_base.py | 21 +------------------ 3 files changed, 10 insertions(+), 27 deletions(-) diff --git a/src/qcodes/instrument_drivers/Lakeshore/Model_336.py b/src/qcodes/instrument_drivers/Lakeshore/Model_336.py index b2c62b522515..f08aee17a08e 100644 --- a/src/qcodes/instrument_drivers/Lakeshore/Model_336.py +++ b/src/qcodes/instrument_drivers/Lakeshore/Model_336.py @@ -8,11 +8,9 @@ import qcodes.validators as vals from qcodes.parameters import Group, GroupParameter -from .lakeshore_base import ( - BaseOutput, # pyright: ignore - BaseSensorChannel, # pyright: ignore - LakeshoreBase, -) +from .lakeshore_base import LakeshoreBase +from .lakeshore_base import LakeshoreBaseOutput as BaseOutput +from .lakeshore_base import LakeshoreBaseSensorChannel as BaseSensorChannel from .Lakeshore_model_336 import LakeshoreModel336Channel as Model_336_Channel from .Lakeshore_model_336 import ( LakeshoreModel336CurrentSource as Output_336_CurrentSource, diff --git a/src/qcodes/instrument_drivers/Lakeshore/Model_372.py b/src/qcodes/instrument_drivers/Lakeshore/Model_372.py index 55b539d0ffaa..dedfc500ecfd 100644 --- a/src/qcodes/instrument_drivers/Lakeshore/Model_372.py +++ b/src/qcodes/instrument_drivers/Lakeshore/Model_372.py @@ -7,10 +7,14 @@ import qcodes.validators as vals from qcodes.instrument_drivers.Lakeshore.lakeshore_base import ( - BaseOutput, # pyright: ignore - BaseSensorChannel, # pyright: ignore LakeshoreBase, ) +from qcodes.instrument_drivers.Lakeshore.lakeshore_base import ( + LakeshoreBaseOutput as BaseOutput, +) +from qcodes.instrument_drivers.Lakeshore.lakeshore_base import ( + LakeshoreBaseSensorChannel as BaseSensorChannel, +) from qcodes.parameters import Group, GroupParameter from .Lakeshore_model_372 import LakeshoreModel372Channel as Model_372_Channel diff --git a/src/qcodes/instrument_drivers/Lakeshore/lakeshore_base.py b/src/qcodes/instrument_drivers/Lakeshore/lakeshore_base.py index 8da157f99d09..3305230337d8 100644 --- a/src/qcodes/instrument_drivers/Lakeshore/lakeshore_base.py +++ b/src/qcodes/instrument_drivers/Lakeshore/lakeshore_base.py @@ -3,7 +3,7 @@ from typing import TYPE_CHECKING, Any, ClassVar, Generic import numpy as np -from typing_extensions import TypeVar, deprecated +from typing_extensions import TypeVar from qcodes import validators as vals from qcodes.instrument import ( @@ -14,7 +14,6 @@ VisaInstrumentKWArgs, ) from qcodes.parameters import Group, GroupParameter, Parameter -from qcodes.utils import QCoDeSDeprecationWarning if TYPE_CHECKING: from collections.abc import Sequence @@ -507,15 +506,6 @@ def wait_until_set_point_reached( time.sleep(wait_cycle_time) -@deprecated( - "Base class renamed to LakeshoreBaseOutput", - category=QCoDeSDeprecationWarning, - stacklevel=2, -) -class BaseOutput(LakeshoreBaseOutput): - pass - - class LakeshoreBaseSensorChannel(InstrumentChannel): # A dictionary of sensor statuses that assigns a string representation of # the status to a status bit weighting (e.g. {4: 'VMIX OVL'}) @@ -670,15 +660,6 @@ def _get_sum_terms(available_terms: "Sequence[int]", number: int) -> list[int]: return terms_in_number -@deprecated( - "Base class renamed to LakeshoreBaseSensorChannel", - category=QCoDeSDeprecationWarning, - stacklevel=2, -) -class BaseSensorChannel(LakeshoreBaseSensorChannel): - pass - - ChanType_co = TypeVar( "ChanType_co", bound=LakeshoreBaseSensorChannel, From c85c4949ba3daf52321d3d4220d04d52300d5dcb Mon Sep 17 00:00:00 2001 From: "Jens H. Nielsen" Date: Fri, 30 May 2025 12:39:28 +0200 Subject: [PATCH 3/7] Deprecate aliases for Lakeshore without maker name --- src/qcodes/instrument_drivers/Lakeshore/Model_325.py | 8 ++++++++ src/qcodes/instrument_drivers/Lakeshore/Model_336.py | 8 ++++++++ src/qcodes/instrument_drivers/Lakeshore/Model_372.py | 8 ++++++++ 3 files changed, 24 insertions(+) diff --git a/src/qcodes/instrument_drivers/Lakeshore/Model_325.py b/src/qcodes/instrument_drivers/Lakeshore/Model_325.py index 2c344f4c0e97..8dd477310beb 100644 --- a/src/qcodes/instrument_drivers/Lakeshore/Model_325.py +++ b/src/qcodes/instrument_drivers/Lakeshore/Model_325.py @@ -8,6 +8,8 @@ from itertools import takewhile from typing import TYPE_CHECKING, Any, Optional, TextIO, cast +from typing_extensions import deprecated + from qcodes.instrument import ( ChannelList, InstrumentChannel, @@ -15,6 +17,7 @@ VisaInstrumentKWArgs, ) from qcodes.parameters import Group, GroupParameter +from qcodes.utils import QCoDeSDeprecationWarning from qcodes.validators import Enum, Numbers from .Lakeshore_model_325 import LakeshoreModel325Curve as Model_325_Curve @@ -28,6 +31,11 @@ from typing_extensions import Unpack +@deprecated( + "Model_325 is deprecated. Please use qcodes.instrument_drivers.Lakeshore.LakeshoreModel325 instead.", + category=QCoDeSDeprecationWarning, + stacklevel=1, +) class Model_325(VisaInstrument): """ Lakeshore Model 325 Temperature Controller Driver diff --git a/src/qcodes/instrument_drivers/Lakeshore/Model_336.py b/src/qcodes/instrument_drivers/Lakeshore/Model_336.py index f08aee17a08e..70980e04c4a3 100644 --- a/src/qcodes/instrument_drivers/Lakeshore/Model_336.py +++ b/src/qcodes/instrument_drivers/Lakeshore/Model_336.py @@ -5,8 +5,11 @@ from typing import TYPE_CHECKING, Any, ClassVar +from typing_extensions import deprecated + import qcodes.validators as vals from qcodes.parameters import Group, GroupParameter +from qcodes.utils import QCoDeSDeprecationWarning from .lakeshore_base import LakeshoreBase from .lakeshore_base import LakeshoreBaseOutput as BaseOutput @@ -26,6 +29,11 @@ from qcodes.instrument import VisaInstrumentKWArgs +@deprecated( + "Model_336 is deprecated. Please use qcodes.instrument_drivers.Lakeshore.LakeshoreModel336 instead.", + category=QCoDeSDeprecationWarning, + stacklevel=1, +) class Model_336(LakeshoreBase): """ Lakeshore Model 336 Temperature Controller Driver diff --git a/src/qcodes/instrument_drivers/Lakeshore/Model_372.py b/src/qcodes/instrument_drivers/Lakeshore/Model_372.py index dedfc500ecfd..d532007711de 100644 --- a/src/qcodes/instrument_drivers/Lakeshore/Model_372.py +++ b/src/qcodes/instrument_drivers/Lakeshore/Model_372.py @@ -5,6 +5,8 @@ from typing import TYPE_CHECKING, Any, ClassVar +from typing_extensions import deprecated + import qcodes.validators as vals from qcodes.instrument_drivers.Lakeshore.lakeshore_base import ( LakeshoreBase, @@ -16,6 +18,7 @@ LakeshoreBaseSensorChannel as BaseSensorChannel, ) from qcodes.parameters import Group, GroupParameter +from qcodes.utils import QCoDeSDeprecationWarning from .Lakeshore_model_372 import LakeshoreModel372Channel as Model_372_Channel from .Lakeshore_model_372 import LakeshoreModel372Output as Output_372 @@ -29,6 +32,11 @@ _n_channels = 16 +@deprecated( + "Model_372 is deprecated. Please use qcodes.instrument_drivers.Lakeshore.LakeshoreModel372 instead.", + category=QCoDeSDeprecationWarning, + stacklevel=1, +) class Model_372(LakeshoreBase): """ Lakeshore Model 372 Temperature Controller Driver From a060d0e14ac6f6f455fe44ce8734d78b0928c00a Mon Sep 17 00:00:00 2001 From: "Jens H. Nielsen" Date: Fri, 30 May 2025 12:59:42 +0200 Subject: [PATCH 4/7] Update tests to reflect changes --- tests/drivers/test_lakeshore_335.py | 2 +- tests/drivers/test_lakeshore_336.py | 2 +- tests/drivers/test_lakeshore_336_legacy.py | 8 +++++--- .../{test_lakeshore.py => test_lakeshore_372.py} | 6 +++--- tests/test_logger.py | 10 +++++----- tests/test_station.py | 4 ++-- 6 files changed, 17 insertions(+), 15 deletions(-) rename tests/drivers/{test_lakeshore.py => test_lakeshore_372.py} (98%) diff --git a/tests/drivers/test_lakeshore_335.py b/tests/drivers/test_lakeshore_335.py index 8ddce6edb9f3..0120707befa9 100644 --- a/tests/drivers/test_lakeshore_335.py +++ b/tests/drivers/test_lakeshore_335.py @@ -4,7 +4,7 @@ from qcodes.instrument import InstrumentBase from qcodes.instrument_drivers.Lakeshore import LakeshoreModel335 -from .test_lakeshore import ( +from .test_lakeshore_372 import ( DictClass, MockVisaInstrument, command, diff --git a/tests/drivers/test_lakeshore_336.py b/tests/drivers/test_lakeshore_336.py index 8ad92cff29f5..0ba20e47b295 100644 --- a/tests/drivers/test_lakeshore_336.py +++ b/tests/drivers/test_lakeshore_336.py @@ -4,7 +4,7 @@ from qcodes.instrument import InstrumentBase from qcodes.instrument_drivers.Lakeshore import LakeshoreModel336 -from .test_lakeshore import ( +from .test_lakeshore_372 import ( DictClass, MockVisaInstrument, command, diff --git a/tests/drivers/test_lakeshore_336_legacy.py b/tests/drivers/test_lakeshore_336_legacy.py index 5bfc06423cbc..3501ce2b3f5b 100644 --- a/tests/drivers/test_lakeshore_336_legacy.py +++ b/tests/drivers/test_lakeshore_336_legacy.py @@ -2,9 +2,11 @@ import time from qcodes.instrument import InstrumentBase -from qcodes.instrument_drivers.Lakeshore.Model_336 import Model_336 +from qcodes.instrument_drivers.Lakeshore.Model_336 import ( + Model_336, # pyright: ignore[reportDeprecated] +) -from .test_lakeshore import ( +from .test_lakeshore_372 import ( DictClass, MockVisaInstrument, command, @@ -18,7 +20,7 @@ VISA_LOGGER = ".".join((InstrumentBase.__module__, "com", "visa")) -class Model_336_Mock(MockVisaInstrument, Model_336): +class Model_336_Mock(MockVisaInstrument, Model_336): # pyright: ignore[reportDeprecated] def __init__(self, *args, **kwargs) -> None: super().__init__(*args, **kwargs) diff --git a/tests/drivers/test_lakeshore.py b/tests/drivers/test_lakeshore_372.py similarity index 98% rename from tests/drivers/test_lakeshore.py rename to tests/drivers/test_lakeshore_372.py index 04f8ed6e50dd..4f59e3f3d1ae 100644 --- a/tests/drivers/test_lakeshore.py +++ b/tests/drivers/test_lakeshore_372.py @@ -11,10 +11,10 @@ from typing_extensions import ParamSpec from qcodes.instrument import InstrumentBase +from qcodes.instrument_drivers.Lakeshore import LakeshoreModel372 from qcodes.instrument_drivers.Lakeshore.lakeshore_base import ( LakeshoreBaseSensorChannel, ) -from qcodes.instrument_drivers.Lakeshore.Model_372 import Model_372 from qcodes.logger import get_instrument_logger from qcodes.utils import QCoDeSDeprecationWarning @@ -138,7 +138,7 @@ def __setattr__(self, name: str, value: Any) -> None: self._attrs[name] = value -class Model_372_Mock(MockVisaInstrument, Model_372): +class LakeshoreModel372Mock(MockVisaInstrument, LakeshoreModel372): def __init__(self, *args, **kwargs) -> None: super().__init__(*args, **kwargs) @@ -365,7 +365,7 @@ def wrapped_fixture(): @instrument_fixture(scope="function") def lakeshore_372(): - return Model_372_Mock( + return LakeshoreModel372Mock( "lakeshore_372_fixture", "GPIB::3::INSTR", pyvisa_sim_file="lakeshore_model372.yaml", diff --git a/tests/test_logger.py b/tests/test_logger.py index a28e0360df79..cdcf7b8d94bf 100644 --- a/tests/test_logger.py +++ b/tests/test_logger.py @@ -17,7 +17,7 @@ from qcodes.instrument_drivers.american_magnetics import AMIModel430, AMIModel4303D from qcodes.instrument_drivers.tektronix import TektronixAWG5208 from qcodes.logger.log_analysis import capture_dataframe -from tests.drivers.test_lakeshore import Model_372_Mock +from tests.drivers.test_lakeshore_372 import LakeshoreModel372Mock if TYPE_CHECKING: from collections.abc import Callable, Generator @@ -58,8 +58,8 @@ def awg5208(caplog: LogCaptureFixture) -> "Generator[TektronixAWG5208, None, Non @pytest.fixture -def model372() -> "Generator[Model_372_Mock, None, None]": - inst = Model_372_Mock( +def model372() -> "Generator[LakeshoreModel372Mock, None, None]": + inst = LakeshoreModel372Mock( "lakeshore_372", "GPIB::3::INSTR", pyvisa_sim_file="lakeshore_model372.yaml", @@ -231,7 +231,7 @@ def test_capture_dataframe() -> None: assert df.message[0] == TEST_LOG_MESSAGE -def test_channels(model372: Model_372_Mock) -> None: +def test_channels(model372: LakeshoreModel372Mock) -> None: """ Test that messages logged in a channel are propagated to the main instrument. @@ -265,7 +265,7 @@ def test_channels(model372: Model_372_Mock) -> None: assert f == u -def test_channels_nomessages(model372: Model_372_Mock) -> None: +def test_channels_nomessages(model372: LakeshoreModel372Mock) -> None: """ Test that messages logged in a channel are not propagated to any instrument. diff --git a/tests/test_station.py b/tests/test_station.py index 1b5be2406386..8fab32294554 100644 --- a/tests/test_station.py +++ b/tests/test_station.py @@ -280,7 +280,7 @@ def _make_example_station_config(): test_config = f""" instruments: lakeshore: - type: qcodes.instrument_drivers.Lakeshore.Model_336.Model_336 + type: qcodes.instrument_drivers.Lakeshore.LakeshoreModel336 enable_forced_reconnect: true address: GPIB::2::INSTR init: @@ -540,7 +540,7 @@ def test_init_parameters() -> None: f""" instruments: lakeshore: - type: qcodes.instrument_drivers.Lakeshore.Model_336.Model_336 + type: qcodes.instrument_drivers.Lakeshore.LakeshoreModel336 enable_forced_reconnect: true address: GPIB::2::INSTR init: From 8d6860d70506034080a5846da8eb5c7ce48dd44e Mon Sep 17 00:00:00 2001 From: "Jens H. Nielsen" Date: Fri, 30 May 2025 13:06:51 +0200 Subject: [PATCH 5/7] Add changelog for 7187 --- docs/changes/newsfragments/7187.breaking | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 docs/changes/newsfragments/7187.breaking diff --git a/docs/changes/newsfragments/7187.breaking b/docs/changes/newsfragments/7187.breaking new file mode 100644 index 000000000000..50bba0ebebc6 --- /dev/null +++ b/docs/changes/newsfragments/7187.breaking @@ -0,0 +1,3 @@ +The deprecated aliases to Lakeshore modules in `qcodes.instrument_drivers.Lakeshore.lakeshore_base` have been removed. +The aliases to lakeshore drivers in `qcodes.instrument_drivers.Lakeshore.Model_325`, `qcodes.instrument_drivers.Lakeshore.Model_336` and `qcodes.instrument_drivers.Lakeshore.Model_372` +have been removed. Please make sure that all Lakeshore related imports are from `qcodes.instrument_drivers.Lakeshore` avoiding any submodules. From c6c639785879951f141142be8afbde2228b664ea Mon Sep 17 00:00:00 2001 From: "Jens H. Nielsen" Date: Fri, 30 May 2025 14:23:56 +0200 Subject: [PATCH 6/7] Ignore deprecation warning in tests --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index ac0c9562edea..51c8feab544c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -238,6 +238,7 @@ filterwarnings = [ 'ignore:unclosed database in:ResourceWarning', # internal should be fixed 'ignore:ConnectionPlus is deprecated:qcodes.utils.deprecate.QCoDeSDeprecationWarning', # remove once deprecated ConnectionPlus has been removed 'ignore:make_connection_plus_from is deprecated:qcodes.utils.deprecate.QCoDeSDeprecationWarning', # remove once deprecated ConnectionPlus has been removed + 'ignore:Model_336 is deprecated:qcodes.utils.deprecate.QCoDeSDeprecationWarning', # remove once deprecated Lakeshore Model_336 and its tests has been removed ] [tool.ruff] From 807c724606f596299cc647c8b1495a888d205688 Mon Sep 17 00:00:00 2001 From: "Jens H. Nielsen" Date: Fri, 30 May 2025 15:40:32 +0200 Subject: [PATCH 7/7] Static submodules in Lakeshore325 driver --- .../Lakeshore/Lakeshore_model_325.py | 46 ++++++++++++++----- 1 file changed, 35 insertions(+), 11 deletions(-) diff --git a/src/qcodes/instrument_drivers/Lakeshore/Lakeshore_model_325.py b/src/qcodes/instrument_drivers/Lakeshore/Lakeshore_model_325.py index 739b8a58ff69..e9e6b8d5b9f6 100644 --- a/src/qcodes/instrument_drivers/Lakeshore/Lakeshore_model_325.py +++ b/src/qcodes/instrument_drivers/Lakeshore/Lakeshore_model_325.py @@ -26,6 +26,8 @@ from typing_extensions import Buffer, Unpack + from qcodes.instrument.channel import ChannelTuple + def _read_curve_file(curve_file: TextIO) -> dict[Any, Any]: """ @@ -583,23 +585,42 @@ def __init__( self, "sensor", LakeshoreModel325Sensor, snapshotable=False ) - for inp in ["A", "B"]: - sensor = LakeshoreModel325Sensor(self, f"sensor_{inp}", inp) - sensors.append(sensor) - self.add_submodule(f"sensor_{inp}", sensor) + self.sensor_A: LakeshoreModel325Sensor = self.add_submodule( + "sensor_A", LakeshoreModel325Sensor(self, "sensor_A", "A") + ) + """Sensor A""" + sensors.append(self.sensor_A) + self.sensor_B: LakeshoreModel325Sensor = self.add_submodule( + "sensor_B", LakeshoreModel325Sensor(self, "sensor_B", "B") + ) + """Sensor B""" + sensors.append(self.sensor_B) - self.add_submodule("sensor", sensors.to_channel_tuple()) + self.sensor: ChannelTuple[LakeshoreModel325Sensor] = self.add_submodule( + "sensor", sensors.to_channel_tuple() + ) + """ChannelTuple of sensors""" heaters = ChannelList( self, "heater", LakeshoreModel325Heater, snapshotable=False ) - for loop in [1, 2]: - heater = LakeshoreModel325Heater(self, f"heater_{loop}", loop) - heaters.append(heater) - self.add_submodule(f"heater_{loop}", heater) + self.heater_1: LakeshoreModel325Heater = self.add_submodule( + "heater_1", LakeshoreModel325Heater(self, "heater_1", 1) + ) + """Heater 1""" + heaters.append(self.heater_1) - self.add_submodule("heater", heaters.to_channel_tuple()) + self.heater_2: LakeshoreModel325Heater = self.add_submodule( + "heater_2", LakeshoreModel325Heater(self, "heater_2", 2) + ) + """Heater 2""" + heaters.append(self.heater_2) + + self.heater: ChannelTuple[LakeshoreModel325Heater] = self.add_submodule( + "heater", heaters.to_channel_tuple() + ) + """ChannelTuple of heaters""" curves = ChannelList(self, "curve", LakeshoreModel325Curve, snapshotable=False) @@ -607,7 +628,10 @@ def __init__( curve = LakeshoreModel325Curve(self, curve_index) curves.append(curve) - self.add_submodule("curve", curves) + self.curve: ChannelList[LakeshoreModel325Curve] = self.add_submodule( + "curve", curves + ) + """ChannelList of curves""" self.connect_message()