@@ -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