Skip to content

Commit 6738c6d

Browse files
authored
Utilize local instance of validation.py (#35)
1 parent a953e5c commit 6738c6d

File tree

8 files changed

+148
-8
lines changed

8 files changed

+148
-8
lines changed

qiskit_algorithms/eigensolvers/numpy_eigensolver.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@
2121

2222
from qiskit.quantum_info import SparsePauliOp, Statevector
2323
from qiskit.quantum_info.operators.base_operator import BaseOperator
24-
from qiskit.utils.validation import validate_min
2524

25+
from qiskit_algorithms.utils.validation import validate_min
2626
from .eigensolver import Eigensolver, EigensolverResult
2727
from ..exceptions import AlgorithmError
2828
from ..list_or_dict import ListOrDict

qiskit_algorithms/minimum_eigensolvers/adapt_vqe.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,10 @@
2525
from qiskit.quantum_info.operators.base_operator import BaseOperator
2626
from qiskit.circuit.library import EvolvedOperatorAnsatz
2727
from qiskit.utils.deprecation import deprecate_arg, deprecate_func
28-
from qiskit.utils.validation import validate_min
2928

29+
from qiskit_algorithms.utils.validation import validate_min
3030
from qiskit_algorithms.exceptions import AlgorithmError
31+
3132
from qiskit_algorithms.list_or_dict import ListOrDict
3233

3334
from .minimum_eigensolver import MinimumEigensolver

qiskit_algorithms/minimum_eigensolvers/qaoa.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@
2121
from qiskit.circuit.library.n_local.qaoa_ansatz import QAOAAnsatz
2222
from qiskit.quantum_info.operators.base_operator import BaseOperator
2323
from qiskit.primitives import BaseSampler
24-
from qiskit.utils.validation import validate_min
2524

25+
from qiskit_algorithms.utils.validation import validate_min
2626
from qiskit_algorithms.optimizers import Minimizer, Optimizer
2727

2828
from .sampling_vqe import SamplingVQE

qiskit_algorithms/optimizers/aqgd.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@
1818
from typing import Any
1919

2020
import numpy as np
21-
from qiskit.utils.validation import validate_range_exclusive_max
21+
22+
from qiskit_algorithms.utils.validation import validate_range_exclusive_max
2223
from .optimizer import Optimizer, OptimizerSupportLevel, OptimizerResult, POINT
2324
from ..exceptions import AlgorithmError
2425

qiskit_algorithms/optimizers/p_bfgs.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222
import numpy as np
2323

2424
from qiskit.utils import algorithm_globals
25-
from qiskit.utils.validation import validate_min
2625

26+
from qiskit_algorithms.utils.validation import validate_min
2727
from .optimizer import OptimizerResult, POINT
2828
from .scipy_optimizer import SciPyOptimizer
2929

qiskit_algorithms/optimizers/scipy_optimizer.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,7 @@
1919
import numpy as np
2020
from scipy.optimize import minimize
2121

22-
from qiskit.utils.validation import validate_min
23-
22+
from qiskit_algorithms.utils.validation import validate_min
2423
from .optimizer import Optimizer, OptimizerSupportLevel, OptimizerResult, POINT
2524

2625

qiskit_algorithms/utils/validation.py

Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
# This code is part of a Qiskit project.
2+
#
3+
# (C) Copyright IBM 2019, 2023.
4+
#
5+
# This code is licensed under the Apache License, Version 2.0. You may
6+
# obtain a copy of this license in the LICENSE.txt file in the root directory
7+
# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.
8+
#
9+
# Any modifications or derivative works of this code must retain this
10+
# copyright notice, and modified files need to carry a notice indicating
11+
# that they have been altered from the originals.
12+
13+
"""
14+
Validation module
15+
"""
16+
17+
from typing import Set
18+
19+
20+
def validate_in_set(name: str, value: object, values: Set[object]) -> None:
21+
"""
22+
Args:
23+
name: value name.
24+
value: value to check.
25+
values: set that should contain value.
26+
Raises:
27+
ValueError: invalid value
28+
"""
29+
if value not in values:
30+
raise ValueError(f"{name} must be one of '{values}', was '{value}'.")
31+
32+
33+
def validate_min(name: str, value: float, minimum: float) -> None:
34+
"""
35+
Args:
36+
name: value name.
37+
value: value to check.
38+
minimum: minimum value allowed.
39+
Raises:
40+
ValueError: invalid value
41+
"""
42+
if value < minimum:
43+
raise ValueError(f"{name} must have value >= {minimum}, was {value}")
44+
45+
46+
def validate_min_exclusive(name: str, value: float, minimum: float) -> None:
47+
"""
48+
Args:
49+
name: value name.
50+
value: value to check.
51+
minimum: minimum value allowed.
52+
Raises:
53+
ValueError: invalid value
54+
"""
55+
if value <= minimum:
56+
raise ValueError(f"{name} must have value > {minimum}, was {value}")
57+
58+
59+
def validate_max(name: str, value: float, maximum: float) -> None:
60+
"""
61+
Args:
62+
name: value name.
63+
value: value to check.
64+
maximum: maximum value allowed.
65+
Raises:
66+
ValueError: invalid value
67+
"""
68+
if value > maximum:
69+
raise ValueError(f"{name} must have value <= {maximum}, was {value}")
70+
71+
72+
def validate_max_exclusive(name: str, value: float, maximum: float) -> None:
73+
"""
74+
Args:
75+
name: value name.
76+
value: value to check.
77+
maximum: maximum value allowed.
78+
Raises:
79+
ValueError: invalid value
80+
"""
81+
if value >= maximum:
82+
raise ValueError(f"{name} must have value < {maximum}, was {value}")
83+
84+
85+
def validate_range(name: str, value: float, minimum: float, maximum: float) -> None:
86+
"""
87+
Args:
88+
name: value name.
89+
value: value to check.
90+
minimum: minimum value allowed.
91+
maximum: maximum value allowed.
92+
Raises:
93+
ValueError: invalid value
94+
"""
95+
if value < minimum or value > maximum:
96+
raise ValueError(f"{name} must have value >= {minimum} and <= {maximum}, was {value}")
97+
98+
99+
def validate_range_exclusive(name: str, value: float, minimum: float, maximum: float) -> None:
100+
"""
101+
Args:
102+
name: value name.
103+
value: value to check.
104+
minimum: minimum value allowed.
105+
maximum: maximum value allowed.
106+
Raises:
107+
ValueError: invalid value
108+
"""
109+
if value <= minimum or value >= maximum:
110+
raise ValueError(f"{name} must have value > {minimum} and < {maximum}, was {value}")
111+
112+
113+
def validate_range_exclusive_min(name: str, value: float, minimum: float, maximum: float) -> None:
114+
"""
115+
Args:
116+
name: value name.
117+
value: value to check.
118+
minimum: minimum value allowed.
119+
maximum: maximum value allowed.
120+
Raises:
121+
ValueError: invalid value
122+
"""
123+
if value <= minimum or value > maximum:
124+
raise ValueError(f"{name} must have value > {minimum} and <= {maximum}, was {value}")
125+
126+
127+
def validate_range_exclusive_max(name: str, value: float, minimum: float, maximum: float) -> None:
128+
"""
129+
Args:
130+
name: value name.
131+
value: value to check.
132+
minimum: minimum value allowed.
133+
maximum: maximum value allowed.
134+
Raises:
135+
ValueError: invalid value
136+
"""
137+
if value < minimum or value >= maximum:
138+
raise ValueError(f"{name} must have value >= {minimum} and < {maximum}, was {value}")

test/test_validation.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@
1515
import unittest
1616

1717
from test import QiskitAlgorithmsTestCase
18-
from qiskit.utils.validation import (
18+
19+
from qiskit_algorithms.utils.validation import (
1920
validate_in_set,
2021
validate_min,
2122
validate_min_exclusive,

0 commit comments

Comments
 (0)