Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,14 @@ and this project follows versions of format `{year}.{month}.{patch_number}`.

## [Unreleased]

## [0.4.1] - 2026-08-07

### Fixed

- `qpi-driver/py`: a `quantify` tuner or executor creates its data directory's parents.
quantify-core's own `mkdir` is not recursive, so `bin/data` in a fresh checkout
failed at construction.

## [0.4.0] - 2026-08-06

### Added
Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
.PHONY: test-dashboard test-docs test-docs-static test-docs-snippets test-docs-example test-docs-site all build build-dashboard test test-js-driver test-go-driver lint lint-go lint-py lint-js lint-dashboard lint-go-client lint-py-client lint-js-driver lint-go-driver format format-go format-py format-js format-dashboard format-go-client format-py-client format-js-driver format-go-driver package package-driver package-driver-js package-driver-go package-js package-py package-go publish-js publish-driver-js publish-py clean venv-check test-e2e-dashboard

VERSION ?= 0.4.0
VERSION ?= 0.4.1
UV := $(shell command -v uv 2> /dev/null || echo "$$HOME/.local/bin/uv")

# Scratch locations for the documentation checks. Under bin/, which is already
Expand Down
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,12 +77,12 @@ The server is available as a single executable binary, as well as native OS pack
#### Standalone Binary (macOS & Linux)
Download the binary for your platform, make it executable, and run:
```bash
# macOS (replace 0.4.0 with the version you wish to install)
curl -LO https://github.com/sopherapps/qpi/releases/download/v0.4.0/qpi-0.4.0-darwin-amd64
chmod +x qpi-0.4.0-darwin-amd64 && mv qpi-0.4.0-darwin-amd64 qpi
# macOS (replace 0.4.1 with the version you wish to install)
curl -LO https://github.com/sopherapps/qpi/releases/download/v0.4.1/qpi-0.4.1-darwin-amd64
chmod +x qpi-0.4.1-darwin-amd64 && mv qpi-0.4.1-darwin-amd64 qpi

# Linux (standalone binary)
curl -L https://github.com/sopherapps/qpi/releases/download/v0.4.0/qpi-0.4.0-linux-amd64.tar.gz | tar -xz
curl -L https://github.com/sopherapps/qpi/releases/download/v0.4.1/qpi-0.4.1-linux-amd64.tar.gz | tar -xz

# Start the server
./qpi serve
Expand All @@ -91,8 +91,8 @@ curl -L https://github.com/sopherapps/qpi/releases/download/v0.4.0/qpi-0.4.0-lin
#### Native Linux Packages (Ubuntu, Debian, Fedora, Alpine)
For Debian/Ubuntu, download and install the `.deb` package:
```bash
wget https://github.com/sopherapps/qpi/releases/download/v0.4.0/qpi_0.4.0_amd64.deb
sudo apt install ./qpi_0.4.0_amd64.deb
wget https://github.com/sopherapps/qpi/releases/download/v0.4.1/qpi_0.4.1_amd64.deb
sudo apt install ./qpi_0.4.1_amd64.deb
```
*(Note: Installing the package automatically registers and starts `qpi.service` under systemd (or OpenRC on Alpine) to run the server in the background on port `8090`)*

Expand Down
4 changes: 2 additions & 2 deletions qpi-client/js/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion qpi-client/js/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "qpi-client",
"version": "0.4.0",
"version": "0.4.1",
"description": "JavaScript/TypeScript client SDK for the QPI quantum computing platform",
"main": "dist/index.js",
"types": "dist/index.d.ts",
Expand Down
2 changes: 1 addition & 1 deletion qpi-client/py/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"

[project]
name = "qpi-client"
version = "0.4.0"
version = "0.4.1"
description = "Python client SDK for the QPI quantum computing platform"
readme = "README.md"
license = {text = "MIT"}
Expand Down
2 changes: 1 addition & 1 deletion qpi-client/py/qpi_client/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
try:
__version__ = importlib.metadata.version("qpi-client")
except importlib.metadata.PackageNotFoundError:
__version__ = "0.4.0"
__version__ = "0.4.1"

from qpi_client.client import QPIClient
from qpi_client.provider import QPIBackend, QPIJob
Expand Down
2 changes: 1 addition & 1 deletion qpi-client/py/uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion qpi-driver/go/cli/cli.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ import (

// Version is the CLI version; overridable at build time with
// -ldflags "-X github.com/sopherapps/qpi/qpi-driver/go/cli.Version=…".
var Version = "0.4.0"
var Version = "0.4.1"

// commonFlags are the universal options `start` shares across every operation,
// mirroring the Python CLI. A device's own settings go through -o instead.
Expand Down
4 changes: 2 additions & 2 deletions qpi-driver/js/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion qpi-driver/js/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "qpi-driver",
"version": "0.4.0",
"version": "0.4.1",
"description": "TypeScript/JavaScript SDK for building QPI quantum platform drivers",
"main": "dist/index.js",
"types": "dist/index.d.ts",
Expand Down
2 changes: 1 addition & 1 deletion qpi-driver/py/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"

[project]
name = "qpi-driver"
version = "0.4.0"
version = "0.4.1"
description = "Quantum Processing Interface (QPI) QPU Driver"
readme = "README.md"
requires-python = ">=3.12,<3.13"
Expand Down
2 changes: 1 addition & 1 deletion qpi-driver/py/qpi_driver/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
try:
__version__ = importlib.metadata.version("qpi-driver")
except importlib.metadata.PackageNotFoundError:
__version__ = "0.4.0"
__version__ = "0.4.1"

from qpi_driver.builtins import (
DeviceBuilder,
Expand Down
2 changes: 1 addition & 1 deletion qpi-driver/py/qpi_driver/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,7 @@ def _get_version() -> str:
try:
return importlib.metadata.version("qpi-driver")
except importlib.metadata.PackageNotFoundError:
return "0.4.0"
return "0.4.1"

def _banner():
"""Renders the banner at the top of the CLI"""
Expand Down
19 changes: 17 additions & 2 deletions qpi-driver/py/qpi_driver/compat/quantify.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import logging
from enum import Enum
from pathlib import Path
from typing import Any, TypeAlias

from qpi_driver.compat.shared import BasicCompatClass
Expand All @@ -14,7 +15,7 @@
from qcodes.instrument.channel import InstrumentChannel
from qcodes.instrument.parameter import ManualParameter
from qcodes.parameters import ParameterBase
from quantify_core.data.handling import set_datadir
from quantify_core.data.handling import set_datadir as _set_datadir
from quantify_scheduler import Operation, Schedule
from quantify_scheduler.backends.graph_compilation import SerialCompiler
from quantify_scheduler.backends.qblox_backend import (
Expand Down Expand Up @@ -69,7 +70,7 @@
logging.debug(f"failed importing from quantify.compat {exp}")
IS_QUANTIFY_INSTALLED: bool = False

def set_datadir(*args, **kwargs):
def _set_datadir(*args, **kwargs):
pass

def field_validator(*args, **kwargs):
Expand Down Expand Up @@ -168,3 +169,17 @@ class Instrument(BasicCompatClass):
@classmethod
def close_all(cls):
pass


def set_datadir(datadir: Any = None) -> None:
"""quantify-core's ``set_datadir``, with the directory created first.

Its own ``mkdir`` is not recursive, so pointing it anywhere whose *parent* does
not exist yet dies with a ``FileNotFoundError`` naming the child — `bin/data` in
a checkout where nothing has run `make build`, or a service's data directory
before its first start. The path is already vetted as safe by
:func:`~qpi_driver.paths.as_safe_dir` wherever it came from an ``-o`` option.
"""
if datadir is not None:
Path(datadir).mkdir(parents=True, exist_ok=True)
_set_datadir(datadir)
4 changes: 2 additions & 2 deletions qpi-driver/py/tests/test_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ def test_cli_version():
try:
expected_version = importlib.metadata.version("qpi-driver")
except importlib.metadata.PackageNotFoundError:
expected_version = "0.4.0"
expected_version = "0.4.1"
assert expected_version in result.stdout


Expand Down Expand Up @@ -418,7 +418,7 @@ def test_version_falls_back_when_the_package_is_not_installed():
"version",
side_effect=importlib.metadata.PackageNotFoundError("qpi-driver"),
):
assert _get_version() == "0.4.0"
assert _get_version() == "0.4.1"


def test_cli_process_requires_token():
Expand Down
2 changes: 1 addition & 1 deletion qpi-driver/py/uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions qpi-ui/internal/dashboard/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion qpi-ui/internal/dashboard/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "dashboard-src",
"private": true,
"version": "0.4.0",
"version": "0.4.1",
"type": "module",
"scripts": {
"dev": "vite",
Expand Down
2 changes: 1 addition & 1 deletion qpi-ui/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import (
//go:embed all:internal/dashboard/dist
var dashboardFS embed.FS

var Version = "v0.4.0"
var Version = "v0.4.1"

func main() {
app := pocketbase.New()
Expand Down
2 changes: 1 addition & 1 deletion qpi-ui/pkg/qpi.wxs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Name="QPI Server" Id="*" UpgradeCode="32AAA554-16F5-420B-B646-6A57FF07D1B0" Language="1033" Codepage="1252" Version="0.4.0" Manufacturer="SopherApps">
<Product Name="QPI Server" Id="*" UpgradeCode="32AAA554-16F5-420B-B646-6A57FF07D1B0" Language="1033" Codepage="1252" Version="0.4.1" Manufacturer="SopherApps">
<Package InstallScope="perMachine" Id="*" Keywords="Installer" Description="QPI Server Installer" Compressed="yes" />
<Media Id="1" Cabinet="qpi.cab" EmbedCab="yes" />

Expand Down
Loading