Repository navigation
Changelog
dwave-cloud-client 0.14.6 ➞ 0.14.8
New Features
-
Extend
QCDLSolver'ssample_qcdlandupload_qcdlto accept QCDLs
expressed as a Pydantic model (dwave.gate.qcdl.Qcdl). -
Use open enums for SAPI-returned constants to ensure additive SAPI
changes don't crash client-side response validation. -
Allow unknown fields on models for SAPI-returned responses to allow
additive SAPI changes.
dwave-gate 0.3.5 ➞ 0.6.0
Prelude
First release of dwave-gate with quantum circuit description language
(QCDL) support. QCDL is an embedded domain-specific language, using
Python as its host language, for generating quantum circuit programs via
the @qcdl decorator.
New Features
-
Add the QCDL module (
dwave.gate.qcdl), which includes the@qcdl
decorator andQCDLCircuitfor building programs, a library of gates
and measurement operations, real-time control flow (If/Else,
While,DoWhile,For,Repeat, etc), and classical registers
(Register,FixedPointRegister). -
Add
dwave.gate.results.Result, a Pydantic model that decodes a
solver's answer data, exposing measurements and records, and providing
get_memory,get_counts, andrun_timefor retrieving per-shot
outcomes, sample counts, and run times. -
Add
dwave.gate.results.YieldHandling, an enumeration of strategies
(only_post_selected_counts,renormalize_distribution, and
renormalize_distribution_or_raise) for handling shots with
end-of-line measurement errors (splats) when building counts. -
Add
dwave.gate.utils.tunable_noise_model_helpers, providing
create_oneq_gate_noiseandcreate_twoq_gate_noisehelpers for
building tunable single- and two-qubit gate noise models. -
Add
dwave.gate.qcdl.LeapQCDLSimulator, a client for running QCDL
programs on the Dual-Rail simulator hosted in the Leap service. By
default, it selects the latest accessible QCDL software solver, with
solver selection and connection configurable via standard
dwave.cloud.client.Clientoptions. Itsrunmethod submits a QCDL
program together with solver-specific job parameters and returns the
decodeddwave.gate.results.Resultin aconcurrent.futures.Future. -
QCDLModule.one_to_allnow accepts any group of qubits as its
destinations: aScope, a singleQCDLModule, or a sequence of
either. Qubits are deduplicated by name, preserving the order in which
they are given. -
Validate the arguments of the
@qcdldecorator and the signature of
the function it decorates. Because qubits are injected by name, a
parameter that is not aq<N>previously received nothing and
Python's own error named only the parameter, giving no hint that
qubits were involved, and a generated qubit with no parameter to
receive it was dropped from the program silently. Both now raise and
explain theq<N>rule and which qubits were supplied.num_qubits
is checked when the decorator is applied, including a bare@qcdl
that would otherwise be passed the decorated function as the qubit
count.
Upgrade Notes
-
Rename QCDL modules to drop the redundant
qcdl_prefix:
dwave.gate.qcdl.qcdl_circuitis nowdwave.gate.qcdl.circuit,
dwave.gate.qcdl.qcdl_modelsis nowdwave.gate.qcdl.models, and
dwave.gate.qcdl.qcdl_objectsis nowdwave.gate.qcdl.objects. Names
re-exported fromdwave.gate.qcdlitself, such asQCDLProgramand
QCDLStatement, are unaffected. -
Move
LeapQCDLSimulatorfromdwave.gate.qcdl.leapto
dwave.gate.leap, and the register mirroring helpers from
dwave.gate.qcdl.implementationstodwave.gate.implementations.
Neither module defines the QCDL language itself, so both now sit
alongsidedwave.gate.results.LeapQCDLSimulatoris no longer
re-exported fromdwave.gate.qcdl; use
from dwave.gate.leap import LeapQCDLSimulator. -
Rename
dwave.gate.qcdl.utilstodwave.gate.qcdl._utilsto mark it
private. It contains internal helpers only, and its name collided with
the publicdwave.gate.utilspackage. -
Move
print_qcdlanddisplay_qcdl, together with
blacken_qcdl_str, fromdwave.gate.qcdlto
dwave.gate.utils.display. They are no longer exported from
dwave.gate.qcdl; use
from dwave.gate.utils.display import print_qcdl. Importing
dwave.gate.qcdlno longer imports the optionalblackandIPython
dependencies. -
The
Result.get_memoryandResult.get_countsmethods now default to
the measured register rather than to every qubit in the circuit, so
bitstrings no longer include a paddedunmeasured_valuefor a qubit
that was never measured. Passregister=get_default_register(...)
explicitly to keep the previous, padded register.
Bug Fixes
-
Fix broken documentation references to
dwave.gate.results.Resultand
dwave.gate.results.YieldHandling, which were documented under
dwave.gate, and todwave.gate.qcdl.operations.measure. Document
QCDLModuleNameunderdwave.gate.qcdl.models, where it is defined. -
Fix
QCDLModule.one_to_allraising anAttributeErrorwhen
destinationsis a sequence of qubits, such as theqcdl_modulesof
aScope, rather than theScopeitself. -
The
Result.get_memoryandResult.get_countsmethods no longer pad
unmeasured qubits into the bitstring by default, where such a qubit
was previously read as an outcome. They default to
Result.get_measurements_registerand fall back to every qubit only
when nothing was measured at all. -
The
YieldHandling.applymethod now accepts every key format that the
count_measurementsfunction produces. Testing keys for a splat
raisedTypeErroron the integer keys produced forkey_format=None,
and the all-erasures fallback key is now built only for string keys,
which are the only ones that can hold a splat. -
The
YieldHandling.applymethod now raisesValueErrorfor an empty
distribution, rather than theStopIterationthat its fallback key
raised for a counts dict that post selection had emptied.
dwave-graphs 1.0.0 ➞ 1.1.0
New Features
-
Add graph automorphism algorithms, including functions for computing
Schreier representations, sampling automorphisms, and determining
vertex and edge orbits. -
Extend automorphism support to Frucht, Shrikhande, and random regular
graphs, with tests to verify correctness against known counts.
dwave-optimization 0.7.1 ➞ 0.7.3
New Features
-
Add C++
type_list::add(which adds a new type to the type list),type_list::equals(which can check if two type lists are contain the same types) andtype_list::update/type_list::vereinigungwhich allow you to take the union of two or more type lists (similar to Python'sset.update(). -
Add
DTypestype_list. -
Add
DTypeLikeconcept for references andconst-qualified types. -
Add C++
Node::num_listeners()method. -
Add C++
Graph::constants()method. -
Add
MatrixMultiplyNode::operands()method. -
Add
Graph::remove_redundant_nodes()method. See #563. -
Add
Model.remove_redundant_symbols()method. See #563. -
Add
Node::take_successors()method. -
Allow constructing a submatrix permutation.
-
Add C++
Graph::clear_constraints()method. -
Add
ArraySymbolandSymboltodwave.optimization.typing. See #603. -
C++
DisjointBitSetsNode::get_containing_set_index()now accepts aconst State&. This allows the containing set of an element to be queried when only a const state is available. -
Add a C++
Graph::propose(State&)overload that propagates and commits. -
Add checkpointing to all decision nodes. See #510.
-
Add
Graph::pop_decision()andGraph::swap_decisions()methods. -
Add C++
IsDisjointCoverNodenode/symbol, which computes whether a collection of lists are disjoint and cover some primary set. -
Add
IsDisjointCoversymbol andis_disjoint_coverfunction. -
Use SciPy's
scipy.optimize.linprog()function to calculate the state of theLinearProgramsymbol when SciPy is available. See #599. -
Accept
ArraySymbolLikeinputs tolinprog()function. -
Add
dependencies-oldestanddependencies-all-oldestdependency groups. -
Build wheels for Python 3.15.
-
Add
keepargument forGraph::remove_unused_nodes().
Upgrade Notes
-
Rename C++
Graphclass's protected members to have a trailing underscore. See #398. -
Remove C++
Graph::add_successor()method -
The
DTypeconcept is no longer satisfied forconsttypes. -
Return
std::shared_ptr<const bool>fromNode::expired_ptr()rather thanstd::shared_ptr<bool>. -
Remove
AccumulateZipNode::initialattribute and replace it withAccumulateZipNode::initial()method. -
Require
Numpy>=2. -
Remove the
testdependency group.
Bug Fixes
-
Fix
FormatCharacter::signedlonglong_to correctly useqrather thanQ. See #406. -
Include
<cassert>in thestate.hppheader. -
Ensure that serialization supports a mix of initialized and uninitialized decision states. Specifically,
DisjointListsandDisjointBitSetswould raise an error when deserializing a model with not all states initialized. See #585. -
Prevent using
Input.set_state()when the model is not locked. Previously it would raise a segmentation fault. See #584. -
Modified
NumberNode::get_value()arguments so that it accepts aconst stateas opposed to a non-conststate. -
Add
ShapeLiketodwave.optimization.typing.__all__.
dwave-system 1.35.0 ➞ 1.36.0
New Features
- Support
dwave-optimization>=0.1.0,<0.9.
Package versions
dimod==0.12.22
dwave-cloud-client==0.14.8
dwave-gate==0.6.0
dwave-graphs==1.1.0
dwave-hybrid==0.6.16
dwave-inspector==0.5.5
dwave-networkx==0.8.19
dwave-optimization==0.7.3
dwave-preprocessing==0.6.11
dwave-samplers==1.8.0
dwave-system==1.36.0
minorminer==0.2.22
penaltymodel==1.3.0
Package extras
pytorch =
dwave-pytorch-plugin==0.4.0
qiskit =
dwave-qiskit-plugin==0.2.0
all =
dwave-ocean-sdk[pytorch, qiskit]