diff --git a/docs/changes/0.62.0.rst b/docs/changes/0.62.0.rst new file mode 100644 index 000000000000..789dd059424d --- /dev/null +++ b/docs/changes/0.62.0.rst @@ -0,0 +1,47 @@ +QCoDeS 0.62.0 (2026-10-26) +========================== + +Improved: +--------- + +- ``qcodes.utils.is_qcodes_installed_editably`` no longer shells out to ``pip`` to detect an + editable install. The editable status is now read directly from the installed package + metadata (the :pep:`610` ``direct_url.json`` file), which both ``pip`` and ``uv`` write. + This means the check also works in environments where ``pip`` is not installed, such as + environments managed by ``uv``, and it no longer requires spawning a subprocess. (:pr:`8580`) +- Add :func:`qcodes.dataset.get_open_connections` and + :func:`qcodes.dataset.close_all_connections` to inspect and close tracked database + connections. Connections owned by the exiting thread are also closed automatically + at interpreter shutdown. Test cleanup closes connections opened during each test + without closing connections owned by broader-scoped fixtures or other threads. (:pr:`8626`) +- The type annotations of ``Station.load_all_instruments`` now accept calling it without + arguments or with only one of ``only_names`` and ``only_types``. Previously these valid + calls matched none of the overloads and were rejected by static type checkers. (:pr:`8644`) + + +Improved Drivers: +----------------- + +- Allow the Yokogawa GS200 driver to use the documented generated output ranges, + including 12 V on the 10 V source range, while retaining the 32 V and 200 mA + maximum output limits for direct output and ramps. (:pr:`8577`) +- ``AlazarTechATS.acquire`` is now annotated to accept any ``AcquisitionInterface`` as + ``acquisition_controller``, not only an ``AcquisitionController``, matching what it supports + at runtime. ``AcquisitionController`` now passes its type parameter on to + ``AcquisitionInterface``, so the return type of ``acquire`` is inferred from the + ``post_acquire`` return type of the controller. Subclasses of ``AcquisitionController[T]`` + whose ``post_acquire`` does not return ``T`` will now be reported by static type checkers. (:pr:`8644`) +- Added missing type annotations to the optional arguments of the Keysight B1500 + ``MessageBuilder`` methods ``ercmaio``, ``lst_query``, ``pch_query``, ``sprm``, ``tc`` + and ``wat``. (:pr:`8644`) +- The Galil DMC-41x3 driver now retries empty or malformed controller replies when polling motion status and axis positions, and waiting for motion to complete is bounded by a timeout (300 s by default) that raises ``TimeoutError``. Each motion-status query is limited by the remaining motion timeout, with millisecond resolution, and restores the original I/O timeout afterward. Connecting now falls back through the ``--direct -s ALL`` and ``-s ALL`` options before using the bare address. Pressing Ctrl-C while waiting for motion now calls ``abort()`` and then turns the axes off with ``MO``. (:pr:`8647`) + + +Under the hood: +--------------- + +- QCoDeS is now tested against Python 3.15 on Linux. The ``zhinst-qcodes`` test dependency is not installed + on Python 3.15 since ``zhinst-core`` does not yet provide wheels for it. (:pr:`8581`) +- The minimum supported version of ``typing_extensions`` is now 4.12.0. Older versions do not + apply the default of a ``TypeVar``, so subscripting a parameter with only its value type at + runtime, e.g. ``Parameter[int]``, failed with ``TypeError: Too few arguments`` on Python 3.12. (:pr:`8644`) diff --git a/docs/changes/index.rst b/docs/changes/index.rst index 130407248e39..7b5d26e722ec 100644 --- a/docs/changes/index.rst +++ b/docs/changes/index.rst @@ -3,6 +3,7 @@ Changelogs .. toctree:: Unreleased + 0.62.0 <0.62.0> 0.61.1 <0.61.1> 0.61.0 <0.61.0> 0.60.0 <0.60.0> diff --git a/docs/changes/newsfragments/8577.improved_driver b/docs/changes/newsfragments/8577.improved_driver deleted file mode 100644 index 41cea22696b3..000000000000 --- a/docs/changes/newsfragments/8577.improved_driver +++ /dev/null @@ -1,3 +0,0 @@ -Allow the Yokogawa GS200 driver to use the documented generated output ranges, -including 12 V on the 10 V source range, while retaining the 32 V and 200 mA -maximum output limits for direct output and ramps. diff --git a/docs/changes/newsfragments/8580.improved b/docs/changes/newsfragments/8580.improved deleted file mode 100644 index 8edba8b8358e..000000000000 --- a/docs/changes/newsfragments/8580.improved +++ /dev/null @@ -1,5 +0,0 @@ -``qcodes.utils.is_qcodes_installed_editably`` no longer shells out to ``pip`` to detect an -editable install. The editable status is now read directly from the installed package -metadata (the :pep:`610` ``direct_url.json`` file), which both ``pip`` and ``uv`` write. -This means the check also works in environments where ``pip`` is not installed, such as -environments managed by ``uv``, and it no longer requires spawning a subprocess. diff --git a/docs/changes/newsfragments/8581.underthehood b/docs/changes/newsfragments/8581.underthehood deleted file mode 100644 index c5ac6c28ea92..000000000000 --- a/docs/changes/newsfragments/8581.underthehood +++ /dev/null @@ -1,2 +0,0 @@ -QCoDeS is now tested against Python 3.15 on Linux. The ``zhinst-qcodes`` test dependency is not installed -on Python 3.15 since ``zhinst-core`` does not yet provide wheels for it. diff --git a/docs/changes/newsfragments/8626.improved b/docs/changes/newsfragments/8626.improved deleted file mode 100644 index 8438b34ae1b7..000000000000 --- a/docs/changes/newsfragments/8626.improved +++ /dev/null @@ -1,5 +0,0 @@ -Add :func:`qcodes.dataset.get_open_connections` and -:func:`qcodes.dataset.close_all_connections` to inspect and close tracked database -connections. Connections owned by the exiting thread are also closed automatically -at interpreter shutdown. Test cleanup closes connections opened during each test -without closing connections owned by broader-scoped fixtures or other threads. diff --git a/docs/changes/newsfragments/8644.improved b/docs/changes/newsfragments/8644.improved deleted file mode 100644 index 361030988fe2..000000000000 --- a/docs/changes/newsfragments/8644.improved +++ /dev/null @@ -1,3 +0,0 @@ -The type annotations of ``Station.load_all_instruments`` now accept calling it without -arguments or with only one of ``only_names`` and ``only_types``. Previously these valid -calls matched none of the overloads and were rejected by static type checkers. diff --git a/docs/changes/newsfragments/8644.improved_driver b/docs/changes/newsfragments/8644.improved_driver deleted file mode 100644 index 34dad960ed04..000000000000 --- a/docs/changes/newsfragments/8644.improved_driver +++ /dev/null @@ -1,6 +0,0 @@ -``AlazarTechATS.acquire`` is now annotated to accept any ``AcquisitionInterface`` as -``acquisition_controller``, not only an ``AcquisitionController``, matching what it supports -at runtime. ``AcquisitionController`` now passes its type parameter on to -``AcquisitionInterface``, so the return type of ``acquire`` is inferred from the -``post_acquire`` return type of the controller. Subclasses of ``AcquisitionController[T]`` -whose ``post_acquire`` does not return ``T`` will now be reported by static type checkers. diff --git a/docs/changes/newsfragments/8644.improved_driver.1 b/docs/changes/newsfragments/8644.improved_driver.1 deleted file mode 100644 index 835b4cd0dfa6..000000000000 --- a/docs/changes/newsfragments/8644.improved_driver.1 +++ /dev/null @@ -1,3 +0,0 @@ -Added missing type annotations to the optional arguments of the Keysight B1500 -``MessageBuilder`` methods ``ercmaio``, ``lst_query``, ``pch_query``, ``sprm``, ``tc`` -and ``wat``. diff --git a/docs/changes/newsfragments/8644.underthehood b/docs/changes/newsfragments/8644.underthehood deleted file mode 100644 index 45edb21b0cfe..000000000000 --- a/docs/changes/newsfragments/8644.underthehood +++ /dev/null @@ -1,3 +0,0 @@ -The minimum supported version of ``typing_extensions`` is now 4.12.0. Older versions do not -apply the default of a ``TypeVar``, so subscripting a parameter with only its value type at -runtime, e.g. ``Parameter[int]``, failed with ``TypeError: Too few arguments`` on Python 3.12. diff --git a/docs/changes/newsfragments/8647.improved_driver b/docs/changes/newsfragments/8647.improved_driver deleted file mode 100644 index ecb57a9b4c39..000000000000 --- a/docs/changes/newsfragments/8647.improved_driver +++ /dev/null @@ -1 +0,0 @@ -The Galil DMC-41x3 driver now retries empty or malformed controller replies when polling motion status and axis positions, and waiting for motion to complete is bounded by a timeout (300 s by default) that raises ``TimeoutError``. Each motion-status query is limited by the remaining motion timeout, with millisecond resolution, and restores the original I/O timeout afterward. Connecting now falls back through the ``--direct -s ALL`` and ``-s ALL`` options before using the bare address. Pressing Ctrl-C while waiting for motion now calls ``abort()`` and then turns the axes off with ``MO``.