QCoDeS 0.46.0 (2024-07-04)

Breaking Changes:

  • This will be the last version of QCoDeS to support Python 3.9

  • The keyword arguments expected to be passed to InstrumentBase and VisaInstrument subclasses are now documented as TypedDics classes that can be used to type **kwargs in the subclass constructors. See Creating QCoDeS instrument drivers for usage examples.

    This also means that these arguments must be passed as keyword arguments, and not as positional arguments. This specifically includeds passing label and metadata to direct subclasses of Instrument as well as terminator to subclasses of VisaInstrument.

    All drivers shipping with qcodes for Vendors from A-K have been updated in this pr. The remaining drivers were updated in (#6087). (#6012)

  • It is now considered unsupported to modify the parameters attribute of an instrument or instrument module after it has been created. To remove a parameter from an instrument use the remove_parameter method. (#6174)

  • InstrumentBase.add_parameter will now error if an attribute of the same name as the parameter added already exists and this attribute is an instance of ParameterBase. This is to prevent issues where a parameter is partially overwritten by a new parameter. To remove the existing Parameter use the new instrument.remove_parameter` method. If the attribute is not a ParameterBase this will instead warn. It is the intention that this becomes an error in the future. (#6174) (#6211)

  • Updated dond functions to to re-raise KeyboardInterrupt for better interrupt handling making it easier to stop long-running measurement loops and reducing the need for kernel restarts. This meas that if you interrupt a dond` function with a keyboard interrupt not only the measurement but any pending code to execute will be interrupted. In the process logging for interrupted measurements has been improved. (#6192)

Improved:

  • InstrumentBase.add_parameter now returns the created parameter. This allows explicitly assigning the parameter as an attribute on the instrument class. This in turn enables type checkers and documentation tools to detect the existence and type of the parameter statically.

    QCoDeS ships with a tool to automatically refactor instruments in this way. To use this tool qcodes should be installed with the refactor option e.g. pip install qcodes[refactor]

    See Creating-Instrument-Drivers for more details.

    It is the plan to transform all drivers shipping with QCoDeS in this way as soon as possible. (#4412)

  • Accept sequences of values for setting MultiChannelInstrumentParameter s. Previously, the behavior was inconsistent since param.set(param.get()) would error. (#6073)

  • Add update_spapshot argument to Station.load_instrument() (#6075)

  • Measurement.register_parameter() now tests for correct types of arguments setpoints and basis. (#6084)

Improved Drivers:

  • The Agilent drivers shipping with QCoDeS have been updated to ensure all Parameters are set as static attributes that are documented and can be type checked. The docs for the Agilent drivers have been updated to not document inherited members. This makes the documentation significantly more readable as it focuses on specific members for a given instrument. The documentation now also links superclasses. Please consult these for inherited members. It is the plan to make the same change to all drivers shipping with QCoDeS in the near future. (#6089)

  • The Aim TTi drivers shipping with QCoDeS have been updated to ensure all Parameters are set as static attributes that are documented and can be type checked. The docs for the Aim TTi drivers have been updated to not document inherited members. This makes the documentation significantly more readable as it focuses on specific members for a given instrument. The documentation now also links superclasses. Please consult these for inherited members. (#6105)

  • Fix AlazarTech ATS drivers trying to create an instrument with invalid identifier as name (#6106)

  • The Alazar Tech, American Magnetics, Basel, Cryomagnetics and Galil drivers shipping with QCoDeS have been updated to ensure all Parameters are set as static attributes that are documented and can be type checked. The docs for the same drivers have been updated to not document inherited members. This makes the documentation significantly more readable as it focuses on specific members for a given instrument. The documentation now also links superclasses. Please consult these for inherited members. (#6113)

  • The HP, Harvard and Ithaco drivers shipping with QCoDeS have been updated to ensure all Parameters are set as static attributes that are documented and can be type checked. The docs for the same drivers have been updated to not document inherited members. This makes the documentation significantly more readable as it focuses on specific members for a given instrument. The documentation now also links superclasses. Please consult these for inherited members. (#6114)

  • The Keithley drivers shipping with QCoDeS have been updated to ensure all Parameters are set as static attributes that are documented and can be type checked. The docs for the same drivers have been updated to not document inherited members. This makes the documentation significantly more readable as it focuses on specific members for a given instrument. The documentation now also links superclasses. Please consult these for inherited members. (#6115)

  • The Keysight drivers shipping with QCoDeS have been updated to ensure all Parameters are set as static attributes that are documented and can be type checked. The docs for the same drivers have been updated to not document inherited members. This makes the documentation significantly more readable as it focuses on specific members for a given instrument. The documentation now also links superclasses. Please consult these for inherited members. (#6125)

  • The Lakeshore drivers shipping with QCoDeS have been updated to ensure all Parameters are set as static attributes that are documented and can be type checked. The docs for the same drivers have been updated to not document inherited members. This makes the documentation significantly more readable as it focuses on specific members for a given instrument. The documentation now also links superclasses. Please consult these for inherited members. (#6128)

  • The Minicircuits, Oxford, QDev, QuantumDesign, Rigol and Rohde & Schwarz drivers shipping with QCoDeS have been updated to ensure all Parameters are set as static attributes that are documented and can be type checked. The docs for the same drivers have been updated to not document inherited members. This makes the documentation significantly more readable as it focuses on specific members for a given instrument. The documentation now also links superclasses. Please consult these for inherited members. (#6160)

  • The SignalHound, SRS, Stahl, Weinschel and Yokogawa drivers shipping with QCoDeS have been updated to ensure all Parameters are set as static attributes that are documented and can be type checked. The docs for the same drivers have been updated to not document inherited members. This makes the documentation significantly more readable as it focuses on specific members for a given instrument. The documentation now also links superclasses. Please consult these for inherited members. (#6163)

  • The Tektronix drivers shipping with QCoDeS have been updated to ensure all Parameters are set as static attributes that are documented and can be type checked. The docs for the same drivers have been updated to not document inherited members. This makes the documentation significantly more readable as it focuses on specific members for a given instrument. The documentation now also links superclasses. Please consult these for inherited members. (#6164)