Skip to content

Commit 2449465

Browse files
committed
Add type validation for boolean parameters in UHFk solver
- Add _to_bool() helper method for type conversion and validation - Convert string 'true'/'false' to boolean with warning message - Raise ValueError for invalid parameter types - Apply to flag_fock and enable_spin_orbital parameters
1 parent fdce5a4 commit 2449465

File tree

1 file changed

+51
-2
lines changed

1 file changed

+51
-2
lines changed

src/hwave/solver/uhfk.py

Lines changed: 51 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,59 @@ def _init_mode(self, param):
7171
Mode parameters
7272
"""
7373
# Enable/disable Fock term
74-
self.iflag_fock = param.get('flag_fock', True)
74+
self.iflag_fock = self._to_bool(param.get('flag_fock', True), 'flag_fock')
7575

7676
# Enable/disable spin-orbital coupling
77-
self.enable_spin_orbital = param.get('enable_spin_orbital', False)
77+
self.enable_spin_orbital = self._to_bool(
78+
param.get('enable_spin_orbital', False), 'enable_spin_orbital'
79+
)
80+
81+
def _to_bool(self, value, param_name):
82+
"""Convert a value to boolean with type validation.
83+
84+
Parameters
85+
----------
86+
value : any
87+
Value to convert to boolean
88+
param_name : str
89+
Parameter name for error messages
90+
91+
Returns
92+
-------
93+
bool
94+
Converted boolean value
95+
96+
Raises
97+
------
98+
ValueError
99+
If value cannot be converted to boolean
100+
"""
101+
if isinstance(value, bool):
102+
return value
103+
if isinstance(value, str):
104+
if value.lower() in ('true', 'yes', '1', 'on'):
105+
logger.warning(
106+
f"Parameter '{param_name}' should be boolean, not string. "
107+
f"Use '{param_name} = true' instead of '{param_name} = \"{value}\"'"
108+
)
109+
return True
110+
elif value.lower() in ('false', 'no', '0', 'off'):
111+
logger.warning(
112+
f"Parameter '{param_name}' should be boolean, not string. "
113+
f"Use '{param_name} = false' instead of '{param_name} = \"{value}\"'"
114+
)
115+
return False
116+
else:
117+
raise ValueError(
118+
f"Parameter '{param_name}' has invalid value '{value}'. "
119+
f"Expected boolean (true/false)."
120+
)
121+
if isinstance(value, (int, float)):
122+
return bool(value)
123+
raise ValueError(
124+
f"Parameter '{param_name}' has invalid type {type(value).__name__}. "
125+
f"Expected boolean."
126+
)
78127

79128
@do_profile
80129
def _init_param(self):

0 commit comments

Comments
 (0)