The monthyear created by to_datetime('<a date>').to_period('M'), which is used as the keys for Surface/data_input_dict cannot be printed, I guess because __repr__ and __str__ in to_datetime are assuming Y/m/d.
It's still hashable so isn't breaking anything, but makes debugging hard.