Sequential Quantum Gate Decomposer  v1.9.6
Powerful decomposition of general unitarias into one- and two-qubit gates gates
test_validation_errors.py
Go to the documentation of this file.
1 """Phase 3 structured validation errors share a common base and stable to_dict() schemas."""
2 
3 from pathlib import Path
4 import sys
5 
6 import pytest
7 
8 REPO_ROOT = Path(__file__).resolve().parents[2]
9 if str(REPO_ROOT) not in sys.path:
10  sys.path.insert(0, str(REPO_ROOT))
11 
12 from squander.partitioning.noisy_validation_errors import (
13  NoisyDescriptorValidationError,
14  NoisyPhase3ValidationErrorBase,
15  NoisyPlannerValidationError,
16  NoisyRuntimeValidationError,
17 )
18 
19 
21  exc = NoisyPlannerValidationError(
22  category="mode",
23  first_unsupported_condition="x",
24  failure_stage="s",
25  source_type="generated_hea",
26  requested_mode="other",
27  reason="r",
28  )
29  assert not hasattr(exc, "workload_id")
30  assert not hasattr(exc, "runtime_path")
31  assert exc.to_dict() == {
32  "unsupported_category": "mode",
33  "first_unsupported_condition": "x",
34  "failure_stage": "s",
35  "source_type": "generated_hea",
36  "requested_mode": "other",
37  "reason": "r",
38  }
39 
40 
42  exc = NoisyDescriptorValidationError(
43  category="c",
44  first_unsupported_condition="f",
45  failure_stage="st",
46  source_type="generated_hea",
47  requested_mode="partitioned_density",
48  workload_id="w1",
49  reason="msg",
50  )
51  assert exc.to_dict() == {
52  "unsupported_category": "c",
53  "first_unsupported_condition": "f",
54  "failure_stage": "st",
55  "source_type": "generated_hea",
56  "requested_mode": "partitioned_density",
57  "workload_id": "w1",
58  "reason": "msg",
59  }
60  assert not hasattr(exc, "runtime_path")
61 
62 
64  exc = NoisyRuntimeValidationError(
65  category="c",
66  first_unsupported_condition="f",
67  failure_stage="st",
68  source_type="generated_hea",
69  requested_mode="partitioned_density",
70  workload_id="w1",
71  runtime_path="partitioned_density_descriptor_baseline",
72  reason="msg",
73  )
74  assert exc.to_dict() == {
75  "unsupported_category": "c",
76  "first_unsupported_condition": "f",
77  "failure_stage": "st",
78  "source_type": "generated_hea",
79  "requested_mode": "partitioned_density",
80  "workload_id": "w1",
81  "runtime_path": "partitioned_density_descriptor_baseline",
82  "reason": "msg",
83  }
84 
85 
86 @pytest.mark.parametrize(
87  "exc",
88  [
89  NoisyPlannerValidationError(
90  category="a",
91  first_unsupported_condition="b",
92  failure_stage="c",
93  source_type="d",
94  requested_mode="e",
95  reason="f",
96  ),
97  NoisyDescriptorValidationError(
98  category="a",
99  first_unsupported_condition="b",
100  failure_stage="c",
101  source_type="d",
102  requested_mode="e",
103  workload_id="w",
104  reason="f",
105  ),
106  NoisyRuntimeValidationError(
107  category="a",
108  first_unsupported_condition="b",
109  failure_stage="c",
110  source_type="d",
111  requested_mode="e",
112  workload_id="w",
113  runtime_path="p",
114  reason="f",
115  ),
116  ],
117 )
119  assert isinstance(exc, NoisyPhase3ValidationErrorBase)
120  assert isinstance(exc, ValueError)