code: def from_str(self, instr):
          '''Undo affect of __str__'''
          if not instr:
              return FlexiDate()
  
          out = self.our_re.match(instr)
          if out is None:  # no match TODO: raise Exception?
              return None
          else:
              return FlexiDate(
                  out.group('year'),
                  out.group('month'),
                  out.group('day'),
                  out.group('hour'),
                  out.group('minute'),
                  out.group('second'),
                  out.group('microsecond'),
                  qualifier=out.group('qualifier')
              f from_str(self, instr):
          '''Undo affect of __str__'''
          if not instr:
              return FlexiDate()
  
          out = self.our_re.match(instr)
          if out is None:  # no match TODO: raise Exception?
              return None
          else:
              return FlexiDate(
                  out.group('year'),
                  out.group('month'),
                  out.group('day'),
                  out.group('hour'),
                  out.group('minute'),
                  out.group('second'),
                  out.group('microsecond'),
                  qualifier=out.group('qualifier')
              )
docs: Undo affect of __str__