QCDrivers 🔧
This repository collects and shares QCoDeS drivers that are not available through qcodes or the contrib drivers repository. It may also contain proprietary drivers written by lab members of SQUAD Lab, including drivers developed in collaboration with partner companies.
Installation
QCDrivers requires Python 3.13 and can be installed with either uv or pip:
uv add qcdrivers
pip install qcdrivers
Layout
The drivers are grouped by manufacturer. Hardware-triggered (buffered) sweep
nodes can be found under buffered/, where they follow the same grouping.
src/qcdrivers
├── basel/ amplifiers, dacs
├── bluefors/ fridges
├── entropy/ adr, heater
├── harvard/ dacs
├── keysight/ dmms, vna
├── qdevil/ qdac2
├── rwth/ mux
├── squad/ curry, helpers, mux
├── stanford/ vccs
└── buffered/
├── basel
├── keysight
├── qdevil
├── squad
└── zurich
Please follow this structure when adding a new driver, using the existing drivers
as a reference. Each package re-exports its public classes and declares __all__
to keep imports short and convenient.
Usage
from qcdrivers.basel.dacs import BaselDac2
from qcdrivers.buffered.keysight import NodeKeysightDMM
from qcdrivers.buffered.qdevil import NodeQDAC2
from qcdrivers.keysight.dmms import Keysight34461A
The drivers can be imported directly from their category package, as shown above. There is no need to import them from their individual module files.
The complete list of parameters for an instrument can be displayed through QCoDeS:
dac = BaselDac2("dac", address="...")
print(dac.parameters)
Buffered nodes
A buffered node wraps a QCoDeS instrument and provides the interface used by a
Qanary buffered sweep: register_sweep, register_dependent, run_sweep,
fetch, abort, and toplevel.
Import buffered nodes from their manufacturer package, for example
qcdrivers.buffered.qdevil or qcdrivers.buffered.keysight.
Development
To set up a local development environment, clone the repository and install the
development dependencies with uv:
git clone https://gitlab.com/squad-lab/qcdrivers
cd qcdrivers
uv sync --extra dev
uv run pre-commit install
| Task | Command |
|---|---|
| Run the tests | uv run pytest |
| Lint (+ import sorting) | uv run ruff check . |
| Format | uv run ruff format . |
Contributing
To contribute to the repository, please follow the directory structure above and open a merge request. Drivers should be well documented and, where possible, tested without hardware before submission. Please see the contributing guide for the complete development and submission process. Everyone is welcome to report bugs or request features by opening an issue.
Release files for qcdrivers 0.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| qcdrivers-0.2.2.tar.gz | 572.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| qcdrivers-0.2.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 713.6 kB
Release files / qcdrivers-0.2.2.tar.gz
| Download URL | qcdrivers-0.2.2.tar.gz |
|---|---|
| Size | 572.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6df28ab92d9debcf0904856ac4c6250cb449d406cdbb68e2ae5b2a509fb91d0f
|
|
BLAKE2b-256 checksum How to use checksums |
03f2a73c0dbfb9ab0e8d46379dccdd743bea37dd89063e2c6157c9703ef13f80
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / qcdrivers-0.2.2-py3-none-any.whl
| Download URL | qcdrivers-0.2.2-py3-none-any.whl |
|---|---|
| Size | 141.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
177b1c2b9982c2c5f37f391f8a9ed36e5b72edc26170c46e9119e2262990d51d
|
|
BLAKE2b-256 checksum How to use checksums |
68186d11b09ff9f26c94dcd34b2c12f8df676fe6d795b5ee6cbe82aefe89296b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|