New Features
- Default `dwave config create` configuration flow is now simplified to prompt only for essential parameters (at the moment that's only `token`).
Interactive configuration of an extended set of non-essential parameters (i.e. the previous default) is now available via a new flag: `--full`.
See [\304](https://github.com/dwavesystems/dwave-cloud-client/issues/304)
<!-- -->
- A low-level `dwave.cloud.api.client` added to abstract SAPI communication details (like authentication, response decoding, error handling, retries, etc).
- All SAPI requests and responses modelled in `dwave.cloud.api.models.*`. These models are used for data validation and representation.
<!-- -->
- Added model-level interfaces to SAPI resources (in a REST sense), `dwave.cloud.api.resources.Solvers` and `dwave.cloud.api.resources.Problems`.
<!-- -->
- Added mock solver data generators.
<!-- -->
- New layer of exceptions added in `dwave.cloud.api.exceptions`. Base exception `RequestError` subclasses `requests`'s exception and includes raw `.response` object, along with `.error_msg` and `.error_code` returned by SAPI.
<!-- -->
- Begin using reno for changelog.
Upgrade Notes
- `SAPIError` exception is now just an alias for `dwave.cloud.api.exceptions.RequestError`.
<!-- -->
- To configure non-essential parameters such as `endpoint`, `client` and `solver`, configuration create command now has to be called with the `--full` option:
dwave config create --full
<!-- -->
- `dwave.cloud.client` module is now a namespace containing all client subclasses as submodules. You should update your imports accordingly:
dwave.cloud.Client --> dwave.cloud.client.base.Client
dwave.cloud.hybrid.Client --> dwave.cloud.client.hybrid.Client
dwave.cloud.qpu.Client --> dwave.cloud.client.qpu.Client
dwave.cloud.sw.Client --> dwave.cloud.client.sw.Client
For backwards compatibility, old import paths still work, but are deprecated.
Deprecation Notes
- Import paths `dwave.cloud.{hybrid,qpu,sw}.Client` are deprecated and should be replaced with `dwave.cloud.client.{hybrid,qpu,sw}.Client`.
Bug Fixes
- Configured client session creation is sped up by caching user-agent construction (per client). Client session is now created \~200x faster, making it on par with `requests.Session` creation time (\~50us).
<!-- -->
- When a path to a nonexistent config file is provided to `dwave config create`, we'll now happily create that file, instead of failing.
<!-- -->
- Avoid character encoding / charset guessing for speed and [stability](https://github.com/dwavesystems/dwave-cloud-client/pull/476).