docs: def validate(self, str_in):
          # type: (Text) -> None
          """ Validates an entry in the field.
  
              Raises `InvalidEntryError` iff the entry is invalid.
  
              An entry is invalid iff (1) the string does not represent a
              date in the correct format; or (2) the date it represents
              is invalid (such as 30 February).
  
              :param str str_in: String to validate.
              :raises InvalidEntryError: Iff entry is invalid.
              :raises ValueError: When self.format is unrecognised.
          """
          if self.is_missing_value(str_in):
              return
          # noinspection PyCompatibility
          super().validate(str_in)
          try:
              datetime.strptime(str_in, self.format)
          except ValueError as e:
              msg = "Validation error for date type: {}".format(e)
              e_new = InvalidEntryError(msg)
              e_new.field_spec = self
              raise_from(e_new, e)