Skip to content

Releases: dwavesystems/dwave-ocean-sdk

8.1.0

06 Dec 17:38
bbdec03
Compare
Choose a tag to compare

Highlights

  • Add Python 3.13 support and drop Python 3.8 support.

  • Remove dwave-drivers and dwave.system.VirtualGraphComposite.

  • Drop {greedy,neal,tabu} namespaces in favor of dwave.samplers.{greedy,neal,tabu}.

  • dwavebinarycsp is deprecated as of this release and will be removed from dwave-ocean-sdk version 10.

Changelog

dimod 0.12.17 ➞ 0.12.18

New Features

  • Add SampleSet.wait_id() as a proxy to the underlying QPU result
    future, when sample set is constructed from such a future. See
    #1392.
  • Add multi_knapsack() generator function to dimod.generators.
  • Add quadratic_knapsack() generator function to dimod.generators.

Upgrade Notes

  • Drop support for Python 3.8.

Bug Fixes

  • Fix warnings caused by using deprecated type aliases.

dwave-cloud-client 0.13.1 ➞ 0.13.2

New Features

  • Add Python 3.13 support.

  • Add --raw output mode to get-token CLI commands. See #598.

Upgrade Notes

  • Remove support for dimod 0.9.x. Upgrade dimod to 0.10.0+. See #595.

  • Upgrade your python to 3.9+. We no longer support python 3.8 and below.

Deprecation Notes

  • Client utility function dwave.cloud.coders.bqm_as_file() is deprecated in favor of dimod.BQM.to_file() (available in dimod 0.10.0+) and will be removed in dwave-cloud-client 0.15.0.

Bug Fixes

  • Update sample set creation in dwave.cloud.computation.Future to support dimod 0.12.18+. Previously, wait_id() method used to be added to the from_future-created sample sets in the cloud-client, and now the SampleSet interface propagates wait_id from the future by default. See dimod#1392 and dwave-system#540.

dwave-gate 0.3.2 ➞ 0.3.3

New Features

  • Support Python 3.13

Upgrade Notes

  • Remove support for Python 3.8

dwave-hybrid 0.6.12 ➞ 0.6.13

New Features

  • Add Python 3.13 support. See #298.

  • Add support for zephyr lattices on zephyr solvers. Improve handling of unyielded edges, improving performance for lower yield processors. See #297.

Fixes

  • Switch to dwave-samplers. See #299.

  • Fix flaky and slow tests. See #300 and #301.

Upgrade Notes

  • Drop Python 3.8 support and refresh CI. #298.

  • Drop support for dimod<0.12 and dwave-systems<1.16. See #299 and #301.

dwave-inspector 0.5.1 ➞ 0.5.2

New Features

  • Add support for Python 3.13.

Upgrade Notes

  • Drop support for Python 3.8.

  • Drop support for dwave-cloud-client<0.12. See #183.

dwave-networkx 0.8.15 ➞ 0.8.16

New Features

  • Add four colorings for Zephyr and Pegasus, and a two coloring for Chimera. See #243.

  • Add Python 3.13 support. See #246.

Bug Fixes

  • Fix documentation warnings. See #241.

  • Fix Zephyr layout coords. See #236.

  • Fix docstrings for graph relabeling and sublattice mapping functionality missing from reference documentation. See #238.

Upgrade Notes

  • Drop Python 3.8 support. See #246.

dwave-optimization 0.3.0 ➞ 0.4.2

New Features

  • Add capacitated vehicle routing problem with time windows generator.
    See #104.

  • Reduce the number of symbols in the model returned by
    job_shop_scheduling() generator.

  • Add Array::integral(), Array::max(), and Array::min()
    overloads for all existing C++ nodes.

  • Add C++ is_integer() function.

  • Support Python 3.13.

  • Model.add_constraints() now returns the symbol for the constraint.

  • Fully support scalar (0-dimensional) indices for advanced indexing
    operations, e.g. A[i, :, j, :] where i and j are nodes with
    scalar output. Previously, this would work only if the final output
    of the indexing operation was also scalar.

  • Add C++ DisjointListsNode::set_state() method which allows for
    setting the state of disjoint lists directly.

  • Add C++ XorNode and Python Xor symbol. Xor propagates the
    logical exclusive-or of its two predecessors element-wise. See #125.

  • Add C++ AnyNode. See #148.

  • Add Any symbol and ArraySymbol.any() method. See #148.

  • Change the formulation of the job_shop_scheduling() generator to
    remove redundant list variables and replace them with a disjunctive
    non-overlapping constraint between each pair of jobs on the
    machines.

  • Raise clearer error messages when trying to use out-of-bounds
    indices.

  • Add C++ Graph::remove_unused_nodes() method to remove nodes that
    are not used in the objective or constraints. See #41.

  • Add Python Model.remove_unused_symbols() method to remove nodes
    that are not used in the objective or constraints. See #41.

  • Improve the move/copy behavior of C++ ArrayIterator.

  • Add C++ index raveling-unraveling utilities functions.

  • Add C++ PartialReduceNode.

  • Add Python PartialSum symbol and added axis keyword in
    ArraySymbol.sum() function.

  • Implement C++ BinaryOpNode::sizeinfo() overload.

  • Add C++ ModulusNode and Python Modulus symbol. Modulus
    propagates the modulus of its two predecessors element-wise. Modulus
    symbols may be created with either the % operator or the mod()
    function in dwave.optimization.mathematical. See #156.

