QCoDeS 0.55.0 (2026-02-25) ========================== Breaking Changes: ----------------- - The functionality to export qcodes datasets to XArray/netcdf4 has been significantly improved for datasets where the shape of the data is known from metadata e.g. using dond or similar: * The memory overhead of exporting the data has been reduced. * The coordinate order is maintained such that data is stored in the order it was measured. Previously data was implicitly sorted by coordinates during the export. * When exporting Datasets to xarray where the shape is known, either by the use of utilities such as ``dond`` or manually specified, inferred parameters related to the setpoints and measured parameters are now included in the XArray Dataset. These changed were previously part of ``0.54.0`` but reverted in ``0.54.1`` since the change in coordinate sorting was not announced. (:pr:`7546`) Improved: --------- - The ``InstrumentModule`` and its alias ``InstrumentChannel`` now take an optional generic argument allowing you to specify the type of the parent instrument for type checking. (:pr:`7659`) - The ``ChannelTuple`` class now has ``multi_parameter`` and ``multi_function`` methods that provide type-safe access to parameters and functions on all channels in the tuple. These methods allow accessing attributes with proper type information, improving IDE integration and type checking. The return type annotation of ``__getattr__`` has been changed to ``Any`` reflecting the fact that this is not a type safe interface and it is impossible for a static type checker to infer the type of the dynamic attribute. ``multi_parameter``, ``multi_function`` and ``get_channel_by_name`` should be used when a more specific type is requested. (:pr:`7686`) - The `InterDependencies_` class is now frozen during the performance of a measurement so it cannot be modified. This enables caching of attributes on the class significantly reducing the overhead of measurements. (:pr:`7712`) - The QCoDeS Parameter classes ``ParameterBase``, ``Parameter``, ``ParameterWithSetpoints``, ``DelegateParameter``, ``ArrayParameter`` and ``MultiParameter`` now takes two Optional Generic arguments to allow the data type and the type of the instrument the parameter is bound to to be fixed statically. This enables the type of the output of ``parameter.get()``, input of ``parameter.set()`` and value of ``parameter.instrument`` to be known statically such that type checkers and IDE's can make use of this information. (:pr:`7730`) - The table created by experiments_widget() now has a column of buttons by which individual datasets can be exported as ASCII files. This is a user-friendly way to use the qcode.dataset.export() method. To demo this feature, run > experiments_widget(sort_by="timestamp") in Jupyter, and click on one of the cells in the "Export" column. (:pr:`7772`) - All arguments to ``ParameterBase.__init__`` except ``name`` are now keyword-only. For backwards compatibility, passing them as positional arguments is still allowed but will emit a ``FutureWarning``. Passing the same argument both positionally and as a keyword argument raises a ``TypeError``. (:pr:`7839`) Improved Drivers: ----------------- - Added blocking function to DynaCool PPMS driver that waits for temperature state to be stable before allowing other functions to be called when setting the temperature. (:pr:`7534`) - The ``KeysightE4980A`` driver now names the ``correction`` submodule correctly as ``correction`` reflecting the public attribute to access the module. This also means that in the snapshot ``correction`` is used as the module name rather than ``_correction`` (:pr:`7659`) - Improved sim YAML for Cryomagnetics TM620 and added default terminator. (:pr:`7666`) - The ``RohdeSchwarzZNBBase``, ``MiniCircuitsRCSPDT``, and ``TektronixTPS2012`` drivers now have explicit type annotations on their ``channels`` submodule, enabling better type checking and IDE integration. (:pr:`7686`) - In the Rohde Schwarz ZNB drivers QCoDeS functions have been converted to regular methods. This ensures that methods are type checked and can be discovered by IDEs. (:pr:`7715`) - On Keithly3706A, allow users to cache forbidden channels in order to bypass unnecessary `_validator()` calls when closing channels. Added a cache for `_validator()` results. Both of these changes results in significant time savings when running measurements with repeated calls to `close_channel()`. (:pr:`7771`) - Fixed bug in Lakeshore driver that was causing blocking_t to periodically hang indefinitely: a 0.5 seconds post delay was added to setpoint parameter to ensure that the setpoint value propagated to the instrument when the set of the setpoint parameter returns. (:pr:`7796`) - Several instrument drivers now make better use of the newly added generic datatype and instrument arguments to ParameterBase and subclasses. - AlazarTech ATS: ``TraceParameter`` now uses generic type parameters. - CopperMountain M5xxx: ``FrequencySweepMagPhase``, ``PointMagPhase``, and ``PointIQ`` now use generic type parameters. Removed unnecessary ``assert isinstance`` calls. Fixed timeout handling when timeout is ``None``. - Keysight 344xxA: ``Keysight344xxATrigger``, ``Keysight344xxASample``, ``Keysight344xxADisplay`` and ``TimeTrace`` now use generic type parameters. Refactored ``_acquire_time_trace`` to use explicit context managers instead of a list of parameter settings. .. gitleaks:allow - Keysight B1500: Added ``MeasurementModeDict`` TypedDict. ``IVSweepMeasurement`` corrected instrument type and now uses generic type parameters. ``KeysightB1500Module`` now uses generic type parameters. - Keysight B1517A: ``KeysightB1500IVSweeper``, ``_ParameterWithStatus``, ``_SpotMeasurementVoltageParameter``, and ``_SpotMeasurementCurrentParameter`` now use generic type parameters. Removed unnecessary ``cast`` calls. .. gitleaks:allow - Keysight B1520A: ``KeysightB1500CVSweeper`` and ``KeysightB1500CVSweepMeasurement`` now use generic type parameters. Added ``root_instrument`` property to ``KeysightB1500CVSweepMeasurement``. .. gitleaks:allow - Keysight B1500 sampling measurement: ``SamplingMeasurement`` now uses generic type parameters and has a ``root_instrument`` property. Fixed timeout handling when timeout is ``None``. - Keysight B1500 message builder: Improved type annotations using ``ParamSpec`` and ``TypeVar``. Made ``CommandList`` generic. - Keysight KtM960x: ``Measure`` parameter now uses generic type parameters. - Keysight N9030B: ``FrequencyAxis``, ``Trace``, ``KeysightN9030BSpectrumAnalyzerMode``, and ``KeysightN9030BPhaseNoiseMode`` now use generic type parameters. Replaced ``assert`` statements with proper error handling. - QuantumDesign DynaCool: Improved type annotation for ``_pick_one`` method. Removed unnecessary ``cast`` call. - Rohde & Schwarz ZNB: ``FixedFrequencyTraceIQ``, ``FixedFrequencyPointIQ``, ``FixedFrequencyPointMagPhase``, ``FrequencySweepMagPhase``, ``FrequencySweepDBPhase``, and ``FrequencySweep`` now use generic type parameters. Removed unnecessary ``assert isinstance`` calls. - Tektronix DPO7200xx: ``TektronixDPOMeasurementParameter`` now uses generic type parameters. Removed unnecessary ``cast`` call. - Yokogawa GS200: ``source_mode`` and ``current_limit`` parameters now use generic type parameters. Replaced if-else statements with match statements for source mode handling. (:pr:`7822`) - Add hold parameter, force_jump parameter, and set_event_jump method to the Tektronix AWG70000A driver for improved sequence control. (:pr:`7837`) - Add TektronixDPOAcquisition, TektronixDPOCursor, and TektronixDPOMeasurementImmediate modules to the Tektronix DPO7200xx driver. Enhanced TektronixDPOTrigger with ready, state, and level parameters. Added coupling parameter to TektronixDPOChannel. (:pr:`7838`) New Drivers: ------------ - Added Keysight 33611A driver. (:pr:`7644`) (:pr:`7644`)