Small bugfix in resilience validation #1632
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Fixes a bug in
ResilienceOptionsV2
where validation misses a corner case wherepec_mitigation
isFalse
although pec options were passed.Details and comments
The bug results from the check
any(asdict(self.pec).values())
which attempts to deduce whether any pec options were passed. Since some valid options are treated asFalse
by Python, this check might fail. An example was added to the unit tests:{"resilience": {"pec": {"max_overhead": None, "noise_gain": 0}}},
Where both the
None
and the0
values are valid options (requiringpec_mitigation=True
) but both are treated asFalse
by Python.The simple solution is to explicitly compare the values to
Unset
and the check passes in there is any value different thanUnset
.The same fix was performed for
zne
andmeasure_noise_learning
options.