Upgrade Notes

  • Using advanced indexing nodes with indexing arrays that have a
    higher dimension than one (e.g. A[:, i, :, j] where i and j
    are 2d arrays) has been disabled. Previously, it was possible to
    construct models that used this functionality, but the behavior of
    the model during state initialization and propagation may not have
    been correct.

  • Remove redundant list variables in the job_shop_scheduling()
    generator and add disjunctive non-overlapping constraints between
    each pair of jobs on the machines.

  • Drop support for Python 3.8.

  • Change C++ ArrayIterator to no longer have ownership of its fill
    value when masked.

  • Remove vartypes.hpp. The Vartype enum was not used by any other
    classes or functions.

Bug Fixes

  • Fix combined indexing. Previously indexing an array symbol by a
    mixture of arrays, integers, and non-empty slices would always
    result in an error.

  • Update AdvancedIndexingNode to check the indices of its indexing
    arrays to prevent out-of-bounds access.

  • Fix the case of using scalar indices in an advanced indexing
    operation where the indices were not grouped, e.g. A[:, i, :, j],
    which was technically unsupported but no errors were raised. This
    could also lead to segfaults during state initialization or
    propagation.

  • Update C++ UnaryOpNode to correctly handle dynamic predecessors.

  • Fix the possibility of creating a dangling reference when using a
    masked C++ ArrayIterator.

  • Implement missing overloads for NaryMaximumNode::max(),
    NaryMaximumNode::min(), and NaryMaximumNode::integral().

  • Implement missing overloads for NaryMinimumNode::max(),
    NaryMinimumNode::min(), and NaryMinimumNode::integral().

  • Fix two bugs in advanced indexing node propogation in the case of a
    non-const main array with dynamic indexers, e.g. A[x] where A is
    a 1d integer decision variable and x is a list. The first bug
    could cause segfaults during propagation, and the second could lead
    to incorrect output if both arrays were changed during propagation.

  • Update the logic in the
    capacitated_vehicle_routing_with_time_windows() generator function
    to correctly account for asymmetric time-distance matrices.

  • Fix the type information for ArraySymbol.__abs__().

  • Fix serializing models with binary operations over dynamic
    predecessors. Previously it was not possible to estimate the state
    size which caused serialization to fail.

dwave-preprocessing 0.6.6 ➞ 0.6.7

New Features

  • Support Python 3.13.

