|
Repo Added
|
Files
873
|
Badge
README BADGES
|
github
Fix reuse of `ConsolidateBlocks` instances (#15258) * Fix reuse of `ConsolidateBlocks` instances The `_qubit_map` state added to `ConsolidateBlocks` in #15083 (cb103d95) was attempting to get round an awkward internal `PassManager` use to pass the mapping into recursive calls. Unfortunately, the state was not cleared on exit to the pass, so re-use of the pass object would be invalid, such as by calling the `PassManager.run` method on the result of `generate_preset_pass_manager` more than once on circuits with different sizes. Rather than trying to plaster over the poor use of state, this commit instead moves the runtime logic to be in the `PropertySet`, so re-use troubles are limited to single executions. It's still technically possible for the `PropertySet` to become polluted if `ConsolidateBlocks` throws an internal exception that is forcibly suppressed such that the pipeline continues, but this is completely non-standard, would require significant effort to achieve, and most likely there are large numbers of transpiler passes that are not completely exception-safe anyway. * Add test of `PassManager.run` over a list On some platforms this will be multiprocessing, but it doesn't hurt to try it for the platforms that aren't. * Document use of property-set key (cherry picked from commit 4019fd9d9)
8 of 8 new or added lines in 1 file covered. (100.0%)
5 existing lines in 3 files now uncovered.92369 of 104490 relevant lines covered (88.4%)
550142.27 hits per line
| Coverage | ∆ | File | Lines | Relevant | Covered | Missed | Hits/Line |
|---|