@@ -261,6 +261,14 @@ def _repr_pretty_(self, p, cycle):
261261 template = "<{0}({1.year}, {1.day}) at {2} - {1.title}>"
262262 p .text (template .format (type (self ).__name__ , self , hex (id (self ))))
263263
264+ def _coerce_val (self , val ):
265+ if isinstance (val , float ) and val .is_integer ():
266+ log .warning ("coerced value %r for %d/%02d" , val , self .year , self .day )
267+ val = int (val )
268+ if isinstance (val , int ):
269+ val = str (val )
270+ return val
271+
264272 @property
265273 def answer_a (self ):
266274 try :
@@ -270,12 +278,7 @@ def answer_a(self):
270278
271279 @answer_a .setter
272280 def answer_a (self , val ):
273- if isinstance (val , float ) and val .is_integer (): # change regarding issue #97
274- log .warning ("coercing float value" )
275- val = str (int (val ))
276- elif isinstance (val , int ):
277- val = str (val )
278-
281+ val = self ._coerce_val (val )
279282 if getattr (self , "answer_a" , None ) == val :
280283 return
281284 self ._submit (value = val , part = "a" )
@@ -293,12 +296,7 @@ def answer_b(self):
293296
294297 @answer_b .setter
295298 def answer_b (self , val ):
296- if isinstance (val , float ) and val .is_integer (): # change regarding issue #97
297- log .warning ("coercing float value" )
298- val = str (int (val ))
299- elif isinstance (val , int ):
300- val = str (val )
301-
299+ val = self ._coerce_val (val )
302300 if getattr (self , "answer_b" , None ) == val :
303301 return
304302 self ._submit (value = val , part = "b" )
@@ -333,7 +331,8 @@ def incorrect_answers_b(self):
333331 def _submit (self , value , part , reopen = True , quiet = False ):
334332 if value in {u"" , b"" , None , b"None" , u"None" }:
335333 raise AocdError ("cowardly refusing to submit non-answer: {!r}" .format (value ))
336- value = str (value )
334+ if not isinstance (value , str ):
335+ value = self ._coerce_val (value )
337336 part = str (part ).replace ("1" , "a" ).replace ("2" , "b" ).lower ()
338337 if part not in {"a" , "b" }:
339338 raise AocdError ('part must be "a" or "b"' )
0 commit comments