Skip to content

Commit 42d8d30

Browse files
committed
fix: accept boolean abacuslite property keywords
1 parent 2e20b5a commit 42d8d30

1 file changed

Lines changed: 23 additions & 1 deletion

File tree

  • interfaces/ASE_interface/abacuslite

interfaces/ASE_interface/abacuslite/core.py

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,8 +202,10 @@ def get_property_keywords(self,
202202
The list of properties to calculate
203203
'''
204204
def normalize_keyword_value(value):
205+
if isinstance(value, bool):
206+
return '1' if value else '0'
205207
if isinstance(value, (list, tuple, set)):
206-
return ' '.join(str(i) for i in value)
208+
return ' '.join(normalize_keyword_value(i) for i in value)
207209
return str(value)
208210

209211
param_cache_ = {
@@ -679,6 +681,26 @@ def test_property_keywords_reject_conflicting_user_parameters(self):
679681
parameters = template.get_property_keywords({'nspin': 2}, ['magmom'])
680682
self.assertEqual(str(parameters['nspin']), '2')
681683

684+
def test_property_keywords_accept_equivalent_boolean_user_parameters(self):
685+
template = AbacusTemplate()
686+
687+
parameters = template.get_property_keywords(
688+
{'cal_force': True, 'cal_stress': True},
689+
['forces', 'stress']
690+
)
691+
692+
self.assertEqual(str(parameters['cal_force']), '1')
693+
self.assertEqual(str(parameters['cal_stress']), '1')
694+
695+
def test_property_keywords_reject_conflicting_boolean_user_parameters(self):
696+
template = AbacusTemplate()
697+
698+
with self.assertRaises(ValueError):
699+
template.get_property_keywords({'cal_force': False}, ['forces'])
700+
701+
with self.assertRaises(ValueError):
702+
template.get_property_keywords({'cal_stress': False}, ['stress'])
703+
682704
def test_property_keywords_reject_conflicting_properties(self):
683705
template = AbacusTemplate()
684706
template.implemented_properties = ['prop_a', 'prop_b']

0 commit comments

Comments
 (0)