RELEASE: labscript-suite 3.3.0

10 views
Skip to first unread message

dihm....@gmail.com

unread,
Dec 10, 2025, 5:04:29 PM (6 days ago) Dec 10
to the labscript suite

Dear labscript suite community,


labscript-suite 3.3.0 has been released! You may update to it by installing from pip or the labscript-suite conda channel. As always, you can also get these updates by pulling them from the various github repositories. Many of these versions have been live for some time since this release cycle has taken quite some time.


The primary fix of this release is ensuring that all elements of the suite correctly report their versions when in development mode (using the setuptools_scm library). Up to now, different modules had slightly different behavior that could prevent version pins from resolving correctly when local changes were made. As usual, there have also been a number of updates to the build workflows to keep the docs and releases working as well as some small bugfixes.


There has also been a significant code refactoring of both labscript and lyse.The changes should be transparent under standard usage, so please raise an issue if something stops working.


Lyse plot windows now remember their location on screen! So re-opening lyse and running the same analysis script will put the plot windows in whatever location they were when lyse was closed. This information is stored in ini files in the app_config directory. Deleting those files will clear the memory, if needed for some reason.


Official support for python < 3.8 is dropped. Going forward, labscript-c-extensions (which provides pre-built binaries) will only be built for active python releases.


Please report any bugs or issues you encounter.


As always, great thanks to the contributors, testers, and bug reporters that made these updates possible! If you have developed a useful feature for labscript, please consider reaching out to us. We are happy to advise on if/how to incorporate into mainline labscript for the benefit of the wider community.


Finally, there are a few items on the immediate horizon (which hopefully won’t take a year to finish). If something on this list interests you, reach out! Extra help will make things go faster.

  • PySide6 support is nominally finished and going through final tests. PySide6 actually respects OS theming, meaning that dark mode will be an option!

  • With the lyse refactor done, work on lyse global variables can begin in earnest.

  • We are looking to make a major change to how labscript devices are handled. Namely, going forward we would like to use a python namespace package for user contributed devices. This change will distribute device code into individual github repositories. This will greatly lower the bar for making a new device that is easily shared with others since it won’t need to be merged into the mainline repository. It also will allow for individual devices to define their dependencies. To participate in the discussion, please see the github issue. The proposal going forward will be to have three parent packages:

    • Labscript-devices: Location for core devices that are maintained by the labscript suite (pulseblasters, novatech DDSs, cameras, NI DAQs, Prawns, etc). It is likely some of these items could be moved to the contrib repository below (particularly the cameras).

    • Labscript-legacy-devices: Place to move old, unsupported devices that currently clutter labscript-devices (alazar tech board, phase matrix synth, RFblaster, opalkellyXEM3001, lightcrafterDMD, pineblaster, PythonCamera, imaqdx_server). While the intention is for these devices to continue to work as is (but with a different import statement), they will be treated as unsupported.  If you use something on this list, you should probably speak up.

    • Labscript-contrib-devices: A namespace package that will allow devices stored in other github repos to be installed within the same namespace. The general expectation going forward will be that user contributed devices will use this mechanism with the repos owned by their creators. Devices with broad adoption here could be moved into labscript-devices.


Changes in this release (by component) are:


