Skip to content

Releases: microsoft/Qcodes

QCoDeS 0.53.0

17 Jun 12:53
1365c3a
Compare
Choose a tag to compare

QCoDeS 0.53.0 (2025-06-16)

Breaking Changes:

  • QCoDeS has dropped support for python 3.10. QCoDeS now supports Python 3.11, 3.12 and 3.13. #7038
  • 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. #7187

Improved:

  • The implementation of do0d and do1d have been replaced with a wrapper around dond.
    This aligns the keyword arguments with dond and ensures that these function support
    the same features as dond. The same change is planned for do2d in the future. #7065

  • InstrumentLoggerAdapter now merges the extra dict from the log record with information
    inserted by the LoggerAdapter. This makes it possible to add additional information to a
    log message logged via the instruments log attribute e.g. myinst.visa_log.info("message", extra={"this": "that"}) #7186

  • qcodes.dataset.descriptions.detect_shapes and qcodes.dataset.dond.do_nd_utils have been updated
    to use parameter.register_name when creating shape dictionaries for storage in the dataset

    Previously, these methods used parameter.full_name which could result in shapes not being stored
    or used correctly for parameters that use parameter.register_name

    closes #7198 #7199

Improved Drivers:

  • The Keysight 344xxA drivers have been updated to ensure that NPLC, autorange, autozero, apature_time and ```apature_modeparameters use the correct instrument commends for the sense mode selected by thesense_function`` parameter. #6723

New:

  • InstrumentBase.add_submodule now returns the added submodule. This similar to changes made in add_parameter earlier.
    This makes it possible to assign this to an attribute which enables static code checkers, IDEs and documentation to
    discover submodules. The Galil drivers have been updated to make use of this. Consult the Galil driver or Creating-Instrument-Drivers
    notebook for examples of how to use this. It is planed that QCoDeS in the future will ship with a tool to automatically perform this refactor
    and updates to all included drivers. #7017

QCoDeS 0.52.0

04 Apr 07:32
77789ec
Compare
Choose a tag to compare

QCoDeS 0.52.0 (2025-04-03)

Note This will be the last version of QCoDeS to support Python 3.10.

Breaking Changes:

  • QCoDeS no longer ships a setup.py script and all package config is done in pyproject.toml
    A version of pip or other package manager supporting PEP621 is required to build from source. #6919
  • The QCoDeS dataset sqlite connection class ConnectionPlus has been deprecated and replace with AtomicConnection.
    Unlike ConnectionPlus AtomicConnection is a direct subclass of sqlite3.Connection which enables better type checking
    and will allow QCoDeS to drop the dependency on wrapt. The function make_connection_plus_from is also deprecated and
    it is no longer supported to convert a connection from a sqlite3 connection to a QCoDeS specific connection. #6942
  • The QCoDeS deprecation utils including qcodes.utils.deprecate.deprecation_message,
    qcodes.utils.deprecate.issue_deprecation_warning, qcodes.utils.deprecate.deprecate qcodes.utils.deprecate.assert_not_deprecated
    and qcodes.utils.deprecate.assert_deprecated along with their reexports in qcodes, qcodes.utils and qcodes.utils.helpers
    are all deprecated and will be removed in QCoDeS 0.54.0. We recommend using typing_extensions.deprecate as an alternative. #6946

Improved:

  • Added 'parameters' argument to the 'plot_dataset' (and 'plot_by_id')
    functions. This enables a choice of which dependent parameters to plot
    (in the case that the plotting of all dependent parameters is not
    desired). #6931
  • Save the parameter snapshot under the register_name key in the parameters snapshot in datasets (not the station snapshot), to avoid overwritting the snapshot multiple parameters have identical short_names.
    The parameter snapshot saved under the short name key is kept for backwards compatibility, but will be removed at a later time. #7012

Improved Drivers:

  • Added several parameters into the oxford MercuryiPS driver,
    enabling the control of the heaters and the sensing of internal temperatures
    (magnet, PT1, and PT2 stage of cryogenic system).
    Added heater_switch parameter to manage the heater switch status and settings.
    The heater switch control is bound to each WorkerPS, accepting "ON" and "OFF" as inputs.
    Added magnet_temp, pt1_temp, and pt2_temp parameters for reading temperatures
    from different sensors, utilizing the new _temp_parser function.
    Currently, the addresses of temperature sensors are written statically in the driver. #6889

New:

  • Added a global callback mechanism to ParameterBase that enables users to
    supply custom callback functions to handle parameter changes. This new feature
    allows for flexible integrations—such as logging changes, updating dashboards, or
    other custom processing—without modifying full snapshot behavior.
    See the PR for details on a usage example. #6934
  • A new Validator LiteralValidator was added. This allows validating against the members of a typing.Literal. #7009

QCoDeS 0.51.0

17 Feb 09:41
aa0ab2a
Compare
Choose a tag to compare

QCoDeS 0.51.0 (2025-02-14)

Breaking Changes:

  • The deprecated and non functional function qcodes.test() has been removed. (#6665)

Improved:

  • DelegateParameter now includes validators of its source Parameter into its validators. This ensures that a DelegateParameter
    with a non numeric source parameter is registered correctly in a measurement when the DelegateParameter it self does not
    set a validator. (#6585)
  • Fix a regression introduced in 0.50.0 where a DelegateParameter initialized with a None source
    would not correctly call get/set on the source parameter when this has been set. (#6671)
  • When passing bind_to_instrument=False to InstrumentBase.add_parameter a warning that
    recommends not doing this is now raised suggesting a better alternative.
    This replaces an existing inconsistent warning which was misleading. (#6722)
  • Only add magnet parameters if a magnet is detected in the Oxford Triton driver. (#6792)

Improved Drivers:

  • Enabled use of ZNLE R&S VNA by recognizing the model name in RohdeSchwarzZNBBase, and creating an ZNLE## class as an alias (#6796)

QCoDeS 0.50.1

28 Nov 10:34
6b8c257
Compare
Choose a tag to compare

QCoDeS 0.50.1 (2024-11-28)

Improved:

  • Fix a regression introduced in 0.50.0 where a DelegateParameter initialized with a None source
    would not correctly call get/set on the source parameter when this has been set. #6671

QCoDeS 0.50.0

25 Nov 09:33
4ad5c78
Compare
Choose a tag to compare

QCoDeS 0.50.0 (2024-11-22)

Breaking Changes:

  • QCoDeS no longer attempts to automatically disable Sypders User module reloader (UMR).
    The code was no longer working correctly with the latest version of Spyder and is not
    maintainable since Spyder does not have a public api to disable UMR. If you use
    QCoDeS from an editable install it is strongly recommended to disable UMR for QCoDeS.
    See :ref:gettingstarted for more details. (#6647)

Improved:

  • Improves the DataSetDefinition class to allow users to specify metadata to be added to the resulting dataset (#6643)
  • DelegateParameter now reads delegated properties from source rather than setting them at source change.
    This resolves an issue when delegating from another delegate parameter may result in incorrect attributes. (#6648)

New:

  • Added a new feature to find links in a parameter chain by parameter type (#6599)
  • Added new methods to find instruments in a parameter chain by parameter type (#6616)

QCoDeS 0.49.0

15 Oct 13:01
ef66ccc
Compare
Choose a tag to compare

QCoDeS 0.49.0 (2024-10-15)

Breaking Changes:

  • The methods get, set, call and __getitem__ on the InstrumentBase class have been deprecated.
    Parameters can be looked up by name using the Instrument.parameters dict and functions using instrument.functions
    which is cleaner and fully equivalent. #6086
  • The deprecated qcodes.tests module has been removed. Mock instruments can be found in qcodes.instrument_drivers.mock_instruments and
    DriverTestCase as qcodes.extensions.DriverTestCase. #6480

Improved:

  • The deprecated support for enabling OpenCensus based telemetry has been removed.
    QCoDeS will now warn if you try to enable OpenCensus based telemetry in the config.
    Users are encouraged to roll out their own telemetry solution if they need it based
    on OpenTelemetry. This also means that the qcodes[opencensus] install target has been removed.
    The unused method filter_out_telemetry_log_records has been deprecated and will be removed in a future release. #6439
  • Parameters registered in a qcodes Measurement are now snapshotted and stored in the resulting dataset under dataset.snapshot["parameters"] #6487
  • Group parmeter now accepts a callable that returns a string command as its get_cmd.
    This is useful for the cases where the command string is dynamic; for example,
    lambda: f"CMD {get_id_that_specifies_the_command()} ?". #6520

Improved Drivers:

  • LakeShore335: Fix typo in setpoint_ramp parameter group #6430
  • Add curve header parameters to Lakeshore model 336 that allows query of the input channel curve header.
    This is useful to verify remotely if the correct temperature calibration curve is selected. #6520
  • Fix Rigol DG4000 value mappings for output_polarity parameters. #6345

QCoDeS 0.48.0

09 Sep 09:33
3e4c608
Compare
Choose a tag to compare

QCoDeS 0.48.0 (2024-09-09)

Improved:

  • Improve handling of corner cases where Instrument.remove_parameter could raise an exception. #6394
  • dond now takes an optional squeeze flag as input. Inspired by Matplotlib's plt.subplots argument
    of the same name, this allows the user to always get the same type returned from the function if set to False.
    This makes it easier to write type checked code that uses dond as a function. #6422

QCoDeS 0.47.0

09 Aug 08:18
b630e2c
Compare
Choose a tag to compare

QCoDeS 0.47.0 (2024-08-07)

Breaking Changes:

This release supports Python 3.10 and later.

Improved Drivers:

  • Fixed the Harvard DecaDAC range not including the highest bit. #6076
  • Fixed Keysight 34465A DMM firmware version parsing. #6076
  • Fixed Oxford Instruments Triton section parsing. #6076
  • The long deprecated aliases to channels on MiniCircuits UsbSPDT drivers have been removed. This means that channel_a should be replaced by a and so on in any call to this driver. #6207
  • Added power output parameters to LakeShore335 driver, allowing configuration of the maximum heater current. #6248
  • Added input coupling and impedance parameters for channels in the Keysight Infiniium oscilloscope driver. #6293
  • Added 'offset' parameter to Tektronix AWG Channels. #6303
  • The qcodes.instrument_drivers.american_magnetics.AMIModel430 driver can now be snapshotted with the heater missing or not enabled
    without triggering warnings. Furthermore confusing aliases for parameters on the switch module have been deprecated since use of these would
    lead to incorrect state of the parameters.
    The aliases qcodes.instrument_drivers.american_magnetics.AMI_430_visa.AMI430_3D and qcodes.instrument_drivers.american_magnetics.AMI_430_visa.AMI430
    have been deprecated. #6306
  • Add setpoint ramp rate parameters to LakeShore335 driver,
    this allows to configure the setpoint ramp rate. #6322
  • Add setpoint ramp status parameter to LakeShore335 driver,
    this allows to monitor a ongoing setpoint ramp. #6322

Other Changes:

  • Improved error handling when checking experiment IDs in the experiment list. #6305

QCoDeS 0.46.0

04 Jul 09:17
0d26f50
Compare
Choose a tag to compare

QCoDeS 0.46.0 (2024-06-27)

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 the 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 <../examples/writing_drivers/Creating-Instrument-Drivers.ipynb>__
    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_snapshot 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

QCoDeS 0.45.0

06 May 07:18
46ee2e4
Compare
Choose a tag to compare

QCoDeS 0.45.0 (2024-05-03)

Breaking Changes:

  • The AMI drivers in qcodes.instrument_drivers.american_magnetics.AMI430 and their submodules has been deprecated. Use the AMIModel430 and
    AMIModel4303D drivers from qcodes.instrument_drivers.american_magnetics instead. (#5712)

  • QCoDeS is now type checked to ensure that subclasses are implemented in a way consistent with the parent class.
    This has resulted in a number of changes to the API. The following is a list of the changes that have been made
    to the API to make subclasses match their parent class. These changes are not expected to break any existing code, since they are
    primarily in positional arguments or unused arguments.

    • The first argument to NumpyJSONEncoder.default has changed from obj to o to match the naming in the std library json.JSONEncoder.default.
    • Unused args idn_part and being_time to QDevQDac.connect_message have been changed to idn_param and begin_time respectively to match the parent class.
    • Unused arguments to stub methods DSOTraceParam.setpoints, DSOTraceParam.unit and FormattedSweep.setpoints have been changed to match the parent class.
    • Alazar DemodulationAcquisitionController.handle_buffer the first argument has been renamed from data to buffer to match the parent class. (#5721)
  • The qcodes.tests module has been deprecated and will be removed in a future release. Please import mock instruments from
    qcodes.instrument_drivers.mock_instruments and DriverTestCase from qcodes.extensions instead. If you make use of
    any other part of the tests module please open an issue on GitHub. (#5732)

  • Fix spelling of the 2 incorrectly spelled classes
    qcodes.instrument_drivers.tektronix.TekronixDPOTrigger and
    qcodes.instrument_drivers.tektronix.TekronixDPOWaveform to
    qcodes.instrument_drivers.tektronix.TektronixDPOTrigger
    and qcodes.instrument_drivers.tektronix.TektronixDPOWaveform .
    The old names have been deprecated and will be removed in a future release. (#5932)

  • QCoDeS no longer installs opencensus and opencensus-ext-azure are no longer installed by default and opencensus integration is deprecated.
    This means that the option qcodes.config.telemetry.enabled to True is deprecated. For the time being opencensus and opencensus-ext-azure
    can be installed by installing QCoDeS with the opencensus option e.g. pip install qcodes[opencensus]. We however, recommend that any use
    of this telemetry integration is replaced by the use of OpenTelemetry. QCoDeS will not include any telemetry integration but the codebase
    has been instrumented using OpenTelemetry spans and python log messages enabling any user to collect telemetry if they should so wish. (#5991)

Improved:

  • An issue where simulated instruments powered by pyvisa-sim could raise an error during the teardown has been resolved. (#5737)
  • Add support for integer indexing in parameter paths in Station Files,
    e.g channel[0].voltage or sigouts[0].enables[1].value. (#5887)
  • Station.get_component and Instrument.get_component has gained the ability to lookup a component
    on an instrument that is only added as a member of a chanellist/tuple and not added as an individual component. (#6009)

Improved Drivers:

  • Improved Stahl BS Voltage Source driver:

    • accepts more floating-point formats in response from instrument
    • allows connection to serial instrument over TCP/IP connection (#5888)
  • The driver for Rohde&Schwarz SG100A has been extendend with parameters
    controlling the optional pulse modulation and trigger modules. (#5889)

  • The drivers for TektronixAWG5208, TektronixAWG70001A, TektronixAWG70001B, TektronixAWG70002A and TektronixAWG70002B
    have gained the parameter all_output_off to disable / enable all outputs as well as the method channel.clear_asset to clear all asserts on a channel. (#5900)

  • A number of new parameters are added to the Keysight N9030B Spectrum Analyzer to allow for Noise Spectral Density measurements.
    In particular we add various parameters for switching the detectors into the appropriate modes, as well as allowing for
    instrument parameters required for unit conversions to be saved in the snapshot.

    In addition, we use binary readout of the data and the ability to read data from the instrument buffer
    (without taking a new trace), and to read averaged data. (#5963)

  • Adds trace manipulation commands to the Keysight PNA driver. (#6035)

New:

  • Add a do2d_retrace function (#5780)

  • Added a new QCoDeS driver for the Cryomagnetics Model 4G superconducting magnet power supply.

    The CryomagneticsModel4G driver provides an interface to control and communicate with the Cryomagnetics Model 4G
    superconducting magnet power supply using the VISA protocol. It allows setting and reading the magnetic field, ramp rate,
    and various other parameters of the instrument.

    Key features of the driver include:

    • Setting and reading the magnetic field in Tesla, considering the coil constant and current limits.

    • Controlling the ramp rate in Tesla per minute.

    • Checking the operating state of the magnet and handling quench conditions and power module failures.

    • Blocking and non-blocking ramping of the magnetic field.

    • Handling communication errors and retrying failed operations.

    The driver is located in qcodes/instrument_drivers/cryomagnetics/_cryomagnetics_4g.py.

    For more details and usage examples, please refer to the driver's documentation:
    https://microsoft.github.io/Qcodes/examples/driver_examples/Qcodes_example_with_cryomagnetics4g.html (#5968)

  • Add methods to recursively search a chain of DelegateParameters and return either all the parameters in the chain or the 'root' parameter
    These methods may also be used with custom Parameters which link to other parameters via different attribute names

    Also add infer_channel and infer_instrument methods to find the InstrumentModule or Instrument of the root parameter (#5998)