dwavesystems / dwave-cloud-client

A minimal implementation of the REST interface used to communicate with D-Wave Solver API (SAPI) servers.
https://docs.ocean.dwavesys.com/projects/cloud-client/en/stable/
Apache License 2.0
59 stars 40 forks source link

Make CC forward-compatible with new features #313

Open JoelPasvolsky opened 5 years ago

JoelPasvolsky commented 5 years ago

Currently, if users specify a feature for selection that has not yet been added to their version of cloud-client, they get an error message "SolverNotFoundError: Solver with the requested features not available". Because users will often lag a version or two from the latest cloud-client, they will often see this when trying newly added features, such as tag "lower_noise". But it's not that a solver with the feature is unavailable, it's that their current version of cloud-client doesn't recognize the filter and needs to be updated. So replacing this error message in the next version of cloud-client will be helpful going forward.

randomir commented 5 years ago

Generally, feature filtering in the cloud client is insensitive to actual feature name and/or availability. For example if tomorrow we add a boolean feature called joels_favourite to only one solver, you can still use the oldest version of the client (that supports feature-based solver filtering) to fetch your favourite solver with:

client.get_solver(joels_favourite=True)

The exception to this general rule are derived (inferred) features, like lower_noise here. The full list of derived properties is available via dwave solvers [--solver filter] CLI command, e.g.:

$ dwave solvers --solver DW_2000Q_5
...
  Derived properties:
    avg_load: 0.0
    lower_noise: True
    name: DW_2000Q_5
    num_active_qubits: 2030
    online: True
    qpu: True
    software: False

The reason I added lower_noise as a derived property is to make queries simpler, but you can always use something that relies on intrinsic solver properties only:

client.get_solver(tags__contains="lower_noise")

With that being said, it does make sense to change the message to something like ~ "property unknown or solver not available".

JoelPasvolsky commented 5 years ago

Thanks, that makes sense