Labscript (3.4.0):

  • Fix build workflows (#106, #107, #113 dihm)

  • Move project metadata to pyproject.toml standard (#110, dihm)

  • Source code refactor that breaks up the code base into logical units in different files, along with a few smaller bugs and modernizations (#102, philipstarkey)

  • Break dependency on runmanager in favor of labscript_utils (#111, dihm)


Labscript-devices (3.3.0):

  • Fix build workflows (#113, #114, #127 dihm)

  • Break dependency on runmanager (#108, dihm)

  • Add binary programming support to PrawnBlaster, greatly speeding up programming times (#112, carterturn)

  • TekScope bugfix (#118, ispielma)

  • Move project metadata to pyproject.toml standard (#120, dihm)

  • Update SpinnakerCamera SDK compatibility (#116, jacksulli)

  • Deprecated the PineBlaster in favor of the PrawnBlaster (#121, philipstarkey)

  • Added support for the PrawnDO, the digital output companion to the PrawnBlaster (#115, dihm)

  • Upgrade prawn devices to support Pico2-based systems (#132, Json-To-String)


BLACS (3.2.3, 3.2.2, 3.2.1):

  • Fix build workflows (#101, #102, #103, #108 dihm)

  • Move metadata to pyproject.toml standard (#104, dihm)

  • Fix issue where BLACS fails to open on first run, even if connection_table is present (#107, Json-To-String)


Runmanager (3.3.0, 3.2.2 & 3.2.1):

  • Fixed build workflows (#111, #112, #113, #120 dihm)

  • Deprecate runmanager.get_shot_globals() in favor of labscript_utils.shot_utils.get_shot_globals() (#110, dihm)

  • Move project metadata to pyproject.toml standard (#116, #117, dihm)

  • Remove deprecated synchronous compiler functions (#115, dihm)

  • Update github release workflow (#120, dihm)

  • Read the Docs fixes (#121, #122, dihm)


Lyse (3.3.0):

  • Fixed build workflows (#111, #116, #117, #122 dihm)

  • Fix Qt deprecation (#112, dihm)

  • Fix unlinked quit menu (#113, ispielma)

  • Fix invalid docstring warnings (#115, ispielma)

  • Move project metadata to pyproject.toml standard (#120, dihm)

  • Read the docs fixes (#124, #125, dihm)

  • Source code refactor that breaks up code base into logical units (#119, #126, ispielma, dihm)

  • Preserve window geometry for plot windows (#128, dihm)

  • Remove star imports from documentation (#127, dihm)

  • Update Readme GUI screenshot (#130, dihm)


Runviewer (3.2.4, 3.2.3, 3.2.2 & 3.2.1):

  • Fix build workflows (#58, #60, #62, #64, #66 dihm)

  • Type casting fixes for compatibility with Qt and PyQtGraph (#56, #57, carterturn, dihm)

  • Improved error logging when loading shots (#59, dihm)

  • Correctly remove shot from “select markers” when shot is removed (#61, carterturn)

  • Move project metadata to pyproject.toml standard (#65, dihm)

  • Read the docs upgrades (#67, dihm)


Labscript_utils (3.4.1, 3.4.0):

  • Fix build workflows (#99, #103, #102, dihm)

  • Fix imp module deprecation in python 3.12 (#101, #105, #106, ispielma, dihm)

  • Move project metadata to pyproject.toml standard (#107, #108, dihm)

  • Fix incompatibility with zmq=25 (#110, dihm)

  • Fix inverted DO handling in set_DO (#109, carterturn)

  • Add options to compile a default connection table and rename default apparatus in the labconfig to labscript-profile-create command (#112, NMFolks, dihm)

  • Make Splash widget compatible with PySide6 (#111, chrisjbillington)

  • Fix read the docs build (#115, dihm)


Labscript_c_extensions (1.2.1 & 1.2.0):

  • This package provides the compiled backends for the suite so that no other module requires a compiler to perform an editable install.

  • Modernized build and release workflows to be more robust and cover more platforms and pythons. Only non end-of-life pythons will receive pre-built wheels from now on.

  • If your platform or python are no longer supported, please consider upgrading. If that isn’t possible, open an issue on github or build this package locally.


dihm....@gmail.com

unread,
Dec 11, 2025, 9:09:11 AM (5 days ago) Dec 11
to the labscript suite
I completely forgot. The lyse refactor contains a small change to how analysis scripts work that is potentially breaking for user analysis scripts.

Each single shot script defines a `path` variable which contains the full path to the shot to be analyzed.

- Old behavior is for this `path` variable to be defined globally within the script namespace.
- New behavior is for this to be defined within the lyse package namespace (ie `lyse.path`)

If your scripts use `from lyse import *`, everything will continue to work.

If your scripts use `import lyse` or `from lyse import data, Run` (as they really should), you will need to change how `path` is accessed. For the former, replace `path` with `lyse.path`. For the latter, add `from lyse import path, data, Run`.

This change was made to better follow best practices by removing some of the magic and ensuring that critical variable definitions are clearly qualified as to where they are from.

-David

Reply all
Reply to author
Forward
0 new messages