def validate( cls, value: Union[datetime.date, datetime.datetime, str, bytes, int, float] ) -> Union[datetime.datetime, datetime.date, str]: """ """ if isinstance(value, datetime.date): return value if not isinstance(value, str): # default handler return parse_datetime(value) match = FHIR_DATE_PARTS.match(value) if match: if ( match.groupdict().get("year") and match.groupdict().get("month") and match.groupdict().get("day") ): return parse_date(value) elif match.groupdict().get("year") and match.groupdict().get("month"): if int(match.groupdict()["month"]) > 12: raise DateError() # we don't want to loose actual information, so keep as string return value if not cls.regex.match(value): raise DateTimeError() return parse_datetime(value)
def validate(cls, value): """ """ if isinstance(value, str): if not cls.regex.match(value): raise DateTimeError() return parse_datetime(value)