Bug Fixes

  • Fix SpinReversalTransformComposite's handling of child samplers
    that alter the variable order. Previously the spin reversal
    transforms would not be correctly unapplied.
    See [#142](...
Read more

8.0.1

20 Sep 17:29
Compare
Choose a tag to compare

Changelog

dwave-cloud-client 0.13.0 ➞ 0.13.1

New Features

  • Configuration constants like default region and default API endpoints are now available in a new module dwave.cloud.config.constants.

    Configuration-related exceptions are now available in a new module dwave.cloud.config.exceptions.

    dwave.cloud.config module (with submodules) is now free from dependencies on other submodules, and it's safe to be imported in any cloud-client context.

Deprecation Notes

  • Use of dwave.cloud.api.constants to access default configuration constants is deprecated in dwave-cloud-client==0.13.1 in favor of a new config module dwave.cloud.config.constants, and will be disabled in dwave-cloud-client==0.14.0.

Bug Fixes

  • Fix a circular import error. See #669.

Package versions

dimod==0.12.17
dwave-cloud-client==0.13.1
dwave-gate==0.3.2
dwave-greedy==0.3.0
dwave-hybrid==0.6.12
dwave-inspector==0.5.1
dwave-neal==0.6.0
dwave-networkx==0.8.15
dwave-optimization==0.3.0
dwave-preprocessing==0.6.6
dwave-samplers==1.3.0
dwave-system==1.26.0
dwave-tabu==0.5.0
dwavebinarycsp==0.3.0
minorminer==0.2.15
penaltymodel==1.1.0

8.0.0

11 Sep 19:33
eef9531
Compare
Choose a tag to compare

Changelog

dimod 0.12.16 ➞ 0.12.17

New Features

  • Allow BinaryQuadraticModel.contract_variables() to contract variables without an interaction. Previously it raised a ValueError.

  • Add power_r() generator function to dimod.generators. The weights of the generated Ising problems follow a power-law distribution with respect to their magnitude.

  • Add bin_packing generator function to dimod.generators.

  • Add labels keyword argument to ConstrainedQuadraticModel.iter_constraint_data() and ConstrainedQuadraticModel.iter_violations() methods. The labels keyword argument allows a user to generate the data/violations for a subset of the constraints. See #1381.

  • Add knapsack generator function to dimod.generators.

  • Support Python 3.13.

  • Add quadratic_assignment generator function to dimod.generators.

dwave-cloud-client 0.12.1 ➞ 0.13.0

Prelude

  • Solver metadata is now cached on disk, and validated using conditional requests, resulting in faster Client/Sampler initialization.
  • Problem status is now observed using long polling, resulting in shorter delays between problem solved and solution downloaded.
  • Problem data is now compressed for upload, resulting in faster problem submit on slower networks.
  • Problem preprocessing time during submit is cut in half.
  • Best case median QPU sample time now ranges from 260ms to 330ms.

New Features

  • Enable QPU problem data compression on upload using deflate content encoding.

    Compression is controlled with a new config option, compress_qpu_problem_data, defaulting to true, and it can be turned off either in config file or via Client() kwarg. See #622.

  • Add long polling as problem status/answer polling strategy.

    We add the following config options: poll_strategy ("backoff" is the current default, "long-polling" is the new strategy), poll_wait_time, and poll_pause. See #648.

  • Add timeout keyword argument to api.resources.Problems.get_problem_status() and api.resources.Problems.get_problem_statuses() methods.

    Use it to enable long polling on problem status API endpoint. The connection is closed (server-side) when at least one problem completes, or the timeout (in seconds) elapses, whatever comes first. See #649.

  • Add support for retrieving filtered solver configuration to dwave.cloud.api.resources.Solvers methods. See #644.

  • Add API response caching support to dwave.cloud.api interface. Cache is validated using a conditional request based on ETag. See #645.

  • Poll for problem-status update using long-polling strategy by default. See #662.

    Long-polling strategy enables faster status-change propagation to the client, especially for longer jobs, or during heavy QPU usage.

  • Speed-up function calls that dispatch events by short-circuiting the dispatch in case no event handlers are registered. See #660.

  • Add timeout keyword argument to api.resources.Problems.get_problem() method.

    Use it to enable long polling on problem fetch API endpoint. The connection is closed (server-side) when the problem completes, or the timeout (in seconds) elapses, whatever comes first. In case problem completed in time, problem answer is returned in addition to problem status (which is always returned). See #657.

  • Enable regions metadata API cache control in dwave.cloud.regions.get_regions() by switching to api.Regions built-in caching session. See #647.

  • Speed-up JSON encoding and decoding by switching to orjson. See #423.

  • Parse Cache-Control header field if present in API response, and use it to guide local caching policy.

    This means dwave.cloud.api.DWaveAPIClient and dwave.cloud.api.resource classes now respect origin server response caching policy. See #646.

  • Cache solver metadata on disk, using conditional requests for cache validation (update).

    Static and dynamic parts of solver metadata are fetched and stored separately, to enable efficient caching.

    See #613.

  • Lazily import Client/Solver/Future in the top-level namespace, dwave.cloud. Direct imports are preferred, e.g. from dwave.cloud.client import Client, but the widely-used way (from dwave.cloud import Client) is still supported for backwards compatibility.

    Similarly we now lazily import old namespaces with client type as submodule, e.g. dwave.cloud.qpu.

    The main benefit of such lazy imports is import performance, as "heavy" symbols are only imported when explicitly needed/asked for. See #643.

  • Speed-up imports by slightly decoupling submodules. See #643.

  • Speed-up dwave.cloud.utils.qubo.active_qubits utility function by ~50%, and dwave.cloud.coders.encode_problem_as_qp by 20-30%. See #661.

  • Speed-up QPU problem sampling when problem submitted as BQM by 40%. For best performance, keep linear and quadratic biases in dicts. See #661.

  • Cache dynamic solver metadata for up to 15 minutes, unless defined differently by API cache control response header. See #663.

Upgrade Notes

  • Short polling with exponential backoff is not used by default anymore, but it is still available. If for some reason you want to use it, set:

    poll_strategy = backoff
    

    configuration parameter in your config file, or the keyword argument in calls to Client() or Client.from_config(). See #662.

  • Config attributes previously available directly on Client instance, deprecated in dwave-cloud-client==0.11.0, are removed in dwave-cloud-client==0.13.0.

    Use config model (dwave.cloud.config.models.ClientConfig) available as Client.config to access client configuration instead.

    Path to most attributes translates directly. For example, Client.region is now available as Client.config.region. One attribute has been renamed (Client.default_solver is now Client.config.solver), and all Client.poll_* config options are consolidated under Client.config.polling_schedule.*. Similarly Client.http_retry_* options are now available under Client.config.request_retry.*. See #664.

Deprecation Notes

  • dwave.cloud.utils.coders.NumpyEncoder is deprecated and will be removed in dwave-cloud-client==0.14.0. Use orjson.dumps() with OPT_SERIALIZE_NUMPY option instead. See #652.

  • Shorthand import paths for specialized Clients (for qpu, sw and hybrid) are deprecated in dwave-cloud-client==0.12.2 and will be removed in dwave-cloud-client==0.14.0. Instead, use the full import path, e.g. from dwave.cloud.client.qpu import Client, instead of from dwave.cloud.qpu import Client. See #643.

Bug Fixes

  • Defer SQLite connect in @cached.ondisk() until actually needed. Also, verify cache thread/process-safety and forking support. See #642.

  • Fix get_cache_dir() to not create the cache directory by default. Creation is now optional and controlled with create argument. This makes it consistent with other config path functions. See #642.

  • Fix possible race condition during cache directory create. See homebase#37, #642.

  • During solver metadata filtering, treat solver status as a dynamic field. This is to handle an edge case when solver is marked offline, but it's still available via API. See #663.

dwave-hybrid 0.6.11 ➞ 0.6.12

New Features

  • Add support for cubic lattice embeddings on Zephyr to make_origin_embedding. See #295.

Bug Fixes

  • Remove ambiguous xrefs to reduce build warnings. See #294.

  • Improve cubic lattice embedding on Zephyr, strengthen tests. See #296.

dwave-inspector 0.5.0.post0 ➞ 0.5.1

New Features

  • Add support for dwave-cloud-client~=0.13.0.

dwave-optimization 0.2.0 ➞ 0.3.0

New Features

  • Add Symbol.id() method to return the identity of the underlying node.

  • Add bin packing generator.

  • Add support for exponentiation of ArraySymbol...

Read more

7.1.0

25 Jul 22:23
fb7c99e
Compare
Choose a tag to compare

Changelog

dimod 0.12.15 ➞ 0.12.16

New Features

  • Add dimod/typing.pdx. This allows users to cimport common C types into other namespaces.

  • Support NumPy 2.0. Also, no longer require NumPy at build-time.

  • Reduce the size of manylinux wheels.

Upgrade Notes

  • Remove Cython fused types dimod.cyutilities.SignedInteger, dimod.cyutilities.UnsignedInteger, dimod.cyutilities.Integer, and dimod.cyutilities.ConstInteger, dimod.cyutilities.Numeric, and dimod.cyutilities.ConstNumeric. Use the types in dimod.typing instead.

  • Remove Cython fused types dimod.discrete.cydiscrete_quadratic_model.Unsigned, dimod.discrete.cydiscrete_quadratic_model.Integral32plus, dimod.discrete.cydiscrete_quadratic_model.Numeric, and dimod.discrete.cydiscrete_quadratic_model.Numeric32plus. Use the types in dimod.typing instead.

  • Don't include debug info in built .so files.

dwave-cloud-client 0.12.0 ➞ 0.12.1

New Features

  • Add some basic benchmarks (use airspeed velocity/asv).

  • Add dwave.cloud.testing.mocks.hybrid_cqm_solver_data(), a mock metadata generator for the CQM hybrid solver.

  • Add dwave.cloud.coders.decode_qp_problem, a decoder of quadratic unconstrained binary problems in SAPI's "qp" format.

  • Add qpu_zephyr_solver_data generator for mock QPU solvers with Zephyr topology.

Bug Fixes

  • Update dwave.cloud.testing.mocks.hybrid_*_solver_data() generators to include the full list of solver properties (albeit with mock/dummy values).

  • Fix a regression bug introduced during utils module refactor and keep using importlib_metadata for entry_points() access. See #631.

dwave-gate 0.3.1 ➞ 0.3.2

New Features

  • Support, and build with, NumPy 2.0

Bug Fixes

  • Updates the circuit so that conditional parametric gates are evaluated in place when appended to the active circuit, fixing an issue where changes to these gates post application are not propagated to the circuit.

  • Remove PyQIR version check as it's been added as an optional dependency. A supported version can now be installed directly with pip install dwave-gate[qir].

dwave-optimization 0.1.0 ➞ 0.2.0

New Features

  • Add C++ NaryOpNode(std::span<Node*>) and NaryOpNode(std::span<Array*>) constructors.

  • Add Model.num_edges() method. See #28.

  • Add quadratic assignment problem generator. See #29.

  • Add C++ method to rotate elements in a disjoint list.

  • Add support for <,>,==,!=,<=,>= operators between Constant and array-like objects.

  • Add support for bool(constant), int(constant), and not constant when constant is an instance of Constant encoding
    a single scalar value.

  • Make repr() of symbols unique to the underlying node, rather than to the Python symbol. See #52.

  • Allow dwave.optimization.generators.traveling_salesperson() to accept an asymmetric distance matrix.

  • Allow dwave.optimization.generators.flow_shop_scheduling() to accept non-integer processing times.

  • Implement ArraySymbol.__iadd__() and ArraySymbol.__imul__(). The += operator will now return a NaryAdd symbol. The *= operator will now return a NaryMultiply symbol.

  • Implement NaryAdd.__iadd__(). In-place addition with a NaryAdd symbol will no longer create a new symbol.

  • Implement NaryAdd.__imul__(). In-place multiplication with a NaryMultiply symbol will no longer create a new symbol.

  • Add missing typing information to dwave.optimization.add(), dwave.optimization.maximum(), dwave.optimization.minimum(), and dwave.optimization.multiply().

  • Support NumPy 2.0. Also, no longer require NumPy at build-time.

  • Speed up Model.iter_symbols() and other symbol iteration methods.

Upgrade Notes

  • Raise a ValueError when calling bool() on an ArraySymbol.

  • dwave.optimization.add(), dwave.optimization.maximum(), dwave.optimization.minimum(), and dwave.optimization.multiply() no longer accept a tuple of symbols as inputs.

  • dwave.optimization.logical_and() and dwave.optimization.logical_or() arguments have been renamed.

  • Remove .from_ptr() cdef method from all of the symbol classes.

Bug Fixes

  • Fix ArraySymbol.all() for empty array symbols. See #43.

  • Add missing copy() override for C++ DisjointBitSetsNode states.

  • Fix Symbol.to_networkx() to no longer be compiler-dependant. See #18.

  • Fix dwave.optimization.generators.job_shop_scheduling() for problems with the number of jobs is different than the number of machines.

  • Return NotImplemented from ArraySymbol operator methods for unknown types.

  • Fix return type of Symbol.maybe_equals() to be integer instead of boolean. See #23.

dwave-preprocessing 0.6.5 ➞ 0.6.6

New Features

  • Speed up the removal of small biases in presolve.

  • Support NumPy 2.0. Also, no longer require NumPy at build-time.

dwave-samplers 1.2.0 ➞ 1.3.0

New Features

  • Support, and build with, NumPy 2.0

Upgrade Notes

  • Require dimod>=0.12.13.

  • Require NetworkX>=3.0.

minorminer 0.2.14 ➞ 0.2.15

Fixes

  • Refresh build files and reduce the size of built wheels

  • Replace broken docs badge with PyPI versions

  • Add reference to clique paper in README

Package versions

dimod==0.12.16
dwave-cloud-client==0.12.1
dwave-gate==0.3.2
dwave-greedy==0.3.0
dwave-hybrid==0.6.11
dwave-inspector==0.5.0.post0
dwave-neal==0.6.0
dwave-networkx==0.8.15
dwave-optimization==0.2.0
dwave-preprocessing==0.6.6
dwave-samplers==1.3.0
dwave-system==1.25.0
dwave-tabu==0.5.0
dwavebinarycsp==0.3.0
minorminer==0.2.15
penaltymodel==1.1.0
# exclude pyqubo until it supports py312
# pyqubo==1.4.0

7.0.0

14 Jun 17:18
999ec9b
Compare
Choose a tag to compare

Changelog

dimod 0.12.14 ➞ 0.12.15

New Features

  • Add C++ QuadraticModelBase::remove_interactions() method.

  • Add dimod.generators.random_binary_paint_shop_problem() binary paint shop problem generator.

  • Add an abstract method QuadraticViewsMixin.add_quadratic().

  • Add a method QuadraticViewsMixin.add_quadratic_from() to add quadratic interactions. This method is intended to be used as follows: ConstrainedQuadraticModel.objective.add_quadratic_from(), similarly to ConstrainedQuadraticModel.objective.add_linear_from().

  • Add check_overlaps keyword argument to ConstrainedQuadraticModel.add_discrete(), see #1364.

Upgrade Notes

  • All sublcasses of QuadraticViewsMixin, including ObjectiveView, QuadraticModel and BinaryQuadraticModel, now require to have the method add_quadratic().

dwave-cloud-client 0.11.4 ➞ 0.12.0

New Features

  • Add support for binary-ref answer encoding format, where answer data is not immediately present in the answer, but on an URI referenced in the answer response.

  • Add dwave.cloud.computation.Future.answer_data property to hold the answer data of a resolved future. A call to .answer_data will block until computation future is resolved.

  • Add dwave.cloud.api.models.UnstructuredProblemAnswerBinaryRef model, a subclass of ProblemAnswer for binary-ref answers, and a method for downloading answer data (resolving binary-ref), dwave.cloud.api.resources.Problems.get_answer_data.

  • Add support for nonlinear unstructured solvers with dwave.cloud.solver.NLSolver.

  • Add request/response logging to AuthFlow/OAuth2Session.

  • Add basic support for structured logs (JSON output).

  • Enable log format control with DWAVE_LOG_FORMAT env variable (set to "json" for structured output.

Upgrade Notes

  • dwave.cloud.utils module has been split into the following submodules: dwave.cloud.utils.cli, dwave.cloud.utils.coders, dwave.cloud.utils.decorators, dwave.cloud.utils.dist, dwave.cloud.utils.exception, dwave.cloud.utils.http, dwave.cloud.utils.logging, dwave.cloud.utils.qubo, and dwave.cloud.utils.time.

    First reason for doing this was code clean-up (including adding type annotations), but a more important reason is that this will enable import time optimization in the future. And that's why we break backwards compatibility by not importing everything back into the top-level utils namespace.

    The utils module is considered Ocean-internal as is, so this move shouldn't affect user's code.

  • Positional arguments in dwave.cloud.Client constructor, deprecated in 0.10.0, are removed in 0.12.0. Use keyword arguments instead.

  • Alias keys samples and occurrences (for solutions and num_occurrences) in the results dict of dwave.cloud.computation.Future.result(), deprecated in 0.8.0, are now finally removed in 0.12.0. We'll try to keep the result dict as close to raw data returned by SAPI as possible. Postprocessed data is instead available via dwave.cloud.computation.Future properties.

Bug Fixes

  • Fix a possible race condition when multiple threads try to resolve remote computation results. A special case of this occurs on binary answer download from a reference link. See #624.

  • Log failing request/response details in the low-level API client.

  • Suppress logging output from the cloud-client by default (as recommended for libraries).

  • Format log record date/time according to ISO 8601.

dwave-networkx 0.8.14 ➞ 0.8.15

New Features

  • Add support for Python 3.12

Upgrade Notes

  • Drop support for Python 3.7

Bug Fixes

  • Fix undefined variables for color maps. See #232.

dwave-optimization 0.1.0

Prelude

  • The first release of dwave-optimization.

dwave-system 1.24.0 ➞ 1.25.0

New Features

Bug Fixes

minorminer 0.2.13 ➞ 0.2.14

New Features

  • rectangle-packer is now included in the source rather than being a dependency.

Package versions

dimod==0.12.15
dwave-cloud-client==0.12.0
dwave-greedy==0.3.0
dwave-hybrid==0.6.11
dwave-inspector==0.5.0.post0
dwave-neal==0.6.0
dwave-networkx==0.8.15
dwave-optimization==0.1.0
dwave-preprocessing==0.6.5
dwave-samplers==1.2.0
dwave-system==1.25.0
dwave-tabu==0.5.0
dwavebinarycsp==0.3.0
minorminer==0.2.14
penaltymodel==1.1.0
# exclude pyqubo until it supports py312
# pyqubo==1.4.0

# extras: all
dwave-gate==0.3.1

6.10.0

17 Apr 18:08
6efb9a5
Compare
Choose a tag to compare

Changelog

dwave-cloud-client 0.11.3 ➞ 0.11.4

New Features

  • Add revoke_token method to dwave.cloud.auth.flow.AuthFlow to enable revocation of OAuth 2.0 refresh/access tokens. See #600.

  • Add dwave auth revoke CLI command to enable revocation of OAuth 2.0 refresh/access tokens from command line. See #600.

Bug Fixes

  • Preemptively set upper bounds on dependencies to prevent future breaks on older installed versions in the wild. Also, correct lower bounds for requests and urllib3. See #612.

dwave-inspector 0.4.4 ➞ 0.5.0

New Features

  • Add support for fast anneal protocol. Display the new solver parameter fast_anneal and the new solver property fast_anneal_time_range in the visualizer. See #170

  • Replace builtin JSON encoder with orjson, achieving 2-5x speed-up of problem and solver API endpoints.

  • Replace WSGIAsyncServer with dwave.cloud.auth.server.BackgroundAppServer, a more robust and stable multi-threaded server. By using a multi-threaded server we improve the visualizer app load time, as browsers can download static files and make API requests in parallel now. See #165.

Upgrade Notes

  • dwave.inspector.utils.NumpyJSONProvider is removed and no longer available. Use orjson.dumps with option=orjson.OPT_SERIALIZE_NUMPY instead.

  • Minimal version of dwave-cloud-client required is now 0.11.0 to support #165 and fix #164.

Bug Fixes

  • Omit legacy solver parameters, like num_spin_reversal_transforms and postprocessing params (postprocess, beta, chains) from the visualizer. See #166 and #168.

  • Improve performance of the inspector server by postprocessing solver data inplace, saving one deep copy of solver metadata (~600kB for Advantage) on each API request of solver data.

dwave-system 1.23.0 ➞ 1.24.0

New Features

Bug Fixes

Package versions

dimod==0.12.14
dwave-cloud-client==0.11.4
dwave-greedy==0.3.0
dwave-hybrid==0.6.11
dwave-inspector==0.5.0
dwave-neal==0.6.0
dwave-networkx==0.8.14
dwave-preprocessing==0.6.5
dwave-samplers==1.2.0
dwave-system==1.24.0
dwave-tabu==0.5.0
dwavebinarycsp==0.3.0
minorminer==0.2.13
penaltymodel==1.1.0
# exclude pyqubo until it supports py312
# pyqubo==1.4.0

# extras: all
dwave-gate==0.3.1

6.9.0

01 Mar 18:05
cb5dd80
Compare
Choose a tag to compare

Changelog

dwave-cloud-client 0.11.2 ➞ 0.11.3

Bug Fixes

  • Use fixed authorization success URL, without any authorization query parameters appended (to minimize exposure), as they are not needed on the authorization server's success page.

  • Improve CSRF protection on localhost redirect URI during authorization code exchange. Previously, state was verified only if supplied. Now it's mandatory. Please note this is an additional CSRF protection on top of the PKCE, just in case PKCE is not supported (or properly implemented) server-side.

  • Fix PKCE support in dwave.cloud.auth.flow.AuthFlow by properly including code_verifier in fetch token (code exchange) requests. See #605.

  • Remove circular references in dwave.cloud.computation.Future to enable easier garbage collection and lower memory footprint. See #601.

  • Use a consistent User-Agent value for all API and non-API requests made by Client, api.Client and auth.flow client.

  • Speed-up User-Agent string construction significantly (10ms to 5us).

dwave-hybrid 0.6.10 ➞ 0.6.11

New Features

Fixes

Upgrade Notes

Package versions

dimod==0.12.14
dwave-cloud-client==0.11.3
dwave-greedy==0.3.0
dwave-hybrid==0.6.11
dwave-inspector==0.4.4
dwave-neal==0.6.0
dwave-networkx==0.8.14
dwave-preprocessing==0.6.5
dwave-samplers==1.2.0
dwave-system==1.23.0
dwave-tabu==0.5.0
dwavebinarycsp==0.3.0
minorminer==0.2.13
penaltymodel==1.1.0
# exclude pyqubo until it supports py312
# pyqubo==1.4.0

# extras: all
dwave-gate==0.3.1

6.8.0

16 Jan 18:47
bc00555
Compare
Choose a tag to compare

Changelog

dimod 0.12.13 ➞ 0.12.14

New Features

  • Add C++ dimod::abc::QuadraticModelBase::remove_variables() method
    and accompanying overloads.
  • Speed up C++ dimod::Expression::remove_variables() method.

dwavebinarycsp 0.2.0 ➞ 0.3.0

New Features

  • Add testing and support for Python 3.11 and 3.12.
  • Add support for and test with NetworkX 3.x.

Upgrade Notes

  • Drop support for Python 3.7.

dwave-preprocessing 0.6.4 ➞ 0.6.5

New Features

  • Build with dimod 0.12.14. This speeds up the removal of small biases in presolve.

dwave-system 1.22.0 ➞ 1.23.0

New Features

Deprecation Notes

  • Deprecate common_working_graph(). It will be removed in dwave-system 2.0. Use networkx.intersection() instead.

penaltymodel 1.0.2 ➞ 1.1.0

New Features

  • Add testing and support for Python 3.11 and 3.12.
  • Add support for and test with NetworkX 3.x.

Upgrade Notes

  • Drop support for Python 3.7.

6.7.1

06 Dec 18:14
a4fb30c
Compare
Choose a tag to compare

Changelog

dwave-cloud-client 0.11.1 ➞ 0.11.2

New Features

  • Add Python 3.12 support.

  • Add dwave.cloud.utils.get_distribution as a replacement for pkg_resources.get_distribution unavailable in Python 3.12.

dwave-inspector 0.4.3 ➞ 0.4.4

New Features

  • Add Python 3.12 support.

dwave-system 1.21.0 ➞ 1.22.0

New Features

minorminer 0.2.12 ➞ 0.2.13

New Features

  • Build wheels for Python 3.12.

  • Build C++ extensions with Cython 3.

pyqubo

Upgrade Notes

  • Removed as a dependancy until it adds support for Python 3.12.

Package versions

dimod==0.12.13
dwave-cloud-client==0.11.2
dwave-greedy==0.3.0
dwave-hybrid==0.6.10
dwave-inspector==0.4.4
dwave-neal==0.6.0
dwave-networkx==0.8.14
dwave-preprocessing==0.6.4
dwave-samplers==1.2.0
dwave-system==1.22.0
dwave-tabu==0.5.0
dwavebinarycsp==0.2.0
minorminer==0.2.13
penaltymodel==1.0.2
# exclude pyqubo until it supports py312
# pyqubo==1.4.0

# extras: all
dwave-gate==0.3.1

6.7.0

02 Nov 17:51
180ec75
Compare
Choose a tag to compare

Changelog

dimod 0.12.12 ➞ 0.12.13

New Features

  • Build wheels for Python 3.12.

  • Build C++ extensions with Cython 3.

dwave-cloud-client 0.11.0 ➞ 0.11.1

New Features

  • Add optional Leap authorization step to dwave setup CLI. During setup, we now install optional contributed packages, authorize Ocean to access Leap (--auth and --oob flags), and finally create the configuration file, optionally retrieving SAPI token from Leap API (if authorized) for the currently active Leap project, or project specified with --project option. See #591.

  • Add --skip-valid option to dwave auth login CLI. When used, authorization flow will be skipped if Leap access token is valid or if it can be refreshed.

  • Prefer QPU solvers in dwave ping, unless overridden by user/config. See #592

  • Redirect user back to a Leap info page when auth redirect flow successfully completes. Similarly, redirect user to a Leap error page in case of an auth error.

dwave-preprocessing 0.6.3 ➞ 0.6.4

New Features

  • Build C++ extensions with Cython 3.

  • Build wheels for Python 3.12.

dwave-samplers 1.1.0 ➞ 1.2.0

New Features

  • Build C++ extensions with Cython 3.

  • Build wheels for Python 3.12.

Upgrade Notes

  • No longer build wheels for Python 3.7.

dwave-gate 0.3.0 ➞ 0.3.1

New Features

  • Add support and build wheels for Python 3.12.

  • Build C++ extensions with Cython 3.

Package versions

dimod==0.12.13
dwave-cloud-client==0.11.1
dwave-greedy==0.3.0
dwave-hybrid==0.6.10
dwave-inspector==0.4.3
dwave-neal==0.6.0
dwave-networkx==0.8.14
dwave-preprocessing==0.6.4
dwave-samplers==1.2.0
dwave-system==1.21.0
dwave-tabu==0.5.0
dwavebinarycsp==0.2.0
minorminer==0.2.12
penaltymodel==1.0.2
pyqubo==1.4.0

# extras: all
dwave-gate==0.3.1