Skip to content

QCoDeS 0.35.0

Compare
Choose a tag to compare
@jenshnielsen jenshnielsen released this 04 Oct 08:46
1a06fc0

QCoDeS 0.35.0 (2022-10-03)

NOTE: this release includes changes from :doc:0.35.0b1,
refer to that changelog for details of those changes.

In this release a large refactoring of the QCoDeS modules organization has taken place.
Among other changes the instrument module has been split into a parameters and
instrument module, the dond functions have been moved to the dataset module
and several methods removed from the public API of the utils module.

The new API is documented in the :ref:api section of the QCoDeS homepage.

Going forward we aim to establish a policy where the QCoDeS public API is defined
by modules explicitly documented in the :ref:api and importable from submodules at most
one level deep. I.e. from qcodes.instrument import InstrumentChannel is supported but
f`rom qcodes.instrument.channel import InstrumentChannel is considered unsupported.

Importing from previously existing locations should continue to work
but it is recommended to update to the new API.
In the future we may deprecate and eventually remove these modules
but no firm date is set for this.

Please report any issues you may see with importing from the previously existing API
or if you depend on any functions, classes etc. not available from the new public API.

This release also includes a significant but still incomplete refactoring of the QCoDeS
instrument drivers in qcodes.instrument_drivers. Many but not all drivers have been updated
to use names that conform to the standard documented
here <../examples/writing_drivers/Creating-Instrument-Drivers.ipynb#Naming-the-Instrument-class>__
i.e. they use CamelCase as other classes and are named as InstrumentvendorModel
and are importable directly from the instrument vendor module i.e.
from qcodes.instrument_drivers.AimTTi import AimTTiPL068P .
Older names for the classes are still importable from their original places unless explicitly
documented otherwise. In the future we may deprecate and eventually remove the instrument driver classes whos names don't conform to the standard,
but no firm date is set for this.

Breaking Changes:

  • The standard metadata as defined by pep621 has moved from setup.cfg
    to pyproject.toml. This should have no user facing consequences unless
    you install qcodes from source using a very old version of pip (<19)
    or use unusual pip configurations. (#4382#)

  • :class:VisaInstrument no longer calls :meth:VisaInstrument.set_address as part of its
    initialization. If you customize :meth:VisaInstrument.set_address in a subclass you may have
    to adapt that class. (:pr:4397)

  • The deprecated method check_error has been removed from the visa instrument class. (#4426)

  • The unused attribute shared_kwargs on the Instrument class has been removed. (#4427)

  • The following InstrumentChannel classes have changed name for consistency.
    This is expected to be a change with few user facing implications unless you are explicitly
    subclassing the mentioned classes.

    • DG1062Burst has changed name to RigolDG1062Burst
    • DG1062Channel has changed name to RigolDG1062Channel (#4538)
  • DataSet.get_metadata method for retrieving a metadata value for a
    given tag is now case-sensitive with respect to the tag.
    For example, if metadata was added with dataset.add_metadata('something', 1),
    it can only be retrieved by using its exact casing of the tag,
    dataset.get_metadata('something'), and not e.g.
    dataset.get_metadata('SomeThinG'). In the previous versions of QCoDeS,
    any casing of the tag in DataSet.get_metadata would work and return the
    value stored under that tag. Note that this change brings consistency
    with how getting metadata via the dataset.metadata works:
    dataset.metadata['something'] does return the value, and
    dataset.metadata['SomeThinG'] does not. (#4658)

Improved:

  • ChannelTuple and ChannelList has gained the ability to call methods defined on the channels
    in the sequence in a way similar to how QCoDeS Functions can be called. (#4292)

  • dond has gained the ability to sweep multiple parameters at the same time enabling the creation of more complex
    measurements. (#4325)

  • Improve performance of sqlite3 converters and adapters used to write and read in the database.

    Get rid of sqlite3.Row and irrelevant unpacking to list. (#4446)

  • Settings of QCoDeS Validators are now available as properties (mostly read-only),
    e.g. min_value and max_value of the Numbers validator can now be accessed
    via numbers_validator_instance.min_value and numbers_validator_instance.max_value (#4602)

  • Fixed a bug in the QCoDeS JSON encoder that would trigger an infinite recursion for snapshots containing
    bytes (bytestrings with a b prefix). (#4621)

  • InstrumentBase and ParameterBase now call snapshot() on _meta_attrs attributes that inherit from Metadatable. (#4655)

  • The Dataset no longer prints upgrade progressbars when upgrading an empty database. This means that
    the progressbar will no longer be shown when creating a new database. (#4969)

Improved Drivers:

  • A parameter auto_freq_ref was added to the Keysight.N51x1 class.
    From the Keysight manual:
    This command enables or disables the ability of the signal generator to
    automatically select between the internal and an external reference oscillator.

    In addition, the val_mapping dictionary of the rf_output parameter is now using the create_on_off_val_mapping function. (#4472)

  • Add get_idn to AMI 430 3D virtual instrument driver so that it does not raise a warning when added to a station (#4610)

New:

  • :class:InstrumentBase has a property label that can host
    a human-readable label/title of the instrument.
    The label can be set in the init. (#4460)